public void NewOrderShouldBeAddedTogetherOrderItemsSuccess()
        {
            //Arrange
            var handler = Fixture.GetOrderHandler();

            var command = GeneratedObjectsTests.GenerateAddItemCommand(1);
            var order   = GeneratedObjectsTests.GenerateOrder();
            var product = GeneratedObjectsTests.GenerateProduct(1M);

            Fixture.OrderAdoRepositoryMock.Setup(r => r.GetLastCreatedOrderByUserId(command.UserId)).Returns((Order)null);
            Fixture.OrderComposerMock.Setup(r => r.Create(command.UserId)).Returns(order);
            Fixture.ProductRepositoryMock.Setup(r => r.GetById(command.ProductId)).Returns(product);

            //Act
            var result = handler.Handle(command);

            //Assert
            Fixture.OrderAdoRepositoryMock.Verify(r => r.GetLastCreatedOrderByUserId(command.UserId), Times.Once);
            Fixture.OrderComposerMock.Verify(r => r.Create(command.UserId), Times.Once);
            Fixture.ProductRepositoryMock.Verify(r => r.GetById(command.ProductId), Times.Once);

            Fixture.OrderAdoRepositoryMock.Verify(r => r.Save(order), Times.Once);
            Fixture.OrderItemAdoRepositoryMock.Verify(r => r.Save(It.IsAny <OrderItem>()), Times.Once);

            result.Should().BeOfType <ReturnedItemCommandResult>();
        }
Exemplo n.º 2
0
        public void ShouldCreditCardToBeInvalidBySpecialCaracteresInCreditCardNumber()
        {
            var card = GeneratedObjectsTests.GenerateCreditCard("1?34-/4t5-1235-0082");

            var result = card.Valid;

            result.Should().BeFalse();
            card.Notifications.FirstOrDefault()?.Message.Should().Be("Credit Card Number is invalid.");
        }
Exemplo n.º 3
0
        public void ShouldCreditCardToBeInvalidByNumberFormat()
        {
            var card = GeneratedObjectsTests.GenerateCreditCard("123-4-123");

            var result = card.Valid;

            result.Should().BeFalse();
            card.Notifications.FirstOrDefault()?.Message.Should().Be("Credit Card Number is invalid.");
        }
Exemplo n.º 4
0
        public void ShouldCreditCardToBeValid()
        {
            var card = GeneratedObjectsTests.GenerateCreditCard("1234-5678-9012-3456");

            var result = card.Valid;

            result.Should().BeTrue();
            card.Notifications.Should().HaveCount(0);
        }
Exemplo n.º 5
0
        public Order GetValidOrderWithOrderItems()
        {
            var order   = GeneratedObjectsTests.GenerateOrder();
            var product = GeneratedObjectsTests.GenerateProduct(1M);

            order.AddItem(product, 1);

            return(order);
        }
Exemplo n.º 6
0
        public void ShouldRemoveItemIsFailed()
        {
            var order = GeneratedObjectsTests.GenerateOrder(3);

            order.RemoveItem(Guid.NewGuid());

            var result = order.Valid;

            result.Should().BeFalse();
            order.Notifications.FirstOrDefault()?.Message.Should().Be("This item doesn't exist in your list.");
        }
Exemplo n.º 7
0
        public void ShouldAddItemValid()
        {
            var order   = GeneratedObjectsTests.GenerateOrder();
            var product = GeneratedObjectsTests.GenerateProduct(2M);

            order.AddItem(product, 1);

            var result = order.Valid;

            result.Should().BeTrue();
            order.Notifications.Should().HaveCount(0);
        }
Exemplo n.º 8
0
        public void ShouldRemoveItemIsSuccess()
        {
            var order     = GeneratedObjectsTests.GenerateOrder(3);
            var orderItem = order.OrderItems.FirstOrDefault();

            order.RemoveItem(orderItem.Id);

            var result = order.Valid;

            result.Should().BeTrue();
            order.Notifications.Should().HaveCount(0);
        }
