Exemplo n.º 1
0
 def test_update_quality_v2_increases_quality_backstage_tickets(self):
     items = [
         BackStageTicketItem("foo", 10, 10),
         BackStageTicketItem("bar", 4, 10),
         BackStageTicketItem("pj", 0, 10)
     ]
     gilded_rose = GildedRose(items)
     gilded_rose.update_quality_v2()
     self.assertEqual(12, items[0].quality)
     self.assertEqual(13, items[1].quality)
     self.assertEqual(0, items[2].quality)
Exemplo n.º 2
0
def generate_fixture(days=None):
    items = [
        Item(
            name="+5 Dexterity Vest",
            sell_in=10,
            quality=20,
        ),
        Item(
            name="Aged Brie",
            sell_in=2,
            quality=0,
        ),
        Item(name="Elixir of the Mongoose", sell_in=5, quality=7),
        Item(
            name="Sulfuras, Hand of Ragnaros",
            sell_in=0,
            quality=80,
        ),
        Item(
            name="Sulfuras, Hand of Ragnaros",
            sell_in=-1,
            quality=80,
        ),
        Item(
            name="Backstage passes to a TAFKAL80ETC concert",
            sell_in=15,
            quality=20,
        ),
        Item(
            name="Backstage passes to a TAFKAL80ETC concert",
            sell_in=10,
            quality=49,
        ),
        Item(
            name="Backstage passes to a TAFKAL80ETC concert",
            sell_in=5,
            quality=49,
        ),
        Item(
            name="Conjured Mana Cake",
            sell_in=3,
            quality=6,
        ),
    ]

    if days is None:
        days = 2
    for day in range(days):
        print("-------- day %s --------" % day)
        print("name, sellIn, quality")
        for item in items:
            print(item)
        print("")
        GildedRose(items).update_quality()
Exemplo n.º 3
0
 def test_update_quality_increases_quality_backstage_tickets(self):
     items = [
         Item("Backstage passes to a TAFKAL80ETC concert", 10, 10),
         Item("Backstage passes to a TAFKAL80ETC concert", 4, 10),
         Item("Backstage passes to a TAFKAL80ETC concert", 0, 10)
     ]
     gilded_rose = GildedRose(items)
     gilded_rose.update_quality()
     self.assertEqual(12, items[0].quality)
     self.assertEqual(13, items[1].quality)
     self.assertEqual(0, items[2].quality)
Exemplo n.º 4
0
    def test_concert_item_when_sell_in_less_than_ten_days_quality_increase_by_two(
            self):
        set_quantity = 20
        ten_days_left = 10
        expected_incremental = 2
        items = [Item(self.concert_item_name, ten_days_left, set_quantity)]
        gilded_rose = GildedRose(items)

        gilded_rose.update_quality()

        self.assertEquals(items[0].quality,
                          set_quantity + expected_incremental)
Exemplo n.º 5
0
    def test_legendary_item_decay(self):
        items = [
            LegendaryItem("Sulfuras, Hand of Ragnaros", 0, 80),
            LegendaryItem("Sulfuras, Hand of Ragnaros", 1, 80),
        ]
        gilded_rose = GildedRose(items)

        self.assertEqual(items[0].quality, 80)
        self.assertEqual(items[1].quality, 80)
        gilded_rose.update_quality()
        self.assertEqual(items[0].quality, 80)
        self.assertEqual(items[1].quality, 80)
Exemplo n.º 6
0
    def test_aged_brie_increase_in_quality_when_sellin_is_negative(self):
        # Given
        quality = 2
        expected_quality = quality + 2
        items = [Item("Aged Brie", -2, quality)]
        gilded_rose = GildedRose(items)

        # When
        gilded_rose.update_quality()

        # Then
        self.assertEquals(expected_quality, items[0].quality)
