Ejemplo n.º 1
0
 def test_open_new_store_happy(self):  #ok
     Ecommerce.get_instance().register("client", "123456789", 24)
     Ecommerce.get_instance().register("seller", "123456789", 24)
     store_number = Ecommerce.get_instance().open_new_store(
         "gifts store", "seller", "226333", 0, 100, 18).val[0][0]
     print(store_number)
     self.assertTrue(store_number > 0)
Ejemplo n.º 2
0
    def test_change_details_of_product(self):
        user1 = User("amir", 1)
        user1.identifier = 0
        user1.username = "******"
        user1.password = "******"
        user1.state = State.STORE_OWNER
        user1.is_logged_in = True

        store1 = Store("mega", 1, "123123", None, None)
        store1.store_number = 1

        product1 = Product('chocholate', 'Food', ['Food', 'Sweet'], 10)
        product1.catalog_number = 1

        store1.owners = [0]
        store1.add_new_product(product1)

        Ecommerce.get_instance().subscribers = [user1]
        Ecommerce.get_instance().stores = [store1]

        self.assertTrue(
            user1.change_details_of_product(1, "name", "whiteChocholate").val,
            "need return True")
        self.assertFalse(
            user1.change_details_of_product(2, "name", "whiteChocholate").val,
            "need return False")
Ejemplo n.º 3
0
def remove_from_cart():
    form = RemoveFromCartForm()
    if form.validate_on_submit():
        if UserSessions.current_user.is_logged_in:
            resp = Ecommerce.get_instance().remove_from_cart(
                UserSessions.current_user.username, form.catalog_number.data,
                None)
        else:
            check_if_store_exist = Ecommerce.get_instance(
            ).is_product_in_store(form.store_number.data,
                                  form.catalog_number.data)
            if check_if_store_exist.val:
                for shopping_cart in UserSessions.current_user.shopping_basket:
                    if form.store_number.data == shopping_cart['store_number']:
                        resp = Ecommerce.get_instance().remove_from_cart(
                            UserSessions.current_user.username,
                            form.catalog_number.data, shopping_cart)
            else:
                flash(check_if_store_exist.message, 'danger')
        flash(resp.message, 'success' if resp.val else 'danger')
        return render_template(
            'remove_from_cart.html',
            form=form,
            title='Remove From Cart',
            legend='Remove From Cart',
            is_logged_in=UserSessions.current_user.is_logged_in)
    return render_template('remove_from_cart.html',
                           form=form,
                           title='Remove From Cart',
                           legend='Remove From Cart',
                           is_logged_in=UserSessions.current_user.is_logged_in)
Ejemplo n.º 4
0
def limit_quantity_per_store():
    if not UserSessions.current_user.is_logged_in:
        return redirect(url_for('login'))

    form = LimitQuantityPerStore()
    if form.validate_on_submit():
        if form.minimum_quantity.data == '' and form.maximum_quantity.data == '':
            flash(
                'At least one of the maximum or minimum values must be filled',
                'danger')
            return redirect(url_for('limit_quantity'))
        resp0 = None
        resp1 = None
        if form.minimum_quantity.data != '':
            resp0 = Ecommerce.get_instance().change_details_of_store(
                UserSessions.current_user.username, form.store_number.data,
                'minimum_products', form.minimum_quantity.data)
        if form.maximum_quantity.data != '':
            resp1 = Ecommerce.get_instance().change_details_of_store(
                UserSessions.current_user.username, form.store_number.data,
                'maximum_products', form.maximum_quantity.data)
        if resp0 and resp1 and resp0.val and resp1.val:
            flash(resp0.message, 'success')
        else:
            flash('Something went wrong, please check and try again', 'danger')

    return render_template('limit_quantity_per_store.html',
                           form=form,
                           title='limit quantity per store',
                           legend='limit quantity per store')
