public async Task Subscribe() { /* Given */ var addedMessage = new Message { Content = "test", From = new MessageFrom { DisplayName = "test", Id = "1" }, SentAt = DateTime.Now.Date }; var chat = new Chat(); var schema = new ChatSchema(chat); /* When */ var result = await ExecuteSubscribeAsync(new ExecutionOptions { Query = "subscription MessageAdded { messageAdded { from { id displayName } content sentAt } }", Schema = schema }).ConfigureAwait(false); chat.AddMessage(addedMessage); /* Then */ var stream = result.Streams.Values.FirstOrDefault(); var message = await stream.FirstOrDefaultAsync(); message.ShouldNotBeNull(); message.ShouldBeOfType <ExecutionResult>(); message.Data.ShouldNotBeNull(); message.Data.ShouldNotBeAssignableTo <Task>(); }
public async Task OnError() { /* Given */ var chat = new Chat(); var schema = new ChatSchema(chat); /* When */ var result = await ExecuteSubscribeAsync(new ExecutionOptions { Query = "subscription MessageAdded { messageAdded { from { id displayName } content sentAt } }", Schema = schema }).ConfigureAwait(false); chat.AddError(new Exception("test")); /* Then */ var stream = result.Streams.Values.FirstOrDefault(); var error = await Should.ThrowAsync <ExecutionError>(async() => await stream.FirstOrDefaultAsync()).ConfigureAwait(false); error.InnerException.Message.ShouldBe("test"); error.Path.ShouldBe(new[] { "messageAdded" }); }
public async Task SubscribeToContent() { /* Given */ var addedMessage = new Message { Content = "test", From = new MessageFrom { DisplayName = "test", Id = "1" }, SentAt = DateTime.Now.Date }; var chat = new Chat(); var schema = new ChatSchema(chat); /* When */ var result = await ExecuteSubscribeAsync(new ExecutionOptions { Query = "subscription newMessageContent { newMessageContent }", Schema = schema }).ConfigureAwait(false); chat.AddMessage(addedMessage); /* Then */ var stream = result.Streams.Values.FirstOrDefault(); var message = await stream.FirstOrDefaultAsync(); message.ShouldNotBeNull(); var data = message.Data.ToDict(); data.ShouldNotBeNull(); data["newMessageContent"].ShouldNotBeNull(); data["newMessageContent"].ToString().ShouldBe("test"); }
public async Task SubscribeWithArgumentAsync() { /* Given */ var addedMessage = new Message { Content = "test", From = new MessageFrom { DisplayName = "test", Id = "1" }, SentAt = DateTime.Now.Date }; var chat = new Chat(); var schema = new ChatSchema(chat); /* When */ var result = await ExecuteSubscribeAsync(new ExecutionOptions { Query = "subscription MessageAddedByUser($id:String!) { messageAddedByUserAsync(id: $id) { from { id displayName } content sentAt } }", Schema = schema, Variables = new Inputs(new Dictionary <string, object> { ["id"] = "1" }) }).ConfigureAwait(false); chat.AddMessage(addedMessage); /* Then */ var stream = result.Streams.Values.FirstOrDefault(); var message = await stream.FirstOrDefaultAsync(); message.ShouldNotBeNull(); message.ShouldBeOfType <ExecutionResult>(); message.Data.ShouldNotBeNull(); }