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