From 947aa2b4a25ac38a99483b2d6d75ecb059c04bb6 Mon Sep 17 00:00:00 2001 From: Kate Date: Mon, 3 Oct 2022 11:20:52 -0700 Subject: [PATCH 01/13] passed all tests in WAVE01 --- swap_meet/vendor.py | 15 ++++++++++++++- tests/unit_tests/test_wave_01.py | 12 ++++++------ 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/swap_meet/vendor.py b/swap_meet/vendor.py index 87302c056..752a48dfc 100644 --- a/swap_meet/vendor.py +++ b/swap_meet/vendor.py @@ -1,2 +1,15 @@ class Vendor: - pass \ No newline at end of file + def __init__(self, inventory=[]): + self.inventory = inventory + + def add(self, item): + self.inventory.append(item) + return item + + def remove(self, item): + if item not in self.inventory: + return False + else: + self.inventory.remove(item) + return item + diff --git a/tests/unit_tests/test_wave_01.py b/tests/unit_tests/test_wave_01.py index 58478ccf9..e34d6d272 100644 --- a/tests/unit_tests/test_wave_01.py +++ b/tests/unit_tests/test_wave_01.py @@ -2,12 +2,12 @@ import pytest from swap_meet.vendor import Vendor -@pytest.mark.skip +#@pytest.mark.skip def test_vendor_has_inventory(): vendor = Vendor() assert len(vendor.inventory) == 0 -@pytest.mark.skip +#@pytest.mark.skip def test_vendor_takes_optional_inventory(): inventory = ["a", "b", "c"] vendor = Vendor(inventory=inventory) @@ -16,7 +16,7 @@ def test_vendor_takes_optional_inventory(): assert "b" in vendor.inventory assert "c" in vendor.inventory -@pytest.mark.skip +#@pytest.mark.skip def test_adding_to_inventory(): vendor = Vendor() item = "new item" @@ -27,7 +27,7 @@ def test_adding_to_inventory(): assert item in vendor.inventory assert result == item -@pytest.mark.skip +#@pytest.mark.skip def test_removing_from_inventory_returns_item(): item = "item to remove" vendor = Vendor( @@ -40,7 +40,7 @@ def test_removing_from_inventory_returns_item(): assert item not in vendor.inventory assert result == item -@pytest.mark.skip +#@pytest.mark.skip def test_removing_not_found_is_false(): item = "item to remove" vendor = Vendor( @@ -49,7 +49,7 @@ def test_removing_not_found_is_false(): result = vendor.remove(item) - raise Exception("Complete this test according to comments below.") + assert result == False # ********************************************************************* # ****** Complete Assert Portion of this test ********** # ********************************************************************* From 628aa575dff7c5fb74be3a8c835714e4bc6937bc Mon Sep 17 00:00:00 2001 From: Kate Date: Mon, 3 Oct 2022 12:15:05 -0700 Subject: [PATCH 02/13] Passed Wave2 --- swap_meet/item.py | 3 ++- swap_meet/vendor.py | 7 +++++++ tests/unit_tests/test_wave_02.py | 8 ++++---- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/swap_meet/item.py b/swap_meet/item.py index 560d759c2..1d1b8c90e 100644 --- a/swap_meet/item.py +++ b/swap_meet/item.py @@ -1,2 +1,3 @@ class Item: - pass \ No newline at end of file + def __init__(self, category=""): + self.category = category diff --git a/swap_meet/vendor.py b/swap_meet/vendor.py index 752a48dfc..578a16d8a 100644 --- a/swap_meet/vendor.py +++ b/swap_meet/vendor.py @@ -13,3 +13,10 @@ def remove(self, item): self.inventory.remove(item) return item + def get_by_category(self, category): + items = [] + for item in self.inventory: + if item.category == category: + items.append(item) + return items + diff --git a/tests/unit_tests/test_wave_02.py b/tests/unit_tests/test_wave_02.py index 3d7060d7c..5c5bd2639 100644 --- a/tests/unit_tests/test_wave_02.py +++ b/tests/unit_tests/test_wave_02.py @@ -2,12 +2,12 @@ from swap_meet.vendor import Vendor from swap_meet.item import Item -@pytest.mark.skip +#@pytest.mark.skip def test_items_have_blank_default_category(): item = Item() assert item.category == "" -@pytest.mark.skip +#@pytest.mark.skip def test_get_items_by_category(): item_a = Item(category="clothing") item_b = Item(category="electronics") @@ -23,7 +23,7 @@ def test_get_items_by_category(): assert item_c in items assert item_b not in items -@pytest.mark.skip +#@pytest.mark.skip def test_get_no_matching_items_by_category(): item_a = Item(category="clothing") item_b = Item(category="clothing") @@ -34,7 +34,7 @@ def test_get_no_matching_items_by_category(): items = vendor.get_by_category("electronics") - raise Exception("Complete this test according to comments below.") + assert items == [] # ********************************************************************* # ****** Complete Assert Portion of this test ********** # ********************************************************************* From 8817359345166bf4df5391c0cfa035d608b50927 Mon Sep 17 00:00:00 2001 From: Kate Date: Mon, 3 Oct 2022 22:51:12 -0700 Subject: [PATCH 03/13] passed 5/6 tests wave3 --- swap_meet/item.py | 3 +++ swap_meet/vendor.py | 16 +++++++++++++++- tests/unit_tests/test_wave_03.py | 12 ++++++------ 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/swap_meet/item.py b/swap_meet/item.py index 1d1b8c90e..5444e057d 100644 --- a/swap_meet/item.py +++ b/swap_meet/item.py @@ -1,3 +1,6 @@ class Item: def __init__(self, category=""): self.category = category + + def ___str___(self): + return f"{Item}" \ No newline at end of file diff --git a/swap_meet/vendor.py b/swap_meet/vendor.py index 578a16d8a..c8a6d6c0d 100644 --- a/swap_meet/vendor.py +++ b/swap_meet/vendor.py @@ -19,4 +19,18 @@ def get_by_category(self, category): if item.category == category: items.append(item) return items - + + def swap_items(self, another_vendor, my_item, their_item): + if my_item not in self.inventory or their_item not in another_vendor.inventory: + return False + else: + self.inventory.remove(my_item) + another_vendor.inventory.append(my_item) + self.inventory.append(their_item) + another_vendor.inventory.remove(their_item) + return True + + def swap_first_item(): + pass + + diff --git a/tests/unit_tests/test_wave_03.py b/tests/unit_tests/test_wave_03.py index 0300b638f..720879a7c 100644 --- a/tests/unit_tests/test_wave_03.py +++ b/tests/unit_tests/test_wave_03.py @@ -2,7 +2,7 @@ from swap_meet.vendor import Vendor from swap_meet.item import Item -@pytest.mark.skip +#@pytest.mark.skip def test_item_overrides_to_string(): item = Item() @@ -10,7 +10,7 @@ def test_item_overrides_to_string(): assert stringified_item == "Hello World!" -@pytest.mark.skip +#@pytest.mark.skip def test_swap_items_returns_true(): item_a = Item(category="clothing") item_b = Item(category="clothing") @@ -38,7 +38,7 @@ def test_swap_items_returns_true(): assert item_b in jolie.inventory assert result -@pytest.mark.skip +#@pytest.mark.skip def test_swap_items_when_my_item_is_missing_returns_false(): item_a = Item(category="clothing") item_b = Item(category="clothing") @@ -65,7 +65,7 @@ def test_swap_items_when_my_item_is_missing_returns_false(): assert item_e in jolie.inventory assert not result -@pytest.mark.skip +#@pytest.mark.skip def test_swap_items_when_their_item_is_missing_returns_false(): item_a = Item(category="clothing") item_b = Item(category="clothing") @@ -92,7 +92,7 @@ def test_swap_items_when_their_item_is_missing_returns_false(): assert item_e in jolie.inventory assert not result -@pytest.mark.skip +#@pytest.mark.skip def test_swap_items_from_my_empty_returns_false(): fatimah = Vendor( inventory=[] @@ -112,7 +112,7 @@ def test_swap_items_from_my_empty_returns_false(): assert len(jolie.inventory) == 2 assert not result -@pytest.mark.skip +#@pytest.mark.skip def test_swap_items_from_their_empty_returns_false(): item_a = Item(category="clothing") item_b = Item(category="clothing") From 1a15839ea181d2793f2c06f03a211847b4486e26 Mon Sep 17 00:00:00 2001 From: Kate Date: Mon, 3 Oct 2022 23:06:43 -0700 Subject: [PATCH 04/13] passed wave 4. pending wave 3 1/6 test failed. --- swap_meet/vendor.py | 15 +++++++++++---- tests/unit_tests/test_wave_04.py | 6 +++--- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/swap_meet/vendor.py b/swap_meet/vendor.py index c8a6d6c0d..a33887839 100644 --- a/swap_meet/vendor.py +++ b/swap_meet/vendor.py @@ -30,7 +30,14 @@ def swap_items(self, another_vendor, my_item, their_item): another_vendor.inventory.remove(their_item) return True - def swap_first_item(): - pass - - + def swap_first_item(self, another_vendor): + if self.inventory == [] or another_vendor.inventory == []: + return False + else: + self.inventory.append(another_vendor.inventory[0]) + another_vendor.inventory.append(self.inventory[0]) + self.inventory.remove(self.inventory[0]) + another_vendor.inventory.remove(another_vendor.inventory[0]) + + + return True \ No newline at end of file diff --git a/tests/unit_tests/test_wave_04.py b/tests/unit_tests/test_wave_04.py index 8190a4ebb..f3c91e846 100644 --- a/tests/unit_tests/test_wave_04.py +++ b/tests/unit_tests/test_wave_04.py @@ -2,7 +2,7 @@ from swap_meet.vendor import Vendor from swap_meet.item import Item -@pytest.mark.skip +#@pytest.mark.skip def test_swap_first_item_returns_true(): item_a = Item(category="clothing") item_b = Item(category="clothing") @@ -30,7 +30,7 @@ def test_swap_first_item_returns_true(): assert item_a in jolie.inventory assert result -@pytest.mark.skip +#@pytest.mark.skip def test_swap_first_item_from_my_empty_returns_false(): fatimah = Vendor( inventory=[] @@ -48,7 +48,7 @@ def test_swap_first_item_from_my_empty_returns_false(): assert len(jolie.inventory) == 2 assert not result -@pytest.mark.skip +#@pytest.mark.skip def test_swap_first_item_from_their_empty_returns_false(): item_a = Item(category="clothing") item_b = Item(category="clothing") From 3adeec7fcf179146a884266b0a00bb79118d5955 Mon Sep 17 00:00:00 2001 From: Kate Date: Mon, 3 Oct 2022 23:30:00 -0700 Subject: [PATCH 05/13] passed 4/5 tests WAVE05 --- swap_meet/clothing.py | 9 ++++++++- swap_meet/decor.py | 9 ++++++++- swap_meet/electronics.py | 9 ++++++++- swap_meet/item.py | 4 ++-- tests/unit_tests/test_wave_05.py | 10 +++++----- 5 files changed, 31 insertions(+), 10 deletions(-) diff --git a/swap_meet/clothing.py b/swap_meet/clothing.py index b8afdeb1e..812767f08 100644 --- a/swap_meet/clothing.py +++ b/swap_meet/clothing.py @@ -1,2 +1,9 @@ +from swap_meet.item import Item + class Clothing: - pass \ No newline at end of file + def __init__(self, category = "Clothing", condition = 0): + self.category = category + self.condition = condition + + def __str__(self): + return "The finest clothing you could wear." \ No newline at end of file diff --git a/swap_meet/decor.py b/swap_meet/decor.py index eab7a9dbe..b00ddb8b1 100644 --- a/swap_meet/decor.py +++ b/swap_meet/decor.py @@ -1,2 +1,9 @@ +from swap_meet.item import Item + class Decor: - pass \ No newline at end of file + def __init__(self, category = "Decor", condition = 0): + self.category = category + self.condition = condition + + def __str__(self): + return "Something to decorate your space." \ No newline at end of file diff --git a/swap_meet/electronics.py b/swap_meet/electronics.py index 2f9dff68a..485e84e6f 100644 --- a/swap_meet/electronics.py +++ b/swap_meet/electronics.py @@ -1,2 +1,9 @@ +from swap_meet.item import Item + class Electronics: - pass + def __init__(self, category = "Electronics", condition = 0): + self.category = category + self.condition = condition + + def __str__(self): + return "A gadget full of buttons and secrets." diff --git a/swap_meet/item.py b/swap_meet/item.py index 5444e057d..9e64bd6ec 100644 --- a/swap_meet/item.py +++ b/swap_meet/item.py @@ -1,6 +1,6 @@ class Item: - def __init__(self, category=""): + def __init__(self, category = "", condition = 0): self.category = category - + def ___str___(self): return f"{Item}" \ No newline at end of file diff --git a/tests/unit_tests/test_wave_05.py b/tests/unit_tests/test_wave_05.py index 7abea06cd..8dedc9e28 100644 --- a/tests/unit_tests/test_wave_05.py +++ b/tests/unit_tests/test_wave_05.py @@ -3,25 +3,25 @@ from swap_meet.decor import Decor from swap_meet.electronics import Electronics -@pytest.mark.skip +#@pytest.mark.skip def test_clothing_has_default_category_and_to_str(): cloth = Clothing() assert cloth.category == "Clothing" assert str(cloth) == "The finest clothing you could wear." -@pytest.mark.skip +#@pytest.mark.skip def test_decor_has_default_category_and_to_str(): decor = Decor() assert decor.category == "Decor" assert str(decor) == "Something to decorate your space." -@pytest.mark.skip +#@pytest.mark.skip def test_electronics_has_default_category_and_to_str(): electronics = Electronics() assert electronics.category == "Electronics" assert str(electronics) == "A gadget full of buttons and secrets." -@pytest.mark.skip +#@pytest.mark.skip def test_items_have_condition_as_float(): items = [ Clothing(condition=3.5), @@ -31,7 +31,7 @@ def test_items_have_condition_as_float(): for item in items: assert item.condition == pytest.approx(3.5) -@pytest.mark.skip +#@pytest.mark.skip def test_items_have_condition_descriptions_that_are_the_same_regardless_of_type(): items = [ Clothing(condition=5), From f80f3568e8edf5b65a18c75b015657541357d66f Mon Sep 17 00:00:00 2001 From: Kate Date: Tue, 4 Oct 2022 11:49:17 -0700 Subject: [PATCH 06/13] 22 tests passed --- swap_meet/clothing.py | 7 +++---- swap_meet/decor.py | 7 +++---- swap_meet/electronics.py | 7 +++---- swap_meet/item.py | 20 +++++++++++++++++-- swap_meet/vendor.py | 4 +++- tests/integration_tests/test_wave_01_02_03.py | 4 ++-- 6 files changed, 32 insertions(+), 17 deletions(-) diff --git a/swap_meet/clothing.py b/swap_meet/clothing.py index 812767f08..20647014c 100644 --- a/swap_meet/clothing.py +++ b/swap_meet/clothing.py @@ -1,9 +1,8 @@ from swap_meet.item import Item -class Clothing: - def __init__(self, category = "Clothing", condition = 0): - self.category = category - self.condition = condition +class Clothing(Item): + def __init__(self, category=None, condition=None): + super().__init__("Clothing") def __str__(self): return "The finest clothing you could wear." \ No newline at end of file diff --git a/swap_meet/decor.py b/swap_meet/decor.py index b00ddb8b1..358a6f569 100644 --- a/swap_meet/decor.py +++ b/swap_meet/decor.py @@ -1,9 +1,8 @@ from swap_meet.item import Item -class Decor: - def __init__(self, category = "Decor", condition = 0): - self.category = category - self.condition = condition +class Decor(Item): + def __init__(self, category=None, condition=None): + super().__init__("Decor") def __str__(self): return "Something to decorate your space." \ No newline at end of file diff --git a/swap_meet/electronics.py b/swap_meet/electronics.py index 485e84e6f..a5ebe9baf 100644 --- a/swap_meet/electronics.py +++ b/swap_meet/electronics.py @@ -1,9 +1,8 @@ from swap_meet.item import Item -class Electronics: - def __init__(self, category = "Electronics", condition = 0): - self.category = category - self.condition = condition +class Electronics(Item): + def __init__(self, category=None, condition=0): + super().__init__("Electronics") def __str__(self): return "A gadget full of buttons and secrets." diff --git a/swap_meet/item.py b/swap_meet/item.py index 9e64bd6ec..f796b3cd3 100644 --- a/swap_meet/item.py +++ b/swap_meet/item.py @@ -1,6 +1,22 @@ class Item: def __init__(self, category = "", condition = 0): self.category = category + self.condition = condition - def ___str___(self): - return f"{Item}" \ No newline at end of file + def __str__(self): + return "Hello World!" + + def condition_description(self): + rating_description = { + 0: "Bad", + 1: "Poor", + 2: "Fair", + 3: "Good", + 4: "Very Good", + 5: "Excellent" + } + + return rating_description[self.condition] + + def swap_by_newest(self): + pass \ No newline at end of file diff --git a/swap_meet/vendor.py b/swap_meet/vendor.py index a33887839..bfb6b0a51 100644 --- a/swap_meet/vendor.py +++ b/swap_meet/vendor.py @@ -1,5 +1,7 @@ class Vendor: - def __init__(self, inventory=[]): + def __init__(self, inventory=None): + if inventory is None: + inventory = [] self.inventory = inventory def add(self, item): diff --git a/tests/integration_tests/test_wave_01_02_03.py b/tests/integration_tests/test_wave_01_02_03.py index 9912414da..f627caeb1 100644 --- a/tests/integration_tests/test_wave_01_02_03.py +++ b/tests/integration_tests/test_wave_01_02_03.py @@ -2,8 +2,8 @@ from swap_meet.vendor import Vendor from swap_meet.item import Item -@pytest.mark.skip -@pytest.mark.integration_test +#@pytest.mark.skip +#@pytest.mark.integration_test def test_integration_wave_01_02_03(): # make a vendor vendor = Vendor() From ffbd557805b393add063af06464d77c877d6cb79 Mon Sep 17 00:00:00 2001 From: Kate Date: Tue, 4 Oct 2022 15:28:23 -0700 Subject: [PATCH 07/13] passed 32 tests --- swap_meet/clothing.py | 5 ++- swap_meet/decor.py | 4 +- swap_meet/electronics.py | 4 +- swap_meet/item.py | 2 +- swap_meet/vendor.py | 37 ++++++++++++++- tests/integration_tests/test_wave_04_05_06.py | 4 +- tests/unit_tests/test_wave_06.py | 45 +++++++++++++------ 7 files changed, 78 insertions(+), 23 deletions(-) diff --git a/swap_meet/clothing.py b/swap_meet/clothing.py index 20647014c..0522029f1 100644 --- a/swap_meet/clothing.py +++ b/swap_meet/clothing.py @@ -1,8 +1,9 @@ from swap_meet.item import Item class Clothing(Item): - def __init__(self, category=None, condition=None): - super().__init__("Clothing") + def __init__(self, category = "Clothing", condition = 0.0): + super().__init__(category, condition) + def __str__(self): return "The finest clothing you could wear." \ No newline at end of file diff --git a/swap_meet/decor.py b/swap_meet/decor.py index 358a6f569..47921351f 100644 --- a/swap_meet/decor.py +++ b/swap_meet/decor.py @@ -1,8 +1,8 @@ from swap_meet.item import Item class Decor(Item): - def __init__(self, category=None, condition=None): - super().__init__("Decor") + def __init__(self, category = "Decor", condition = 0.0): + super().__init__(category, condition) def __str__(self): return "Something to decorate your space." \ No newline at end of file diff --git a/swap_meet/electronics.py b/swap_meet/electronics.py index a5ebe9baf..6dd863660 100644 --- a/swap_meet/electronics.py +++ b/swap_meet/electronics.py @@ -1,8 +1,8 @@ from swap_meet.item import Item class Electronics(Item): - def __init__(self, category=None, condition=0): - super().__init__("Electronics") + def __init__(self, category = "Electronics", condition = 0.0): + super().__init__(category, condition) def __str__(self): return "A gadget full of buttons and secrets." diff --git a/swap_meet/item.py b/swap_meet/item.py index f796b3cd3..030c8da48 100644 --- a/swap_meet/item.py +++ b/swap_meet/item.py @@ -1,5 +1,5 @@ class Item: - def __init__(self, category = "", condition = 0): + def __init__(self, category = "", condition = 0.0): self.category = category self.condition = condition diff --git a/swap_meet/vendor.py b/swap_meet/vendor.py index bfb6b0a51..075067de0 100644 --- a/swap_meet/vendor.py +++ b/swap_meet/vendor.py @@ -1,3 +1,6 @@ +from pytest import Item + + class Vendor: def __init__(self, inventory=None): if inventory is None: @@ -42,4 +45,36 @@ def swap_first_item(self, another_vendor): another_vendor.inventory.remove(another_vendor.inventory[0]) - return True \ No newline at end of file + return True + + def get_best_by_category(self, category): + category_items = self.get_by_category(category) + + if category_items == []: + return None + + best_product = "" + best_condition = 0 + + for product in category_items: + if product.condition > best_condition: + best_condition = product.condition + best_product = product + return best_product + + def swap_best_by_category(self, other, my_priority, their_priority): + for product in self.inventory: + if product.category == their_priority: + for product in other.inventory: + if product.category == my_priority: + other_wanted = self.get_best_by_category(their_priority) + my_wanted = other.get_best_by_category(my_priority) + + + self.inventory.append(my_wanted) + other.inventory.append(other_wanted) + self.inventory.remove(other_wanted) + other.inventory.remove(my_wanted) + return True + else: + return False \ No newline at end of file diff --git a/tests/integration_tests/test_wave_04_05_06.py b/tests/integration_tests/test_wave_04_05_06.py index 4d0be9909..5c875978b 100644 --- a/tests/integration_tests/test_wave_04_05_06.py +++ b/tests/integration_tests/test_wave_04_05_06.py @@ -4,8 +4,8 @@ from swap_meet.decor import Decor from swap_meet.electronics import Electronics -@pytest.mark.skip -@pytest.mark.integration_test +#@pytest.mark.skip +#@pytest.mark.integration_test def test_integration_wave_04_05_06(): camila = Vendor() valentina = Vendor() diff --git a/tests/unit_tests/test_wave_06.py b/tests/unit_tests/test_wave_06.py index 1f7065ab4..cc60354b9 100644 --- a/tests/unit_tests/test_wave_06.py +++ b/tests/unit_tests/test_wave_06.py @@ -4,7 +4,7 @@ from swap_meet.decor import Decor from swap_meet.electronics import Electronics -@pytest.mark.skip +#@pytest.mark.skip def test_best_by_category(): item_a = Clothing(condition=2.0) item_b = Decor(condition=2.0) @@ -20,7 +20,7 @@ def test_best_by_category(): assert best_item.category == "Clothing" assert best_item.condition == pytest.approx(4.0) -@pytest.mark.skip +#@pytest.mark.skip def test_best_by_category_no_matches_is_none(): item_a = Decor(condition=2.0) item_b = Decor(condition=2.0) @@ -33,7 +33,7 @@ def test_best_by_category_no_matches_is_none(): assert best_item is None -@pytest.mark.skip +#@pytest.mark.skip def test_best_by_category_with_duplicates(): # Arrange item_a = Clothing(condition=2.0) @@ -50,7 +50,7 @@ def test_best_by_category_with_duplicates(): assert best_item.category == "Clothing" assert best_item.condition == pytest.approx(4.0) -@pytest.mark.skip +#@pytest.mark.skip def test_swap_best_by_category(): # Arrange # me @@ -76,7 +76,12 @@ def test_swap_best_by_category(): their_priority="Decor" ) - raise Exception("Complete this test according to comments below.") + assert result == True + assert len(jesse.inventory) == 3 + assert len(tai.inventory) == 3 + assert tai.inventory == [item_a, item_b, item_f] + assert jesse.inventory == [item_c, item_d, item_e] + # ********************************************************************* # ****** Complete Assert Portion of this test ********** # ********************************************************************* @@ -85,7 +90,7 @@ def test_swap_best_by_category(): # - That tai and jesse's inventories are the correct length # - That all the correct items are in tai and jesse's inventories, including the items which were swapped from one vendor to the other -@pytest.mark.skip +#@pytest.mark.skip def test_swap_best_by_category_reordered(): # Arrange item_a = Decor(condition=2.0) @@ -109,7 +114,10 @@ def test_swap_best_by_category_reordered(): their_priority="Decor" ) - raise Exception("Complete this test according to comments below.") + assert result == True + assert len(tai.inventory) == 3 + assert len(jesse.inventory) == 3 + # ********************************************************************* # ****** Complete Assert Portion of this test ********** # ********************************************************************* @@ -118,7 +126,7 @@ def test_swap_best_by_category_reordered(): # - That tai and jesse's inventories are the correct length # - That all the correct items are in tai and jesse's inventories, and that the items that were swapped are not there -@pytest.mark.skip +#@pytest.mark.skip def test_swap_best_by_category_no_inventory_is_false(): tai = Vendor( inventory=[] @@ -144,7 +152,7 @@ def test_swap_best_by_category_no_inventory_is_false(): assert item_b in jesse.inventory assert item_c in jesse.inventory -@pytest.mark.skip +#@pytest.mark.skip def test_swap_best_by_category_no_other_inventory_is_false(): item_a = Clothing(condition=2.0) item_b = Decor(condition=4.0) @@ -170,7 +178,7 @@ def test_swap_best_by_category_no_other_inventory_is_false(): assert item_b in tai.inventory assert item_c in tai.inventory -@pytest.mark.skip +#@pytest.mark.skip def test_swap_best_by_category_no_match_is_false(): # Arrange item_a = Decor(condition=2.0) @@ -194,7 +202,13 @@ def test_swap_best_by_category_no_match_is_false(): their_priority="Clothing" ) - raise Exception("Complete this test according to comments below.") + #assert + assert result == False + assert len(tai.inventory) == 3 + assert len(jesse.inventory) == 3 + assert tai.inventory == [item_a, item_b, item_c] + assert jesse.inventory == [item_d, item_e, item_f] + # ********************************************************************* # ****** Complete Assert Portion of this test ********** # ********************************************************************* @@ -203,7 +217,7 @@ def test_swap_best_by_category_no_match_is_false(): # - That tai and jesse's inventories are the correct length # - That all the correct items are in tai and jesse's inventories -@pytest.mark.skip +#@pytest.mark.skip def test_swap_best_by_category_no_other_match_is_false(): # Arrange item_a = Decor(condition=2.0) @@ -227,7 +241,12 @@ def test_swap_best_by_category_no_other_match_is_false(): their_priority="Decor" ) - raise Exception("Complete this test according to comments below.") + assert result == False + assert len(tai.inventory) == 3 + assert len(jesse.inventory) == 3 + assert tai.inventory == [item_c, item_b, item_a] + assert jesse.inventory == [item_f, item_e, item_d] + # ********************************************************************* # ****** Complete Assert Portion of this test ********** # ********************************************************************* From 2fbd3ed5c578bd75fa4d8289187fc516ef5f04bf Mon Sep 17 00:00:00 2001 From: Kate Date: Tue, 4 Oct 2022 20:30:33 -0700 Subject: [PATCH 08/13] passed 33 tests. complete wave6 --- swap_meet/vendor.py | 34 +++++++++++++++++++------------- tests/unit_tests/test_wave_06.py | 8 +++++--- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/swap_meet/vendor.py b/swap_meet/vendor.py index 075067de0..729518210 100644 --- a/swap_meet/vendor.py +++ b/swap_meet/vendor.py @@ -1,6 +1,3 @@ -from pytest import Item - - class Vendor: def __init__(self, inventory=None): if inventory is None: @@ -63,18 +60,27 @@ def get_best_by_category(self, category): return best_product def swap_best_by_category(self, other, my_priority, their_priority): + i_have = False + they_have = False + + if self.inventory == [] or other.inventory == []: + return False + for product in self.inventory: if product.category == their_priority: - for product in other.inventory: - if product.category == my_priority: - other_wanted = self.get_best_by_category(their_priority) - my_wanted = other.get_best_by_category(my_priority) + i_have = True + for product in other.inventory: + if product.category == my_priority: + they_have = True - self.inventory.append(my_wanted) - other.inventory.append(other_wanted) - self.inventory.remove(other_wanted) - other.inventory.remove(my_wanted) - return True - else: - return False \ No newline at end of file + if i_have is True and they_have is True: + other_wanted = self.get_best_by_category(their_priority) + my_wanted = other.get_best_by_category(my_priority) + + self.swap_items(other, other_wanted, my_wanted) + + return True + + else: + return False \ No newline at end of file diff --git a/tests/unit_tests/test_wave_06.py b/tests/unit_tests/test_wave_06.py index cc60354b9..cd736d9e5 100644 --- a/tests/unit_tests/test_wave_06.py +++ b/tests/unit_tests/test_wave_06.py @@ -79,9 +79,9 @@ def test_swap_best_by_category(): assert result == True assert len(jesse.inventory) == 3 assert len(tai.inventory) == 3 - assert tai.inventory == [item_a, item_b, item_f] - assert jesse.inventory == [item_c, item_d, item_e] - + assert all(item in [item_a, item_b, item_f] for item in tai.inventory) + assert all(item in [item_c, item_d, item_e] for item in jesse.inventory) + # ********************************************************************* # ****** Complete Assert Portion of this test ********** # ********************************************************************* @@ -117,6 +117,8 @@ def test_swap_best_by_category_reordered(): assert result == True assert len(tai.inventory) == 3 assert len(jesse.inventory) == 3 + assert all(item in [item_f, item_a, item_b] for item in tai.inventory) + assert all(item in [item_d, item_e, item_c] for item in jesse.inventory) # ********************************************************************* # ****** Complete Assert Portion of this test ********** From 39e893b0f4095f292f33e22dd73eedceff181397 Mon Sep 17 00:00:00 2001 From: Kate Date: Tue, 4 Oct 2022 20:40:00 -0700 Subject: [PATCH 09/13] DRY by using swap_items function in swap_first_item and swap_best_by_category --- swap_meet/vendor.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/swap_meet/vendor.py b/swap_meet/vendor.py index 729518210..c49b8de61 100644 --- a/swap_meet/vendor.py +++ b/swap_meet/vendor.py @@ -1,3 +1,6 @@ +from email.errors import ObsoleteHeaderDefect + + class Vendor: def __init__(self, inventory=None): if inventory is None: @@ -36,10 +39,11 @@ def swap_first_item(self, another_vendor): if self.inventory == [] or another_vendor.inventory == []: return False else: - self.inventory.append(another_vendor.inventory[0]) - another_vendor.inventory.append(self.inventory[0]) - self.inventory.remove(self.inventory[0]) - another_vendor.inventory.remove(another_vendor.inventory[0]) + self.swap_items(another_vendor, self.inventory[0], another_vendor.inventory[0]) + # self.inventory.append(another_vendor.inventory[0]) + # another_vendor.inventory.append(self.inventory[0]) + # self.inventory.remove(self.inventory[0]) + # another_vendor.inventory.remove(another_vendor.inventory[0]) return True From 2803ac54cc08aba98a3fefc71f2db6d46fb924df Mon Sep 17 00:00:00 2001 From: Kate Date: Tue, 4 Oct 2022 20:41:13 -0700 Subject: [PATCH 10/13] DRY-ed by using swap_items function --- swap_meet/vendor.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/swap_meet/vendor.py b/swap_meet/vendor.py index c49b8de61..9b082b1b4 100644 --- a/swap_meet/vendor.py +++ b/swap_meet/vendor.py @@ -40,12 +40,6 @@ def swap_first_item(self, another_vendor): return False else: self.swap_items(another_vendor, self.inventory[0], another_vendor.inventory[0]) - # self.inventory.append(another_vendor.inventory[0]) - # another_vendor.inventory.append(self.inventory[0]) - # self.inventory.remove(self.inventory[0]) - # another_vendor.inventory.remove(another_vendor.inventory[0]) - - return True def get_best_by_category(self, category): From 80d93f528327199e6cc6f196e368218e56e79577 Mon Sep 17 00:00:00 2001 From: Kate Date: Tue, 4 Oct 2022 21:09:19 -0700 Subject: [PATCH 11/13] DRYed --- swap_meet/vendor.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/swap_meet/vendor.py b/swap_meet/vendor.py index 9b082b1b4..a7cbe4e2f 100644 --- a/swap_meet/vendor.py +++ b/swap_meet/vendor.py @@ -1,6 +1,3 @@ -from email.errors import ObsoleteHeaderDefect - - class Vendor: def __init__(self, inventory=None): if inventory is None: From 2cb7108b7f518f510a5bd8e4bc27569c74b57b86 Mon Sep 17 00:00:00 2001 From: Kate Date: Tue, 4 Oct 2022 22:10:16 -0700 Subject: [PATCH 12/13] added optional tests. pass 2/3 optional tests --- swap_meet/clothing.py | 4 +- swap_meet/decor.py | 4 +- swap_meet/electronics.py | 4 +- swap_meet/item.py | 6 +-- swap_meet/vendor.py | 25 +++++++++- tests/unit_tests/test_wave_06.py | 2 + tests/unit_tests/test_wave_optional.py | 69 ++++++++++++++++++++++++++ 7 files changed, 102 insertions(+), 12 deletions(-) create mode 100644 tests/unit_tests/test_wave_optional.py diff --git a/swap_meet/clothing.py b/swap_meet/clothing.py index 0522029f1..3abf5725a 100644 --- a/swap_meet/clothing.py +++ b/swap_meet/clothing.py @@ -1,8 +1,8 @@ from swap_meet.item import Item class Clothing(Item): - def __init__(self, category = "Clothing", condition = 0.0): - super().__init__(category, condition) + def __init__(self, category = "Clothing", condition = 0.0, age = None): + super().__init__(category, condition, age) def __str__(self): diff --git a/swap_meet/decor.py b/swap_meet/decor.py index 47921351f..3039a1197 100644 --- a/swap_meet/decor.py +++ b/swap_meet/decor.py @@ -1,8 +1,8 @@ from swap_meet.item import Item class Decor(Item): - def __init__(self, category = "Decor", condition = 0.0): - super().__init__(category, condition) + def __init__(self, category = "Decor", condition = 0.0, age = None): + super().__init__(category, condition, age) def __str__(self): return "Something to decorate your space." \ No newline at end of file diff --git a/swap_meet/electronics.py b/swap_meet/electronics.py index 6dd863660..eb8c4dbb8 100644 --- a/swap_meet/electronics.py +++ b/swap_meet/electronics.py @@ -1,8 +1,8 @@ from swap_meet.item import Item class Electronics(Item): - def __init__(self, category = "Electronics", condition = 0.0): - super().__init__(category, condition) + def __init__(self, category = "Electronics", condition = 0.0, age = None): + super().__init__(category, condition, age) def __str__(self): return "A gadget full of buttons and secrets." diff --git a/swap_meet/item.py b/swap_meet/item.py index 030c8da48..8f2dc6fa9 100644 --- a/swap_meet/item.py +++ b/swap_meet/item.py @@ -1,7 +1,8 @@ class Item: - def __init__(self, category = "", condition = 0.0): + def __init__(self, category = "", condition = 0.0, age = None): self.category = category self.condition = condition + self.age = age def __str__(self): return "Hello World!" @@ -17,6 +18,3 @@ def condition_description(self): } return rating_description[self.condition] - - def swap_by_newest(self): - pass \ No newline at end of file diff --git a/swap_meet/vendor.py b/swap_meet/vendor.py index a7cbe4e2f..66be62636 100644 --- a/swap_meet/vendor.py +++ b/swap_meet/vendor.py @@ -1,3 +1,6 @@ +from cmath import inf + + class Vendor: def __init__(self, inventory=None): if inventory is None: @@ -26,10 +29,11 @@ def swap_items(self, another_vendor, my_item, their_item): if my_item not in self.inventory or their_item not in another_vendor.inventory: return False else: - self.inventory.remove(my_item) + another_vendor.inventory.append(my_item) self.inventory.append(their_item) another_vendor.inventory.remove(their_item) + self.inventory.remove(my_item) return True def swap_first_item(self, another_vendor): @@ -78,4 +82,21 @@ def swap_best_by_category(self, other, my_priority, their_priority): return True else: - return False \ No newline at end of file + return False + + def newest_item(self): + min_age = float(inf) + newest_item = "" + + for product in self.inventory: + if product.age < min_age: + min_age = product.age + newest_item = product + + return newest_item + + def swap_by_newest(self, another_vendor): + my_newest_item = self.newest_item + other_newest_item = another_vendor.newest_item + + self.swap_items(another_vendor, my_newest_item, other_newest_item) diff --git a/tests/unit_tests/test_wave_06.py b/tests/unit_tests/test_wave_06.py index cd736d9e5..71f9c3e4c 100644 --- a/tests/unit_tests/test_wave_06.py +++ b/tests/unit_tests/test_wave_06.py @@ -256,3 +256,5 @@ def test_swap_best_by_category_no_other_match_is_false(): # - That result is falsy # - That tai and jesse's inventories are the correct length # - That all the correct items are in tai and jesse's inventories + + diff --git a/tests/unit_tests/test_wave_optional.py b/tests/unit_tests/test_wave_optional.py new file mode 100644 index 000000000..f8847286c --- /dev/null +++ b/tests/unit_tests/test_wave_optional.py @@ -0,0 +1,69 @@ +import pytest +from swap_meet.vendor import Vendor +from swap_meet.clothing import Clothing +from swap_meet.decor import Decor +from swap_meet.electronics import Electronics + +''' +**** TEST ADDED FOR [OPTIONAL] SWAP BY NEWEST FUNCTION *** + +''' + +#@pytest.mark.skip + +def test_newest_item_1(): + # Arrange + item_a = Clothing(age=0.0) + item_b = Electronics(age = 1.0) + item_c = Decor(age = 4.0) + tai = Vendor( + inventory=[item_c, item_b, item_a] + ) + + # Act + result = tai.newest_item() + + #Assert + assert result == item_a + +def test_newest_item_2(): + #Arrange + item_d = Clothing(age=2.0) + item_e = Decor(age=4.0) + item_f = Clothing(age=4.0) + jesse = Vendor( + inventory=[item_f, item_e, item_d] + ) + # Act + result = jesse.newest_item() + + #Assert + assert result == item_d + +import pytest +from swap_meet.vendor import Vendor + +def test_swap_by_newest(): + # Arrange + item_a = Clothing(age=0.0) + item_b = Electronics(age = 1.0) + item_c = Decor(age = 4.0) + tai = Vendor( + inventory=[item_c, item_b, item_a] + ) + + item_d = Clothing(age=2.0) + item_e = Decor(age=4.0) + item_f = Clothing(age=4.0) + jesse = Vendor( + inventory=[item_f, item_e, item_d] + ) + + # Act + result = tai.swap_by_newest(another_vendor=jesse) + + #Assert + assert len(tai.inventory) == 3 + assert len(jesse.inventory) == 3 + assert all (item in [item_d, item_b, item_c] for item in tai.inventory) + assert all (item in [item_a, item_e, item_f] for item in jesse.inventory) \ No newline at end of file From b9cc0d4ee42126081c2e097a6854ad504b9d9143 Mon Sep 17 00:00:00 2001 From: Kate Date: Wed, 5 Oct 2022 07:27:18 -0700 Subject: [PATCH 13/13] passed 36 tests including optional enhancements --- swap_meet/vendor.py | 4 ++-- tests/unit_tests/test_wave_optional.py | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/swap_meet/vendor.py b/swap_meet/vendor.py index 66be62636..696dbb9c0 100644 --- a/swap_meet/vendor.py +++ b/swap_meet/vendor.py @@ -96,7 +96,7 @@ def newest_item(self): return newest_item def swap_by_newest(self, another_vendor): - my_newest_item = self.newest_item - other_newest_item = another_vendor.newest_item + my_newest_item = self.newest_item() + other_newest_item = another_vendor.newest_item() self.swap_items(another_vendor, my_newest_item, other_newest_item) diff --git a/tests/unit_tests/test_wave_optional.py b/tests/unit_tests/test_wave_optional.py index f8847286c..c560e4ac4 100644 --- a/tests/unit_tests/test_wave_optional.py +++ b/tests/unit_tests/test_wave_optional.py @@ -46,8 +46,8 @@ def test_newest_item_2(): def test_swap_by_newest(): # Arrange item_a = Clothing(age=0.0) - item_b = Electronics(age = 1.0) - item_c = Decor(age = 4.0) + item_b = Electronics(age=1.0) + item_c = Decor(age=4.0) tai = Vendor( inventory=[item_c, item_b, item_a] ) @@ -65,5 +65,5 @@ def test_swap_by_newest(): #Assert assert len(tai.inventory) == 3 assert len(jesse.inventory) == 3 - assert all (item in [item_d, item_b, item_c] for item in tai.inventory) - assert all (item in [item_a, item_e, item_f] for item in jesse.inventory) \ No newline at end of file + assert all(item in [item_d, item_b, item_c] for item in tai.inventory) + assert all(item in [item_a, item_e, item_f] for item in jesse.inventory) \ No newline at end of file