Ejemplo n.º 1
0
        public async Task Create_resolver_for_entities()
        {
            using (var context = CreateContext())
            {
                var customerType = context.Model.FindEntityType(typeof(Customer));

                Assert.NotNull(customerType);

                var fieldResolverFactory = new FieldResolverFactory(new GraphTypeMapper());

                var resolver = fieldResolverFactory.CreateResolveEntityList(customerType);
                Assert.All(resolver.Arguments, arg => Assert.False(typeof(NonNullGraphType).IsAssignableFrom(arg.Type)));

                var resolveFieldContext = new ResolveFieldContext
                {
                    RootValue = new QueryExecutionContext {
                        DbContext = context
                    }
                };

                var customers = await(Task <Customer[]>) resolver.Resolve(resolveFieldContext);

                Assert.Equal(91, customers.Length);
            }
        }
Ejemplo n.º 2
0
        public async Task Create_resolver_when_entity_has_composite_key()
        {
            using (var context = CreateContext())
            {
                var orderDetailType = context.Model.FindEntityType(typeof(OrderDetail));

                Assert.NotNull(orderDetailType);

                var fieldResolverFactory = new FieldResolverFactory(new GraphTypeMapper());

                var resolver = fieldResolverFactory.CreateResolveEntityList(orderDetailType).Resolve;

                var resolveFieldContext = new ResolveFieldContext
                {
                    Arguments = new Dictionary <string, object>
                    {
                        ["orderId"]   = 10248,
                        ["productId"] = 11
                    },
                    RootValue = new QueryExecutionContext {
                        DbContext = context
                    }
                };

                var orderDetail = (await(Task <OrderDetail[]>) resolver(resolveFieldContext)).Single();

                Assert.Equal(10248, orderDetail.OrderId);
                Assert.Equal(11, orderDetail.ProductId);
            }
        }
Ejemplo n.º 3
0
        public async Task Create_resolver_for_entities_with_ordering()
        {
            using (var context = CreateContext())
            {
                var customerType = context.Model.FindEntityType(typeof(Customer));

                Assert.NotNull(customerType);

                var fieldResolverFactory = new FieldResolverFactory(new GraphTypeMapper());

                var resolver = fieldResolverFactory.CreateResolveEntityList(customerType).Resolve;

                var resolveFieldContext = new ResolveFieldContext
                {
                    Arguments = new Dictionary <string, object>
                    {
                        ["orderBy"] = new object[]
                        {
                            new Dictionary <string, object> {
                                ["field"] = "companyName"
                            }
                        }
                    },
                    RootValue = new QueryExecutionContext {
                        DbContext = context
                    }
                };

                var customers = await(Task <Customer[]>) resolver(resolveFieldContext);

                Assert.Equal(91, customers.Length);
                Assert.Equal("Alfreds Futterkiste", customers.First().CompanyName);
                Assert.Equal("Wolski  Zajazd", customers.Last().CompanyName);
            }
        }
Ejemplo n.º 4
0
        public async Task Create_resolver_for_entities_with_filter()
        {
            using (var context = CreateContext())
            {
                var customerType = context.Model.FindEntityType(typeof(Customer));

                Assert.NotNull(customerType);

                var fieldResolverFactory = new FieldResolverFactory(new GraphTypeMapper());

                var resolver = fieldResolverFactory.CreateResolveEntityList(customerType).Resolve;

                var resolveFieldContext = new ResolveFieldContext
                {
                    Arguments = new Dictionary <string, object> {
                        ["contactTitle"] = "Sales Representative"
                    },
                    RootValue = new QueryExecutionContext {
                        DbContext = context
                    }
                };

                var customers = await(Task <Customer[]>) resolver(resolveFieldContext);

                Assert.Equal(17, customers.Length);
            }
        }
Ejemplo n.º 5
0
        public async Task Create_resolver_when_entity_has_simple_key()
        {
            using (var context = CreateContext())
            {
                var customerType = context.Model.FindEntityType(typeof(Customer));

                Assert.NotNull(customerType);

                var fieldResolverFactory = new FieldResolverFactory(new GraphTypeMapper());

                var resolver = fieldResolverFactory.CreateResolveEntityList(customerType).Resolve;

                var resolveFieldContext = new ResolveFieldContext
                {
                    Arguments = new Dictionary <string, object> {
                        ["customerId"] = "ALFKI"
                    },
                    RootValue = new QueryExecutionContext {
                        DbContext = context
                    }
                };

                var customer = (await(Task <Customer[]>) resolver(resolveFieldContext)).Single();

                Assert.Equal("ALFKI", customer.CustomerId);
            }
        }
Ejemplo n.º 6
0
        public async Task Create_resolver_for_one_to_many_from_principal()
        {
            using (var context = CreateContext())
            {
                var orderType       = context.Model.FindEntityType(typeof(Order));
                var customerType    = context.Model.FindEntityType(typeof(Customer));
                var customerToOrder = Assert.Single(customerType.GetNavigations());
                Assert.Equal(orderType, customerToOrder.GetTargetType());

                var fieldResolverFactory = new FieldResolverFactory(new GraphTypeMapper());

                var customerResolver = fieldResolverFactory.CreateResolveEntityList(customerType).Resolve;

                var customerContext = new ResolveFieldContext
                {
                    Arguments = new Dictionary <string, object> {
                        ["customerId"] = "VINET"
                    },
                    RootValue = new QueryExecutionContext {
                        DbContext = context
                    }
                };
                var customer = Assert.Single(await(Task <Customer[]>) customerResolver(customerContext));

                var resolver = fieldResolverFactory.CreateResolveNavigation(customerToOrder).Resolve;

                var ordersContext = new ResolveFieldContext
                {
                    RootValue = new QueryExecutionContext {
                        DbContext = context
                    },
                    Source    = customer,
                    Arguments = new Dictionary <string, object>()
                };

                var orders = await(Task <Order[]>) resolver(ordersContext);
                Assert.Contains(orders, o => o.OrderId == 10248);
            }
        }