Пример #1
0
        public GraphQLControllerShould()
        {
            // Given
            var documentExecutor = new Mock <IDocumentExecuter>();

            documentExecutor.Setup(x => x.ExecuteAsync(It.IsAny <ExecutionOptions>())).Returns(Task.FromResult(new ExecutionResult()));
            var schema = new Mock <ISchema>();
            var logger = new Mock <ILogger <GraphQLController> >();


            List <Core.Models.User> users = new List <Core.Models.User>
            {
                new Core.Models.User {
                    Id = 1, Nickname = "test", Email = "*****@*****.**", Lastname = "test", Firstname = "test"
                },

                new Core.Models.User {
                    Id = 2, Nickname = "test", Email = "*****@*****.**", Lastname = "test", Firstname = "test"
                }
            };

            Mock <Core.Data.IUserRepository> mockProductRepository = new Mock <Core.Data.IUserRepository>();

            mockProductRepository.Setup(mr => mr.GetAll()).Returns(Task.Run(() => users));
            mockProductRepository.Setup(mr => mr.Get(It.IsAny <long>())).Returns(Task.Run(() => users[0]));

            mockProductRepository.Setup(mr => mr.Add(It.IsAny <Core.Models.User>())).Returns(
                (Core.Models.User target) =>
            {
                return(users[0]);
            });

            this.repoUser = mockProductRepository.Object;

            _graphqlController = new GraphQLController(documentExecutor.Object, schema.Object, logger.Object, null);
        }
Пример #2
0
        public QLQuery(Core.Data.IDroidRepository droidRepository, Core.Data.IFriendRepository friendRepository,
                       Core.Data.IArticaleRepository articaleRepository, Core.Data.IClassificationRepository classificationRepository,
                       Core.Data.IUserRepository userRepository,
                       IMapper mapper)
        {
            Name = "Query";

            Field <ListGraphType <ArticaleType> >(
                "articles",
                arguments: new QueryArguments(
                    new QueryArgument <IntGraphType> {
                Name = "classificationId"
            },
                    new QueryArgument <IntGraphType> {
                Name = "userId"
            }
                    ),
                resolve: context => {
                var classificationId = context.GetArgument <int?>("classificationId");
                var userId           = context.GetArgument <int?>("userId");
                var articles         = articaleRepository.GetAll(classificationId, userId, "Classification", "User").Result;
                var mapped           = mapper.Map <List <Articale> >(articles);
                return(mapped);
            });

            Field <ListGraphType <ClassificationType> >(
                "classifications",
                resolve: context => {
                var classifications = classificationRepository.GetAll().Result;
                var mapped          = mapper.Map <List <Classification> >(classifications);
                return(mapped);
            });

            Field <UserType>(
                "user",
                arguments: new QueryArguments(
                    new QueryArgument <NonNullGraphType <IntGraphType> > {
                Name = "id"
            }
                    ),
                resolve: context => {
                var id     = context.GetArgument <int>("id");
                var user   = userRepository.Get(id).Result;
                var mapped = mapper.Map <User>(user);
                return(mapped);
            });

            Field <DroidType>(
                "hero",
                arguments: new QueryArguments(
                    new QueryArgument <NonNullGraphType <IntGraphType> > {
                Name = "id", Description = "id"
            }
                    ),
                resolve: context =>
            {
                var id     = context.GetArgument <int>("id");
                var droid  = droidRepository.Get(id).Result;
                var mapped = mapper.Map <Droid>(droid);
                return(mapped);
            });

            Field <ListGraphType <DroidType> >(
                "heros",
                resolve: context =>
            {
                var droids = droidRepository.GetAll().Result;
                var mapped = mapper.Map <List <Droid> >(droids);
                return(mapped);
                //var droidsview = new List<Droid>();
                //foreach (var item in droids.Result)
                //{
                //    droidsview.Add()
                //}
            });

            Field <FriendType>(
                "friend",
                arguments: new QueryArguments(
                    new QueryArgument <NonNullGraphType <IntGraphType> > {
                Name = "id"
            }
                    ),
                resolve: context =>
            {
                var id     = context.GetArgument <int>("id");
                var result = friendRepository.Get(id, include: "Droid").Result;
                var mapped = mapper.Map <Friend>(result);
                return(mapped);
            });

            Field <ListGraphType <FriendType> >(
                "friends",
                arguments: new QueryArguments(
                    new QueryArgument <FriendSexEnum> {
                Name = "sex"
            }
                    ),
                resolve: context =>
            {
                var sex = context.GetArgument <FriendSex?>("sex");
                if (sex.HasValue)
                {
                    var sexfriends = friendRepository.GetFriendBySex((int)sex.Value, "Droid").Result;
                    var sexmapped  = mapper.Map <List <Friend> >(sexfriends);
                    return(sexmapped);
                }
                var friends = friendRepository.GetAll("Droid").Result;
                var mapped  = mapper.Map <List <Friend> >(friends);
                return(mapped);
            });
        }