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)
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)