Esempio n. 1
0
        public Task ShouldMaterialiseEnumerableMembers()
        {
            return(RunTest(async context =>
            {
                var order = new OrderUk
                {
                    DatePlaced = DateTime.Now.AddHours(-2),
                    Items = new List <OrderItem> {
                        new OrderItem {
                            ProductName = "Monster Feet"
                        }
                    }
                };

                await context.Orders.AddAsync(order);
                await context.SaveChangesAsync();

                var orderDto = await context
                               .Orders
                               .Project().To <OrderDto>()
                               .FirstAsync();

                orderDto.DatePlaced.ShouldBe(order.DatePlaced);
                orderDto.HasItems.ShouldBe(1);
                orderDto.Items.ShouldBeOfType <List <OrderItemDto> >();
            }));
        }
Esempio n. 2
0
        public Task ShouldPairEnumMembers()
        {
            return(RunTest(async(context, mapper) =>
            {
                var order1 = new OrderUk
                {
                    DatePlaced = DateTime.Now,
                    PaymentType = PaymentTypeUk.Cheque
                };

                var order2 = new OrderUk
                {
                    DatePlaced = DateTime.Now.AddMinutes(1),
                    PaymentType = PaymentTypeUk.Cash
                };

                var order3 = new OrderUk
                {
                    DatePlaced = DateTime.Now.AddMinutes(2),
                    PaymentType = PaymentTypeUk.Card
                };

                await context.Orders.AddRange(order1, order2, order3);
                await context.SaveChanges();

                mapper.WhenMapping
                .From <OrderUk>()
                .ProjectedTo <OrderUsViewModel>()
                .PairEnum(PaymentTypeUk.Cheque).With(PaymentTypeUs.Check)
                .And
                .PairEnum(PaymentTypeUk.Card).With(PaymentTypeUs.Check);

                var orderVms = context
                               .Orders
                               .ProjectUsing(mapper).To <OrderUsViewModel>()
                               .OrderBy(o => o.DatePlaced)
                               .ToArray();

                orderVms.Length.ShouldBe(3);

                orderVms.First().DatePlaced.ShouldBe(order1.DatePlaced);
                orderVms.First().PaymentType.ShouldBe(PaymentTypeUs.Check);

                orderVms.Second().DatePlaced.ShouldBe(order2.DatePlaced);
                orderVms.Second().PaymentType.ShouldBe(PaymentTypeUs.Cash);

                orderVms.Third().DatePlaced.ShouldBe(order3.DatePlaced);
                orderVms.Third().PaymentType.ShouldBe(PaymentTypeUs.Check);
            }));
        }
Esempio n. 3
0
        public Task ShouldProjectToACombinedFirstAndHasEnumerableMemberNameMember()
        {
            return(RunTest(async context =>
            {
                var order1 = new OrderUk
                {
                    DatePlaced = DateTime.Now.AddDays(-2),
                    Items = new List <OrderItem>
                    {
                        new OrderItem(),
                        new OrderItem {
                            ProductName = "Bells"
                        }
                    }
                };

                var order2 = new OrderUk
                {
                    DatePlaced = DateTime.Now.AddDays(-1),
                    Items = new List <OrderItem>
                    {
                        new OrderItem {
                            ProductName = "Whistles"
                        },
                        new OrderItem()
                    }
                };

                await context.Orders.AddRange(order1, order2);
                await context.SaveChanges();

                var orderVms = context
                               .Orders
                               .Project().To <OrderUsViewModel>()
                               .OrderBy(o => o.DatePlaced)
                               .ToArray();

                orderVms.First().FirstItemHasProductName.ShouldBeFalse();
                orderVms.Second().FirstItemHasProductName.ShouldBeTrue();
            }));
        }
Esempio n. 4
0
        public Task ShouldProjectToComplexTypeEnumerableMember()
        {
            return(RunTest(async context =>
            {
                var item1 = new OrderItem();
                var item2 = new OrderItem();

                var order = new OrderUk
                {
                    DatePlaced = DateTime.Now,
                    Items = new List <OrderItem> {
                        item1, item2
                    }
                };

                await context.Orders.Add(order);
                await context.SaveChanges();

                var orderDto = context
                               .Orders
                               .Project()
                               .To <OrderDto>()
                               .ShouldHaveSingleItem();

                orderDto.Id.ShouldBe(order.Id);
                orderDto.DatePlaced.ShouldBe(order.DatePlaced);
                orderDto.Items.Count().ShouldBe(2);

                var i = 0;

                foreach (var orderItem in order.Items)
                {
                    var orderItemDto = order.Items.ElementAt(i);

                    orderItemDto.Id.ShouldBe(orderItem.Id);

                    ++i;
                }
            }));
        }
Esempio n. 5
0
        public Task ShouldProjectToAnIntHasEnumerableMember()
        {
            return(RunTest(async context =>
            {
                var order = new OrderUk
                {
                    DatePlaced = DateTime.UtcNow,
                    Items = new List <OrderItem> {
                        new OrderItem()
                    }
                };

                await context.Orders.Add(order);
                await context.SaveChanges();

                var orderDto = context
                               .Orders
                               .Project().To <OrderDto>()
                               .ShouldHaveSingleItem();

                orderDto.HasItems.ShouldBe(1);
            }));
        }