Exemplo n.º 1
0
        public void Test_Map_Detail_With_Repository()
        {
            // Arrange

            var mapperBuilder = DetailMapperBuilder.Create <OrderDTO, Order>();
            var detailMap     = mapperBuilder.Detail((dto) => dto.Items, (e) => e.Items)
                                .WithDependencies <IItemRepository>()
                                .AddAction((ctx, item) => ctx.Dependencies.Insert(ctx.Master, item))
                                .DeleteAction((ctx, item) => ctx.Dependencies.Delete(item))
                                .CreateFunc((ctx) => new ItemOrder())
                                .EqualsFunc((itemDTO, item) => itemDTO.Id == item.Id)
                                .Build();

            Mock <IItemRepository> _itemRepositoryMock = new Mock <IItemRepository>();

            _itemRepositoryMock.Setup(x => x.Insert(_order1, It.IsAny <ItemOrder>()))
            .Callback((Order o, ItemOrder i) =>
            {
                o.AddItem(i);
            });

            _itemRepositoryMock.Setup(x => x.Delete(It.IsAny <ItemOrder>()))
            .Callback((ItemOrder i) =>
            {
                i.Order.RemoveItem(i);
            });


            // Act
            detailMap.Map(_orderDTO1, _order1, _itemRepositoryMock.Object, (itemDTO, item) =>
            {
                // Mapeo de propiedades internas
                item.ProductId = itemDTO.ProductId;
                item.Quantity  = itemDTO.Quantity;
            });

            // Assert
            _itemRepositoryMock.Verify(x => x.Insert(_order1, It.IsAny <ItemOrder>()), Times.Once());
            _itemRepositoryMock.Verify(x => x.Delete(It.IsAny <ItemOrder>()), Times.Exactly(2));


            Assert.That(_order1.Items.Count, Is.EqualTo(3));

            var items = _order1.Items.ToList();

            Assert.That(items[0].Order, Is.EqualTo(_order1));
            Assert.That(items[0].ProductId, Is.EqualTo("Item 1"));
            Assert.That(items[0].Quantity, Is.EqualTo(2m));

            Assert.That(items[1].Order, Is.EqualTo(_order1));
            Assert.That(items[1].ProductId, Is.EqualTo("Item 2"));
            Assert.That(items[1].Quantity, Is.EqualTo(4m));

            Assert.That(items[2].Order, Is.EqualTo(_order1));
            Assert.That(items[2].ProductId, Is.EqualTo("Item 0"));
            Assert.That(items[2].Quantity, Is.EqualTo(0m));
        }
Exemplo n.º 2
0
        public void Test_Map_Detail_No_RequiresDependency()
        {
            // Arrange

            var mapperBuilder = DetailMapperBuilder.Create <OrderDTO, Order>();
            var detailMap     = mapperBuilder.Detail((dto) => dto.Items, (e) => e.Items)
                                .WithDependencies <IItemRepository>(false)
                                .AddAction((ctx, item) => { })
                                .DeleteAction((ctx, item) => { })
                                .CreateFunc((ctx) => new ItemOrder())
                                .EqualsFunc((itemDTO, item) => itemDTO.Id == item.Id)
                                .Build();

            // Act

            detailMap.Map(_orderDTO1, _order1, null);
        }
Exemplo n.º 3
0
        public void Test_Map_Detail_No_Master_DTO_ThrowsArgumentNullException()
        {
            // Arrange

            var mapperBuilder = DetailMapperBuilder.Create <OrderDTO, Order>();
            var detailMap     = mapperBuilder.Detail((dto) => dto.Items, (e) => e.Items)
                                .WithDependencies <IItemRepository>(false)
                                .AddAction((ctx, item) => ctx.Dependencies.Insert(ctx.Master, item))
                                .DeleteAction((ctx, item) => ctx.Dependencies.Delete(item))
                                .CreateFunc((ctx) => new ItemOrder())
                                .EqualsFunc((itemDTO, item) => itemDTO.Id == item.Id)
                                .Build();

            // Act

            Assert.That(() =>
            {
                detailMap.Map(null, _order1, null);
            }, Throws.ArgumentNullException);
        }
Exemplo n.º 4
0
        public void Test_Map_Detail_With_Id_0()
        {
            // Arrange
            var mapperBuilder = DetailMapperBuilder.Create <OrderDTO, Order>();
            var detailMap     = mapperBuilder.Detail((dto) => dto.Items, (e) => e.Items)
                                .WithDependencies <object>()
                                .AddAction((ctx, item) => ctx.Master.AddItem(item))
                                .DeleteAction((ctx, item) => ctx.Master.RemoveItem(item))
                                .CreateFunc((ctx) => new ItemOrder())
                                .EqualsFunc((itemDTO, item) => itemDTO.Id == item.Id)
                                .Build();

            _orderDTO1.Items.ForEach((x) => x.Id = 0);


            // Act
            detailMap.Map(_orderDTO1, _order1, null, (itemDTO, item) =>
            {
                // Mapeo de propiedades internas
                item.ProductId = itemDTO.ProductId;
                item.Quantity  = itemDTO.Quantity;
            });

            // Assert
            Assert.That(_order1.Items.Count, Is.EqualTo(3));

            var items = _order1.Items.ToList();

            Assert.That(items[0].Order, Is.EqualTo(_order1));
            Assert.That(items[0].ProductId, Is.EqualTo("Item 0"));
            Assert.That(items[0].Quantity, Is.EqualTo(0m));

            Assert.That(items[1].Order, Is.EqualTo(_order1));
            Assert.That(items[1].ProductId, Is.EqualTo("Item 1"));
            Assert.That(items[1].Quantity, Is.EqualTo(2m));

            Assert.That(items[2].Order, Is.EqualTo(_order1));
            Assert.That(items[2].ProductId, Is.EqualTo("Item 2"));
            Assert.That(items[2].Quantity, Is.EqualTo(4m));
        }