Exemplo n.º 1
0
 public CalculateIncomeTaxCommandHandlerTest()
 {
     command = new CalculateIncomeTaxCommand {
         AnnualIncome = 20000, PostCode = "7441"
     };
     cancellationToken      = new CancellationToken();
     taxCalculationTypeRepo = A.Fake <IRepository <TaxCalculationType> >();
     progressiveTaxRepo     = A.Fake <IRepository <ProgessiveIncomeTaxRate> >();
     incomeTaxRepo          = A.Fake <IRepository <IncomeTax> >();
 }
        public async Task <IActionResult> Post([FromBody] IncomeDto incomeDto)
        {
            var command = new CalculateIncomeTaxCommand()
            {
                AnnualIncome = incomeDto.AnnualIncome,
                PostCode     = incomeDto.PostCode
            };

            var result = await _mediator.Send(command);

            return(result is null?BadRequest(result) : (IActionResult)Created("Income Tax Calculation created", result));
        }
Exemplo n.º 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);
        }