public async void VatRateInvalidValidation(decimal vatRate)
        {
            // Arrange
            var serviceProvider  = ServiceProvider();
            var purchaseProvider = new PurchaseProvider(null, serviceProvider.GetService <IGrossCalculator>()
                                                        , serviceProvider.GetService <IVatCalculator>(), serviceProvider.GetService <INetCalculator>());

            // Act
            var purchase = await purchaseProvider.GetPurchaseVatAsync(
                new Purchase { GrossAmount = 120, NetAmount = null, VatAmount = null, VatRate = vatRate });

            // Assert
            Assert.False(purchase.IsSuccess);
            Assert.Null(purchase.Purchase);
            Assert.NotNull(purchase.ErrorMessage);
        }
        public async void CalculateAmountFromGross(decimal vatRate, decimal grossAmount, decimal netAmount, decimal vatAmount)
        {
            // Arrange
            var serviceProvider  = ServiceProvider();
            var purchaseProvider = new PurchaseProvider(null, serviceProvider.GetService <IGrossCalculator>()
                                                        , serviceProvider.GetService <IVatCalculator>(), serviceProvider.GetService <INetCalculator>());

            // Act
            var purchase = await purchaseProvider.GetPurchaseVatAsync(
                new Purchase { GrossAmount = grossAmount, NetAmount = null, VatAmount = null, VatRate = vatRate });

            // Assert
            Assert.True(purchase.IsSuccess);
            Assert.NotNull(purchase.Purchase);
            Assert.Null(purchase.ErrorMessage);
            Assert.Equal(purchase.Purchase.NetAmount, netAmount);
            Assert.Equal(purchase.Purchase.VatAmount, vatAmount);
        }
        public async void CalculateAmountFromVat(decimal vatRate, decimal grossAmount, decimal netAmount, decimal vatAmount)
        {
            /*
             * Amount are correct according to the https://www.calkoo.com/en/vat-calculator, however there could be a rounding problem
             * Further clarification should needed to see this data is correct or not
             */

            // Arrange
            var serviceProvider  = ServiceProvider();
            var purchaseProvider = new PurchaseProvider(null, serviceProvider.GetService <IGrossCalculator>()
                                                        , serviceProvider.GetService <IVatCalculator>(), serviceProvider.GetService <INetCalculator>());

            // Act
            var purchase = await purchaseProvider.GetPurchaseVatAsync(
                new Purchase { GrossAmount = null, NetAmount = null, VatAmount = vatAmount, VatRate = vatRate });

            // Assert
            Assert.True(purchase.IsSuccess);
            Assert.NotNull(purchase.Purchase);
            Assert.Null(purchase.ErrorMessage);
            Assert.Equal(purchase.Purchase.GrossAmount, grossAmount);
            Assert.Equal(purchase.Purchase.NetAmount, netAmount);
        }