public void Test_TaxController_excludeVat_WithRepo(decimal totalAmount, decimal vatRate, decimal expectedAmount)
        {
            // Arrange
            var vatCalculator = new VatCalculator();
            var mock          = new Mock <IRepository>();

            mock.Setup(r => r.getVatRate()).Returns(vatRate);

            var repo       = mock.Object;
            var vatManager = new VatManager(repo, vatCalculator);

            // Act
            var actualAmount = vatManager.excludeVat(from: totalAmount);

            // Assert
            Assert.True(expectedAmount == actualAmount, $"expected {expectedAmount}, actual {actualAmount}");
        }
        public void Test_TexController_CalculateVat_with_repo(decimal amount, decimal vatRate, decimal expectedTotalAmount)
        {
            // Arrange
            var vatCalculator = new VatCalculator();
            var mock          = new Mock <IRepository>();

            mock.Setup(r => r.getVatRate()).Returns(vatRate);
            var repo       = mock.Object;
            var vatManager = new VatManager(repo, vatCalculator);

            // Act
            var actualTotalAmount = vatManager.calculateVat(amount);

            // Assert
            Assert.Equal(expectedTotalAmount, actualTotalAmount);
            mock.Verify(r => r.getVatRate(), Times.Once);
        }