public async Task Query() { /* Given */ await Model.AddAsync(new EventsModel.NewEvent { Type = EventsModel.EventType.DELETE, Payload = "payload1" }); await Model.AddAsync(new EventsModel.NewEvent { Type = EventsModel.EventType.UPDATE, Payload = "payload2" }); var query = @"{ events { __typename id type payload } }"; /* When */ var result = await Executor.ExecuteAsync(new ExecutionOptions { Schema = Schema, Document = query }); /* Then */ result.ShouldMatchJson( @"{ ""data"": { ""events"": [ { ""type"": ""DELETE"", ""__typename"": ""Event"", ""payload"": ""payload1"", ""id"": ""1"" }, { ""type"": ""UPDATE"", ""__typename"": ""Event"", ""payload"": ""payload2"", ""id"": ""2"" } ] } }"); }
public async Task Subscription() { /* Given */ var subscription = @"subscription { events { __typename id type payload } }"; var cts = new CancellationTokenSource(TimeSpan.FromSeconds(30)); /* When */ var result = await Executor.SubscribeAsync(new ExecutionOptions { Schema = Schema, Document = subscription }, cts.Token); await Model.AddAsync(new EventsModel.NewEvent { Type = EventsModel.EventType.DELETE, Payload = "payload1" }); var ev = await result.Source.Reader.ReadAsync(cts.Token); // unsubscribe cts.Cancel(); /* Then */ ev.ShouldMatchJson( @"{ ""data"": { ""events"": { ""type"": ""DELETE"", ""id"": ""1"", ""__typename"": ""Event"", ""payload"": ""payload1"" } } }"); }