Exemple #1
0
class User:
    def __init__(self, name):
        self.cart = Cart()
        self.username = name
        self.purchase_history = []

    def view_cart(self):
        self.cart.view()

    def remove_product(self, store_id, product, quantity):
        self.cart.remove_product(store_id, product, quantity)

    def add_product(self, store_id, product, quantity):
        self.cart.add_product(store_id, product, quantity)
        return True

    def get_cart(self):
        return self.cart

    def remove_cart(self):
        self.cart.clear_cart()

    def add_purchase(self, purchase):
        self.purchase_history.append(purchase)

    def view_purchase_history(self):
        return self.purchase_history
Exemple #2
0
 def setUp(self) -> None:
     # baskets = {store_id, basket}
     self.cart = Cart()
     date_str = '04-10-2020'
     dt = timedelta(days=100000)
     date_object = datetime.strptime(date_str, '%m-%d-%Y')
     self.product_orange = Product("orange", 2, "food", None, 100)
     self.product_orange.discount.append(
         VisibleProductDiscount(date_object, date_object + dt, 50))
     self.product_apple = Product("apple", 2, "food", None, 100)
     self.product_apple.discount.append(
         VisibleProductDiscount(date_object, date_object + dt, 50))
     self.product_petunia = Product("petunia", 5, "food", None, 100)
     self.product_petunia.discount.append(
         VisibleProductDiscount(date_object, date_object + dt, 50))
     self.product_begonia = Product("begonia", 15, "food", None, 100)
     self.product_begonia.discount.append(
         VisibleProductDiscount(date_object, date_object + dt, 50))
Exemple #3
0
class User:
    def __init__(self, name):
        self.cart = Cart()
        self.username = name
        self.purchase_history = []

    def view_cart(self):
        self.cart.view()

    # TODO: change argument product to product_name
    def remove_product(self, store_id, product, quantity) -> bool:
        return self.cart.remove_product(store_id, product, quantity)

    def add_product(self, store_id, product, quantity):
        self.cart.add_product(self.username, store_id, product, quantity)
        return True

    def get_cart(self) -> Cart:
        return self.cart

    def remove_cart(self):
        self.cart.clear_cart()

    def add_purchase(self, purchases):
        for purchase in purchases:
            self.purchase_history.append(purchase)

    def view_purchase_history(self):
        return self.purchase_history

    def get_jsn_description(self):
        json_cart = self.cart.get_jsn_description()
        json_purchase_history = self.get_jsn_purchase_history()
        return jsons.dumps({
            'username': self.username,
            'cart': json_cart,
            'purchase_history': json_purchase_history
        })

    def get_jsn_purchase_history(self):
        return []

    def merge_carts(self, other: Cart):
        self.cart.merge_carts(other)
Exemple #4
0
 def buy(self, cart: Cart):
     cart = jsonpickle.decode(cart)
     for store in cart.baskets.keys():
         basket = cart.get_basket(store)
         for product in basket.products.keys():
             if not self.get_store(int(store)).buy_product(
                     product,
                     basket.products.get(product)[1]):
                 return False
     return True
Exemple #5
0
    def init_cart(self):
        basket = Basket(1)
        basket.products["Apple"] = 10
        basket.products["Keyboard"] = 5
        basket.products["Carrot"] = 1

        basket1 = Basket(2)
        basket1.products["Apple"] = 10
        basket1.products["Keyboard"] = 10
        basket1.products["Carrot"] = 10
        basket1.products["Banana"] = 10
        basket1.products["Orange"] = 10
        basket1.products["Cucumber"] = 10
        basket1.products["Iphone"] = 10
        basket1.products["Hard Disk"] = 10
        basket1.products["Tomato"] = 10
        cart = Cart()
        cart.baskets[1] = basket
        cart.baskets[2] = basket1
        return cart
Exemple #6
0
 def __init__(self, name):
     self.cart = Cart()
     self.username = name
     self.purchase_history = []
