예제 #1
0
        public Projection Get([FromQuery] decimal initialInvestment, [FromQuery] decimal monthlyInvestment, [FromQuery] decimal targetValue, [FromQuery] int years, [FromQuery] string riskLevel = "low")
        {
            var risk       = ConvertToRiskLevels(riskLevel);
            var calculator = RiskFactory.CreateInstance(risk, new InputValidator());

            return(calculator.CalculateGrowth(initialInvestment, monthlyInvestment, targetValue, years));
        }
        public void GivenIWantToCalculate(string riskType)
        {
            const string expectedLow    = "low";
            const string expectedMedium = "medium";
            const string expectedHigh   = "high";
            var          level          = (riskType.ToLower()) switch
            {
                expectedLow => RiskLevels.Low,
                expectedMedium => RiskLevels.Medium,
                expectedHigh => RiskLevels.High,
                _ => throw new ArgumentOutOfRangeException(),
            };

            _growthRisk = RiskFactory.CreateInstance(level, new InputValidator());
        }
예제 #3
0
        public void CreateInstanceCreatesInstanceOfHighRiskWhenHighIsProvided()
        {
            var highRisk = RiskFactory.CreateInstance(Models.RiskLevels.High, new FakeValidator());

            Assert.IsInstanceOf <HighRisk>(highRisk);
        }
예제 #4
0
        public void CreateInstanceCreatesInstanceOfLowRiskWhenLowIsProvided()
        {
            var lowRisk = RiskFactory.CreateInstance(Models.RiskLevels.Low, new FakeValidator());

            Assert.IsInstanceOf <LowRisk>(lowRisk);
        }
예제 #5
0
        public void CreateInstanceCreatesInstanceOfMediumRiskWhenMediumIsProvided()
        {
            var mediumRisk = RiskFactory.CreateInstance(Models.RiskLevels.Medium, new FakeValidator());

            Assert.IsInstanceOf <MediumRisk>(mediumRisk);
        }