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); }
public void ShouldThrowExceptionIfIncomeTaxRepositoryIsNull() { //Arrange IRequestHandler <CalculateIncomeTaxCommand, IncomeTax> calculateIncomeTaxCommandHandler; incomeTaxRepo = null; //Act void action() => calculateIncomeTaxCommandHandler = new CalculateIncomeTaxCommandHandler(taxCalculationTypeRepo, progressiveTaxRepo, incomeTaxRepo); //Assert Assert.Throws <ArgumentNullException>(action); }
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); }
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(); }