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>(); }
private static bool DerivedEquals(OnlineOrderDomain ood, OnlineOrderEf ooe) { return(ood.Key == ooe.Key); }