Ejemplo n.º 5
0
 def test_add_new_product(self):
     s1 = Store("my store", 0, 123213, None, None)
     s1.store_number = 0
     Ecommerce.get_instance().stores = [s1]
     Ecommerce.get_instance().add_new_product(0, 'france schnitzel', 35, 'schnitzel', ['hot', 'crispy'])
     self.assertEqual(len(s1.products), 1)
     Ecommerce.get_instance().add_new_product(0, 'italian schnitzel', 35, 'hotSchnitzel', [])
     self.assertEqual(len(s1.products), 2)
Ejemplo n.º 6
0
    def test_inc_product_amount(self):
        s1 = Store("my store", 1, 123213, None, None)
        s1.store_number = 0
        Ecommerce.get_instance().stores = [s1]
        Ecommerce.get_instance().add_new_product(0, 'france schnitzel', 35, 'schnitzel', ['hot', 'crispy'])
        Ecommerce.get_instance().inc_product_amount(0, 0, 70)

        for p in s1.products:
            if p['product'].catalog_number == 0:
                self.assertEqual(p['amount'], 70)
Ejemplo n.º 7
0
    def test_search_product(self):
        # no such product
        self.assertEqual(
            Ecommerce.get_instance().search_product(
                'Name', 'no such product bla bla bla').val, [])

        # search by name
        Ecommerce.get_instance().register('ofek', 'secret', 20)
        store_number = Ecommerce.get_instance().open_new_store(
            'mystore', 'ofek', 123456, 1, 100, 12).val[0][0]
        Ecommerce.get_instance().add_new_product('ofek', 'mystery book', 50,
                                                 17, 'reading', store_number,
                                                 ['mystery', 'leisure'], 1, 70,
                                                 13)
        self.assertEqual(
            Ecommerce.get_instance().search_product(
                'Name', 'mystery book').val[0].name, 'mystery book')

        # search by category
        self.assertEqual(
            Ecommerce.get_instance().search_product('Category',
                                                    'reading').val[0].category,
            'reading')

        # search by key words
        self.assertEqual(
            Ecommerce.get_instance().search_product('Keyword',
                                                    'mystery').val[0][1],
            'mystery')
Ejemplo n.º 8
0
 def test_appointment_store_owner_sad(self):
     Ecommerce.get_instance().register("seller", "123456789", 24)
     Ecommerce.get_instance().register("notowneryet", "123456789", 24)
     store_number = Ecommerce.get_instance().open_new_store(
         "gifts store", "seller", "226333", 0, 100, 18).val[0][0]
     Ecommerce.get_instance().add_store_owner("seller", store_number,
                                              "notowneryet")
     Ecommerce.get_instance().add_store_owner("seller", store_number,
                                              "notowneryet").val
Ejemplo n.º 9
0
    def test_add_new_product(self):
        Ecommerce.get_instance().register('ofek', 'secret', 20)
        store_number = Ecommerce.get_instance().open_new_store(
            'mystore', 'ofek', 123456, 1, 100, 12).val[0][0]
        Ecommerce.get_instance().add_new_product('ofek', 'mystery book', 50,
                                                 17, 'reading', store_number,
                                                 ['mystery', 'leisure'], 1, 70,
                                                 13)

        self.assertEqual(
            Ecommerce.get_instance().search_product(
                'Name', 'mystery book').val[0].name, 'mystery book')

        num_of_products = SQLHandler.get_instance().select_from_db(
            'select count(*) from products')[0][0]
        self.assertEqual(num_of_products, 1)

        Ecommerce.get_instance().add_new_product('ofek', 'mystery book2', 50,
                                                 17, 'reading', store_number,
                                                 ['mystery', 'leisure'], 1, 70,
                                                 13)

        num_of_products = SQLHandler.get_instance().select_from_db(
            'select count(*) from products')[0][0]
        self.assertEqual(num_of_products, 2)