Exemplo n.º 7
0
    def test_quality_cant_be_negative(self):
        # Given
        quality = 0
        expected_quality = quality
        items = [Item("foo", 2, quality)]
        gilded_rose = GildedRose(items)

        # When
        gilded_rose.update_quality()

        # Then
        self.assertEquals(expected_quality, items[0].quality)
Exemplo n.º 8
0
    def test_when_sellin_is_positive_quality_decrease_from_one(self):
        # Given
        quality = 1
        expected_quality = quality - 1
        items = [Item("foo", 1, quality)]
        gilded_rose = GildedRose(items)

        # When
        gilded_rose.update_quality()

        # Then
        self.assertEquals(expected_quality, items[0].quality)
Exemplo n.º 9
0
 def test_increase_pass_overdue(self):
     # Quality drops to 0 after the concert
     self.items.append(item_creator.create("Backstage passes to a TAFKAL80ETC concert", 0, 35))
     self.test_shop = GildedRose(self.items)
     self.test_shop.update_quality()
     results = [
         {'sell_in': -1, 'quality': 0},
     ]
     for num, result in enumerate(results):
         item = self.items[num]
         self.assertEqual(item.quality, result['quality'])
         self.assertEqual(item.sell_in, result['sell_in'])
Exemplo n.º 10
0
    def test_update_quality_decreases_quality_by_4_if_sell_in_is_below_0_for_conjured_items(self):
        self.conjured_item.sell_in = -1
        self.conjured_item.quality = 8
        gilded_rose = GildedRose([self.conjured_item])

        gilded_rose.update_quality()

        self.assertEqual(4, self.conjured_item.quality)

        gilded_rose.update_quality()

        self.assertEqual(0, self.conjured_item.quality)
Exemplo n.º 11
0
    def test_update_quality_increases_quality_by_3_for_backstage_passes_if_sell_in_is_below_6(self):
        self.backstage_passes.sell_in = 5
        self.backstage_passes.quality = 2
        gilded_rose = GildedRose([self.backstage_passes])

        gilded_rose.update_quality()

        self.assertEqual(5, self.backstage_passes.quality)

        gilded_rose.update_quality()

        self.assertEqual(8, self.backstage_passes.quality)
Exemplo n.º 12
0
    def test_conjured_items_degrade_in_quality_faster(self):
        starting_quality = 10
        items = [
            Item("Conjured Item", 10, starting_quality),
            Item("foo", 10, starting_quality)
        ]

        gilded_rose = GildedRose(items)
        gilded_rose.update_quality()

        self.assertEqual((starting_quality - gilded_rose.items[1].quality),
                         (starting_quality - gilded_rose.items[0].quality) / 2)
Exemplo n.º 13
0
    def test_quality_degrades_faster_after_sell__by_date(self):
        starting_quality = 10
        items = [
            Item("foo", 5, starting_quality),  # 5 days left to sell
            Item("foo", -1, starting_quality)  # 1 day over sell by date
        ]

        gilded_rose = GildedRose(items)
        gilded_rose.update_quality()

        self.assertGreater((starting_quality - gilded_rose.items[1].quality),
                           (starting_quality - gilded_rose.items[0].quality))
Exemplo n.º 14
0
    def test_item_past_expiration_quality_degrades_double(self):
        #Define test item
        items = [
            Item(name="+5 Dexterity Vest", sell_in=1, quality=20),
        ]
        #Save quality value for use in the assert
        day0_quality = items[0].quality

        #Iterate 2 days, saving quality data for testing
        GildedRose(items).update_quality()  #Iterate one day
        day1_quality = items[0].quality
        GildedRose(items).update_quality()  #Iterate one day
        day2_quality = items[0].quality

        #Calculated differences between days
        diff_day0_day1 = day0_quality - day1_quality
        diff_day1_day2 = day1_quality - day2_quality
        #Verify when item has "Expired" it loses value twice as fast
        #Diff between day1 and day2 should be double diff between day0 and day1 because sell_in is then less than 1
        self.assertEqual(diff_day1_day2, (diff_day0_day1 * 2))
        self.assertTrue(self.item_are_valid_tests(items))
