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 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);
        }
示例#3
0
        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));
        }