Ejemplo n.º 10
0
 def test_close_permanently(self):
     Ecommerce.get_instance().register("client1", "123456789", 24)
     Ecommerce.get_instance().register("admin", "123456789", 24)
     self.assertTrue(Ecommerce.get_instance().make_admin("admin",24))
     store_number = Ecommerce.get_instance().open_new_store("ramiLevi", "amirdimri2", "12344", 0, 15, 14).val
     self.assertTrue(Ecommerce.get_instance().close_permanently("admin",store_number))
     # Ecommerce.get_instance().get_stores_of_user_owner("amirdimri")
     self.assertFalse(Ecommerce.get_instance().close_store("client1", store_number))
Ejemplo n.º 11
0
def add_conditional_discount():
    if not UserSessions.current_user.is_logged_in:
        return redirect(url_for('login'))

    form = AddConditionalDiscountPolicyToProduct()
    if form.validate_on_submit():
        resp = Ecommerce.get_instance().add_cond_discount(
            UserSessions.current_user.username,
            form.first_product.data, form.discount_percentage.data,
            request.form.get('double_deals'), form.start_date.data,
            form.end_date.data, request.form.get('or_and'),
            form.second_product.data)

        flash(resp.message, 'success' if resp.val else 'danger')

        # flash(form.discount_percentage.data, 'success')
        # flash(request.form.get('double_deals'), 'success')
        # flash(form.start_date.data, 'success')
        # flash(form.end_date.data, 'success')
        # flash(form.first_product.data, 'success')
        # flash(request.form.get('or_and'), 'success')
        # flash(form.second_product.data, 'success')

        return redirect(url_for('add_conditional_discount'))
    return render_template('add_conditional _discount.html',
                           form=form,
                           title='add conditional discount policy',
                           legend='add conditional discount policy')
Ejemplo n.º 12
0
def basket():

    form = PurchaseForm()
    products = []
    print(form.validate_on_submit())
    if form.validate_on_submit():
        print('amir')

        delivery_sys = delivery_system.DeliveryAddress(form.country.data,
                                                       form.city.data,
                                                       form.street.data,
                                                       form.zip.data)
        resp = Ecommerce.get_instance().make_purchase(
            UserSessions.current_user.username, 'credit card', [
                form.card_number.data, form.holder.data, form.cvv.data,
                form.month.data, form.year.data
            ], delivery_sys, None, None)
        if resp.val is not False:
            products = resp.val
        print('amir')
        flash(resp.message, 'success' if resp.val else 'danger')
        return render_template(
            'basket.html',
            products=products,
            form=form,
            title='Basket',
            legend='Shopping Basket',
            is_logged_in=UserSessions.current_user.is_logged_in)
    print('ofek')
    return render_template('basket.html',
                           products=products,
                           form=form,
                           title='Basket',
                           legend='Shopping Basket',
                           is_logged_in=UserSessions.current_user.is_logged_in)
Ejemplo n.º 13
0
def show_cart():
    form = ShowCartForm()
    if form.validate_on_submit():
        if UserSessions.current_user.is_logged_in:
            products = Ecommerce.get_instance().show_cart(
                UserSessions.current_user.username, form.store_number.data)
            message = products.message
            products = products.val
        else:
            products = []
            message = 'Could not find the shopping cart you were looking for'
            for shopping_cart in UserSessions.current_user.shopping_basket:
                if shopping_cart['store_number'] == form.store_number.data:
                    products = shopping_cart['products']
                    message = 'Found the shopping cart you were looking for'

        if products is None:
            flash(message, 'danger')
        elif len(products) == 0:
            flash('No products were found', 'danger')
        else:
            return render_template('show_cart.html',
                                   form=form,
                                   title='Show Cart',
                                   legend='Show Cart',
                                   products=products,
                                   store_number=form.store_number.data)
    return render_template('show_cart.html',
                           form=form,
                           title='Show Cart',
                           legend='Show Cart')
