예제 #1
0
        public async Task When_everything_is_fine_expected_queries_and_commands_should_be_invoked()
        {
            _queryExecuter.Execute(Arg.Any <GetUserBySsnQuery>()).Returns(Task.FromResult((true, new User("1234567890", "Nils", "Gold smith"), 0)));

            await _sut.Run(new UpdateUserRequest { Name = "Nisse", Ssn = "1234567890", Work = "Gold digger" });

            await _queryExecuter.Received().Execute(Arg.Any <GetUserBySsnQuery>());

            await _commandHandler.Received().Handle(Arg.Any <UpdateNameCommand>(), Arg.Any <User>());

            await _commandHandler.Received().Handle(Arg.Any <UpdateWorkCommand>(), Arg.Any <User>());
        }
        public void GraphQLOrgVariableExample()
        {
            // arrange
            var query = @"
            query HeroNameAndFriends($episode: Episode) {
                hero(episode: $episode) {
                    name
                    friends {
                        name
                    }
                }
            }";

            var variables = new Dictionary <string, object>
            {
                { "episode", new EnumValueNode("JEDI") }
            };

            IQueryExecuter executer = CreateSchema().MakeExecutable();

            // act
            IExecutionResult result = executer.Execute(query, variables);

            // assert
            result.Snapshot();
        }
        public void GraphQLOrgFragmentExample()
        {
            // arrange
            var query = @"
            {
                leftComparison: hero(episode: EMPIRE) {
                    ...comparisonFields
                }
                rightComparison: hero(episode: JEDI) {
                    ...comparisonFields
                }
            }

            fragment comparisonFields on Character {
                name
                appearsIn
                friends {
                    name
                }
            }";

            IQueryExecuter executer = CreateSchema().MakeExecutable();

            // act
            IExecutionResult result = executer.Execute(query);

            // assert
            result.Snapshot();
        }