Exemple #7
0
 def test_pay(self):
     self.payment.set_external(failed_paymenstub())
     self.assertListEqual(
         jsonpickle.decode(
             self.payment.pay("user", jsonpickle.encode(Cart()))), [])
 def test_buy(self):
     self.test_add_product_to_store()
     cart = Cart()
     cart.baskets = {self.idx - 1: Basket(self.idx - 1)}
     cart.get_basket(self.idx - 1).add_product(Product(*self.products[-1]),
                                               2)
     self.assertTrue(self.store_manager.buy(jsonpickle.encode(cart)))
     cart = Cart()
     cart.baskets = {self.idx + 1: Basket(self.idx + 1)}
     cart.get_basket(self.idx + 1).add_product(Product(*self.products[-1]),
                                               2)
     self.assertFalse(self.store_manager.buy(jsonpickle.encode(cart)))
     cart = Cart()
     cart.baskets = {self.idx - 1: Basket(self.idx - 1)}
     cart.get_basket(self.idx - 1).add_product(Product(*self.products[-1]),
                                               30)
     self.assertFalse(self.store_manager.buy(jsonpickle.encode(cart)))
Exemple #9
0
class TestCart(TestCase):
    def setUp(self) -> None:
        # baskets = {store_id, basket}
        self.cart = Cart()
        date_str = '04-10-2020'
        dt = timedelta(days=100000)
        date_object = datetime.strptime(date_str, '%m-%d-%Y')
        self.product_orange = Product("orange", 2, "food", None, 100)
        self.product_orange.discount.append(
            VisibleProductDiscount(date_object, date_object + dt, 50))
        self.product_apple = Product("apple", 2, "food", None, 100)
        self.product_apple.discount.append(
            VisibleProductDiscount(date_object, date_object + dt, 50))
        self.product_petunia = Product("petunia", 5, "food", None, 100)
        self.product_petunia.discount.append(
            VisibleProductDiscount(date_object, date_object + dt, 50))
        self.product_begonia = Product("begonia", 15, "food", None, 100)
        self.product_begonia.discount.append(
            VisibleProductDiscount(date_object, date_object + dt, 50))

    def test_add_basket(self):
        # reset baskets & add new basket
        self.cart.baskets.clear()
        self.cart.add_basket(1234)

        self.assertTrue(1234 in self.cart.baskets.keys())

    def test_remove_basket(self):
        self.cart.baskets.clear()

        basket1 = Basket(1234)
        basket2 = Basket(5678)
        self.cart.baskets[1234] = basket1
        self.cart.baskets[5678] = basket2

        self.cart.remove_basket(1234)

        self.assertTrue(1234 not in self.cart.baskets.keys())
        self.assertTrue(5678 in self.cart.baskets.keys())

    def test_get_basket(self):
        self.cart.baskets.clear()
        basket1 = Basket(1234)
        self.cart.baskets[1234] = basket1
        basket2 = self.cart.get_basket(2222)
        basket1_tag = self.cart.get_basket(1234)

        self.assertIsNone(basket2)
        self.assertEqual(basket1, basket1_tag)

    def test_get_total(self):
        self.cart.baskets.clear()
        # total price = 10
        basket1 = Basket(1234)
        basket1.products["orange"] = (self.product_orange, 3)
        basket1.products["apple"] = (self.product_apple, 2)

        # total price = 125
        basket2 = Basket(5678)
        basket2.products["petunia"] = (self.product_petunia, 10)
        basket2.products["begonia"] = (self.product_begonia, 5)

        self.cart.baskets[1234] = basket1
        self.cart.baskets[5678] = basket2

        total_price = self.cart.get_total()
        self.assertEqual(total_price, 67.5)

    def test_view(self):
        pass

    def test_remove_product(self):
        self.cart.baskets.clear()

        basket1 = Basket(1234)
        basket1.products["orange"] = (self.product_orange, 3)
        basket1.products["apple"] = (self.product_apple, 2)

        basket2 = Basket(5678)
        basket2.products["petunia"] = (self.product_petunia, 10)

        self.cart.baskets[1234] = basket1
        self.cart.baskets[5678] = basket2

        self.cart.remove_product(1234, self.product_orange, 3)
        self.cart.remove_product(1234, self.product_apple, 2)
        self.cart.remove_product(5678, self.product_petunia, 5)

        self.assertTrue(1234 not in self.cart.baskets.keys())
        self.assertEqual(basket2.products["petunia"][1], 5)
        self.assertFalse(
            self.cart.remove_product(5678, self.product_begonia, 5))

    def test_add_product(self):
        pass