public async Task Id_On_Objects()
        {
            // arrange
            var idSerializer = new IdSerializer();
            var someId       = idSerializer.Serialize("Some", 1);

            // act
            IExecutionResult result =
                await SchemaBuilder.New()
                .AddQueryType <QueryType>()
                .AddType <FooPayloadType>()
                .Create()
                .MakeExecutable()
                .ExecuteAsync(
                    QueryRequestBuilder.New()
                    .SetQuery(
                        @"query foo ($someId: ID!) {
                                    foo(input: { someId: $someId }) {
                                        someId
                                    }
                                }")
                    .SetVariableValue("someId", someId)
                    .Create());

            // assert
            new
            {
                result = result.ToJson(),
                someId
            }.MatchSnapshot();
        }
        public async Task Id_On_Arguments()
        {
            // arrange
            var idSerializer = new IdSerializer();
            var intId        = idSerializer.Serialize("Query", 1);
            var stringId     = idSerializer.Serialize("Query", "abc");
            var guidId       = idSerializer.Serialize("Query", Guid.Empty);

            // act
            IExecutionResult result =
                await SchemaBuilder.New()
                .AddQueryType <QueryType>()
                .AddType <FooPayloadType>()
                .Create()
                .MakeExecutable()
                .ExecuteAsync(
                    QueryRequestBuilder.New()
                    .SetQuery(
                        @"query foo ($intId: ID! $stringId: ID! $guidId: ID!) {
                                    intId(id: $intId)
                                    stringId(id: $stringId)
                                    guidId(id: $guidId)
                                }")
                    .SetVariableValue("intId", intId)
                    .SetVariableValue("stringId", stringId)
                    .SetVariableValue("guidId", guidId)
                    .Create());

            // assert
            result.ToJson().MatchSnapshot();
        }
        public void IsPossibleBase64String(string serialized, bool valid)
        {
            // arrange
            var serializer = new IdSerializer();

            // act
            bool result = IdSerializer.IsPossibleBase64String(serialized);

            // assert
            Assert.Equal(valid, result);
        }
        public void Serialize_IdIsNull_Null()
        {
            // arrange
            var serializer = new IdSerializer();

            // act
            var s = serializer.Serialize("Foo", default(object));

            // assert
            Assert.Null(s);
        }
        public void Deserialize_SerializedIsNull_ArgumentNullException()
        {
            // arrange
            var serializer = new IdSerializer();

            // act
            Action a = () => serializer.Deserialize(null);

            // assert
            Assert.Throws <ArgumentNullException>(a);
        }
        public void IsPossibleBase64String_sIsNull_ArgumentNullException()
        {
            // arrange
            var serializer = new IdSerializer();

            // act
            Action a = () => IdSerializer.IsPossibleBase64String(null);

            // assert
            Assert.Throws <ArgumentNullException>(a);
        }
