public async Task HandleMessage() { // arrange string sessionId = await SessionCreator.CreateSessionAsync(); var handler = new PublishNewSchemaDocumentHandler( Storage, SchemaRepository, PublishSchemaEventSender); var schema = new Schema("abc", "def"); await SchemaRepository.AddSchemaAsync(schema); var environment = new Environment("abc", "def"); await EnvironmentRepository.AddEnvironmentAsync(environment); var message = new PublishDocumentMessage( sessionId, environment.Id, schema.Id, "externalId", Array.Empty <DocumentInfo>(), Array.Empty <Tag>()); IFileContainer fileContainer = await Storage.CreateContainerAsync(sessionId); byte[] buffer = Encoding.UTF8.GetBytes(@" type Query { foo: String } "); await fileContainer.CreateFileAsync("schema.graphql", buffer, 0, buffer.Length); // act await handler.HandleAsync(message, default); // assert var list = new List <PublishDocumentEvent>(); using var cts = new CancellationTokenSource(5000); IAsyncEnumerable <PublishDocumentEvent> eventStream = await PublishSchemaEventReceiver.SubscribeAsync(sessionId, cts.Token); await foreach (PublishDocumentEvent eventMessage in eventStream.WithCancellation(cts.Token)) { list.Add(eventMessage); } list.MatchSnapshot(matchOption => matchOption.Assert(fieldOption => Assert.Equal(sessionId, fieldOption.Field <string>("[0].SessionId")))); }
public async Task HandleMessage() { // arrange var handler = new PublishSchemaDocumentHandler( Storage, SchemaRepository, PublishSchemaEventSender); var schema = new Schema("abc", "def"); await SchemaRepository.AddSchemaAsync(schema); var environment = new Environment("abc", "def"); await EnvironmentRepository.AddEnvironmentAsync(environment); var message = new PublishDocumentMessage( "ghi", environment.Id, schema.Id, Array.Empty <Tag>()); IFileContainer fileContainer = await Storage.CreateContainerAsync("ghi"); using (Stream stream = await fileContainer.CreateFileAsync("schema.graphql")) { byte[] buffer = Encoding.UTF8.GetBytes(@" type Query { foo: String } "); await stream.WriteAsync(buffer, 0, buffer.Length); } // act await handler.HandleAsync(message, default); // assert var list = new List <PublishSchemaEvent>(); using var cts = new CancellationTokenSource(5000); IAsyncEnumerable <PublishSchemaEvent> eventStream = await PublishSchemaEventReceiver.SubscribeAsync("ghi", cts.Token); await foreach (PublishSchemaEvent eventMessage in eventStream.WithCancellation(cts.Token)) { list.Add(eventMessage); } list.MatchSnapshot(); }