예제 #4
0
    public TResult Execute(TQuery query)
    {
        // if it is on cache return the result
        TResult result;

        if (!IsCached(query, out result))
        {
            // otherwise lock other threads
            // on the same query
            var queryObject = _queries.GetOrAdd(query, k => new QueryObject()
            {
                Query = k
            });
            lock (queryObject)
            {
                // double check it is not cached already
                if (!IsCached(query, out result))
                {
                    result = _inner.Execute(queryObject.Query);
                    PopulateCache(query, result);
                }
            }
        }
        return(result);
    }
        public void GraphQLOrgMetaFieldAndUnionExample()
        {
            // arrange
            var query = @"
            {
                search(text: ""an"") {
                    __typename
                    ... on Human {
                        name
                        height
                    }
                    ... on Droid {
                        name
                        primaryFunction
                    }
                    ... on Starship {
                        name
                        length
                    }
                }
            }";

            IQueryExecuter executer = CreateSchema().MakeExecutable();

            // act
            IExecutionResult result = executer.Execute(query);

            // assert
            result.Snapshot();
        }
        public void GraphQLOrgInlineFragmentExample2()
        {
            // arrange
            var query = @"
            query HeroForEpisode($ep: Episode!) {
                hero(episode: $ep) {
                    name
                    ... on Droid {
                        primaryFunction
                    }
                    ... on Human {
                        height
                    }
                }
            }";

            var variables = new Dictionary <string, object>
            {
                { "ep", new EnumValueNode("EMPIRE") },
            };

            IQueryExecuter executer = CreateSchema().MakeExecutable();

            // act
            IExecutionResult result = executer.Execute(query, variables);

            // assert
            result.Snapshot();
        }
        public void GraphQLOrgMutationExample()
        {
            // arrange
            var query = @"
            mutation CreateReviewForEpisode($ep: Episode!, $review: ReviewInput!) {
                createReview(episode: $ep, review: $review) {
                    stars
                    commentary
                }
            }";

            var variables = new Dictionary <string, object>
            {
                { "ep", new EnumValueNode("JEDI") },
                { "review", new ObjectValueNode(
                      new ObjectFieldNode("stars", new IntValueNode(5)),
                      new ObjectFieldNode("commentary",
                                          new StringValueNode("This is a great movie!"))) }
            };

            IQueryExecuter executer = CreateSchema().MakeExecutable();

            // act
            IExecutionResult result = executer.Execute(query, variables);

            // assert
            result.Snapshot();
        }
        public void GraphQLOrgDirectiveSkipExample2()
        {
            // arrange
            var query = @"
            query Hero($episode: Episode, $withFriends: Boolean!) {
                hero(episode: $episode) {
                    name
                    friends @skip(if: $withFriends) {
                        name
                    }
                }
            }";

            var variables = new Dictionary <string, object>
            {
                { "episode", new EnumValueNode("JEDI") },
                { "withFriends", new BooleanValueNode(true) }
            };

            IQueryExecuter executer = CreateSchema().MakeExecutable();

            // act
            IExecutionResult result = executer.Execute(query, variables);

            // assert
            result.Snapshot();
        }
 public static IExecutionResult Execute(
     this IQueryExecuter executer,
     string query,
     IReadOnlyDictionary <string, object> variableValues)
 {
     return(executer.Execute(
                new QueryRequest(query)
     {
         VariableValues = variableValues
     }));
 }
        public void ExecutionDepthShouldNotLeadToEmptyObects()
        {
            // arrange
            var query = @"
            query foo {
                hero(episode: NEWHOPE) {
                    __typename
                    id
                    name
                    ... on Human {
                        __typename
                        homePlanet
                    }
                    ... on Droid {
                        __typename
                        primaryFunction
                    }
                    friends {
                        __typename
                        ... on Human {
                            __typename
                            homePlanet
                            friends {
                                __typename
                            }
                        }
                        ... on Droid {
                            __typename
                            primaryFunction
                            friends {
                                __typename
                            }
                        }
                    }
                }
            }";

            IQueryExecuter executer = CreateSchema().MakeExecutable(
                new QueryExecutionOptions
            {
                MaxExecutionDepth = 3
            });

            // act
            IExecutionResult result = executer.Execute(query);

            // assert
            result.Snapshot();
        }