Exemplo n.º 15
0
 def test_foo(self):
     items = [Item("foo", 1, 3)]
     gilded_rose = GildedRose(items)
     gilded_rose.update_quality()
     self.assertEqual(0, items[0].sell_in)
     self.assertEqual(2, items[0].quality, 'quality decreases with 1 when sell_in is positive')
     gilded_rose.update_quality()
     self.assertEqual(-1, items[0].sell_in)
     self.assertEqual(0, items[0].quality, 'quality decreases with 2 when sell_in becomes negative')
     gilded_rose.update_quality()
     self.assertEqual(-2, items[0].sell_in)
     self.assertEqual(0, items[0].quality, 'quality never becomes negative')
Exemplo n.º 16
0
 def test_increase_brie(self):
     # "Aged Brie" actually increases in Quality the older it gets
     self.items.append(item_creator.create("Aged Brie", 20, 30))
     self.test_shop = GildedRose(self.items)
     self.test_shop.update_quality()
     results = [
         {'sell_in': 19, 'quality': 31},
     ]
     for num, result in enumerate(results):
         item = self.items[num]
         self.assertEqual(item.quality, result['quality'])
         self.assertEqual(item.sell_in, result['sell_in'])
Exemplo n.º 17
0
 def test_increase_pass_by_two(self):
     # Quality increases by 2 when there are 10 days or less
     self.items.append(item_creator.create("Backstage passes to a TAFKAL80ETC concert", 8, 30))
     self.test_shop = GildedRose(self.items)
     self.test_shop.update_quality()
     results = [
         {'sell_in': 7, 'quality': 32},
     ]
     for num, result in enumerate(results):
         item = self.items[num]
         self.assertEqual(item.quality, result['quality'])
         self.assertEqual(item.sell_in, result['sell_in'])
Exemplo n.º 18
0
    def test_update_quality_decreases_quality_by_2_if_sell_in_is_below_0(self):
        self.item.sell_in = -1
        self.item.quality = 4
        gilded_rose = GildedRose([self.item])

        gilded_rose.update_quality()

        self.assertEqual(2, self.item.quality)

        gilded_rose.update_quality()

        self.assertEqual(0, self.item.quality)
Exemplo n.º 19
0
 def test_decrease_double_overdue(self):
     # Once the sell by date has passed, Quality degrades twice as fast
     self.items.append(item_creator.create("+5 Dexterity Vest", 0, 20))
     self.test_shop = GildedRose(self.items)
     self.test_shop.update_quality()
     results = [
         {'sell_in': -1, 'quality': 18},
     ]
     for num, result in enumerate(results):
         item = self.items[num]
         self.assertEqual(item.quality, result['quality'])
         self.assertEqual(item.sell_in, result['sell_in'])
Exemplo n.º 20
0
    def test_update_quality_increases_quality_by_2_for_aged_brie_if_sell_in_is_below_0(self):
        self.aged_brie.sell_in = -1
        self.aged_brie.quality = 2
        gilded_rose = GildedRose([self.aged_brie])

        gilded_rose.update_quality()

        self.assertEqual(4, self.aged_brie.quality)

        gilded_rose.update_quality()

        self.assertEqual(6, self.aged_brie.quality)
Exemplo n.º 21
0
    def test_when_sellin_is_negative_quality_decrease_twice_as_fast(self):
        # Given
        quality = 10
        expected_quality = quality - 1 * 2
        items = [Item("foo", -1, quality)]
        gilded_rose = GildedRose(items)

        # When
        gilded_rose.update_quality()

        # Then
        self.assertEquals(expected_quality, items[0].quality)
def test_sulfuras(gilded_rose):
    items = [Item('Sulfuras', sell_in=math.inf, quality=80)]
    inventory = GildedRose(items)
    item = inventory.items[0]

    inventory.update_quality()
    assert 80 == item.quality
    assert math.inf == item.sell_in

    days_after(500, inventory)
    assert 80 == item.quality
    assert math.inf == item.sell_in
