Skip to content
This repository was archived by the owner on Sep 3, 2024. It is now read-only.

Commit 7f6fe73

Browse files
Merge pull request #35 from thefringeninja/link-titles
Link titles
2 parents 53de0e0 + 9fe6481 commit 7f6fe73

15 files changed

+80
-63
lines changed

src/SqlStreamStore.HAL.Tests/AllStreamMessageTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public async Task read_single_message_all_stream()
3535
.FromRequestMessage(response.RequestMessage)
3636
.Find()
3737
.Index()
38-
.AddSelf(Constants.Relations.Message, "stream/0")
38+
.AddSelf(Constants.Relations.Message, "stream/0", "a-stream@0")
3939
.Add(Constants.Relations.Feed, HeadOfAll));
4040
}
4141
}
@@ -51,7 +51,7 @@ public async Task read_single_message_does_not_exist_all_stream()
5151

5252
resource.ShouldLink(Links
5353
.FromPath(new PathString("/stream/0"))
54-
.AddSelf(Constants.Relations.Message, "stream/0")
54+
.AddSelf(Constants.Relations.Message, "stream/0", "@0")
5555
.Add(Constants.Relations.Feed, HeadOfAll));
5656
}
5757
}

src/SqlStreamStore.HAL.Tests/ClientErrorTests.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,27 +43,27 @@ private static readonly (string requestUri, MediaTypeWithQualityHeaderValue[] no
4343
HttpMethod.Get,
4444
HttpMethod.Head
4545
}),
46-
("/streams/a-stream", new[] { s_TextMarkdown, s_TextPlain }, new[]
46+
($"/{Constants.Streams.Stream}/a-stream", new[] { s_TextMarkdown, s_TextPlain }, new[]
4747
{
4848
HttpMethod.Get,
4949
HttpMethod.Head,
5050
HttpMethod.Post,
5151
HttpMethod.Delete
5252
}),
53-
("/streams/a-stream/0", new[] { s_TextMarkdown, s_TextPlain }, new[]
53+
($"/{Constants.Streams.Stream}/a-stream/0", new[] { s_TextMarkdown, s_TextPlain }, new[]
5454
{
5555
HttpMethod.Get,
5656
HttpMethod.Head,
5757
HttpMethod.Delete
5858
}),
59-
($"/streams/a-stream/{Guid.Empty}", new[] { s_TextMarkdown, s_TextPlain }, new[]
59+
($"/{Constants.Streams.Stream}/a-stream/{Guid.Empty}", new[] { s_TextMarkdown, s_TextPlain }, new[]
6060
{
6161
HttpMethod.Get,
6262
HttpMethod.Head,
6363
HttpMethod.Delete
6464
}),
6565

66-
("/streams/a-stream/metadata", new[] { s_TextMarkdown, s_TextPlain }, new[]
66+
($"/{Constants.Streams.Stream}/a-stream/metadata", new[] { s_TextMarkdown, s_TextPlain }, new[]
6767
{
6868
HttpMethod.Get,
6969
HttpMethod.Head,

src/SqlStreamStore.HAL.Tests/ConditionalRequestTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,13 @@ public static IEnumerable<object[]> IfNoneMatchCases()
3030
};
3131
yield return new object[]
3232
{
33-
$"/streams/{streamId}",
33+
$"/{Constants.Streams.Stream}/{streamId}",
3434
new Func<IStreamStore, Task>(
3535
streamStore => streamStore.AppendToStream(streamId, ExpectedVersion.NoStream, message))
3636
};
3737
yield return new object[]
3838
{
39-
$"/streams/{streamId}/metadata",
39+
$"/{Constants.Streams.Stream}/{streamId}/metadata",
4040
new Func<IStreamStore, Task>(
4141
streamStore => streamStore.SetStreamMetadata(streamId, ExpectedVersion.NoStream, 1))
4242
};

src/SqlStreamStore.HAL.Tests/OptionsTests.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,25 +36,25 @@ public static IEnumerable<object[]> OptionsAllowedMethodCases()
3636

3737
yield return new object[]
3838
{
39-
"/streams/a-stream",
39+
$"/{Constants.Streams.Stream}/a-stream",
4040
new[] { HttpMethod.Get, HttpMethod.Head, HttpMethod.Options, HttpMethod.Delete, HttpMethod.Post }
4141
};
4242

4343
yield return new object[]
4444
{
45-
"/streams/a-stream/0",
45+
$"/{Constants.Streams.Stream}/a-stream/0",
4646
new[] { HttpMethod.Get, HttpMethod.Head, HttpMethod.Delete, HttpMethod.Options }
4747
};
4848

4949
yield return new object[]
5050
{
51-
$"/streams/a-stream/{Guid.Empty}",
51+
$"/{Constants.Streams.Stream}/a-stream/{Guid.Empty}",
5252
new[] { HttpMethod.Get, HttpMethod.Head, HttpMethod.Delete, HttpMethod.Options }
5353
};
5454

5555
yield return new object[]
5656
{
57-
"/streams/a-stream/metadata",
57+
$"/{Constants.Streams.Stream}/a-stream/metadata",
5858
new[] { HttpMethod.Get, HttpMethod.Head, HttpMethod.Post, HttpMethod.Options }
5959
};
6060

src/SqlStreamStore.HAL.Tests/StreamAppendTests.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ public async Task wrong_expected_version(int[] expectedVersions)
160160
for(var i = 0; i < expectedVersions.Length - 1; i++)
161161
{
162162
using(await _fixture.HttpClient.SendAsync(
163-
new HttpRequestMessage(HttpMethod.Post, $"/streams/{StreamId}")
163+
new HttpRequestMessage(HttpMethod.Post, $"/{Constants.Streams.Stream}/{StreamId}")
164164
{
165165
Headers =
166166
{
@@ -184,7 +184,7 @@ public async Task wrong_expected_version(int[] expectedVersions)
184184
}
185185

186186
using(var response = await _fixture.HttpClient.SendAsync(
187-
new HttpRequestMessage(HttpMethod.Post, $"/streams/{StreamId}")
187+
new HttpRequestMessage(HttpMethod.Post, $"/{Constants.Streams.Stream}/{StreamId}")
188188
{
189189
Headers =
190190
{
@@ -268,7 +268,7 @@ public static IEnumerable<object[]> MalformedRequestCases()
268268
public async Task malformed_request_body(string malformedRequest)
269269
{
270270
using(var response = await _fixture.HttpClient.SendAsync(
271-
new HttpRequestMessage(HttpMethod.Post, $"/streams/{StreamId}")
271+
new HttpRequestMessage(HttpMethod.Post, $"/{Constants.Streams.Stream}/{StreamId}")
272272
{
273273
Content = new StringContent(malformedRequest)
274274
{
@@ -297,7 +297,7 @@ public static IEnumerable<object[]> BadExpectedVersionCases()
297297
public async Task bad_expected_version(int badExpectedVersion)
298298
{
299299
using(var response = await _fixture.HttpClient.SendAsync(
300-
new HttpRequestMessage(HttpMethod.Post, $"/streams/{StreamId}")
300+
new HttpRequestMessage(HttpMethod.Post, $"/{Constants.Streams.Stream}/{StreamId}")
301301
{
302302
Headers =
303303
{

src/SqlStreamStore.HAL.Tests/StreamDeleteTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public async Task expected_version(int? expectedVersion)
2424
{
2525
await _fixture.WriteNMessages(StreamId, 1);
2626

27-
var request = new HttpRequestMessage(HttpMethod.Delete, $"/streams/{StreamId}");
27+
var request = new HttpRequestMessage(HttpMethod.Delete, $"/{Constants.Streams.Stream}/{StreamId}");
2828

2929
if(expectedVersion.HasValue)
3030
{
@@ -47,7 +47,7 @@ public async Task expected_version(int? expectedVersion)
4747
public async Task wrong_expected_version(int expectedVersion)
4848
{
4949
await _fixture.WriteNMessages(StreamId, 1);
50-
var request = new HttpRequestMessage(HttpMethod.Delete, $"/streams/{StreamId}")
50+
var request = new HttpRequestMessage(HttpMethod.Delete, $"/{Constants.Streams.Stream}/{StreamId}")
5151
{
5252
Headers =
5353
{

src/SqlStreamStore.HAL.Tests/StreamMessageTests.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public async Task read_single_message_stream()
2424
{
2525
var writeResult = await _fixture.WriteNMessages("a-stream", 1);
2626

27-
using(var response = await _fixture.HttpClient.GetAsync("/streams/a-stream/0"))
27+
using(var response = await _fixture.HttpClient.GetAsync($"/{Constants.Streams.Stream}/a-stream/0"))
2828
{
2929
response.StatusCode.ShouldBe(HttpStatusCode.OK);
3030
response.Headers.ETag.ShouldBe(new EntityTagHeaderValue($@"""{writeResult.CurrentVersion}"""));
@@ -35,19 +35,19 @@ public async Task read_single_message_stream()
3535
.FromRequestMessage(response.RequestMessage)
3636
.Index()
3737
.Find()
38-
.Add(Constants.Relations.Self, "streams/a-stream/0")
38+
.Add(Constants.Relations.Self, "streams/a-stream/0", "a-stream@0")
3939
.Add(Constants.Relations.First, "streams/a-stream/0")
4040
.Add(Constants.Relations.Next, "streams/a-stream/1")
4141
.Add(Constants.Relations.Last, "streams/a-stream/-1")
42-
.Add(Constants.Relations.Feed, HeadOfStream)
43-
.Add(Constants.Relations.Message, "streams/a-stream/0"));
42+
.Add(Constants.Relations.Feed, HeadOfStream, "a-stream")
43+
.Add(Constants.Relations.Message, "streams/a-stream/0", "a-stream@0"));
4444
}
4545
}
4646

4747
[Fact]
4848
public async Task read_single_message_does_not_exist_stream()
4949
{
50-
using(var response = await _fixture.HttpClient.GetAsync("/streams/a-stream/0"))
50+
using(var response = await _fixture.HttpClient.GetAsync($"/{Constants.Streams.Stream}/a-stream/0"))
5151
{
5252
response.StatusCode.ShouldBe(HttpStatusCode.NotFound);
5353
response.Headers.ETag.ShouldBeNull();
@@ -58,11 +58,11 @@ public async Task read_single_message_does_not_exist_stream()
5858
.FromRequestMessage(response.RequestMessage)
5959
.Index()
6060
.Find()
61-
.Add(Constants.Relations.Self, "streams/a-stream/0")
61+
.Add(Constants.Relations.Self, "streams/a-stream/0", "a-stream@0")
6262
.Add(Constants.Relations.First, "streams/a-stream/0")
6363
.Add(Constants.Relations.Last, "streams/a-stream/-1")
64-
.Add(Constants.Relations.Feed, HeadOfStream)
65-
.Add(Constants.Relations.Message, "streams/a-stream/0"));
64+
.Add(Constants.Relations.Feed, HeadOfStream, "a-stream")
65+
.Add(Constants.Relations.Message, "streams/a-stream/0", "a-stream@0"));
6666
}
6767
}
6868

@@ -71,14 +71,14 @@ public async Task delete_single_message_by_version()
7171
{
7272
var writeResult = await _fixture.WriteNMessages("a-stream", 1);
7373

74-
using(var response = await _fixture.HttpClient.DeleteAsync("/streams/a-stream/0"))
74+
using(var response = await _fixture.HttpClient.DeleteAsync($"/{Constants.Streams.Stream}/a-stream/0"))
7575
{
7676
response.StatusCode.ShouldBe(HttpStatusCode.NoContent);
7777
response.Content.Headers.ContentLength.HasValue.ShouldBeTrue();
7878
response.Content.Headers.ContentLength.Value.ShouldBe(0);
7979
}
8080

81-
using(var response = await _fixture.HttpClient.GetAsync("/streams/a-stream/0"))
81+
using(var response = await _fixture.HttpClient.GetAsync($"/{Constants.Streams.Stream}/a-stream/0"))
8282
{
8383
response.StatusCode.ShouldBe(HttpStatusCode.NotFound);
8484
response.Headers.ETag.ShouldBeNull();
@@ -94,14 +94,14 @@ public async Task delete_single_message_by_message_id()
9494

9595
var messageId = page.Messages[0].MessageId;
9696

97-
using(var response = await _fixture.HttpClient.DeleteAsync($"/streams/a-stream/{messageId}"))
97+
using(var response = await _fixture.HttpClient.DeleteAsync($"/{Constants.Streams.Stream}/a-stream/{messageId}"))
9898
{
9999
response.StatusCode.ShouldBe(HttpStatusCode.NoContent);
100100
response.Content.Headers.ContentLength.HasValue.ShouldBeTrue();
101101
response.Content.Headers.ContentLength.Value.ShouldBe(0);
102102
}
103103

104-
using(var response = await _fixture.HttpClient.GetAsync("/streams/a-stream/0"))
104+
using(var response = await _fixture.HttpClient.GetAsync($"/{Constants.Streams.Stream}/a-stream/0"))
105105
{
106106
response.StatusCode.ShouldBe(HttpStatusCode.NotFound);
107107
response.Headers.ETag.ShouldBeNull();

src/SqlStreamStore.HAL.Tests/StreamMetadataTests.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public async Task get_metadata_when_metadata_stream_does_not_exist()
2727
{
2828
using(var response =
2929
await _fixture.HttpClient.SendAsync(
30-
new HttpRequestMessage(HttpMethod.Get, $"/streams/{StreamId}/metadata")))
30+
new HttpRequestMessage(HttpMethod.Get, $"/{Constants.Streams.Stream}/{StreamId}/metadata")))
3131
{
3232
response.StatusCode.ShouldBe(HttpStatusCode.NotFound);
3333
response.Headers.ETag.ShouldBe(new EntityTagHeaderValue(@"""-1"""));
@@ -46,15 +46,15 @@ await _fixture.HttpClient.SendAsync(
4646
.Index()
4747
.Find()
4848
.Add(Constants.Relations.Metadata, $"streams/{StreamId}/metadata").Self()
49-
.Add(Constants.Relations.Feed, $"streams/{StreamId}"));
49+
.Add(Constants.Relations.Feed, $"streams/{StreamId}", StreamId));
5050
}
5151
}
5252

5353
[Fact]
5454
public async Task get_metadata_when_metadata_stream_does_exist()
5555
{
5656
using(await _fixture.HttpClient.SendAsync(
57-
new HttpRequestMessage(HttpMethod.Post, $"/streams/{StreamId}/metadata")
57+
new HttpRequestMessage(HttpMethod.Post, $"/{Constants.Streams.Stream}/{StreamId}/metadata")
5858
{
5959
Content = new StringContent(JObject.FromObject(new
6060
{
@@ -74,7 +74,7 @@ public async Task get_metadata_when_metadata_stream_does_exist()
7474
}))
7575
using(var response =
7676
await _fixture.HttpClient.SendAsync(
77-
new HttpRequestMessage(HttpMethod.Get, $"/streams/{StreamId}/metadata")))
77+
new HttpRequestMessage(HttpMethod.Get, $"/{Constants.Streams.Stream}/{StreamId}/metadata")))
7878
{
7979
response.StatusCode.ShouldBe(HttpStatusCode.OK);
8080
response.Headers.ETag.ShouldBe(new EntityTagHeaderValue(@"""0"""));
@@ -97,15 +97,15 @@ await _fixture.HttpClient.SendAsync(
9797
.Index()
9898
.Find()
9999
.Add(Constants.Relations.Metadata, $"streams/{StreamId}/metadata").Self()
100-
.Add(Constants.Relations.Feed, $"streams/{StreamId}"));
100+
.Add(Constants.Relations.Feed, $"streams/{StreamId}", StreamId));
101101
}
102102
}
103103

104104
[Fact]
105105
public async Task set_metadata()
106106
{
107107
using(var response = await _fixture.HttpClient.SendAsync(
108-
new HttpRequestMessage(HttpMethod.Post, $"/streams/{StreamId}/metadata")
108+
new HttpRequestMessage(HttpMethod.Post, $"/{Constants.Streams.Stream}/{StreamId}/metadata")
109109
{
110110
Content = new StringContent(JObject.FromObject(new
111111
{
@@ -143,7 +143,7 @@ public async Task set_metadata()
143143
.Index()
144144
.Find()
145145
.Add(Constants.Relations.Metadata, $"streams/{StreamId}/metadata").Self()
146-
.Add(Constants.Relations.Feed, $"streams/{StreamId}"));
146+
.Add(Constants.Relations.Feed, $"streams/{StreamId}", StreamId));
147147
}
148148
}
149149

@@ -163,7 +163,7 @@ public async Task set_wrong_expected_version(int[] expectedVersions)
163163
for(var i = 0; i < expectedVersions.Length - 1; i++)
164164
{
165165
using(await _fixture.HttpClient.SendAsync(
166-
new HttpRequestMessage(HttpMethod.Post, $"/streams/{StreamId}/metadata")
166+
new HttpRequestMessage(HttpMethod.Post, $"/{Constants.Streams.Stream}/{StreamId}/metadata")
167167
{
168168
Headers =
169169
{
@@ -189,7 +189,7 @@ public async Task set_wrong_expected_version(int[] expectedVersions)
189189
}
190190

191191
using(var response = await _fixture.HttpClient.SendAsync(
192-
new HttpRequestMessage(HttpMethod.Post, $"/streams/{StreamId}/metadata")
192+
new HttpRequestMessage(HttpMethod.Post, $"/{Constants.Streams.Stream}/{StreamId}/metadata")
193193
{
194194
Headers =
195195
{

src/SqlStreamStore.HAL.Tests/StreamNavigationTests.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ public async Task read_head_link_no_messages(string path, string root, HttpStatu
4949
.FromRequestMessage(response.RequestMessage)
5050
.Index()
5151
.Find()
52-
.Add(Constants.Relations.Self, $"{path}?{LastLinkQuery}")
52+
.Add(Constants.Relations.Self, $"{path}?{LastLinkQuery}", !IsAllStream(path) ? StreamId : null)
5353
.Add(Constants.Relations.Last, $"{path}?{LastLinkQuery}")
5454
.Add(Constants.Relations.First, $"{path}?{FirstLinkQuery}")
55-
.Add(Constants.Relations.Feed, $"{path}?{LastLinkQuery}");
55+
.Add(Constants.Relations.Feed, $"{path}?{LastLinkQuery}", !IsAllStream(path) ? StreamId : null);
5656

5757
if(!IsAllStream(path))
5858
{
@@ -88,11 +88,11 @@ public async Task read_head_link_when_multiple_pages(string path, string root)
8888
.FromRequestMessage(response.RequestMessage)
8989
.Index()
9090
.Find()
91-
.Add(Constants.Relations.Self, $"{path}?{LastLinkQuery}")
91+
.Add(Constants.Relations.Self, $"{path}?{LastLinkQuery}", !IsAllStream(path) ? StreamId : null)
9292
.Add(Constants.Relations.Last, $"{path}?{LastLinkQuery}")
9393
.Add(Constants.Relations.Previous, $"{path}?d=b&m=20&p=9&e=0")
9494
.Add(Constants.Relations.First, $"{path}?{FirstLinkQuery}")
95-
.Add(Constants.Relations.Feed, $"{path}?{LastLinkQuery}");
95+
.Add(Constants.Relations.Feed, $"{path}?{LastLinkQuery}", !IsAllStream(path) ? StreamId : null);
9696

9797
if(!IsAllStream($"{path}"))
9898
{
@@ -122,10 +122,10 @@ public async Task read_first_link(string path, string root)
122122
.FromRequestMessage(response.RequestMessage)
123123
.Index()
124124
.Find()
125-
.Add(Constants.Relations.Self, $"{path}?{FirstLinkQuery}")
125+
.Add(Constants.Relations.Self, $"{path}?{FirstLinkQuery}", !IsAllStream(path) ? StreamId : null)
126126
.Add(Constants.Relations.Last, $"{path}?{LastLinkQuery}")
127127
.Add(Constants.Relations.First, $"{path}?{FirstLinkQuery}")
128-
.Add(Constants.Relations.Feed, $"{path}?{FirstLinkQuery}");
128+
.Add(Constants.Relations.Feed, $"{path}?{FirstLinkQuery}", !IsAllStream(path) ? StreamId : null);
129129

130130
if(!IsAllStream(path))
131131
{
@@ -151,11 +151,11 @@ public async Task read_first_link_when_multiple_pages(string path, string root)
151151
.FromRequestMessage(response.RequestMessage)
152152
.Index()
153153
.Find()
154-
.Add(Constants.Relations.Self, $"{path}?{FirstLinkQuery}")
154+
.Add(Constants.Relations.Self, $"{path}?{FirstLinkQuery}", !IsAllStream(path) ? StreamId : null)
155155
.Add(Constants.Relations.Last, $"{path}?{LastLinkQuery}")
156156
.Add(Constants.Relations.Next, $"{path}?d=f&m=20&p=20&e=0")
157157
.Add(Constants.Relations.First, $"{path}?{FirstLinkQuery}")
158-
.Add(Constants.Relations.Feed, $"{path}?{FirstLinkQuery}");
158+
.Add(Constants.Relations.Feed, $"{path}?{FirstLinkQuery}", !IsAllStream(path) ? StreamId : null);
159159

160160
if(!IsAllStream($"{path}"))
161161
{
@@ -173,7 +173,7 @@ public async Task read_stream_should_include_the_last_position_and_version()
173173

174174
var page = await _fixture.StreamStore.ReadStreamForwards(StreamId, StreamVersion.Start, 10, false);
175175

176-
using(var response = await _fixture.HttpClient.GetAsync("/streams/a-stream"))
176+
using(var response = await _fixture.HttpClient.GetAsync($"/{Constants.Streams.Stream}/a-stream"))
177177
{
178178
response.StatusCode.ShouldBe(HttpStatusCode.OK);
179179

0 commit comments

Comments
 (0)