Skip to content

Commit f709122

Browse files
author
Jamil Maqdis Anton
committed
Add ReadRawTests.fs
1 parent dbb4504 commit f709122

File tree

3 files changed

+155
-1
lines changed

3 files changed

+155
-1
lines changed

tests/ReadRawTests.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ let guidString2 = "22222222-2222-2222-2222-222222222222"
1616
[<Tests>]
1717
let tests =
1818
testList
19-
"Read Tests"
19+
"ReadRaw Tests"
2020
[ testAsync "Should read forward from specific stream." {
2121
let inMemStore = new SqlStreamStore.InMemoryStreamStore()
2222

tests/ReadTests.fs

Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
module SqlStreamStore.FSharp.Tests.ReadTests
2+
3+
open Expecto
4+
open SqlStreamStore.FSharp
5+
6+
let newTestMessage (guidString: string): MessageDetails =
7+
{ id = StreamMessageId.Custom(System.Guid.Parse(guidString))
8+
type_ = "testing"
9+
jsonData = "{}"
10+
jsonMetadata = "{}" }
11+
12+
let guidString1 = "11111111-1111-1111-1111-111111111111"
13+
14+
let guidString2 = "22222222-2222-2222-2222-222222222222"
15+
16+
[<Tests>]
17+
let tests =
18+
testList
19+
"Read Tests"
20+
[ testAsync "Should read forward from specific stream." {
21+
let inMemStore = new SqlStreamStore.InMemoryStreamStore()
22+
23+
let streamName = "test"
24+
25+
let appendVersion = AppendVersion.NoStream
26+
27+
let msg1 = newTestMessage guidString1
28+
29+
let msg2 = newTestMessage guidString2
30+
31+
let msgList = [ msg1; msg2 ]
32+
33+
do! AppendRaw.appendNewMessages inMemStore streamName appendVersion msgList
34+
|> Async.Ignore
35+
36+
let readVersion = ReadVersion.Start
37+
38+
let! readResult = ReadRaw.readFromStream inMemStore ReadingDirection.Forward streamName readVersion 10
39+
40+
readResult.Messages
41+
|> Array.sortBy (fun msg -> msg.MessageId)
42+
|> fun sorted ->
43+
Expect.equal
44+
(sorted.[0].MessageId.ToString())
45+
guidString1
46+
"Error: first message in stream doesn't match."
47+
Expect.equal
48+
(sorted.[1].MessageId.ToString())
49+
guidString2
50+
"Error: second message in stream doesn't match."
51+
}
52+
testAsync "Should read Backward from specific stream." {
53+
let inMemStore = new SqlStreamStore.InMemoryStreamStore()
54+
55+
let streamName = "test"
56+
57+
let appendVersion = AppendVersion.NoStream
58+
59+
let msg1 = newTestMessage guidString1
60+
61+
let msg2 = newTestMessage guidString2
62+
63+
let msgList = [ msg1; msg2 ]
64+
65+
do! AppendRaw.appendNewMessages inMemStore streamName appendVersion msgList
66+
|> Async.Ignore
67+
68+
let readVersion = ReadVersion.End
69+
70+
let! readResult = ReadRaw.readFromStream inMemStore ReadingDirection.Backward streamName readVersion 10
71+
72+
readResult.Messages
73+
|> Array.sortBy (fun msg -> msg.MessageId)
74+
|> fun sorted ->
75+
Expect.equal
76+
(sorted.[1].MessageId.ToString())
77+
guidString2
78+
"Error: second message in stream doesn't match."
79+
Expect.equal
80+
(sorted.[0].MessageId.ToString())
81+
guidString1
82+
"Error: first message in stream doesn't match."
83+
}
84+
85+
testAsync "Should read from all streams forward." {
86+
let inMemStore = new SqlStreamStore.InMemoryStreamStore()
87+
88+
let stream1 = "test1"
89+
90+
let stream2 = "test2"
91+
92+
let appendVersion = AppendVersion.NoStream
93+
94+
let msg1 = newTestMessage guidString1
95+
96+
let msg2 = newTestMessage guidString2
97+
98+
do! AppendRaw.appendNewMessage inMemStore stream1 appendVersion msg1
99+
|> Async.Ignore
100+
101+
do! AppendRaw.appendNewMessage inMemStore stream2 appendVersion msg2
102+
|> Async.Ignore
103+
104+
let! readResult = ReadRaw.readFromAllStream inMemStore ReadingDirection.Forward StartPosition.Start 10
105+
106+
readResult.Messages
107+
|> Array.sortBy (fun msg -> msg.MessageId)
108+
|> fun sorted ->
109+
Expect.equal
110+
(sorted.[0].MessageId.ToString())
111+
guidString1
112+
"Error: first message in stream doesn't match."
113+
Expect.equal
114+
(sorted.[1].MessageId.ToString())
115+
guidString2
116+
"Error: second message in stream doesn't match."
117+
}
118+
119+
testAsync "Should read from all streams backward." {
120+
let inMemStore = new SqlStreamStore.InMemoryStreamStore()
121+
122+
let stream1 = "test1"
123+
124+
let stream2 = "test2"
125+
126+
let appendVersion = AppendVersion.NoStream
127+
128+
let msg1 = newTestMessage guidString1
129+
130+
let msg2 = newTestMessage guidString2
131+
132+
do! AppendRaw.appendNewMessage inMemStore stream1 appendVersion msg1
133+
|> Async.Ignore
134+
135+
do! AppendRaw.appendNewMessage inMemStore stream2 appendVersion msg2
136+
|> Async.Ignore
137+
138+
let! readResult = ReadRaw.readFromAllStream inMemStore ReadingDirection.Backward StartPosition.End 10
139+
140+
readResult.Messages
141+
|> Array.sortBy (fun msg -> msg.MessageId)
142+
|> fun sorted ->
143+
Expect.equal
144+
(sorted.[1].MessageId.ToString())
145+
guidString2
146+
"Error: second message in stream doesn't match."
147+
Expect.equal
148+
(sorted.[0].MessageId.ToString())
149+
guidString1
150+
"Error: first message in stream doesn't match."
151+
} ]
152+
153+

tests/SqlStreamStore.FSharp.Tests.fsproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
<Compile Include="AppendRawTests.fs" />
1111
<Compile Include="AppendTests.fs" />
1212
<Compile Include="ReadRawTests.fs" />
13+
<Compile Include="ReadTests.fs" />
1314
<Compile Include="Program.fs" />
1415
</ItemGroup>
1516

0 commit comments

Comments
 (0)