Exemplo n.º 9
0
        public void ShouldAddItemInvalid()
        {
            var order   = GeneratedObjectsTests.GenerateOrder();
            var product = GeneratedObjectsTests.GenerateProduct(1M);

            order.AddItem(product, 1000);

            var result = order.Valid;

            result.Should().BeFalse();
            order.Notifications.FirstOrDefault()?.Message.Should().Be("The total weight is greater than 3kg allowed.");
        }
Exemplo n.º 10
0
        public void ShouldCheckoutIsFailedCreditCardInvalid()
        {
            var order   = GeneratedObjectsTests.GenerateOrder(3);
            var address = GeneratedObjectsTests.GenerateAddress();

            order.Checkout(address.ContactName, address.Street, address.City, address.Country, string.Empty);

            var result = order.Valid;

            result.Should().BeFalse();
            order.Notifications.FirstOrDefault()?.Message.Should().Be("Credit Card Number is required.");
        }
Exemplo n.º 11
0
        public void ShouldCheckoutIsFailed()
        {
            var order   = GeneratedObjectsTests.GenerateOrder();
            var address = GeneratedObjectsTests.GenerateAddress();
            var card    = GeneratedObjectsTests.GenerateCreditCard("1234-5678-9012-3456");

            order.Checkout(address.ContactName, address.Street, address.City, address.Country, card.Number);

            var result = order.Valid;

            result.Should().BeFalse();
            order.Notifications.FirstOrDefault()?.Message.Should().Be("This order doesn't have items.");
        }
Exemplo n.º 12
0
        public void ShouldCheckoutIsSuccess()
        {
            var order   = GeneratedObjectsTests.GenerateOrder(3);
            var address = GeneratedObjectsTests.GenerateAddress();
            var card    = GeneratedObjectsTests.GenerateCreditCard("1234-5678-9012-3456");

            order.Checkout(address.ContactName, address.Street, address.City, address.Country, card.Number);

            var result = order.Valid;

            result.Should().BeTrue();
            order.Notifications.Should().HaveCount(0);
        }
Exemplo n.º 13
0
        public void ShouldCheckoutIsFailedStreetInvalid()
        {
            var order   = GeneratedObjectsTests.GenerateOrder(3);
            var address = GeneratedObjectsTests.GenerateAddress();
            var card    = GeneratedObjectsTests.GenerateCreditCard("1234-5678-9012-3456");

            order.Checkout(address.ContactName, string.Empty, address.City, address.Country, card.Number);

            var result = order.Valid;

            result.Should().BeFalse();
            order.Notifications.FirstOrDefault()?.Message.Should().Be("Street is required.");
        }
Exemplo n.º 14
0
        public void CheckoutShouldBeSucceed()
        {
            //Arrange
            var handler = Fixture.GetOrderHandler();

            var command = GeneratedObjectsTests.GenerateCheckoutCommand();
            var order   = Fixture.GetValidOrderWithOrderItems();

            Fixture.OrderAdoRepositoryMock.Setup(r => r.GetLastCreatedOrderById(command.OrderId))
            .Returns(order);

            //Act
            var result = handler.Handle(command);

            //Assert
            Fixture.OrderAdoRepositoryMock.Verify(r => r.GetLastCreatedOrderById(command.OrderId), Times.Once);
            Fixture.OrderAdoRepositoryMock.Verify(r => r.Update(order), Times.Once);

            result.Should().BeOfType <ReturnedItemCommandResult>();
        }
        public void OrderShouldBeNullInAllRemoveMethod()
        {
            //Arrange
            var handler = Fixture.GetOrderHandler();

            var command = GeneratedObjectsTests.GenerateRemoveAllCommand();

            Fixture.OrderAdoRepositoryMock.Setup(r => r.GetLastCreatedOrderById(command.OrderId))
            .Returns((Order)null);

            //Act
            var result = handler.Handle(command);

            //Assert
            Fixture.OrderAdoRepositoryMock.Verify(r => r.GetLastCreatedOrderById(command.OrderId), Times.Once);

            result.Should().BeNull();
            handler.Notifications.Should().HaveCount(1);
            handler.Notifications.First().Message.Should().Be("Order isn't found.");
        }
        public void OrderItemShouldBeAllRemovedInOrder()
        {
            //Arrange
            var handler = Fixture.GetOrderHandler();

            var command = GeneratedObjectsTests.GenerateRemoveAllCommand();
            var order   = GeneratedObjectsTests.GenerateOrder();

            Fixture.OrderAdoRepositoryMock.Setup(r => r.GetLastCreatedOrderById(command.OrderId))
            .Returns(order);

            //Act
            var result = handler.Handle(command);

            //Assert
            Fixture.OrderAdoRepositoryMock.Verify(r => r.GetLastCreatedOrderById(command.OrderId), Times.Once);
            Fixture.OrderItemAdoRepositoryMock.Verify(r => r.DeleteAllbyOrderId(command.OrderId), Times.Once);

            result.Should().BeOfType <ReturnedItemCommandResult>();
        }
