Last active
January 10, 2021 19:27
-
-
Save adelatorrefoss/c8a78f193a839ada78493f234f4fa6bb to your computer and use it in GitHub Desktop.
Test proposals for Gilded Rose in python. Thanks to Mathew Morgan. https://github.com/matthewmorgan/gilded-rose-python-with-tests/blob/master/gilded_rose_test.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Thanks to Michael Walker | |
| # https://github.com/CorndelWithSoftwire/Gilded-Rose-Python/blob/master/golden_master_test.py | |
| import unittest | |
| from gilded_rose import Item, GildedRose | |
| class GoldenMasterTest(unittest.TestCase): | |
| def test_update_items(self): | |
| 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), | |
| ] | |
| gilded_rose = GildedRose(items) | |
| gilded_rose.update_quality() | |
| self.assertEqual( | |
| str(gilded_rose.items), | |
| "[+5 Dexterity Vest, 9, 19, Aged Brie, 1, 1, Elixir of the Mongoose, 4, 6, Sulfuras, Hand of Ragnaros, 0, " | |
| "80, Sulfuras, Hand of Ragnaros, -1, 80, Backstage passes to a TAFKAL80ETC concert, 14, 21, " | |
| "Backstage passes to a TAFKAL80ETC concert, 9, 50, Backstage passes to a TAFKAL80ETC concert, 4, 50, " | |
| "Conjured Mana Cake, 2, 5]" | |
| ) | |
| for _ in range(10): | |
| gilded_rose.update_quality() | |
| self.assertEqual( | |
| str(gilded_rose.items), | |
| "[+5 Dexterity Vest, -1, 8, Aged Brie, -9, 20, Elixir of the Mongoose, -6, 0, Sulfuras, " | |
| "Hand of Ragnaros, 0, 80, Sulfuras, Hand of Ragnaros, -1, 80, Backstage passes to a " | |
| "TAFKAL80ETC concert, 4, 38, Backstage passes to a TAFKAL80ETC concert, -1, 0, " | |
| "Backstage passes to a TAFKAL80ETC concert, -6, 0, Conjured Mana Cake, -8, 0]" | |
| ) | |
| if __name__ == "__main__": | |
| unittest.main() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Thanks to Mathew Morgan | |
| # https://github.com/matthewmorgan/gilded-rose-python-with-tests/blob/master/gilded_rose_test.py | |
| from gilded_rose import GildedRose, Item | |
| from unittest import TestCase, skip | |
| class GildedRoseTest(TestCase): | |
| def setUp(self): | |
| self.items = [] | |
| self.gilded_rose = GildedRose(self.items) | |
| def test_regular_items_decrease_by_one(self): | |
| self.items.append(Item("+5 Dexterity Vest", 10, 20)) | |
| self.gilded_rose.update_quality() | |
| expected = {'sell_in': 9, 'quality': 19} | |
| item = self.items[0] | |
| self.assertEqual(item.quality, expected['quality']) | |
| self.assertEqual(item.sell_in, expected['sell_in']) | |
| def test_quality_goes_up_for_improving_products(self): | |
| self.items.append(Item("Aged Brie", 20, 30)) | |
| self.items.append(Item("Backstage passes to a TAFKAL80ETC concert", 20, 30)) | |
| self.gilded_rose.update_quality() | |
| expected = [ | |
| {'sell_in': 19, 'quality': 31}, | |
| {'sell_in': 19, 'quality': 31}, | |
| ] | |
| for index, expectation in enumerate(expected): | |
| item = self.items[index] | |
| self.assertEqual(item.quality, expectation['quality']) | |
| self.assertEqual(item.sell_in, expectation['sell_in']) | |
| def test_quality_goes_up_by_two_for_improving_products_with_10_days_or_less_left(self): | |
| self.items.append(Item("Aged Brie", 10, 34)) | |
| self.items.append(Item("Backstage passes to a TAFKAL80ETC concert", 8, 30)) | |
| self.gilded_rose.update_quality() | |
| expected = [ | |
| {'sell_in': 9, 'quality': 35}, | |
| {'sell_in': 7, 'quality': 32}, | |
| ] | |
| for index, expectation in enumerate(expected): | |
| item = self.items[index] | |
| self.assertEqual(item.quality, expectation['quality']) | |
| self.assertEqual(item.sell_in, expectation['sell_in']) | |
| def test_quality_goes_up_by_three_for_improving_products_with_5_days_or_less_left(self): | |
| self.items.append(Item("Aged Brie", 4, 11)) | |
| self.items.append(Item("Backstage passes to a TAFKAL80ETC concert", 5, 15)) | |
| self.gilded_rose.update_quality() | |
| expected = [ | |
| {'sell_in': 3, 'quality': 12}, | |
| {'sell_in': 4, 'quality': 18}, | |
| ] | |
| for index, expectation in enumerate(expected): | |
| item = self.items[index] | |
| self.assertEqual(item.quality, expectation['quality']) | |
| self.assertEqual(item.sell_in, expectation['sell_in']) | |
| def test_quality_and_sellin_decrease_twice_as_fast_after_sell_by(self): | |
| self.items.append(Item("+5 Dexterity Vest", 0, 20)) | |
| self.items.append(Item("Conjured Mana Cake", 0, 6)) | |
| self.gilded_rose.update_quality() | |
| expected = [ | |
| {'sell_in': -1, 'quality': 18}, | |
| {'sell_in': -1, 'quality': 4}, | |
| ] | |
| for index, expectation in enumerate(expected): | |
| item = self.items[index] | |
| self.assertEqual(item.quality, expectation['quality']) | |
| self.assertEqual(item.sell_in, expectation['sell_in']) | |
| def test_backstage_passes_and_brie_go_to_quality_zero_after_sell_by(self): | |
| self.items.append(Item("Aged Brie", 0, 20)) | |
| self.items.append(Item("Backstage passes to a TAFKAL80ETC concert", 0, 20)) | |
| self.gilded_rose.update_quality() | |
| expected = [ | |
| {'sell_in': -1, 'quality': 22}, | |
| {'sell_in': -1, 'quality': 0}, | |
| ] | |
| for index, expectation in enumerate(expected): | |
| item = self.items[index] | |
| self.assertEqual(item.quality, expectation['quality']) | |
| self.assertEqual(item.sell_in, expectation['sell_in']) | |
| def test_sulfuras_the_immutable(self): | |
| self.items.append(Item("Sulfuras, Hand of Ragnaros", 0, 80)) | |
| self.gilded_rose.update_quality() | |
| expected = {'sell_in': 0, 'quality': 80} | |
| item = self.items[0] | |
| self.assertEqual(item.quality, expected['quality']) | |
| self.assertEqual(item.sell_in, expected['sell_in']) | |
| def test_quality_does_not_increase_past_50(self): | |
| self.items.append(Item("Aged Brie", 4, 49)) | |
| self.gilded_rose.update_quality() | |
| expected = {'sell_in': 3, 'quality': 50} | |
| item = self.items[0] | |
| self.assertEqual(item.quality, expected['quality']) | |
| self.assertEqual(item.sell_in, expected['sell_in']) | |
| @skip | |
| def test_conjured_items_decrease_in_quality_twice_as_fast(self): | |
| self.items.append(Item("Conjured Mana Cake", 3, 6)) | |
| self.gilded_rose.update_quality() | |
| expected = {'sell_in': 2, 'quality': 4} | |
| item = self.items[0] | |
| self.assertEqual(item.quality, expected['quality']) | |
| self.assertEqual(item.sell_in, expected['sell_in']) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment