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>();
        }
        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.");
        }