Exemplo n.º 1
0
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            JObject jo = JObject.Load(reader);

            IDeprecationRule deprecationRule = null;

            switch (jo["RuleType"].ToString())
            {
            case var decreasingRuleType when decreasingRuleType == nameof(DecreasingDeprecationRule):
                deprecationRule = new DecreasingDeprecationRule();
                break;

            case var increasingRuleType when increasingRuleType == nameof(IncreasingDeprecationRule):
                deprecationRule = new IncreasingDeprecationRule();
                break;

            case var zeroRuleType when zeroRuleType == nameof(ZeroDeprecationRule):
                deprecationRule = new ZeroDeprecationRule();
                break;
            }

            if (deprecationRule != null)
            {
                serializer.Populate(jo.CreateReader(), deprecationRule);
            }

            // If the JSON doesn't contain a value for "FirstApplicableDay" assume it is essentially ongoing.
            if (jo["FirstApplicableDay"] == null)
            {
                deprecationRule.FirstApplicableDay = int.MaxValue;
            }

            return(deprecationRule);
        }
Exemplo n.º 2
0
        public void NoChangeWhenSellInIsGreaterThanFirstApplicableDay()
        {
            var testRule = new IncreasingDeprecationRule
            {
                FirstApplicableDay = 2,
                Amount             = 2
            };

            var testStock = new StockItem
            {
                StockTypeId = "Stock 1",
                SellIn      = 3,
                Quality     = 5
            };

            var service = new IncreasingDeprecationRuleService();
            var result  = service.RunRule(testRule, testStock);

            Assert.False(result);
            Assert.Equal(5, testStock.Quality);
        }
Exemplo n.º 3
0
        public void IncreasesQualityWhenSellInIsEqualLastApplicableDay()
        {
            var testRule = new IncreasingDeprecationRule
            {
                FirstApplicableDay = 3,
                Amount             = 2
            };

            var testStock = new StockItem
            {
                StockTypeId = "Stock 1",
                SellIn      = 3,
                Quality     = 5
            };

            var service = new IncreasingDeprecationRuleService();
            var result  = service.RunRule(testRule, testStock);

            Assert.True(result);
            Assert.Equal(7, testStock.Quality);
        }