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> >(); })); }
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); })); }
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(); })); }
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; } })); }
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); })); }