Exemplo n.º 23
0
    def test_aged_brie_increase_in_quality_the_older_it_gets(self):
        # Given
        quality = 2
        expected_quality = quality + 1
        items = [Item("Aged Brie", 2, quality)]
        gilded_rose = GildedRose(items)

        # When
        gilded_rose.update_quality()

        # Then
        self.assertEquals(expected_quality, items[0].quality)
Exemplo n.º 24
0
 def test_max_quality(self):
     # The Quality of an item is never more than 50
     self.items.append(item_creator.create("Aged Brie", 10, 50))
     self.test_shop = GildedRose(self.items)
     self.test_shop.update_quality()
     results = [
         {'sell_in': 9, 'quality': 50},
     ]
     for num, result in enumerate(results):
         item = self.items[num]
         self.assertEqual(item.quality, result['quality'])
         self.assertEqual(item.sell_in, result['sell_in'])
Exemplo n.º 25
0
    def test_quality_of_item_cant_exceed_50(self):
        # Given
        quality = 50
        expected_quality = quality
        items = [Item("Aged Brie", 2, quality)]
        gilded_rose = GildedRose(items)

        # When
        gilded_rose.update_quality()

        # Then
        self.assertEquals(expected_quality, items[0].quality)
Exemplo n.º 26
0
 def test_normal_decrease(self):
     # Regular items degrade by one (quality + sell_in)
     self.items.append(item_creator.create("5 Dexterity Vest", 10, 20))
     self.test_shop = GildedRose(self.items)
     self.test_shop.update_quality()
     results = [
         {'sell_in': 9, 'quality': 19},
     ]
     for num, result in enumerate(results):
         item = self.items[num]
         self.assertEqual(item.quality, result['quality'])
         self.assertEqual(item.sell_in, result['sell_in'])
Exemplo n.º 27
0
    def test_concert_item_when_sell_in_more_than_ten_days_quality_increase_by_one(
            self):
        set_quantity = 20
        set_sell_in = 15
        expected_incremental = 1
        items = [Item(self.concert_item_name, set_sell_in, set_quantity)]
        gilded_rose = GildedRose(items)

        gilded_rose.update_quality()

        self.assertEquals(items[0].quality,
                          set_quantity + expected_incremental)
Exemplo n.º 28
0
 def test_immutable_sulfuras(self):
     # "Sulfuras", being a legendary item, never has to be sold or decreases in Quality
     self.items.append(item_creator.create("Sulfuras, Hand of Ragnaros", -1, 80))
     self.test_shop = GildedRose(self.items)
     self.test_shop.update_quality()
     results = [
         {'sell_in': -1, 'quality': 80},
     ]
     for num, result in enumerate(results):
         item = self.items[num]
         self.assertEqual(item.quality, result['quality'])
         self.assertEqual(item.sell_in, result['sell_in'])
Exemplo n.º 29
0
    def test_concert_item_when_sell_in_left_five_days_quality_increase_by_three(
            self):
        set_quantity = 20
        five_days_left = 5
        expected_incremental = 3
        items = [Item(self.concert_item_name, five_days_left, set_quantity)]
        gilded_rose = GildedRose(items)

        gilded_rose.update_quality()

        self.assertEquals(items[0].quality,
                          set_quantity + expected_incremental)
Exemplo n.º 30
0
 def test_conjured_decrease(self):
     # "Conjured" items degrade in Quality twice as fast as normal items
     self.items.append(item_creator.create("Conjured Health Potion", 10, 10))
     self.test_shop = GildedRose(self.items)
     self.test_shop.update_quality()
     results = [
         {'sell_in': 9, 'quality': 8},
     ]
     for num, result in enumerate(results):
         item = self.items[num]
         self.assertEqual(item.quality, result['quality'])
         self.assertEqual(item.sell_in, result['sell_in'])