public TaxRateServiceTest(
            StripeMockFixture stripeMockFixture,
            MockHttpClientFixture mockHttpClientFixture)
            : base(stripeMockFixture, mockHttpClientFixture)
        {
            this.service = new TaxRateService(this.StripeClient);

            this.createOptions = new TaxRateCreateOptions
            {
                DisplayName = "Name",
                Inclusive   = true,
                Percentage  = 12.5m,
            };

            this.updateOptions = new TaxRateUpdateOptions
            {
                Metadata = new Dictionary <string, string>
                {
                    { "key", "value" },
                },
            };

            this.listOptions = new TaxRateListOptions
            {
                Limit = 1,
            };
        }
Exemple #2
0
        protected StripeTaxRate GetOrCreateStripeTaxRate(PaymentProviderContext <TSettings> ctx, string taxName, decimal percentage, bool inclusive)
        {
            var taxRateService = new TaxRateService();
            var stripeTaxRates = new List <StripeTaxRate>();

            if (ctx.AdditionalData.ContainsKey("Vendr_StripeTaxRates"))
            {
                stripeTaxRates = (List <StripeTaxRate>)ctx.AdditionalData["Vendr_StripeTaxRates"];
            }

            if (stripeTaxRates.Count > 0)
            {
                var taxRate = GetStripeTaxRate(stripeTaxRates, taxName, percentage, inclusive);
                if (taxRate != null)
                {
                    return(taxRate);
                }
            }

            stripeTaxRates = taxRateService.List(new TaxRateListOptions {
                Active = true
            }).ToList();

            if (ctx.AdditionalData.ContainsKey("Vendr_StripeTaxRates"))
            {
                ctx.AdditionalData["Vendr_StripeTaxRates"] = stripeTaxRates;
            }
            else
            {
                ctx.AdditionalData.Add("Vendr_StripeTaxRates", stripeTaxRates);
            }

            if (stripeTaxRates.Count > 0)
            {
                var taxRate = GetStripeTaxRate(stripeTaxRates, taxName, percentage, inclusive);
                if (taxRate != null)
                {
                    return(taxRate);
                }
            }

            var newTaxRate = taxRateService.Create(new TaxRateCreateOptions
            {
                DisplayName = taxName,
                Percentage  = percentage,
                Inclusive   = inclusive,
            });

            stripeTaxRates.Add(newTaxRate);

            ctx.AdditionalData["Vendr_StripeTaxRates"] = stripeTaxRates;

            return(newTaxRate);
        }
Exemple #3
0
        public async Task Donor_Calculates_Deductible_With_Negative_Donation_Amount()
        {
            //Arrange
            var calculateService = new CalculateService();
            var taxRateService   = new TaxRateService();
            var controller       = new CalculatorController(calculateService, taxRateService);

            //Act
            ViewResult result = await controller.Index(-500, 20, null) as ViewResult;

            //Assert
            Assert.IsNotNull(result);
            Assert.IsNotNull(result.Model);
            Assert.IsInstanceOfType(result.Model, typeof(CalculatedVM));
            Assert.AreEqual(0, ((CalculatedVM)result.Model).DonatedAmount);
            Assert.AreEqual(20, ((CalculatedVM)result.Model).TaxRate);
            Assert.AreEqual("0", ((CalculatedVM)result.Model).Supplement);
            Assert.AreEqual(0, ((CalculatedVM)result.Model).DeductibleAmount);
            Assert.AreEqual("Enter a positive dontation amount!", ((CalculatedVM)result.Model).ErrorMessage);
        }
Exemple #4
0
        public async Task EventPromotor_Calculates_Deductible_With_Supplement()
        {
            //Arrange
            var calculateService = new CalculateService();
            var taxRateService   = new TaxRateService();
            var controller       = new CalculatorController(calculateService, taxRateService);

            //Act
            ViewResult result = await controller.Index(25000, 20, "1,05") as ViewResult;

            //Assert
            Assert.IsNotNull(result);
            Assert.IsNotNull(result.Model);
            Assert.IsInstanceOfType(result.Model, typeof(CalculatedVM));
            Assert.AreEqual(25000, ((CalculatedVM)result.Model).DonatedAmount);
            Assert.AreEqual(20, ((CalculatedVM)result.Model).TaxRate);
            Assert.AreEqual("1,05", ((CalculatedVM)result.Model).Supplement);
            Assert.AreEqual(6562.49951171875, ((CalculatedVM)result.Model).DeductibleAmount);
            Assert.AreEqual(null, ((CalculatedVM)result.Model).ErrorMessage);
        }
        public async Task Administrator_Changes_Tax_Rate()
        {
            //Arrange
            var calculateService = new CalculateService();
            var taxRateService   = new TaxRateService();
            var controller       = new CalculatorController(calculateService, taxRateService);

            //Act
            ViewResult result = await controller.Index(25000, 25, null) as ViewResult;

            //Assert
            Assert.IsNotNull(result);
            Assert.IsNotNull(result.Model);
            Assert.IsInstanceOfType(result.Model, typeof(CalculatedVM));
            Assert.AreEqual(25000, ((CalculatedVM)result.Model).DonatedAmount);
            Assert.AreEqual(25, ((CalculatedVM)result.Model).TaxRate);
            Assert.AreEqual("0", ((CalculatedVM)result.Model).Supplement);
            Assert.AreEqual(8333.333984375, ((CalculatedVM)result.Model).DeductibleAmount);
            Assert.AreEqual(null, ((CalculatedVM)result.Model).ErrorMessage);
            Assert.AreEqual(25, taxRateService.GetTaxRate());
        }