def test_order_price_big_to_small(self):
     sample_item = Inventory(name="jacket",
                             stock=1,
                             price=50,
                             for_sale=True,
                             user_id="andrew")
     sample_item2 = Inventory(name="strawberry",
                              stock=4,
                              price=1,
                              for_sale=False,
                              user_id="andrew")
     sample_item3 = Inventory(name="blueberry",
                              stock=20,
                              price=5,
                              for_sale=False,
                              user_id="andrew")
     db.session.add(sample_item)
     db.session.add(sample_item2)
     db.session.add(sample_item3)
     db.session.commit()
     self.client.post(url_for('order', username="******"),
                      data={
                          "submit": True,
                          "order": "Price ↑"
                      },
                      follow_redirects=True)
     big_to_small = Inventory.query.order_by(Inventory.price.desc()).first()
     self.assertEqual(big_to_small.price, sample_item.price)
 def test_order_not_for_sale(self):
     sample_item = Inventory(name="jacket",
                             stock=1,
                             price=50,
                             for_sale=True,
                             user_id="andrew")
     sample_item2 = Inventory(name="strawberry",
                              stock=4,
                              price=1,
                              for_sale=False,
                              user_id="andrew")
     sample_item3 = Inventory(name="blueberry",
                              stock=20,
                              price=5,
                              for_sale=False,
                              user_id="andrew")
     db.session.add(sample_item)
     db.session.add(sample_item2)
     db.session.add(sample_item3)
     db.session.commit()
     self.client.post(url_for('order', username="******"),
                      data={
                          "submit": True,
                          "order": "Not For Sale"
                      },
                      follow_redirects=True)
     not_for_sale = Inventory.query.order_by(Inventory.for_sale).first()
     self.assertEqual(not_for_sale.for_sale, sample_item2.for_sale)
 def test_order_not_for_sale(self):
     sample_item = Inventory(name="jacket",
                             stock=1,
                             price=50,
                             for_sale=True,
                             user_id="andrew")
     sample_item2 = Inventory(name="strawberry",
                              stock=4,
                              price=1,
                              for_sale=False,
                              user_id="andrew")
     sample_item3 = Inventory(name="blueberry",
                              stock=20,
                              price=5,
                              for_sale=False,
                              user_id="andrew")
     db.session.add(sample_item)
     db.session.add(sample_item2)
     db.session.add(sample_item3)
     db.session.commit()
     self.driver.get(f'http://*****:*****@id="order"]').click()
     self.driver.find_element_by_xpath(
         '//*[@id="order"]/option[10]').click()
     not_for_sale = Inventory.query.order_by(Inventory.for_sale).first()
     self.assertEqual(not_for_sale.for_sale, sample_item2.for_sale)
 def test_delete_user_page(self):
     sample_item = Inventory(name="jacket",
                             stock=1,
                             price=50,
                             for_sale=True,
                             user_id="andrew")
     db.session.add(sample_item)
     db.session.commit()
     self.driver.get(f'http://localhost:5000/admin/delete/andrew')
     self.assertIn(url_for('admin'), self.driver.current_url)
 def test_update_page(self):
     sample_item = Inventory(name="jacket",
                             stock=1,
                             price=50,
                             for_sale=True,
                             user_id="andrew")
     db.session.add(sample_item)
     db.session.commit()
     self.driver.get(f'http://localhost:5000/home/andrew')
     self.driver.find_element_by_xpath('/html/body/div[2]/a').click()
     self.assertIn(url_for('update', username="******", id=sample_item.id),
                   self.driver.current_url)
 def test_buy(self):
     sample1 = Users(username="******", password="******")
     db.session.add(sample1)
     sample_item = Inventory(name="chicken",
                             stock=2,
                             price=10,
                             for_sale=True,
                             user_id="billy")
     db.session.add(sample_item)
     db.session.commit()
     response = self.client.get(url_for('buy', username="******"))
     self.assertIn(b"chicken", response.data)
 def test_delete_user_page(self):
     sample_item = Inventory(name="jacket",
                             stock=1,
                             price=50,
                             for_sale=True,
                             user_id="andrew")
     db.session.add(sample_item)
     db.session.commit()
     response = self.client.get(url_for('admin_delete', username="******"))
     self.assertEqual(response.status_code, 302)
     self.assertNotIsInstance("andrew", Users)
     self.assertNotIsInstance("andrew", Inventory)
 def test_update_page(self):
     sample_item = Inventory(name="jacket",
                             stock=1,
                             price=50,
                             for_sale=True,
                             user_id="andrew")
     db.session.add(sample_item)
     db.session.commit()
     response = self.client.get(
         url_for('update', username="******", id=sample_item.id))
     self.assertEqual(response.status_code, 200)
     self.assertIn(b'jacket', response.data)
 def test_checkout_no_stock(self):
     sample1 = Users(username="******", password="******")
     db.session.add(sample1)
     sample_item = Inventory(name="chicken",
                             stock=1,
                             price=10,
                             for_sale=True,
                             user_id="billy")
     db.session.add(sample_item)
     db.session.commit()
     self.client.get(url_for('cart', username="******", id=sample_item.id))
     self.assertEqual(sample_item.for_sale, False)
 def test_back_update(self):
     sample_item = Inventory(name="jacket",
                             stock=1,
                             price=50,
                             for_sale=True,
                             user_id="andrew")
     db.session.add(sample_item)
     db.session.commit()
     self.driver.get(
         f'http://*****:*****@id="back"]').click()
     self.assertIn(url_for('home', username="******"),
                   self.driver.current_url)
 def test_checkout(self):
     sample1 = Users(username="******", password="******")
     db.session.add(sample1)
     sample_item = Inventory(name="chicken",
                             stock=2,
                             price=10,
                             for_sale=True,
                             user_id="billy")
     db.session.add(sample_item)
     db.session.commit()
     self.driver.get(f'http://localhost:5000/cart/andrew/{sample_item.id}')
     text = self.driver.find_element_by_xpath('/html/body').text
     self.assertIn("Stock: 1", text)
 def test_checkout_no_stock(self):
     sample1 = Users(username="******", password="******")
     db.session.add(sample1)
     sample_item = Inventory(name="chicken",
                             stock=1,
                             price=10,
                             for_sale=True,
                             user_id="billy")
     db.session.add(sample_item)
     db.session.commit()
     self.driver.get(f'http://localhost:5000/cart/andrew/{sample_item.id}')
     self.assertIn(url_for('buy', username="******"),
                   self.driver.current_url)
 def test_back_update(self):
     sample_item = Inventory(name="jacket",
                             stock=1,
                             price=50,
                             for_sale=True,
                             user_id="andrew")
     db.session.add(sample_item)
     db.session.commit()
     response = self.client.post(url_for('update',
                                         username="******",
                                         id=sample_item.id),
                                 data={"back": True},
                                 follow_redirects=True)
     self.assertIn(b"Logged in as: andrew", response.data)
 def test_update_price_negative(self):
     sample_item = Inventory(name="jacket",
                             stock=1,
                             price=50,
                             for_sale=True,
                             user_id="andrew")
     db.session.add(sample_item)
     db.session.commit()
     self.driver.get(
         f'http://*****:*****@id="price"]')
     price.send_keys('-1')
     self.driver.find_element_by_xpath('//*[@id="update"]').click()
     text = self.driver.find_element_by_xpath('/html/body/div[1]/form').text
     self.assertIn("Please enter valid price", text)
 def test_update_empty_name(self):
     sample_item = Inventory(name="jacket",
                             stock=1,
                             price=50,
                             for_sale=True,
                             user_id="andrew")
     db.session.add(sample_item)
     db.session.commit()
     self.driver.get(f'http://*****:*****@id="name"]')
     name.clear()
     name.send_keys('')
     self.driver.find_element_by_xpath('//*[@id="update"]').click()
     text = self.driver.find_element_by_xpath('/html/body/div[1]/form').text
     self.assertIn("Please enter an item name", text)
 def test_update_empty_name(self):
     sample_item = Inventory(name="jacket",
                             stock=1,
                             price=50,
                             for_sale=True,
                             user_id="andrew")
     db.session.add(sample_item)
     db.session.commit()
     response = self.client.post(url_for('update',
                                         username="******",
                                         id=sample_item.id),
                                 data={
                                     "name": "",
                                     "update": True
                                 },
                                 follow_redirects=True)
     self.assertIn(b"Please enter an item name", response.data)
