public void Reads_Null_GraphQLRequest_In_List(IGraphQLTextSerializer serializer)
    {
        var actual = serializer.Deserialize <GraphQLRequest[]>("[null]");

        actual.Length.ShouldBe(1);
        actual.First().ShouldBeNull();
    }
    public void Reads_GraphQLRequest_List_No_Items(IGraphQLTextSerializer serializer)
    {
        var test   = $"[]";
        var actual = serializer.Deserialize <List <GraphQLRequest> >(test);

        actual.Count.ShouldBe(0);
    }
示例#3
0
    public async Task should_map(IGraphQLTextSerializer serializer)
    {
        var documentExecuter = new DocumentExecuter();
        var executionResult  = await documentExecuter.ExecuteAsync(_ =>
        {
            _.Schema    = new Issue2275Schema();
            _.Query     = @"query($data:Input!) {
                                request(data: $data)
                }";
            _.Variables = serializer.Deserialize <Inputs>(@"{
                    ""data"": {
                        ""clientId"": 2,
                        ""filters"": [{
                            ""key"": ""o"",
                            ""value"": 25
                        }]
                    }
                }");
        }).ConfigureAwait(false);

        var json = serializer.Serialize(executionResult);

        executionResult.Errors.ShouldBeNull();

        json.ShouldBe(@"{
  ""data"": {
    ""request"": ""2: [o=25]""
  }
}");
    }
    public void Reads_GraphQLRequest_IsCaseSensitive(IGraphQLTextSerializer serializer)
    {
        var test   = $"{{\"query\":\"hello\",\"Variables\":{ExampleJson}}}";
        var actual = serializer.Deserialize <GraphQLRequest>(test);

        actual.Query.ShouldBe("hello");
        actual.Variables.ShouldBeNull();
    }
    public void Reads_GraphQLRequest(IGraphQLTextSerializer serializer)
    {
        var test   = $"{{\"query\":\"hello\",\"variables\":{ExampleJson}}}";
        var actual = serializer.Deserialize <GraphQLRequest>(test);

        actual.Query.ShouldBe("hello");
        Verify(actual.Variables);
    }
示例#6
0
    public void InputsDecodesDatesAsStrings(IGraphQLTextSerializer serializer)
    {
        var date    = new DateTimeOffset(2022, 2, 6, 12, 26, 53, TimeSpan.FromHours(-5));
        var dateStr = date.ToString("O");
        var actual  = serializer.Deserialize <Inputs>($"{{\"date\":\"{dateStr}\"}}");

        actual.ShouldContainKeyAndValue("date", dateStr);
    }
示例#7
0
    public void FromJson(IGraphQLTextSerializer serializer)
    {
        var test   = $"{{\"query\":\"hello\",\"variables\":{ExampleJson}}}";
        var actual = serializer.Deserialize <TestClass1>(test);

        actual.Query.ShouldBe("hello");
        Verify(actual.Variables);
    }
示例#8
0
    public void FromJson_Missing(IGraphQLTextSerializer serializer)
    {
        var test   = $"{{\"query\":\"hello\"}}";
        var actual = serializer.Deserialize <TestClass1>(test);

        actual.Query.ShouldBe("hello");
        actual.Variables.ShouldBeNull();
    }
    public void BatchRequestAsIListIsArrayForSingle(IGraphQLTextSerializer serializer)
    {
        // verifies that when deserializing to IList<GraphQLRequest>, and when it is not a batch request, the result is a GraphQLRequest[1]
        // note: the server counts on this behavior to determine whether or not a request is a batch request
        var actual = serializer.Deserialize <IList <GraphQLRequest> >("{}");

        actual.ShouldBeOfType <GraphQLRequest[]>();
        actual.Count.ShouldBe(1);
    }
    public void Reads_OperationMessage_Empty(IGraphQLTextSerializer serializer)
    {
        var test   = $"{{}}";
        var actual = serializer.Deserialize <OperationMessage>(test);

        actual.Id.ShouldBeNull();
        actual.Type.ShouldBeNull();
        actual.Payload.ShouldBeNull();
    }
    public void Reads_OperationMessage_Nulls(IGraphQLTextSerializer serializer)
    {
        var test   = $"{{\"id\":null,\"type\":null,\"payload\":null}}";
        var actual = serializer.Deserialize <OperationMessage>(test);

        actual.Id.ShouldBeNull();
        actual.Type.ShouldBeNull();
        actual.Payload.ShouldBeNull();
    }
    public void Reads_GraphQLRequest_List_NotCaseSensitive(IGraphQLTextSerializer serializer)
    {
        var test   = @"{""VARIABLES"":{""date"":""2015-12-22T10:10:10+03:00""},""query"":""test""}";
        var actual = serializer.Deserialize <List <GraphQLRequest> >(test);

        actual.Count.ShouldBe(1);
        actual[0].Query.ShouldBe("test");
        actual[0].Variables.ShouldBeNull();
    }
    public void Reads_GraphQLRequest_Other_Properties(IGraphQLTextSerializer serializer)
    {
        var test   = $"{{\"query\":\"hello\",\"operationName\":\"hello2\",\"extensions\":{ExampleJson}}}";
        var actual = serializer.Deserialize <GraphQLRequest>(test);

        actual.Query.ShouldBe("hello");
        actual.OperationName.ShouldBe("hello2");
        Verify(actual.Extensions);
    }
    public void Reads_GraphQLRequest_List_Reads_Single_Item(IGraphQLTextSerializer serializer)
    {
        var test    = $"{{\"query\":\"hello\",\"variables\":{ExampleJson}}}";
        var actual  = serializer.Deserialize <List <GraphQLRequest> >(test);
        var request = actual.ShouldHaveSingleItem();

        request.Query.ShouldBe("hello");
        Verify(request.Variables);
    }
