public void Map_FromEfToDomain_And_AddAnOnlineOrderInTheDomainObject_And_ThenMapBackToEf_Should_UseTheSameReferenceInTheEfCollection() { var mapper = CreateMapper(); //arrange var onlineOrderEf = new OnlineOrderEf { Id = "Id", Key = "Key" }; var mailOrderEf = new MailOrderEf { Id = "MailOrderId" }; var rootEf = new RootEf { Orders = { onlineOrderEf, mailOrderEf } }; //act RootDomain mappedRootDomain = mapper.Map <RootEf, RootDomain>(rootEf); //assert OnlineOrderDomain onlineOrderDomain = mappedRootDomain.OnlineOrders[0]; onlineOrderDomain.Should().BeOfType <OnlineOrderDomain>(); onlineOrderEf.Id.ShouldBeEquivalentTo(onlineOrderEf.Id); // IMPORTANT ASSERT ------------------------------------------------------------- IMPORTANT ASSERT // //arrange again mappedRootDomain.OnlineOrders.Add(new OnlineOrderDomain { Id = "NewOnlineOrderId", Key = "NewKey" }); mappedRootDomain.MailOrders.Add(new MailOrderDomain { Id = "NewMailOrderId", }); onlineOrderDomain.Id = "Hi"; //act again mapper.Map(mappedRootDomain, rootEf); //assert again OrderEf existingMailOrderEf = rootEf.Orders.Single(orderEf => orderEf.Id == mailOrderEf.Id); OrderEf existingOnlineOrderEf = rootEf.Orders.Single(orderEf => orderEf.Id == onlineOrderEf.Id); OrderEf newOnlineOrderEf = rootEf.Orders.Single(orderEf => orderEf.Id == "NewOnlineOrderId"); OrderEf newMailOrderEf = rootEf.Orders.Single(orderEf => orderEf.Id == "NewMailOrderId"); rootEf.Orders.Count.ShouldBeEquivalentTo(4); onlineOrderEf.Should().BeSameAs(existingOnlineOrderEf); mailOrderEf.Should().BeSameAs(existingMailOrderEf); newOnlineOrderEf.Should().BeOfType <OnlineOrderEf>(); newMailOrderEf.Should().BeOfType <MailOrderEf>(); }
public void Map_Should_ReturnOnlineOrderEf_When_ListIsOfTypeOrderEf() { var mapper = CreateMapper(); //arrange var orderDomain = new OnlineOrderDomain { Id = "Id", Key = "Key" }; var rootDomain = new RootDomain { OnlineOrders = { orderDomain } }; //act RootEf mappedRootEf = mapper.Map <RootDomain, RootEf>(rootDomain); //assert OrderEf orderEf = mappedRootEf.Orders[0]; orderEf.Should().BeOfType <OnlineOrderEf>(); orderEf.Id.ShouldBeEquivalentTo(orderDomain.Id); var onlineOrderEf = (OnlineOrderEf)orderEf; onlineOrderEf.Key.ShouldBeEquivalentTo(orderDomain.Key); // ------------------------------------------------------------- // //arrange again mappedRootEf.Orders.Add(new OnlineOrderEf { Id = "NewId" }); mapper.Map(mappedRootEf, rootDomain); //assert again rootDomain.OnlineOrders.Count.ShouldBeEquivalentTo(2); rootDomain.OnlineOrders.Last().Should().BeOfType <OnlineOrderDomain>(); //Assert.AreSame(rootDomain.OnlineOrders.First(), orderDomain); that doesn't matter when we map from EF to Domain }
private static bool DerivedEquals(OnlineOrderDomain ood, OnlineOrderEf ooe) { return(ood.Key == ooe.Key); }