From 965aa1cd70325019fe3f315646c13e5a621e5f6a Mon Sep 17 00:00:00 2001 From: soridalac Date: Mon, 4 Apr 2022 16:22:22 -0700 Subject: [PATCH 01/13] pass test wave 1 --- tests/unit_tests/test_wave_01.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/tests/unit_tests/test_wave_01.py b/tests/unit_tests/test_wave_01.py index 58478ccf9..9ede9098b 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,9 @@ def test_removing_not_found_is_false(): result = vendor.remove(item) - raise Exception("Complete this test according to comments below.") + #raise Exception("Complete this test according to comments below.") + assert result != item + assert item not in vendor.inventory # ********************************************************************* # ****** Complete Assert Portion of this test ********** # ********************************************************************* From d2dbaf7187efca055a30bec092481e0d950e6100 Mon Sep 17 00:00:00 2001 From: soridalac Date: Mon, 4 Apr 2022 16:22:32 -0700 Subject: [PATCH 02/13] pass test wave 2 --- tests/unit_tests/test_wave_02.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/tests/unit_tests/test_wave_02.py b/tests/unit_tests/test_wave_02.py index 3d7060d7c..20b6b7b3b 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,11 @@ def test_get_no_matching_items_by_category(): items = vendor.get_by_category("electronics") - raise Exception("Complete this test according to comments below.") + #raise Exception("Complete this test according to comments below.") + assert item_a != items + assert item_b != items + assert item_c != items + # ********************************************************************* # ****** Complete Assert Portion of this test ********** # ********************************************************************* From 7314410f49bbf823b6a617bf3224d0a9faba1762 Mon Sep 17 00:00:00 2001 From: soridalac Date: Mon, 4 Apr 2022 16:22:41 -0700 Subject: [PATCH 03/13] pass test wave 3 --- tests/unit_tests/test_wave_03.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) 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 de641e05bb4e723da5f3aaf082e14395a964c942 Mon Sep 17 00:00:00 2001 From: soridalac Date: Mon, 4 Apr 2022 16:22:53 -0700 Subject: [PATCH 04/13] pass tests wave 4 --- tests/unit_tests/test_wave_04.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 308b1289a6a57c585df966830e036eb383b150e5 Mon Sep 17 00:00:00 2001 From: soridalac Date: Mon, 4 Apr 2022 16:23:01 -0700 Subject: [PATCH 05/13] pass tests wave 5 --- tests/unit_tests/test_wave_05.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) 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 49762116a7852507398ad66bffe973ea6b17f6bd Mon Sep 17 00:00:00 2001 From: soridalac Date: Mon, 4 Apr 2022 16:24:14 -0700 Subject: [PATCH 06/13] adding more codes --- swap_meet/clothing.py | 18 +++++++++++++++++- swap_meet/decor.py | 18 +++++++++++++++++- swap_meet/electronics.py | 18 +++++++++++++++++- 3 files changed, 51 insertions(+), 3 deletions(-) diff --git a/swap_meet/clothing.py b/swap_meet/clothing.py index b8afdeb1e..b73a9fe15 100644 --- a/swap_meet/clothing.py +++ b/swap_meet/clothing.py @@ -1,2 +1,18 @@ 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." + + def condition_description(self): + CONDITIONS = { + 0: "Mint", + 1: "Okay", + 2: "Good", + 3: "Great", + 4: "Excellent", + 5: "Flawless" + } + return CONDITIONS[self.condition] \ No newline at end of file diff --git a/swap_meet/decor.py b/swap_meet/decor.py index eab7a9dbe..122934bf0 100644 --- a/swap_meet/decor.py +++ b/swap_meet/decor.py @@ -1,2 +1,18 @@ 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." + + def condition_description(self): + CONDITIONS = { + 0: "Mint", + 1: "Okay", + 2: "Good", + 3: "Great", + 4: "Excellent", + 5: "Flawless" + } + return CONDITIONS[self.condition] \ No newline at end of file diff --git a/swap_meet/electronics.py b/swap_meet/electronics.py index 2f9dff68a..6a2e47f63 100644 --- a/swap_meet/electronics.py +++ b/swap_meet/electronics.py @@ -1,2 +1,18 @@ 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." + + def condition_description(self): + CONDITIONS = { + 0: "Mint", + 1: "Okay", + 2: "Good", + 3: "Great", + 4: "Excellent", + 5: "Flawless" + } + return CONDITIONS[self.condition] From 5da6cad54688e803cd6feced7e39056388440852 Mon Sep 17 00:00:00 2001 From: soridalac Date: Tue, 5 Apr 2022 11:00:33 -0700 Subject: [PATCH 07/13] pass all tests wave 1-3 --- tests/integration_tests/test_wave_01_02_03.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 462424a99ac721a4af5337fb1e0cc9478dc49b75 Mon Sep 17 00:00:00 2001 From: soridalac Date: Thu, 7 Apr 2022 14:37:41 -0700 Subject: [PATCH 08/13] pass all test wave 01 --- tests/unit_tests/test_wave_01.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/unit_tests/test_wave_01.py b/tests/unit_tests/test_wave_01.py index 9ede9098b..548c962f8 100644 --- a/tests/unit_tests/test_wave_01.py +++ b/tests/unit_tests/test_wave_01.py @@ -52,6 +52,7 @@ def test_removing_not_found_is_false(): #raise Exception("Complete this test according to comments below.") assert result != item assert item not in vendor.inventory + assert len(vendor.inventory) == 3 # ********************************************************************* # ****** Complete Assert Portion of this test ********** # ********************************************************************* From 44f3d12cf37fc3549bf4646a449dcbe47c897736 Mon Sep 17 00:00:00 2001 From: soridalac Date: Thu, 7 Apr 2022 14:37:51 -0700 Subject: [PATCH 09/13] pass all test wave 06 --- tests/unit_tests/test_wave_06.py | 56 +++++++++++++++++++++++--------- 1 file changed, 41 insertions(+), 15 deletions(-) diff --git a/tests/unit_tests/test_wave_06.py b/tests/unit_tests/test_wave_06.py index 1f7065ab4..ff0fb729a 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,16 +76,20 @@ def test_swap_best_by_category(): their_priority="Decor" ) - raise Exception("Complete this test according to comments below.") + #raise Exception("Complete this test according to comments below.") # ********************************************************************* # ****** Complete Assert Portion of this test ********** # ********************************************************************* # Assertions should check: # - That the results is truthy + assert result # - That tai and jesse's inventories are the correct length + assert len(jesse.inventory) == 3 + assert len(tai.inventory) == 3 # - 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 + assert tai.get_best_by_category("Decor").category == "Decor" + assert jesse.get_best_by_category("Clothing").category == "Clothing" +#@pytest.mark.skip def test_swap_best_by_category_reordered(): # Arrange item_a = Decor(condition=2.0) @@ -109,16 +113,20 @@ def test_swap_best_by_category_reordered(): their_priority="Decor" ) - raise Exception("Complete this test according to comments below.") + #raise Exception("Complete this test according to comments below.") # ********************************************************************* # ****** Complete Assert Portion of this test ********** # ********************************************************************* # Assertions should check: # - That result is truthy + assert result # - That tai and jesse's inventories are the correct length + assert len(tai.inventory) == 3 + assert len(jesse.inventory) == 3 # - 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 + assert tai.get_best_by_category("Decor").category == "Decor" + assert jesse.get_best_by_category("Clothing").category == "Clothing" +#@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,16 +202,25 @@ def test_swap_best_by_category_no_match_is_false(): their_priority="Clothing" ) - raise Exception("Complete this test according to comments below.") + #raise Exception("Complete this test according to comments below.") # ********************************************************************* # ****** Complete Assert Portion of this test ********** # ********************************************************************* # Assertions should check: # - That result is falsy + assert not result # - That tai and jesse's inventories are the correct length + assert len(tai.inventory) == 3 + assert len(jesse.inventory) == 3 # - That all the correct items are in tai and jesse's inventories + assert item_a in tai.inventory + assert item_b in tai.inventory + assert item_c in tai.inventory + assert item_d in jesse.inventory + assert item_e in jesse.inventory + assert item_f in jesse.inventory -@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,11 +244,20 @@ def test_swap_best_by_category_no_other_match_is_false(): their_priority="Decor" ) - raise Exception("Complete this test according to comments below.") + #raise Exception("Complete this test according to comments below.") # ********************************************************************* # ****** Complete Assert Portion of this test ********** # ********************************************************************* # Assertions should check: # - That result is falsy + assert not result # - That tai and jesse's inventories are the correct length + assert len(tai.inventory) == 3 + assert len(jesse.inventory) == 3 # - That all the correct items are in tai and jesse's inventories + assert item_a in tai.inventory + assert item_b in tai.inventory + assert item_c in tai.inventory + assert item_d in jesse.inventory + assert item_e in jesse.inventory + assert item_f in jesse.inventory From 1d493a50212cf06c2fd9f998a08ea11dd0e820f8 Mon Sep 17 00:00:00 2001 From: soridalac Date: Thu, 7 Apr 2022 14:38:17 -0700 Subject: [PATCH 10/13] refactor inheritance --- swap_meet/clothing.py | 17 +++++++++-------- swap_meet/decor.py | 19 ++++++++++--------- swap_meet/electronics.py | 19 +++++++++++-------- swap_meet/item.py | 21 ++++++++++++++++++++- 4 files changed, 50 insertions(+), 26 deletions(-) diff --git a/swap_meet/clothing.py b/swap_meet/clothing.py index b73a9fe15..ce6ba0072 100644 --- a/swap_meet/clothing.py +++ b/swap_meet/clothing.py @@ -1,18 +1,19 @@ -class Clothing: - def __init__(self, category="Clothing", condition=0): - self.category = category - self.condition = condition +from swap_meet.item import Item + +class Clothing(Item): + def __init__(self, category="", condition=0): + super().__init__("Clothing", condition) def __str__(self): return "The finest clothing you could wear." def condition_description(self): CONDITIONS = { - 0: "Mint", + 0: "It has stains", 1: "Okay", - 2: "Good", - 3: "Great", - 4: "Excellent", + 2: "Not my color", + 3: "This could work for date night", + 4: "I need this in my closet!", 5: "Flawless" } return CONDITIONS[self.condition] \ No newline at end of file diff --git a/swap_meet/decor.py b/swap_meet/decor.py index 122934bf0..d4feb59a4 100644 --- a/swap_meet/decor.py +++ b/swap_meet/decor.py @@ -1,18 +1,19 @@ -class Decor: - def __init__(self, category="Decor", condition=0): - self.category = category - self.condition = condition +from swap_meet.item import Item + +class Decor(Item): + def __init__(self, category="", condition=0): + super().__init__("Decor", condition) def __str__(self): return "Something to decorate your space." def condition_description(self): CONDITIONS = { - 0: "Mint", + 0: "This is broken", 1: "Okay", - 2: "Good", - 3: "Great", - 4: "Excellent", + 2: "Need to get repairs", + 3: "I need this in my room", + 4: "Excellent, for decorate", 5: "Flawless" } - return CONDITIONS[self.condition] \ No newline at end of file + return CONDITIONS[self.condition] \ No newline at end of file diff --git a/swap_meet/electronics.py b/swap_meet/electronics.py index 6a2e47f63..7a22469bd 100644 --- a/swap_meet/electronics.py +++ b/swap_meet/electronics.py @@ -1,18 +1,21 @@ -class Electronics: - def __init__(self, category="Electronics", condition=0): - self.category = category - self.condition = condition +from swap_meet.item import Item +class Electronics(Item): + + def __init__(self, category="", condition=0): + super().__init__("Electronics", condition) + def __str__(self): return "A gadget full of buttons and secrets." + def condition_description(self): CONDITIONS = { - 0: "Mint", + 0: "You might want to buy battery to fix this", 1: "Okay", - 2: "Good", - 3: "Great", - 4: "Excellent", + 2: "Need extra care", + 3: "Oh this work", + 4: "Perfect Deals", 5: "Flawless" } return CONDITIONS[self.condition] diff --git a/swap_meet/item.py b/swap_meet/item.py index 560d759c2..8dd7944b6 100644 --- a/swap_meet/item.py +++ b/swap_meet/item.py @@ -1,2 +1,21 @@ + class Item: - pass \ No newline at end of file + def __init__(self, category="", condition=0, age= float("inf")): + self.category = category + self.condition = condition + self.age = age + + + def __str__(self): + return "Hello World!" + + def condition_description(self): + CONDITIONS = { + 0: "Mint", + 1: "Okay", + 2: "Good", + 3: "Great", + 4: "Excellent", + 5: "Flawless" + } + return CONDITIONS[self.condition] \ No newline at end of file From 5d719c517d8a7f3b99848ba09cde9656c9e2f320 Mon Sep 17 00:00:00 2001 From: soridalac Date: Thu, 7 Apr 2022 14:38:31 -0700 Subject: [PATCH 11/13] pass all the test wave --- tests/integration_tests/test_wave_04_05_06.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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() From 83e13f2f2419727660675bc0de9080190fc8d860 Mon Sep 17 00:00:00 2001 From: soridalac Date: Thu, 7 Apr 2022 14:38:59 -0700 Subject: [PATCH 12/13] refactor and add additional method --- swap_meet/vendor.py | 95 ++++++++++++++++++++++++++++++- tests/unit_tests/test_optional.py | 17 ++++++ 2 files changed, 111 insertions(+), 1 deletion(-) create mode 100644 tests/unit_tests/test_optional.py diff --git a/swap_meet/vendor.py b/swap_meet/vendor.py index 87302c056..1fc6d0b97 100644 --- a/swap_meet/vendor.py +++ b/swap_meet/vendor.py @@ -1,2 +1,95 @@ +from operator import attrgetter + class Vendor: - pass \ No newline at end of file + def __init__(self, inventory=None): + if inventory == None: + inventory = [] + self.inventory = inventory + + def add(self, item): + # Add item to the inventory + self.inventory.append(item) + # Return item that was added to inventory + return item + + + def remove(self, item): + # Check if item in inventory that are match + if item in self.inventory: + # Remove item from the inventory + self.inventory.remove(item) + return item + return False # If no matching items + + def get_by_category(self, category): + # Return a list of item inventory from that category + return [item for item in self.inventory if item.category == category] + + def swap_items(self, other, my_item, their_item): + + # Check if Vendor items not in her inventory or Vendor friend's item not in their inventory + if not my_item in self.inventory or not their_item in other.inventory: + return False + + # Vendor(my_item) add friend items to her inventory + self.inventory.append(their_item) + # Vendor remove her own items from her inventory + self.inventory.remove(my_item) + # Vendor friend's add Vendor to their inventory + other.inventory.append(my_item) + # Vendor friend's remove their item from their inventory + other.inventory.remove(their_item) + + return True # Return True when Vendor and Vendor friend's swaping items from each other inventory + + def swap_first_item(self, other): + # Check if Vendor and Vendor friend's inventory is not empty + if self.inventory and other.inventory: + # using index to access first item from vendor inventory + my_item = self.inventory[0] + #using index to access first item from vendor friend's inventory + their_item = other.inventory[0] + # using helper function, to swap first item from vendor and vendor friend's inventory + self.swap_items(other, my_item, their_item) + + return True + + return False # If empty list return False + + def get_best_by_category(self, category): + # Check if there is no items in the inventory that match category + if not self.get_by_category(category): + return None + # Return the item that are match category and highest condition even there's duplicate items + return max(self.get_by_category(category), key=attrgetter("condition")) + + def swap_best_by_category(self, other, my_priority, their_priority): + # Find the best items in Vendor inventory to match their priority + my_best_item = self.get_best_by_category(their_priority) + # Find the best items in Vendor friend's to match Vendor priority + their_best_item = other.get_best_by_category(my_priority) + + # Return swap best items between Vendor and Vendor friend's from inventory + return self.swap_items(other, my_best_item, their_best_item) + + + def swap_by_newest(self): + # Set minimum ages to float infinity + new_ages = float("inf") + # Set minimum items to None list + items = [None] + # Iterate item in the inventory + for item in self.inventory: + # Check if the item age is less than the new ages + if item.age < new_ages: + # update the item age + items[0], new_ages = item, item.age + else: + # if item age equal to new age + if item.age == new_ages: + # Add item to items list + items.append(item) + return items + + + diff --git a/tests/unit_tests/test_optional.py b/tests/unit_tests/test_optional.py new file mode 100644 index 000000000..6330cd66f --- /dev/null +++ b/tests/unit_tests/test_optional.py @@ -0,0 +1,17 @@ +import pytest +from swap_meet.vendor import Vendor +from swap_meet.item import Item + +def test_item_by_age(): + + age_1 = Item(age=5) + age_2 = Item(age=22) + age_3 = Item(age=30) + vendor = Vendor([age_1, age_2, age_3] + ) + + age_items = vendor.swap_by_newest() + + assert age_items != age_1 + assert age_items != age_2 + assert age_items != age_3 \ No newline at end of file From 9217bb0eb258567baa29167f40af0e593df0a731 Mon Sep 17 00:00:00 2001 From: soridalac Date: Thu, 7 Apr 2022 22:41:07 -0700 Subject: [PATCH 13/13] refactor the codes --- swap_meet/clothing.py | 11 +---------- swap_meet/decor.py | 11 +---------- swap_meet/electronics.py | 11 +---------- swap_meet/vendor.py | 4 +++- tests/unit_tests/test_optional.py | 8 ++++++-- 5 files changed, 12 insertions(+), 33 deletions(-) diff --git a/swap_meet/clothing.py b/swap_meet/clothing.py index ce6ba0072..fc518059e 100644 --- a/swap_meet/clothing.py +++ b/swap_meet/clothing.py @@ -7,13 +7,4 @@ def __init__(self, category="", condition=0): def __str__(self): return "The finest clothing you could wear." - def condition_description(self): - CONDITIONS = { - 0: "It has stains", - 1: "Okay", - 2: "Not my color", - 3: "This could work for date night", - 4: "I need this in my closet!", - 5: "Flawless" - } - return CONDITIONS[self.condition] \ No newline at end of file + \ No newline at end of file diff --git a/swap_meet/decor.py b/swap_meet/decor.py index d4feb59a4..2e8716d17 100644 --- a/swap_meet/decor.py +++ b/swap_meet/decor.py @@ -7,13 +7,4 @@ def __init__(self, category="", condition=0): def __str__(self): return "Something to decorate your space." - def condition_description(self): - CONDITIONS = { - 0: "This is broken", - 1: "Okay", - 2: "Need to get repairs", - 3: "I need this in my room", - 4: "Excellent, for decorate", - 5: "Flawless" - } - return CONDITIONS[self.condition] \ No newline at end of file + \ No newline at end of file diff --git a/swap_meet/electronics.py b/swap_meet/electronics.py index 7a22469bd..f27959571 100644 --- a/swap_meet/electronics.py +++ b/swap_meet/electronics.py @@ -9,13 +9,4 @@ def __str__(self): return "A gadget full of buttons and secrets." - def condition_description(self): - CONDITIONS = { - 0: "You might want to buy battery to fix this", - 1: "Okay", - 2: "Need extra care", - 3: "Oh this work", - 4: "Perfect Deals", - 5: "Flawless" - } - return CONDITIONS[self.condition] + diff --git a/swap_meet/vendor.py b/swap_meet/vendor.py index 1fc6d0b97..5d09d6146 100644 --- a/swap_meet/vendor.py +++ b/swap_meet/vendor.py @@ -73,7 +73,7 @@ def swap_best_by_category(self, other, my_priority, their_priority): return self.swap_items(other, my_best_item, their_best_item) - def swap_by_newest(self): + def get_by_newest(self): # Set minimum ages to float infinity new_ages = float("inf") # Set minimum items to None list @@ -93,3 +93,5 @@ def swap_by_newest(self): + + diff --git a/tests/unit_tests/test_optional.py b/tests/unit_tests/test_optional.py index 6330cd66f..64461bec1 100644 --- a/tests/unit_tests/test_optional.py +++ b/tests/unit_tests/test_optional.py @@ -10,8 +10,12 @@ def test_item_by_age(): vendor = Vendor([age_1, age_2, age_3] ) - age_items = vendor.swap_by_newest() + age_items = vendor.get_by_newest() assert age_items != age_1 assert age_items != age_2 - assert age_items != age_3 \ No newline at end of file + assert age_items != age_3 + + + +