Exemple #1
0
        public void ShouldThrowExceptionIfndHandlerIsCalledWithTaxCalculationTypesOfNull()
        {
            incomeTaxRepo = A.Fake <IRepository <IncomeTax> >();
            //Arrange

            TaxCalculationType taxCalculationType = new TaxCalculationType {
                ID = 1, Name = "Name", PostCode = "7441"
            };

            var incomeTaxTypeCollection = new List <TaxCalculationType> {
                taxCalculationType
            };


            A.CallTo(() => taxCalculationTypeRepo.GetAllAsync(A <CancellationToken> ._)).ThrowsAsync(x =>
            {
                return(new ArgumentNullException());
            });

            var commandHandler = new CalculateIncomeTaxCommandHandler(taxCalculationTypeRepo, progressiveTaxRepo, incomeTaxRepo);

            //Act
            void action() => commandHandler.Handle(command, cancellationToken).GetAwaiter().GetResult();


            //Assert
            Assert.Throws <ArgumentNullException>(action);
        }
Exemple #2
0
        public void ShouldThrowExceptionIfIncomeTaxRepositoryIsNull()
        {
            //Arrange
            IRequestHandler <CalculateIncomeTaxCommand, IncomeTax> calculateIncomeTaxCommandHandler;

            incomeTaxRepo = null;

            //Act
            void action() => calculateIncomeTaxCommandHandler = new CalculateIncomeTaxCommandHandler(taxCalculationTypeRepo, progressiveTaxRepo, incomeTaxRepo);


            //Assert

            Assert.Throws <ArgumentNullException>(action);
        }
Exemple #3
0
        public async Task ShouldReturnTheCorrectProgressiveIncomeTax(decimal income, decimal tax)
        {
            //Arrange
            command = new CalculateIncomeTaxCommand {
                AnnualIncome = income, PostCode = "7441"
            };

            IncomeTax incomeTax = new IncomeTax {
                IncomeAmount = income, PostCode = "7441", Tax = tax
            };


            TaxCalculationType taxCalculationType = new TaxCalculationType {
                ID = 1, Name = "Progressive", PostCode = "7441"
            };

            var incomeTaxTypeCollection = new List <TaxCalculationType> {
                taxCalculationType
            };
            var incomeTaxCollection = new List <IncomeTax> {
                incomeTax
            };

            A.CallTo(() => taxCalculationTypeRepo.GetAllAsync(A <CancellationToken> ._)).ReturnsLazily(x =>
            {
                return(Task.FromResult(incomeTaxTypeCollection.AsEnumerable()));
            });


            A.CallTo(() => incomeTaxRepo.GetAllAsync(A <CancellationToken> ._)).ReturnsLazily(x =>
            {
                return(Task.FromResult(incomeTaxCollection.AsEnumerable()));
            });


            var commandHandler = new CalculateIncomeTaxCommandHandler(taxCalculationTypeRepo, progressiveTaxRepo, incomeTaxRepo);
            //Act
            var result = await commandHandler.Handle(command, cancellationToken);

            //Assert
            Assert.AreEqual(incomeTax.IncomeAmount, result.IncomeAmount);
            Assert.AreEqual(incomeTax.PostCode, result.PostCode);
            Assert.AreEqual(incomeTax.Tax, result.Tax);
        }
Exemple #4
0
        public async Task ShouldCallSaveIncomeTax()
        {
            //Arrange
            IncomeTax incomeTax = new IncomeTax {
                IncomeAmount = 20000, PostCode = "7441", Tax = 1000
            };


            TaxCalculationType taxCalculationType = new TaxCalculationType {
                ID = 1, Name = "Name", PostCode = "7441"
            };

            var incomeTaxTypeCollection = new List <TaxCalculationType> {
                taxCalculationType
            };
            var incomeTaxCollection = new List <IncomeTax> {
                incomeTax
            };

            A.CallTo(() => taxCalculationTypeRepo.GetAllAsync(A <CancellationToken> ._)).ReturnsLazily(x =>
            {
                return(Task.FromResult(incomeTaxTypeCollection.AsEnumerable()));
            });


            A.CallTo(() => incomeTaxRepo.GetAllAsync(A <CancellationToken> ._)).ReturnsLazily(x =>
            {
                return(Task.FromResult(incomeTaxCollection.AsEnumerable()));
            });

            var commandHandler = new CalculateIncomeTaxCommandHandler(taxCalculationTypeRepo, progressiveTaxRepo, incomeTaxRepo);

            //Act
            var result = await commandHandler.Handle(command, cancellationToken);

            //Assert
            A.CallTo(() => incomeTaxRepo.SaveAsync(A <IncomeTax> ._, A <CancellationToken> ._)).MustHaveHappened();
        }