Beispiel #7
0
        public void Serialize_IdIsNull_ArgumentNullException()
        {
            // arrange
            var serializer = new IdSerializer();

            // act
            Action a = () => serializer.Serialize("Foo", default(object));

            // assert
            Assert.Throws <ArgumentNullException>(a);
        }
        public void Serialize_TypeNameIsEmpty_ArgumentException()
        {
            // arrange
            var serializer = new IdSerializer();

            // act
            Action a = () => serializer.Serialize("", 123);

            // assert
            Assert.Throws <ArgumentException>(a);
        }
        public async Task Id_On_Arguments()
        {
            // arrange
            var idSerializer = new IdSerializer();
            var intId        = idSerializer.Serialize("Query", 1);
            var stringId     = idSerializer.Serialize("Query", "abc");
            var guidId       = idSerializer.Serialize(
                "Query",
                new Guid("26a2dc8f-4dab-408c-88c6-523a0a89a2b5"));

            // act
            IExecutionResult result =
                await SchemaBuilder.New()
                .AddQueryType <Query>()
                .AddType <FooPayload>()
                .Create()
                .MakeExecutable()
                .ExecuteAsync(
                    QueryRequestBuilder.New()
                    .SetQuery(@"query foo (
                                $intId: ID!
                                $nullIntId: ID = null
                                $stringId: ID!
                                $nullStringId: ID = null
                                $guidId: ID!
                                $nullGuidId: ID = null)
                            {
                                intId(id: $intId)
                                nullableIntId(id: $intId)
                                nullableIntIdGivenNull: nullableIntId(id: $nullIntId)
                                intIdList(id: [$intId])
                                nullableIntIdList(id: [$intId, $nullIntId])
                                stringId(id: $stringId)
                                nullableStringId(id: $stringId)
                                nullableStringIdGivenNull: nullableStringId(id: $nullStringId)
                                stringIdList(id: [$stringId])
                                nullableStringIdList(id: [$stringId, $nullStringId])
                                guidId(id: $guidId)
                                nullableGuidId(id: $guidId)
                                nullableGuidIdGivenNull: nullableGuidId(id: $nullGuidId)
                                guidIdList(id: [$guidId $guidId])
                                nullableGuidIdList(id: [$guidId $nullGuidId $guidId])
                            }")
                    .SetVariableValue("intId", intId)
                    .SetVariableValue("stringId", stringId)
                    .SetVariableValue("guidId", guidId)
                    .Create());

            // assert
            result.ToJson().MatchSnapshot();
        }
        public void DeserializeIdValue(
            string serialized, object id, Type idType)
        {
            // arrange
            var serializer = new IdSerializer();

            // act
            IdValue value = serializer.Deserialize(serialized);

            // assert
            Assert.IsType(idType, value.Value);
            Assert.Equal(id, value.Value);
            Assert.Equal("Foo", value.TypeName);
        }
        public void DeserializeGuidValue()
        {
            // arrange
            var serialized = "Rm9vLWc989TaMzDXRbdUHZrCOXTZ";
            var serializer = new IdSerializer();

            // act
            IdValue value = serializer.Deserialize(serialized);

            // assert
            Assert.Equal(
                new Guid("dad4f33d303345d7b7541d9ac23974d9"),
                Assert.IsType <Guid>(value.Value));
            Assert.Equal("Foo", value.TypeName);
        }
        public void DeserializeGuidValue()
        {
            // arrange
            var serialized = "Rm9vCmdkYWQ0ZjMzZDMwMzM0NWQ3Yjc1NDFkOWFjMjM5NzRkOQ==";
            var serializer = new IdSerializer();

            // act
            IdValue value = serializer.Deserialize(serialized);

            // assert
            Assert.Equal(
                new Guid("dad4f33d303345d7b7541d9ac23974d9"),
                Assert.IsType <Guid>(value.Value));
            Assert.Equal("Foo", value.TypeName);
        }
        public void SerializeIdValue(object id, string expected)
        {
            // arrange
            NameString typeName   = "Foo";
            var        serializer = new IdSerializer();

            // act
            string serializedId = serializer.Serialize(typeName, id);

            // assert
            string unwrapped = Encoding.UTF8.GetString(
                Convert.FromBase64String(serializedId));

            Assert.Equal(expected, unwrapped);
        }
        public async Task Id_On_Objects_Given_Nulls()
        {
            // arrange
            var idSerializer = new IdSerializer();
            var someId       = idSerializer.Serialize("Some", "1");
            var someIntId    = idSerializer.Serialize("Some", 1);

            // act
            IExecutionResult result =
                await SchemaBuilder.New()
                .AddQueryType <Query>()
                .AddType <FooPayload>()
                .Create()
                .MakeExecutable()
                .ExecuteAsync(
                    QueryRequestBuilder.New()
                    .SetQuery(
                        @"query foo (
                                    $someId: ID! $someIntId: ID! 
                                    $someNullableId: ID 
                                    $someNullableIntId: ID) {
                                    foo(input: {
                                        someId: $someId someIds: [$someIntId]
                                        someNullableId: $someNullableId 
                                        someNullableIds: [$someNullableIntId, $someIntId] })
                                    {
                                        someId
                                        someNullableId
                                        ... on FooPayload {
                                            someIds
                                            someNullableIds
                                        }
                                    }
                                }")
                    .SetVariableValue("someId", someId)
                    .SetVariableValue("someNullableId", null)
                    .SetVariableValue("someIntId", someIntId)
                    .SetVariableValue("someNullableIntId", null)
                    .Create());

            // assert
            new
            {
                result = result.ToJson(),
                someId,
                someIntId
            }.MatchSnapshot();
        }
        public void SerializeIdValueWithSchemaName(object id, string expected)
        {
            // arrange
            NameString schema     = "Bar";
            NameString typeName   = "Foo";
            var        serializer = new IdSerializer(includeSchemaName: true);

            // act
            string serializedId = serializer.Serialize(schema, typeName, id);

            // assert
            string unwrapped = Encoding.UTF8.GetString(
                Convert.FromBase64String(serializedId));

            Assert.Equal(expected, unwrapped);
        }
        public void SerializeGuidValue()
        {
            // arrange
            NameString typeName   = "Foo";
            var        id         = new Guid("dad4f33d303345d7b7541d9ac23974d9");
            var        serializer = new IdSerializer();

            // act
            string serializedId = serializer.Serialize(typeName, id);

            // assert
            string unwrapped = Encoding.UTF8.GetString(
                Convert.FromBase64String(serializedId));

            Assert.Equal("Foo\ngdad4f33d303345d7b7541d9ac23974d9", unwrapped);
        }
        public async Task PolyId_On_Arguments()
        {
            // arrange
            var  idSerializer = new IdSerializer();
            var  intId        = 1;
            var  stringId     = "abc";
            Guid guidId       = Guid.Empty;

            // act
            IExecutionResult result =
                await SchemaBuilder.New()
                .AddQueryType <Query>()
                .AddType <FooPayload>()
                .TryAddTypeInterceptor <PolymorphicGlobalIdsTypeInterceptor>()
                .Create()
                .MakeExecutable()
                .ExecuteAsync(
                    QueryRequestBuilder.New()
                    .SetQuery(
                        @"query foo ($intId: ID! $stringId: ID! $guidId: ID!) {
                                    intId(id: $intId)
                                    intIdList(id: [$intId])
                                    stringId(id: $stringId)
                                    stringIdList(id: [$stringId])
                                    guidId(id: $guidId)
                                    guidIdList(id: [$guidId $guidId])
                                }")
                    .SetVariableValue("intId", intId)
                    .SetVariableValue("stringId", stringId)
                    .SetVariableValue("guidId", guidId.ToString())
                    .Create());

            // assert
            new
            {
                result = result.ToJson(),
                intId,
                stringId,
                guidId
            }.MatchSnapshot();
        }
        public async Task PolyId_On_Objects()
        {
            // arrange
            var idSerializer = new IdSerializer();
            var someId       = "1";
            var someIntId    = 1;

            // act
            IExecutionResult result =
                await SchemaBuilder.New()
                .AddQueryType <Query>()
                .AddType <FooPayload>()
                .TryAddTypeInterceptor <PolymorphicGlobalIdsTypeInterceptor>()
                .Create()
                .MakeExecutable()
                .ExecuteAsync(
                    QueryRequestBuilder.New()
                    .SetQuery(
                        @"query foo ($someId: ID! $someIntId: ID!) {
                                    foo(input: { someId: $someId someIds: [$someIntId] }) {
                                        someId
                                        ... on FooPayload {
                                            someIds
                                        }
                                    }
                                }")
                    .SetVariableValue("someId", someId)
                    .SetVariableValue("someIntId", someIntId)
                    .Create());

            // assert
            new
            {
                result = result.ToJson(),
                someId,
                someIntId
            }.MatchSnapshot();
        }
        public async Task InterceptedId_On_Objects()
        {
            // arrange
            var idSerializer = new IdSerializer();
            var someId       = idSerializer.Serialize("Some", "1");
            var someIntId    = idSerializer.Serialize("Some", 1);

            IRequestExecutor executor = SchemaBuilder.New()
                                        .AddQueryType <Query>()
                                        .AddType <FooPayload>()
                                        .Create()
                                        .MakeExecutable();

            // act
            IExecutionResult result = await executor
                                      .ExecuteAsync(
                QueryRequestBuilder.New()
                .SetQuery(
                    @"query foo($someId: ID! $someIntId: ID!) {
                                foo(input: {
                                    someId: $someId
                                    someIds: [$someIntId]
                                    interceptedId: 1
                                    interceptedIds: [1, 2] })
                                {
                                    someId
                                    someIds
                                    interceptedId
                                    interceptedIds
                                }
                            }")
                .SetVariableValue("someId", someId)
                .SetVariableValue("someIntId", someIntId)
                .Create());

            // assert
            result.ToJson().MatchSnapshot();
        }