public async Task Handle_CreditCardDoesNotExist_CreateSalesOrder(
            [Frozen] Mock <ISalesOrderIntegrationEventService> salesOrderIntegrationEventServiceMock,
            [Frozen] Mock <IRepository <Core.Entities.SalesOrder> > salesOrderRepositoryMock,
            [Frozen] Mock <IRepository <Core.Entities.CreditCard> > creditCardRepositoryMock,
            CreateSalesOrderCommandHandler sut,
            CreateSalesOrderCommand command
            )
        {
            //Arrange
            command.OrderItems.ForEach(_ => _.Discount = 0);

            creditCardRepositoryMock.Setup(_ => _.GetBySpecAsync(
                                               It.IsAny <GetCreditCardSpecification>(),
                                               It.IsAny <CancellationToken>()
                                               ))
            .ReturnsAsync((Core.Entities.CreditCard)null);

            //Act
            var result = await sut.Handle(command, CancellationToken.None);

            //Assert
            result.Should().BeTrue();
            salesOrderIntegrationEventServiceMock.Verify(_ => _.AddAndSaveEventAsync(
                                                             It.IsAny <IntegrationEvent>())
                                                         );

            salesOrderRepositoryMock.Verify(_ => _.AddAsync(
                                                It.IsAny <Core.Entities.SalesOrder>(),
                                                It.IsAny <CancellationToken>())
                                            );
        }
        public async Task Handle_CreditCardExists_CreateSalesOrder(
            [Frozen] Mock <ISalesOrderIntegrationEventService> salesOrderIntegrationEventServiceMock,
            [Frozen] Mock <IRepository <Core.Entities.SalesOrder> > salesOrderRepositoryMock,
            [Frozen] Mock <IRepository <Core.Entities.CreditCard> > creditCardRepositoryMock,
            CreateSalesOrderCommandHandler sut,
            CreateSalesOrderCommand command,
            Core.Entities.CreditCard creditCard,
            DateTime expirationDate
            )
        {
            //Arrange
            command.OrderItems.ForEach(_ => _.Discount = 0);

            creditCard.ExpMonth = byte.Parse(expirationDate.Month.ToString());
            creditCard.ExpYear  = short.Parse(expirationDate.Year.ToString());

            creditCardRepositoryMock.Setup(_ => _.GetBySpecAsync(
                                               It.IsAny <GetCreditCardSpecification>(),
                                               It.IsAny <CancellationToken>()
                                               ))
            .ReturnsAsync(creditCard);

            //Act
            var result = await sut.Handle(command, CancellationToken.None);

            //Assert
            result.Should().BeTrue();
            salesOrderIntegrationEventServiceMock.Verify(_ => _.AddAndSaveEventAsync(
                                                             It.IsAny <IntegrationEvent>())
                                                         );

            salesOrderRepositoryMock.Verify(_ => _.AddAsync(
                                                It.IsAny <Core.Entities.SalesOrder>(),
                                                It.IsAny <CancellationToken>())
                                            );
        }