11using System ;
22using System . Linq ;
33using System . Net . Http ;
4- using System . Net . Http . Headers ;
5- using System . Text ;
64using System . Text . Json ;
75using System . Text . Json . Serialization ;
86using System . Threading . Tasks ;
@@ -17,7 +15,9 @@ public class ReadEventTypesTest : EventSourcingDbTests
1715 public async Task ReadsNoEventTypesIfTheDatabaseIsEmpty ( )
1816 {
1917 var client = Container ! . GetClient ( ) ;
20- var eventTypesRead = await client . ReadEventTypesAsync ( ) . ToListAsync ( ) ;
18+ var eventTypesRead = await client
19+ . ReadEventTypesAsync ( TestContext . Current . CancellationToken )
20+ . ToListAsync ( TestContext . Current . CancellationToken ) ;
2121
2222 Assert . Empty ( eventTypesRead ) ;
2323 }
@@ -43,9 +43,11 @@ public async Task ReadsAllEventTypes()
4343 Data : secondData
4444 ) ;
4545
46- await client . WriteEventsAsync ( [ firstEvent , secondEvent ] ) ;
46+ await client . WriteEventsAsync ( [ firstEvent , secondEvent ] , token : TestContext . Current . CancellationToken ) ;
4747
48- var eventTypesRead = await client . ReadEventTypesAsync ( ) . ToListAsync ( ) ;
48+ var eventTypesRead = await client
49+ . ReadEventTypesAsync ( TestContext . Current . CancellationToken )
50+ . ToListAsync ( TestContext . Current . CancellationToken ) ;
4951
5052 Assert . Equal ( 2 , eventTypesRead . Count ) ;
5153 Assert . Equal ( eventTypesRead [ 0 ] , new EventType (
@@ -65,46 +67,35 @@ public async Task SupportsReadingEventSchemas()
6567 {
6668 var client = Container ! . GetClient ( ) ;
6769
68- // TODO: simplify this once schema registration is supported by the client.
69- var registerEventSchemaUrl = new Uri ( Container . GetBaseUrl ( ) , "/api/v1/register-event-schema" ) ;
70- var eventSchema = new
71- {
72- Type = "object" ,
73- Properties = new { value = new { type = "integer" } } ,
74- Required = new [ ] { "value" }
75- } ;
76-
77- using var request = new HttpRequestMessage ( HttpMethod . Post , registerEventSchemaUrl ) ;
78- request . Headers . Authorization = new AuthenticationHeaderValue ( "Bearer" , Container . GetApiToken ( ) ) ;
79- request . Content = new StringContent (
80- JsonSerializer . Serialize ( new
70+ const string schemaJson =
71+ """
8172 {
82- eventType = "io.eventsourcingdb.v1.test" ,
83- schema = eventSchema
84- } , _defaultSerializerOptions ) ,
85- Encoding . UTF8 ,
86- "application/json"
87- ) ;
88- using var response = await _httpClient . SendAsync ( request ) ;
89- response . EnsureSuccessStatusCode ( ) ;
90-
91- var eventTypesRead = await client . ReadEventTypesAsync ( ) . ToListAsync ( ) ;
73+ "type": "object",
74+ "properties": {
75+ "value": {
76+ "type": "number"
77+ }
78+ },
79+ "required": [
80+ "value"
81+ ]
82+ }
83+ """ ;
84+ var schema = JsonDocument . Parse ( schemaJson ) . RootElement ;
85+ const string eventType = "io.eventsourcingdb.v1.test" ;
86+ await client . RegisterEventSchemaAsync ( eventType , schema , TestContext . Current . CancellationToken ) ;
87+
88+ var eventTypesRead = await client
89+ . ReadEventTypesAsync ( TestContext . Current . CancellationToken )
90+ . ToListAsync ( TestContext . Current . CancellationToken ) ;
9291
9392 Assert . Single ( eventTypesRead ) ;
94- Assert . Collection ( eventTypesRead , eventType =>
93+ Assert . Collection ( eventTypesRead , type =>
9594 {
96- Assert . Equal ( "io.eventsourcingdb.v1.test" , eventType . Type ) ;
97- Assert . True ( eventType . IsPhantom ) ;
98- Assert . NotNull ( eventType . Schema ) ;
99-
100- var schema = eventType . Schema . Value ;
101- Assert . Equal ( JsonValueKind . Object , schema . ValueKind ) ;
102- Assert . Equal ( "object" , schema . GetProperty ( "type" ) . GetString ( ) ) ;
103- Assert . Equal ( "integer" , schema . GetProperty ( "properties" ) . GetProperty ( "value" ) . GetProperty ( "type" ) . GetString ( ) ) ;
104- Assert . True ( schema . TryGetProperty ( "required" , out var required ) ) ;
105- Assert . Equal ( JsonValueKind . Array , required . ValueKind ) ;
106- Assert . Equal ( 1 , required . GetArrayLength ( ) ) ;
107- Assert . Equal ( "value" , required [ 0 ] . GetString ( ) ) ;
95+ Assert . Equal ( eventType , type . Type ) ;
96+ Assert . True ( type . IsPhantom ) ;
97+ Assert . NotNull ( type . Schema ) ;
98+ Assert . True ( JsonElementComparer . Equals ( type . Schema . Value , schema ) ) ;
10899 } ) ;
109100 }
110101
0 commit comments