Ejemplo n.º 14
0
 def test_remove_store_owner_happy(self):
     Ecommerce.get_instance().register("seller", "123456789", 24)
     Ecommerce.get_instance().register("notowneryet", "123456789", 24)
     store_number = Ecommerce.get_instance().open_new_store(
         "gifts store", "seller", "226333", 0, 100, 18).val[0][0]
     Ecommerce.get_instance().add_store_owner("seller", store_number,
                                              "notowneryet")
     self.assertTrue(Ecommerce.get_instance().remove_store_owner(
         "seller", store_number, "notowneryet"))
Ejemplo n.º 15
0
 def test_login(self):  #ok
     user1 = User("amir", 324)
     user1.register("amirdimri", "123456789")
     Ecommerce.get_instance().subscribers = [user1]
     self.assertTrue(
         user1.login("amirdimri", "123456789").val, "need return True")
     self.assertFalse(
         user1.login("amirdimri", "123456789").val, "need return False")
Ejemplo n.º 16
0
def add_to_cart():
    form = AddToCartForm()
    print('bbb')
    if form.validate_on_submit():
        print('aaaa')
        if UserSessions.current_user.is_logged_in:
            resp = Ecommerce.get_instance().add_to_cart(
                UserSessions.current_user.username, form.catalog_number.data,
                None)
        else:
            check_if_store_exist = Ecommerce.get_instance(
            ).is_product_in_store(form.store_number.data,
                                  form.catalog_number.data)
            if check_if_store_exist.val:
                for shopping_cart in UserSessions.current_user.shopping_basket:
                    if form.store_number.data == shopping_cart['store_number']:
                        resp = Ecommerce.get_instance().add_to_cart(
                            UserSessions.current_user.username,
                            form.catalog_number.data, shopping_cart)
                    else:
                        new_cart = [{
                            'store_number': form.store_number.data,
                            'products': []
                        }]
                        UserSessions.current_user.shopping_basket.appent(
                            new_cart)
                        resp = Ecommerce.get_instance().add_to_cart(
                            UserSessions.current_user.username,
                            form.catalog_number.data, new_cart)
            else:
                flash(check_if_store_exist.message, 'danger')
        # ADD ANOTHER FIELD BASED ON GUEST OR NOT!!!!!!!!!!!!!!!!!!
        # from UserSessions.current_user.shopping_basket!!!!!!!!!!!!!!!!!!!
        flash(resp.message, 'success' if resp.val else 'danger')
        return render_template(
            'add_to_cart.html',
            form=form,
            title='Add To Cart',
            legend='Add To Cart',
            is_logged_in=UserSessions.current_user.is_logged_in)
    return render_template('add_to_cart.html',
                           form=form,
                           title='Add To Cart',
                           legend='Add To Cart',
                           is_logged_in=UserSessions.current_user.is_logged_in)
Ejemplo n.º 17
0
 def test_search_product(self):  #ok
     store1 = Store("ramiLevi", 0, "123123", None, None)
     store1.store_number = 0
     product1 = Product('Apple', 'Fruits', ['Food', 'Fruit', 'Apple'], 5)
     product1.catalog_number = 0
     store1.add_new_product(product1)
     Ecommerce.get_instance().stores = [store1]
     self.assertEqual(len(User.search_product("name", "Apple").val), 1,
                      'bad')
Ejemplo n.º 18
0
 def test_add_to_cart_happy(self):  #ok
     Ecommerce.get_instance().register("client", "123456789", 24)
     Ecommerce.get_instance().register("seller", "123456789", 24)
     store_number = Ecommerce.get_instance().open_new_store(
         "gifts store", "seller", "226333", 0, 100, 18).val[0][0]
     print('store number' + str(store_number))
     Ecommerce.get_instance().add_new_product("seller", 'chocholate', 10,
                                              13, 'Food', store_number,
                                              ['food', 'sweet'], 0, 100, 16)
     catalog_number = Ecommerce.get_instance().search_product(
         'Name', 'chocholate').val[0][0]
     print('catalog_number ' + str(catalog_number))
     add_cart_response = Ecommerce.get_instance().add_to_cart(
         "client", catalog_number, None)
     print(add_cart_response.message)
