public void GivenFrozenItem_WhenSellinPast0_QualityReduces2xFaster()
        {
            var item = new Item()
            {
                Name = "Frozen Item", Quality = 2, SellIn = -1
            };
            var rule = new FrozenItemUpdateRule();

            rule.Update(item);

            item.Quality.Should().Be(0);
        }
        public void GivenFrozenItem_WhenQualityAlready0_QualityIsNotNegative()
        {
            var item = new Item()
            {
                Name = "Frozen Item", Quality = 0, SellIn = 2
            };
            var rule = new FrozenItemUpdateRule();

            rule.Update(item);

            item.Quality.Should().Be(0);
        }
        public void GivenFrozenItem_WhenQualityMoreThan50_QualityResetTo50()
        {
            var item = new Item()
            {
                Name = "Frozen Item", Quality = 55, SellIn = 2
            };
            var rule = new FrozenItemUpdateRule();

            rule.Update(item);

            item.Quality.Should().Be(50);
        }
        public void GivenFrozenItem_WhenUpdated_QualityReducesBy1()
        {
            var item = new Item()
            {
                Name = "Frozen Item", Quality = 2, SellIn = 2
            };
            var rule = new FrozenItemUpdateRule();

            rule.Update(item);

            item.Quality.Should().Be(1);
        }
        public void GivenFrozenItem_SellIn2_Quality2_WhenUpdated_ThenFrozenItem_SellIn1_Quality1_Returned()
        {
            //GIVEN
            var items = new List <Item>()
            {
                new Item()
                {
                    Name = "Frozen Item", SellIn = 2, Quality = 2
                }
            };
            var rule = new FrozenItemUpdateRule();

            _inventoryManagementService = new InventoryManagementService(updateRule => rule);
            //WHEN
            var results = _inventoryManagementService.Update(items);
            //THEN
            var result = results.First();

            result.Should().Be("Frozen Item 1 1");
        }