示例#15
0
    public void ElementToInputs(IGraphQLTextSerializer serializer)
    {
        var test   = $"{{\"query\":\"hello\",\"variables\":{ExampleJson}}}";
        var actual = serializer.Deserialize <TestClass2>(test);

        actual.Query.ShouldBe("hello");
        var variables = serializer.ReadNode <Inputs>(actual.Variables);

        Verify(variables);
    }
    public void Reads_GraphQLRequest_Empty(IGraphQLTextSerializer serializer)
    {
        var test   = $"{{}}";
        var actual = serializer.Deserialize <GraphQLRequest>(test);

        actual.Query.ShouldBeNull();
        actual.OperationName.ShouldBeNull();
        actual.Variables.ShouldBeNull();
        actual.Extensions.ShouldBeNull();
    }
    public void Reads_GraphQLRequest_Nulls(IGraphQLTextSerializer serializer)
    {
        var test   = $"{{\"query\":null,\"operationName\":null,\"variables\":null,\"extensions\":null}}";
        var actual = serializer.Deserialize <GraphQLRequest>(test);

        actual.Query.ShouldBeNull();
        actual.OperationName.ShouldBeNull();
        actual.Variables.ShouldBeNull();
        actual.Extensions.ShouldBeNull();
    }
示例#18
0
    public void FromJson_IsCaseInsensitive_Inputs(IGraphQLTextSerializer serializer)
    {
        var test   = $"{{\"Query\":\"hello\",\"Variables\":{ExampleJson}}}";
        var actual = serializer.Deserialize <TestClass1>(test);

        actual.Query.ShouldBe("hello");
        var variables = actual.Variables;

        Verify(variables);
    }
示例#19
0
    protected IPropagatorBlock <string, OperationMessage> CreateReaderJsonTransformer()
    {
        var transformer = new TransformBlock <string, OperationMessage>(
            input => _serializer.Deserialize <OperationMessage>(input),
            new ExecutionDataflowBlockOptions
        {
            EnsureOrdered = true
        });

        return(transformer);
    }
示例#20
0
    public static void ShouldBeSimilarTo(this object?actual, object?expected, string?customMessage = null)
    {
        if (expected is string str)
        {
            expected = _serializer.Deserialize <Inputs>(str);
        }
        var expectedJson = _serializer.Serialize(expected);
        var actualJson   = _serializer.Serialize(actual);

        actualJson.ShouldBe(expectedJson, customMessage);
    }
    public void Reads_GraphQLRequest_List_Multiple_Items(IGraphQLTextSerializer serializer)
    {
        var test   = $"[{{\"query\":\"hello\",\"variables\":{ExampleJson}}},{{\"query\":\"hello2\"}}]";
        var actual = serializer.Deserialize <List <GraphQLRequest> >(test);

        actual.Count.ShouldBe(2);
        actual[0].Query.ShouldBe("hello");
        Verify(actual[0].Variables);
        actual[1].Query.ShouldBe("hello2");
        actual[1].Variables.ShouldBeNull();
    }
    public void Reads_OperationMessage_Populated(IGraphQLTextSerializer serializer)
    {
        var test   = $"{{\"id\":\"hello\",\"type\":\"hello2\",\"payload\":{{\"query\":\"hello3\",\"variables\":{ExampleJson}}}}}";
        var actual = serializer.Deserialize <OperationMessage>(test);

        actual.Id.ShouldBe("hello");
        actual.Type.ShouldBe("hello2");
        actual.Payload.ShouldNotBeNull();
        var request = serializer.ReadNode <GraphQLRequest>(actual.Payload);

        request.Query.ShouldBe("hello3");
        Verify(request.Variables);
    }
    private void Reads_GraphQLRequest_Test <T>(IGraphQLTextSerializer serializer)
        where T : IEnumerable <GraphQLRequest>
    {
        var test   = $"[{{\"query\":\"hello\",\"variables\":{ExampleJson}}}, {{\"query\":\"dummy\"}}]";
        var actual = serializer.Deserialize <T>(test);

        actual.Count().ShouldBe(2);
        var request = actual.First();

        request.Query.ShouldBe("hello");
        Verify(request.Variables);
        var request2 = actual.Last();

        request2.Query.ShouldBe("dummy");
    }
    public void double_to_decimal_does_not_lose_precision(IGraphQLTextSerializer serializer)
    {
        string request = @"{
""operationName"": ""TestMutation"",
""variables"": {
  ""input"": {
    ""discount"": 12345678901234.56
    }
},
""query"": ""mutation TestMutation($input: MutationType!)""
}";

        var inputs = serializer.Deserialize <GraphQLRequest>(request);

        inputs.Variables.ShouldNotBeNull();
        inputs.Variables.Count.ShouldBe(1);
        var inner = inputs.Variables["input"].ShouldBeOfType <Dictionary <string, object> >();

        inner.Count.ShouldBe(1);
        var value = inner["discount"];

        value.ShouldBeOfType <decimal>().ShouldBe(12345678901234.56m);
    }
 public Inputs SystemTextJson() => _systemTextJsonSerializer.Deserialize <Inputs>(Json);
示例#26
0
 public static Inputs?ToInputs(this string?json)
 => _serializer.Deserialize <Inputs>(json) ?? Inputs.Empty;
 public Inputs NewtonsoftJson() => _newtonsoftJsonSerializer.Deserialize <Inputs>(Json);
示例#28
0
    public void StringToInputs(IGraphQLTextSerializer serializer)
    {
        var actual = serializer.Deserialize <Inputs>(ExampleJson);

        Verify(actual);
    }