public void Setup() { Config = Substitute.For <IConfigService>(); GrossPayValidator = Substitute.For <IGrossPayValidator>(); GoodCalculator = Substitute.For <IGoodCalculator>(); Config.GetTaxBands().Returns(GetTestTaxBands()); Config.GetNatInsuranceBands().Returns(GetTestNIBands()); GrossPayValidator.IsValid(GetValidInput().GrossPayInput).Returns(GetValidGrossPayResponse()); GrossPayValidator.IsValid(GetInvalidInput().GrossPayInput).Returns(GetInvalidGrossPayResponse()); GoodCalculator.Calculate(Arg.Any <double>(), Arg.Any <List <TaxBand> >(), Arg.Any <List <TaxBand> >()); Controller = new HomeController(Config, GrossPayValidator, GoodCalculator); }
public CalculatorOutput Calulate(string grossPayInput) { var validator = _grossPayValidator.IsValid(grossPayInput); if (!validator.IsValid) { throw new ArgumentException(validator.Errors[0]); } var taxBands = _config.GetTaxBands(); var natInsuranceBands = _config.GetNatInsuranceBands(); return(_goodCalculator.Calculate(validator.GrossPay, taxBands, natInsuranceBands)); }
public async Task <IActionResult> GoodCalculator(CalculatorViewModel vm) { var validator = _grossPayValidator.IsValid(vm.GrossPayInput); if (!validator.IsValid) { foreach (var error in validator.Errors) { ModelState.AddModelError("Error", error); } return(View("~/Views/Home/Index.cshtml", vm)); } var taxBands = _config.GetTaxBands(); var natInsuranceBands = _config.GetNatInsuranceBands(); vm.GrossPay = validator.GrossPay; vm.CalculatorOutput = _goodCalculator.Calculate(vm.GrossPay, taxBands, natInsuranceBands); return(View("~/Views/Home/Index.cshtml", vm)); }