Exemplo n.º 17
0
        public void RemovedOrderItemDontExist()
        {
            //Arrange
            var handler = Fixture.GetOrderHandler();

            var command = GeneratedObjectsTests.GenerateRemoveItemCommand();
            var order   = Fixture.GetValidOrderWithOrderItems();

            Fixture.OrderAdoRepositoryMock.Setup(r => r.GetLastCreatedOrderById(command.OrderId))
            .Returns(order);

            //Act
            var result = handler.Handle(command);

            //Assert
            Fixture.OrderAdoRepositoryMock.Verify(r => r.GetLastCreatedOrderById(command.OrderId), Times.Once);

            result.Should().BeNull();
            handler.Notifications.Should().HaveCount(1);
            handler.Notifications.First().Message.Should().Be("This item doesn't exist in your list.");
        }
        public void OrderShouldBeFailedProductNotFound()
        {
            //Arrange
            var handler = Fixture.GetOrderHandler();

            var command = GeneratedObjectsTests.GenerateAddItemCommand(1);
            var order   = Fixture.GetValidOrderWithOrderItems();

            Fixture.OrderAdoRepositoryMock.Setup(r => r.GetLastCreatedOrderByUserId(command.UserId)).Returns(order);
            Fixture.ProductRepositoryMock.Setup(r => r.GetById(command.ProductId)).Returns((Product)null);

            //Act
            var result = handler.Handle(command);

            //Assert
            Fixture.OrderAdoRepositoryMock.Verify(r => r.GetLastCreatedOrderByUserId(command.UserId), Times.Once);
            Fixture.ProductRepositoryMock.Verify(r => r.GetById(command.ProductId), Times.Once);

            result.Should().BeNull();
            handler.Notifications.Should().HaveCount(1);
            handler.Notifications.First().Message.Should().Be("Product isn't found.");
        }
Exemplo n.º 19
0
        public void CheckoutWithCreditCardInvalid()
        {
            //Arrange
            var handler = Fixture.GetOrderHandler();

            var command = GeneratedObjectsTests.GenerateCheckoutCommand();
            var order   = Fixture.GetValidOrderWithOrderItems();

            command.CreditCardNumber = string.Empty;

            Fixture.OrderAdoRepositoryMock.Setup(r => r.GetLastCreatedOrderById(command.OrderId))
            .Returns(order);

            //Act
            var result = handler.Handle(command);

            //Assert
            Fixture.OrderAdoRepositoryMock.Verify(r => r.GetLastCreatedOrderById(command.OrderId), Times.Once);

            result.Should().BeNull();
            handler.Notifications.Should().HaveCount(2);
            handler.Notifications.First().Message.Should().Be("Credit Card Number is required.");
            handler.Notifications.Last().Message.Should().Be("Credit Card Number is invalid.");
        }