public void OnceSellByDateIsLessThanZero_ThenQualityDropsToZero()
        {
            itemUnderTest.Quality = 4;
            itemUnderTest.SellIn  = -1;

            var rule1 = new DegredationRule
            {
                DegredationValue = -2,
                SellInThreshold  = 10
            };

            itemUnderTest.DegredationRules.Add(rule1);

            var rule2 = new DegredationRule
            {
                DegredationValue = -3,
                SellInThreshold  = 5
            };

            itemUnderTest.DegredationRules.Add(rule2);

            var rule3 = new DegredationRule
            {
                DegredationValue = 0,
                DegredationType  = DegredationType.Absolute,
                SellInThreshold  = -1
            };

            itemUnderTest.DegredationRules.Add(rule3);

            itemProcessor = new ItemProcessor(new List <IItem>()
            {
                itemUnderTest
            });
            itemProcessor.ProcessItems();

            Assert.Equal(0, itemUnderTest.Quality);
        }
        public void WhenThereAreThreeDaysOrLess_ThenQualityIncreasesByThree()
        {
            itemUnderTest.Quality = 4;
            itemUnderTest.SellIn  = 3;

            var rule1 = new DegredationRule
            {
                DegredationValue = -2,
                SellInThreshold  = 10
            };

            itemUnderTest.DegredationRules.Add(rule1);

            var rule2 = new DegredationRule
            {
                DegredationValue = -3,
                SellInThreshold  = 5
            };

            itemUnderTest.DegredationRules.Add(rule2);

            var rule3 = new DegredationRule
            {
                DegredationValue = 0,
                DegredationType  = DegredationType.Absolute,
                SellInThreshold  = -1
            };

            itemUnderTest.DegredationRules.Add(rule3);

            itemProcessor = new ItemProcessor(new List <IItem>()
            {
                itemUnderTest
            });
            itemProcessor.ProcessItems();

            Assert.Equal(7, itemUnderTest.Quality);
        }