def add(username):
    error = ""
    form = ItemsForm()

    if request.method == 'POST':
        name = form.name.data
        add = form.add_item.data
        back = form.back.data
        stock = form.stock.data
        price = form.price.data
        for_sale = form.for_sale.data

        if add == True:
            if len(name) == 0:
                error = "Please enter an item name"

            elif isinstance(stock, int) == False:
                error = "Please enter valid stock amount"

            elif len(str(stock)) == 0 or stock < 0:
                error = "Please enter valid stock amount"

            elif isinstance(price, float) == False:
                error = "Please enter valid price"

            elif len(str(price)) == 0 or price < 0:
                error = "Please enter valid price"

            else:
                new = Inventory(name=name.capitalize(),
                                stock=stock,
                                price=price,
                                for_sale=for_sale,
                                user_id=username)
                db.session.add(new)
                db.session.commit()
                return redirect(url_for("home", username=username))

        if back == True:
            return redirect(url_for("home", username=username))

    return render_template('add.html',
                           form=form,
                           message=error,
                           username=username)
 def test_update_stock_negative(self):
     sample_item = Inventory(name="jacket",
                             stock=1,
                             price=50,
                             for_sale=True,
                             user_id="andrew")
     db.session.add(sample_item)
     db.session.commit()
     response = self.client.post(url_for('update',
                                         username="******",
                                         id=sample_item.id),
                                 data={
                                     "name": "jacket",
                                     "stock": -1,
                                     "price": 50,
                                     "for_sale": True,
                                     "update": True
                                 },
                                 follow_redirects=True)
     self.assertIn(b"Please enter valid stock amount", response.data)
 def test_update_successful(self):
     sample_item = Inventory(name="jacket",
                             stock=1,
                             price=50,
                             for_sale=True,
                             user_id="andrew")
     db.session.add(sample_item)
     db.session.commit()
     response = self.client.post(url_for('update',
                                         username="******",
                                         id=sample_item.id),
                                 data={
                                     "name": "shirt",
                                     "stock": 1,
                                     "price": 1,
                                     "for_sale": True,
                                     "update": True
                                 },
                                 follow_redirects=True)
     self.assertIn(b"shirt", response.data)
Beispiel #20
0
def inventories():
    form = inventoryform()
    inventories = Inventory.query.all()
    if form.validate_on_submit():
        character = Characters.query.filter_by(
            Characte_name=form.character_name.data).first()
        inv = Inventory(health_potions=form.health_potions.data,
                        scrolls=form.scrolls.data,
                        keys=form.keys.data,
                        arrows=form.arrows.data,
                        shortsword=form.shortsword.data,
                        longsword=form.longsword.data,
                        characters=character)

        db.session.add(inv)
        db.session.commit()

        return redirect(url_for('inventories'))
    return render_template('inventory.html',
                           inventory=inventories,
                           title='inventory',
                           form=form)