public void ProductApplicationService_SubmitApplicationFor_WhenCalledWithSelectiveInvoiceDiscountProduct_ShouldResolveExceptionToErrorCode(
            Exception exception)
        {
            var productApplicationService = new ProductApplicationServiceBuilder()
                                            .WithSelectInvoiceException(exception)
                                            .Build();

            var application = new ApplicationBuilder()
                              .WithProduct(new SelectiveInvoiceDiscount())
                              .WithSellerCompanyData(new SellerCompanyData())
                              .Build();

            var result = productApplicationService.SubmitApplicationFor(application);

            result.Should().Be(-1);
        }
        public void ProductApplicationService_SubmitApplicationFor_WhenCalledWithSelectiveInvoiceDiscountProduct_ShouldReturnApplicationId(
            int applicationId)
        {
            var productApplicationService = new ProductApplicationServiceBuilder()
                                            .WithSelectInvoiceResult(applicationId)
                                            .Build();

            var application = new ApplicationBuilder()
                              .WithProduct(new SelectiveInvoiceDiscount())
                              .WithSellerCompanyData(new SellerCompanyData())
                              .Build();

            var result = productApplicationService.SubmitApplicationFor(application);

            result.Should().Be(applicationId);
        }
        public void ProductApplicationService_SubmitApplicationFor_WhenCalledWithBusinessLoansProduct_ShouldReturnResultDataOrErrorCode(
            int?applicationId,
            bool success,
            int expected)
        {
            var applicationResult = new ApplicationResultBuilder()
                                    .WithApplicationId(applicationId)
                                    .WithSuccess(success)
                                    .Build();

            var productApplicationService = new ProductApplicationServiceBuilder()
                                            .WithBusinessLoansResult(applicationResult)
                                            .Build();

            var application = new ApplicationBuilder()
                              .WithProduct(new BusinessLoans())
                              .WithSellerCompanyData(new SellerCompanyData())
                              .Build();

            var result = productApplicationService.SubmitApplicationFor(application);

            result.Should().Be(expected);
        }