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

Commit a918180

Browse files
refactored streams, messages and metadata
1 parent 94ce44c commit a918180

47 files changed

Lines changed: 599 additions & 704 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/SqlStreamStore.HAL.Tests/AllStreamMessageTests.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ public async Task read_single_message_all_stream()
3232
resource.ShouldLink(
3333
TheLinks
3434
.RootedAt("../")
35+
.Find()
36+
.Index()
3537
.AddSelf(Constants.Relations.Message, "stream/0")
3638
.Add(Constants.Relations.Feed, HeadOfAll));
3739
}

src/SqlStreamStore.HAL.Tests/CanonicalUrlTests.cs

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,31 +46,33 @@ from set in GetPermutations(parameters, 4)
4646

4747
private static IEnumerable<(string, Uri)> NonCanonical()
4848
{
49+
var bools = new[] { true, false };
50+
4951
var formatters = new Dictionary<bool, Func<string, int, long, bool, string>>
5052
{
5153
[true] = LinkFormatter.FormatForwardLink,
5254
[false] = LinkFormatter.FormatBackwardLink
5355
};
5456

55-
(string streamId, string path)[] streams =
57+
(string streamId, string path, string root)[] streams =
5658
{
57-
(StreamId, $"/streams/{StreamId}"),
58-
(Constants.Streams.All, Constants.Streams.All)
59+
(StreamId, $"streams/{StreamId}", "../"),
60+
(Constants.Streams.All, Constants.Streams.All, string.Empty)
5961
};
6062

6163
return
6264
from _ in streams
63-
from prefetch in new[] { true, false }
64-
from forward in new[] { true, false }
65+
from prefetch in bools
66+
from forward in bools
6567
let format = formatters[forward]
66-
let canonicalUri = format(_.streamId, 20, 0, prefetch)
68+
let canonicalUri = new Uri(
69+
format($"{_.root}{_.path}", 20, 0, prefetch),
70+
UriKind.Relative)
6771
from queryString in GetQueryStrings(forward, prefetch)
6872
// query strings are supposed to be case sensitive!!
6973
//.Concat(new[] { $"d={(forward ? 'F' : 'B')}&M=20&P=0{(prefetch ? "&E" : string.Empty)}" })
70-
where $"{_.streamId}?{queryString}" != canonicalUri
71-
select ($"{_.path}?{queryString}", new Uri(
72-
canonicalUri,
73-
UriKind.Relative));
74+
where !canonicalUri.OriginalString.EndsWith($"?{queryString}")
75+
select ($"{_.path}?{queryString}", canonicalUri);
7476
}
7577

7678
public static IEnumerable<object[]> NonCanonicalUriCases()

src/SqlStreamStore.HAL.Tests/Link.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ public bool Equals(Link other)
1414
return false;
1515
if(ReferenceEquals(this, other))
1616
return true;
17-
return string.Equals(Rel, other.Rel) && string.Equals(Href, other.Href)
17+
return string.Equals(Rel, other.Rel)
18+
&& string.Equals(Href ?? string.Empty, other.Href ?? string.Empty)
1819
&& string.Equals(Title, other.Title);
1920
}
2021

src/SqlStreamStore.HAL.Tests/StreamMessageTests.cs

Lines changed: 20 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public StreamMessageTests()
1616

1717
public void Dispose() => _fixture.Dispose();
1818
private readonly SqlStreamStoreHalMiddlewareFixture _fixture;
19-
private const string HeadOfStream = "../a-stream?d=b&m=20&p=-1&e=0";
19+
private const string HeadOfStream = "streams/a-stream?d=b&m=20&p=-1&e=0";
2020

2121
[Fact]
2222
public async Task read_single_message_stream()
@@ -30,24 +30,16 @@ public async Task read_single_message_stream()
3030
3131
var resource = await response.AsHal();
3232
33-
resource.Links.Keys.ShouldBe(new[]
34-
{
35-
Constants.Relations.Self,
36-
Constants.Relations.First,
37-
Constants.Relations.Next,
38-
Constants.Relations.Last,
39-
Constants.Relations.Feed,
40-
Constants.Relations.Message,
41-
Constants.Relations.Find
42-
});
43-
44-
resource.ShouldLink(Constants.Relations.Self, "0");
45-
resource.ShouldLink(Constants.Relations.First, "0");
46-
resource.ShouldLink(Constants.Relations.Next, "1");
47-
resource.ShouldLink(Constants.Relations.Last, "-1");
48-
resource.ShouldLink(Constants.Relations.Feed, HeadOfStream);
49-
resource.ShouldLink(Constants.Relations.Message, "0");
50-
resource.ShouldLink(Constants.Relations.Find, "../../streams/{streamId}", "Find a Stream");
33+
resource.ShouldLink(TheLinks
34+
.RootedAt("../../")
35+
.Index()
36+
.Find()
37+
.Add(Constants.Relations.Self, "streams/a-stream/0")
38+
.Add(Constants.Relations.First, "streams/a-stream/0")
39+
.Add(Constants.Relations.Next, "streams/a-stream/1")
40+
.Add(Constants.Relations.Last, "streams/a-stream/-1")
41+
.Add(Constants.Relations.Feed, HeadOfStream)
42+
.Add(Constants.Relations.Message, "streams/a-stream/0"));
5143
}
5244
}
5345

