コード例 #1
0
    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""
                      }
                    ]
                  }
                }");
    }
コード例 #2
0
    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""
                    }
                  }
                }");
    }