Ejemplo n.º 19
0
 def test_add_new_product(self):  #ok
     user1 = User("amir", 2)
     user1.identifier = 0
     store1 = Store("ramiLevi", 0, "123123", None, None)
     store1.supervisor = 1
     Ecommerce.get_instance().stores = [store1]
     user1.state = State.STORE_OWNER
     self.assertTrue(
         user1.add_new_product(0, "chocholate", 5, "Food",
                               ['Food', 'Sweet']), "need return True")
Ejemplo n.º 20
0
 def test_remove_subscriber(self):  #ok
     user1 = User("amir", 1)
     user1.identifier = 0
     Ecommerce.get_instance().subscribers = [user1]
     user2 = User("ofek", 13)
     user2.identifier = 1
     user2.state = State.GUEST
     self.assertFalse(user2.remove_subscriber(0).val, "need return False")
     user2.state = State.SYSTEM_ADMINISTRATOR
     self.assertTrue(user2.remove_subscriber(0), "need return False")
Ejemplo n.º 21
0
 def test_add_to_cart(self):  #ok
     user1 = User("amir", 12)
     product1 = Product('chocholate', 'Food', ['Food', 'Sweet'], 10)
     product1.catalog_number = 1
     store1 = Store("ramiLevi", 0, "123123", None, None)
     store1.add_new_product(product1)
     Ecommerce.get_instance().stores = [store1]
     store1.inc_product_amount(1, 5)
     self.assertTrue(user1.add_to_cart(1).val, "need return True")
     self.assertFalse(user1.add_to_cart(9).val, "need return False")
Ejemplo n.º 22
0
 def test_make_purchase(self):
     user = User('ofek', 18)
     discount_service = DiscountService()
     buying_policy = BuyingPolicyService()
     address = DeliveryAddress(13, 'Israel')
     store = Store('effect', 123, 123, discount_service, buying_policy)
     Ecommerce.get_instance().stores.append(store)
     cart = ShoppingCart(store)
     product = Product('israeli schnitzel', 'schnitzel', ['hot', 'casher'],
                       15)
     store.products.append({'product': product, 'amount': 5})
     cart.products[product.catalog_number] = {
         'product': product,
         'amount': 4
     }
     user.shopping_basket.shopping_carts.append(cart)
     all_transactions_been_made = user.make_purchase(
         'paypal', ['ofek', '4580160114431651', '7', '20', '458'], address)
     self.assertEqual(len(all_transactions_been_made), 1)
     self.assertEqual(store.products[0]['amount'], 1)
Ejemplo n.º 23
0
def register():
    form = RegistrationForm()
    if form.validate_on_submit():
        resp = Ecommerce.get_instance().register(form.username.data,
                                                 form.password.data,
                                                 form.age.data)
        if not resp.val:
            flash(resp.message, 'danger')
        else:
            flash(resp.message, 'success')
            return redirect(url_for('login'))

    return render_template('register.html', title='Register', form=form)
Ejemplo n.º 24
0
 def test_remove_product_sad(self):
     Ecommerce.get_instance().register("client", "123456789", 24)
     Ecommerce.get_instance().register("seller", "123456789", 24)
     store_number = Ecommerce.get_instance().open_new_store(
         "gifts store", "seller", "226333", 0, 100, 18).val[0][0]
     print(store_number)
     catalog_number = Ecommerce.get_instance().add_new_product(
         "seller", 'chocholate', 10, 13, 'Food', store_number,
         ['food', 'sweet'], 0, 100, 16).val
     self.assertFalse(Ecommerce.get_instance().remove_product(
         "seller", catalog_number + 1).val)
