From 6be8a090fb367cfb672f78a7206c3613cdb147a3 Mon Sep 17 00:00:00 2001 From: Ashwin Rana <119340735+gaiters-cafes@users.noreply.github.com> Date: Wed, 27 Sep 2023 16:18:25 +0000 Subject: [PATCH] UnitTest coverage --- python/GildedRoseRequirements.txt | 1 + python/test_gilded_rose.py | 16 ----------- python/tests/__init__.py | 0 python/tests/test_aged_brie.py | 9 +++++++ python/tests/test_backstage_pass.py | 37 +++++++++++++++++++++++++ python/tests/test_main.py | 42 +++++++++++++++++++++++++++++ python/tests/test_sulfuras.py | 16 +++++++++++ 7 files changed, 105 insertions(+), 16 deletions(-) create mode 120000 python/GildedRoseRequirements.txt delete mode 100644 python/test_gilded_rose.py create mode 100644 python/tests/__init__.py create mode 100644 python/tests/test_aged_brie.py create mode 100644 python/tests/test_backstage_pass.py create mode 100644 python/tests/test_main.py create mode 100644 python/tests/test_sulfuras.py diff --git a/python/GildedRoseRequirements.txt b/python/GildedRoseRequirements.txt new file mode 120000 index 00000000..0f79dc27 --- /dev/null +++ b/python/GildedRoseRequirements.txt @@ -0,0 +1 @@ +../GildedRoseRequirements.txt \ No newline at end of file diff --git a/python/test_gilded_rose.py b/python/test_gilded_rose.py deleted file mode 100644 index 616934e0..00000000 --- a/python/test_gilded_rose.py +++ /dev/null @@ -1,16 +0,0 @@ -# -*- coding: utf-8 -*- -import unittest - -from gilded_rose import Item, GildedRose - - -class GildedRoseTest(unittest.TestCase): - def test_foo(self): - items = [Item("foo", 0, 0)] - gilded_rose = GildedRose(items) - gilded_rose.update_quality() - self.assertEquals("fixme", items[0].name) - - -if __name__ == '__main__': - unittest.main() diff --git a/python/tests/__init__.py b/python/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/python/tests/test_aged_brie.py b/python/tests/test_aged_brie.py new file mode 100644 index 00000000..937fb5ba --- /dev/null +++ b/python/tests/test_aged_brie.py @@ -0,0 +1,9 @@ +from gilded_rose import Item, GildedRose + +AGED_BRIE = "Aged Brie" +# "Aged Brie" actually increases in Quality the older it get +def test_aged_brie_increases_quality_older(): + items = [Item(AGED_BRIE, 0, 0)] + gilded_rose = GildedRose(items) + gilded_rose.update_quality() + assert items[0].quality == 2 \ No newline at end of file diff --git a/python/tests/test_backstage_pass.py b/python/tests/test_backstage_pass.py new file mode 100644 index 00000000..01a44559 --- /dev/null +++ b/python/tests/test_backstage_pass.py @@ -0,0 +1,37 @@ +from gilded_rose import Item, GildedRose + +''' +"Backstage passes", like aged brie, increases in Quality as its SellIn value approaches; +Quality increases by 2 when there are 10 days or less and by 3 when there are 5 days or less but +Quality drops to 0 after the concert +''' + +BACKSTAGE_PASSES = "Backstage passes to a TAFKAL80ETC concert" + +# Backstage passes, increases in Quality as its SellIn value approaches +def test_backstage_passes_increase_quality(): + items = [Item(BACKSTAGE_PASSES, 11, 0)] + gilded_rose = GildedRose(items) + gilded_rose.update_quality() + assert items[0].quality == 1 + +# Quality increases by 2 when there are 10 days or less +def test_backstage_passes_increase_quality_by_2(): + items = [Item(BACKSTAGE_PASSES, 10, 0)] + gilded_rose = GildedRose(items) + gilded_rose.update_quality() + assert items[0].quality == 2 + +# Quality increases by 3 when there are 5 days or less +def test_backstage_passes_increase_quality_by_3(): + items = [Item(BACKSTAGE_PASSES, 5, 0)] + gilded_rose = GildedRose(items) + gilded_rose.update_quality() + assert items[0].quality == 3 + +# Quality drops to 0 after the concert +def test_backstage_passes_quality_is_0_sell_in_is_0(): + items = [Item(BACKSTAGE_PASSES, 0, 10)] + gilded_rose = GildedRose(items) + gilded_rose.update_quality() + assert items[0].quality == 0 \ No newline at end of file diff --git a/python/tests/test_main.py b/python/tests/test_main.py new file mode 100644 index 00000000..3b9dd8ec --- /dev/null +++ b/python/tests/test_main.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- +from gilded_rose import Item, GildedRose + +def test_foo(): + items = [Item("foo", 0, 0)] + gilded_rose = GildedRose(items) + gilded_rose.update_quality() + assert items[0].name == "foo" + +# At the end of each day our system lowers both values for every item +def test_item_sell_in_decreases(): + items = [Item("foo", 1, 0)] + gilded_rose = GildedRose(items) + gilded_rose.update_quality() + assert items[0].sell_in == 0 + +def test_item_quality_decreases(): + items = [Item("foo", 0, 1)] + gilded_rose = GildedRose(items) + gilded_rose.update_quality() + assert items[0].quality == 0 + +# Once the sell by date has passed, Quality degrades twice as fast +def test_item_sell_in_passed_quality_degrades_twice(): + items = [Item("foo", 0, 2)] + gilded_rose = GildedRose(items) + gilded_rose.update_quality() + assert items[0].quality == 0 + +# The Quality of an item is never negative +def test_item_quality_is_never_negative(): + items = [Item("foo", 0, 0)] + gilded_rose = GildedRose(items) + gilded_rose.update_quality() + assert items[0].quality == 0 + +# The Quality of an item is never more than 50 +def test_item_quality_is_never_more_than_50(): + items = [Item("Aged Brie", 0, 50)] + gilded_rose = GildedRose(items) + gilded_rose.update_quality() + assert items[0].quality == 50 \ No newline at end of file diff --git a/python/tests/test_sulfuras.py b/python/tests/test_sulfuras.py new file mode 100644 index 00000000..d0e1dc7f --- /dev/null +++ b/python/tests/test_sulfuras.py @@ -0,0 +1,16 @@ +from gilded_rose import Item, GildedRose + +SULFURAS = "Sulfuras, Hand of Ragnaros" + +# "Sulfuras", being a legendary item, never has to be sold or decreases in Quality +def test_sulfuras_sell_in_does_not_decrease(): + items = [Item(SULFURAS, 0, 0)] + gilded_rose = GildedRose(items) + gilded_rose.update_quality() + assert items[0].sell_in == 0 + +def test_sulfuras_does_not_decrease_in_quality(): + items = [Item(SULFURAS, 0, 0)] + gilded_rose = GildedRose(items) + gilded_rose.update_quality() + assert items[0].quality == 0 \ No newline at end of file