예제 #11
0
        public async Task <(bool success, User model, int status)> Run(UpdateUserRequest request)
        {
            _log.LogInformation($"Running process {GetType().Name}");

            try
            {
                var getUserQuery = new GetUserBySsnQuery(request.Ssn, _userStorage);

                var(success, updatedUser, status) = await _queryExecuter.Execute(getUserQuery);

                if (!success)
                {
                    _log.LogInformation($"Failed getting user {request.Ssn}");

                    return(false, default, status);
        public void EnumValueIsCoercedToListValue()
        {
            // arrange
            var query = @"
            {
                heroes(episodes: EMPIRE) {
                    name
                }
            }";

            IQueryExecuter executer = CreateSchema().MakeExecutable();

            // act
            IExecutionResult result = executer.Execute(query);

            // assert
            result.Snapshot();
        }
        public void GraphQLOrgFieldArgumentExample2()
        {
            // arrange
            var query = @"
            {
                human(id: ""1000"") {
                    name
                    height(unit: FOOT)
                }
            }";

            IQueryExecuter executer = CreateSchema().MakeExecutable();

            // act
            IExecutionResult result = executer.Execute(query);

            // assert
            result.Snapshot();
        }
        public void GraphQLOrgAliasExample()
        {
            // arrange
            var query = @"
            {
                empireHero: hero(episode: EMPIRE) {
                    name
                }
                jediHero: hero(episode: JEDI) {
                    name
                }
            }";

            IQueryExecuter executer = CreateSchema().MakeExecutable();

            // act
            IExecutionResult result = executer.Execute(query);

            // assert
            result.Snapshot();
        }
        public void GraphQLOrgVariableWithDefaultValueExample()
        {
            // arrange
            var query = @"
            query HeroNameAndFriends($episode: Episode = JEDI) {
                hero(episode: $episode) {
                    name
                    friends {
                        name
                    }
                }
            }";

            IQueryExecuter executer = CreateSchema().MakeExecutable();

            // act
            IExecutionResult result = executer.Execute(query);

            // assert
            result.Snapshot();
        }
        public void GraphQLOrgOperationNameExample()
        {
            // arrange
            var query = @"
            query HeroNameAndFriends {
                hero {
                    name
                    friends {
                        name
                    }
                }
            }";

            IQueryExecuter executer = CreateSchema().MakeExecutable();

            // act
            IExecutionResult result = executer.Execute(query);

            // assert
            result.Snapshot();
        }
        public void ConditionalInlineFragment()
        {
            // arrange
            var query = @"
            {
                heroes(episodes: [EMPIRE]) {
                    name
                    ... @include(if: true) {
                        height
                    }
                }
            }";

            IQueryExecuter executer = CreateSchema().MakeExecutable();

            // act
            IExecutionResult result = executer.Execute(query);

            // assert
            result.Snapshot();
        }
        public void Execute_ListWithNullValues_ResultContainsNullElement()
        {
            // arrange
            var query = @"
            query {
                human(id: ""1001"") {
                    id
                    name
                    otherHuman {
                        name
                    }
                }
            }";

            IQueryExecuter executer = CreateSchema().MakeExecutable();

            // act
            IExecutionResult result = executer.Execute(query);

            // assert
            result.Snapshot();
        }
        public void TypeNameFieldIsCorrectlyExecutedOnInterfaces()
        {
            // arrange
            var query = @"
                query foo {
                    hero(episode: NEWHOPE) {
                        __typename
                        id
                        name
                        ... on Human {
                            __typename
                            homePlanet
                        }
                        ... on Droid {
                            __typename
                            primaryFunction
                        }
                        friends {
                            __typename
                            ... on Human {
                                __typename
                                homePlanet
                            }
                            ... on Droid {
                                __typename
                                primaryFunction
                            }
                        }
                    }
                }";

            IQueryExecuter executer = CreateSchema().MakeExecutable();

            // act
            IExecutionResult result = executer.Execute(query);

            // assert
            result.Snapshot();
        }
        public void GraphQLOrgFieldExample()
        {
            // arrange
            var query = @"
            {
                hero {
                    name
                    # Queries can have comments!
                    friends {
                        name
                    }
                }
            }";

            IQueryExecuter executer = CreateSchema().MakeExecutable();

            // act
            IExecutionResult result = executer.Execute(query);

            // assert
            result.Snapshot();
        }
        public void NonNullEnumsSerializeCorrectlyFromVariables()
        {
            // arrange
            var query = @"
                query getHero($episode: Episode!) {
                    hero(episode: $episode) {
                        name
                    }
                }";

            var variables = new Dictionary <string, object>
            {
                ["episode"] = "NEWHOPE"
            };

            IQueryExecuter executer = CreateSchema().MakeExecutable();

            // act
            IExecutionResult result = executer.Execute(query, variables);

            // assert
            result.Snapshot();
        }
        public void NonNullListVariableValues()
        {
            // arrange
            var query = @"
            query op($ep: [Episode!]!)
            {
                heroes(episodes: $ep) {
                    name
                }
            }";

            var variables = new Dictionary <string, object>
            {
                { "ep", new ListValueNode(new[] { new EnumValueNode("EMPIRE") }) }
            };

            IQueryExecuter executer = CreateSchema().MakeExecutable();

            // act
            IExecutionResult result = executer.Execute(query, variables);

            // assert
            result.Snapshot();
        }
 public static IExecutionResult Execute(
     this IQueryExecuter executer,
     string query)
 {
     return(executer.Execute(new QueryRequest(query)));
 }