Ejemplo n.º 25
0
 def test_search_product_sad(self):  #ok
     Ecommerce.get_instance().register("amirdimri2", "123456789", 24)
     Ecommerce.get_instance().login("amirdimri2", "123456789")
     store_number_response = Ecommerce.get_instance().open_new_store(
         "ramiLevi", "amirdimri2", "12344", 0, 15, 14)
     print(store_number_response.message)
     catalog_number = Ecommerce.get_instance().add_new_product(
         "seller", 'chocholate', 10, 13, 'Food', store_number_response.val,
         ['food', 'sweet'], 0, 100, 16).val
     self.assertTrue(Ecommerce.get_instance().search_product(
         "Name", "Banana").val == [])
Ejemplo n.º 26
0
def remove_product():
    if not UserSessions.current_user.is_logged_in:
        return redirect(url_for('login'))

    form = RemoveProductForm()
    if form.validate_on_submit():
        resp = Ecommerce.get_instance().remove_product(
            UserSessions.current_user.username, form.catalog_number.data)
        flash(resp.message, 'success' if resp.val else 'danger')
        return redirect(url_for('remove_product'))
    return render_template('remove_product.html',
                           form=form,
                           title='Remove Product',
                           legend='Remove Product')
Ejemplo n.º 27
0
def permanently_close():
    if not UserSessions.current_user.is_logged_in:
        return redirect(url_for('login'))

    form = PermanentlyClose()
    if form.validate_on_submit():
        resp = Ecommerce.get_instance().close_permanently(
            UserSessions.current_user.username, form.store_number.data)
        flash(resp.message, 'success' if resp.val else 'danger')
        return redirect(url_for('permanently_close'))
    return render_template('permanently_close.html',
                           form=form,
                           title='Permanently Close Store',
                           legend='Permanently Close Store')
Ejemplo n.º 28
0
 def test_remove_from_cart(self):  #ok
     user1 = User("amir", 32)
     user1.identifier = 1
     user1.state = State.STORE_OWNER
     product1 = Product('chocholate', 'Food', ['Food', 'Sweet'], 10)
     product1.catalog_number = 1
     store1 = Store("ramiLevi", 0, "123123", None, None)
     store1.store_number = 0
     store1.supervisor = 1
     store1.add_new_product(product1)
     store1.owners = [user1.identifier]
     Ecommerce.get_instance().stores = [store1]
     self.assertTrue(user1.remove_product(0, 1).val, "need return True")
     self.assertFalse(user1.remove_product(0, 1).val, "need return False")
Ejemplo n.º 29
0
 def test_remove_product(self):  #ok
     user1 = User("amir", 12)
     user1.identifier = 0
     store1 = Store("mega", 0, "456456", None, None)
     store1.store_number = 1
     product1 = Product('chocholate', 'Food', ['Food', 'Sweet'], 10)
     product1.catalog_number = 1
     store1.add_new_product(product1)
     Ecommerce.get_instance().stores = [store1]
     user1.state = State.GUEST
     self.assertFalse(user1.remove_product(1, 1).val, "need return False")
     user1.state = State.STORE_OWNER
     self.assertTrue(user1.remove_product(1, 1), "need return True")
     self.assertFalse(user1.remove_product(1, 10).val, "need return False")
Ejemplo n.º 30
0
 def test_change_details_of_product_happy(self):
     Ecommerce.get_instance().register("client", "123456789", 24)
     Ecommerce.get_instance().register("seller", "123456789", 24)
     store_number = Ecommerce.get_instance().open_new_store(
         "gifts store", "seller", "226333", 0, 100, 18).val[0][0]
     print(store_number)
     catalog_number = Ecommerce.get_instance().add_new_product(
         "seller", 'chocholate', 10, 13, 'Food', store_number,
         ['food', 'sweet'], 0, 100, 16).val
     self.assertTrue(
         Ecommerce.get_instance().change_details_of_product(
             "seller", catalog_number, "Name", "brown chocholate"),
         "need return True")