@@ -61,22 +53,15 @@ public async Task read_single_message_does_not_exist_stream()
6153

6254
var resource = await response.AsHal();
6355

64-
resource.Links.Keys.ShouldBe(new[]
65-
{
66-
Constants.Relations.Self,
67-
Constants.Relations.First,
68-
Constants.Relations.Last,
69-
Constants.Relations.Feed,
70-
Constants.Relations.Message,
71-
Constants.Relations.Find
72-
});
73-
74-
resource.ShouldLink(Constants.Relations.Self, "0");
75-
resource.ShouldLink(Constants.Relations.First, "0");
76-
resource.ShouldLink(Constants.Relations.Last, "-1");
77-
resource.ShouldLink(Constants.Relations.Feed, HeadOfStream);
78-
resource.ShouldLink(Constants.Relations.Message, "0");
79-
resource.ShouldLink(Constants.Relations.Find, "../../streams/{streamId}", "Find a Stream");
56+
resource.ShouldLink(TheLinks
57+
.RootedAt("../../")
58+
.Index()
59+
.Find()
60+
.Add(Constants.Relations.Self, "streams/a-stream/0")
61+
.Add(Constants.Relations.First, "streams/a-stream/0")
62+
.Add(Constants.Relations.Last, "streams/a-stream/-1")
63+
.Add(Constants.Relations.Feed, HeadOfStream)
64+
.Add(Constants.Relations.Message, "streams/a-stream/0"));
8065
}
8166
}
8267

src/SqlStreamStore.HAL.Tests/StreamMetadataTests.cs

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,17 @@ await _fixture.HttpClient.SendAsync(
3636

3737
((string) resource.State.streamId).ShouldBe(StreamId);
3838
((int) resource.State.metadataStreamVersion).ShouldBe(ExpectedVersion.NoStream);
39-
((int?) resource.State.maxAge).ShouldBe(default(int?));
40-
((int?) resource.State.maxCount).ShouldBe(default(int?));
39+
((int?) resource.State.maxAge).ShouldBe(default);
40+
((int?) resource.State.maxCount).ShouldBe(default);
4141
((string) resource.State.metadataJson).ShouldBeNull();
4242

43-
resource.ShouldLink(Constants.Relations.Self, "metadata");
44-
resource.ShouldLink(Constants.Relations.Metadata, "metadata");
45-
resource.ShouldLink(Constants.Relations.Feed, $"../{StreamId}");
43+
resource.ShouldLink(
44+
TheLinks
45+
.RootedAt("../../../")
46+
.Index()
47+
.Find()
48+
.Add(Constants.Relations.Metadata, $"streams/{StreamId}/metadata").Self()
49+
.Add(Constants.Relations.Feed, $"streams/{StreamId}"));
4650
}
4751
}
4852

@@ -87,9 +91,13 @@ await _fixture.HttpClient.SendAsync(
8791
type = "a-type"
8892
})).ShouldBeTrue();
8993

90-
resource.ShouldLink(Constants.Relations.Self, "metadata");
91-
resource.ShouldLink(Constants.Relations.Metadata, "metadata");
92-
resource.ShouldLink(Constants.Relations.Feed, $"../{StreamId}");
94+
resource.ShouldLink(
95+
TheLinks
96+
.RootedAt("../../../")
97+
.Index()
98+
.Find()
99+
.Add(Constants.Relations.Metadata, $"streams/{StreamId}/metadata").Self()
100+
.Add(Constants.Relations.Feed, $"streams/{StreamId}"));
93101
}
94102
}
95103

@@ -129,9 +137,13 @@ public async Task set_metadata()
129137
type = "a-type"
130138
})).ShouldBeTrue();
131139

132-
resource.ShouldLink(Constants.Relations.Self, "metadata");
133-
resource.ShouldLink(Constants.Relations.Metadata, "metadata");
134-
resource.ShouldLink(Constants.Relations.Feed, $"../{StreamId}");
140+
resource.ShouldLink(
141+
TheLinks
142+
.RootedAt("../../../")
143+
.Index()
144+
.Find()
145+
.Add(Constants.Relations.Metadata, $"streams/{StreamId}/metadata").Self()
146+
.Add(Constants.Relations.Feed, $"streams/{StreamId}"));
135147
}
136148
}
137149

0 commit comments

Comments
 (0)