def test_remove_item(self): '''Tests if remove_item does what is says ''' pizza1 = Pizza("pepperoni_pizza", 5.0, "small") pizza2 = Pizza("vegetarian_pizza", 5.0, "medium") pizza3 = Pizza("margherita_pizza", 5.0, "large") PP.order_fac.create_new_order() PP.order_fac.add_to_order(1, [pizza1, pizza2, pizza3]) # Tests if it will remove an item data = {'order_number': 1, 'item_number': 2} response = self.client.post('/remove_item', data=data) assert response.status_code == 200 assert "delete" in str(response.data) assert '2 ' in str(response.data) assert ' 1' in str(response.data) assert "vegetarian_pizza" not in str(PP.order_fac.orders[0].items[1]) # Tests if it will ignore nonexistent items data = {'order_number': 1, 'item_number': 4} response = self.client.post('/remove_item', data=data) assert response.status_code == 200 assert "invalid" in str(response.data).lower() assert "margherita_pizza" in str(PP.order_fac.orders[0].items[1])
def test_update_pizza(self): '''Tests if update_pizza does as its name implies ''' pizza1 = Pizza( "pepperoni_pizza", 5.0, "medium") #, toppings = ['pepperoni','tomatoes','mushroom']) pizza2 = Pizza("custom_pizza", 5.0, "medium", toppings=['olives', 'tomatoes', 'tomatoes']) drink1 = Drink("drink", 0, "Coke") PP.order_fac.create_new_order() PP.order_fac.add_to_order(1, [pizza1]) PP.order_fac.create_new_order() PP.order_fac.add_to_order(2, [pizza2]) PP.order_fac.create_new_order() PP.order_fac.add_to_order(3, [drink1, pizza2]) # Tests if it updates the type of an existing pizza data = { 'order_number': 1, 'item_number': 1, 'type': 'vegetarian_pizza' } response = self.client.post('/update_pizza/type', data=data) assert response.status_code == 200 assert 'vegetarian' in PP.order_fac.orders[0].get_item_by_id(1) # Tests if it updates the size of an existing pizza data = {'order_number': 1, 'item_number': 1, 'pizza_size': 'large'} response = self.client.post('/update_pizza/size', data=data) assert response.status_code == 200 assert 'large' in PP.order_fac.orders[0].get_item_by_id(1) # Tests if it updates the toppings of an existing pizza data = { 'order_number': 1, 'item_number': 1, 'toppings': ['jalapenos', 'tomatoes', 'mushroom'], 'add_or_remove': 'add' } response = self.client.post('/update_pizza/toppings', data=data) assert response.status_code == 200 assert 'jalapenos' in PP.order_fac.orders[0].get_item_by_id(1) data = { 'order_number': 1, 'item_number': 1, 'toppings': ['jalapenos', 'jalapenos', 'jalapenos', 'tomatoes'], 'add_or_remove': 'remove' } response = self.client.post('/update_pizza/toppings', data=data) assert response.status_code == 200 assert 'jalapenos' not in PP.order_fac.orders[0].get_item_by_id(1)
def test_get_toppings(self): '''Tests if get_toppings gives the toppings of the given pizza ''' pizza1 = Pizza("pepperoni_pizza", 5.0, "medium", toppings=['pepperoni', 'tomatoes', 'mushroom']) pizza2 = Pizza("custom_pizza", 5.0, "medium", toppings=['olives', 'tomatoes', 'tomatoes']) drink1 = Drink("drink", 0, "Coke") PP.order_fac.create_new_order() PP.order_fac.create_new_order() PP.order_fac.add_to_order(2, [pizza1]) PP.order_fac.create_new_order() PP.order_fac.add_to_order(3, [drink1, pizza2]) # Tests if it returns the right dict for a pizza response = self.client.get('/get_toppings/2/1') assert response.status_code == 200 toppings = {'pepperoni': 1, 'tomatoes': 1, 'mushroom': 1} for key in toppings: assert key.encode('utf-8') in response.data assert str(toppings[key]).encode('utf-8') in response.data # Tests if it returns the right dict for a pizza with multiples response = self.client.get('/get_toppings/3/2') assert response.status_code == 200 toppings = {'olives': 1, 'tomatoes': 2} for key in toppings: assert key.encode('utf-8') in response.data assert str(toppings[key]).encode('utf-8') in response.data # Tests if it returns None when the item is a drink response = self.client.get('/get_toppings/3/1') assert response.status_code == 200 assert ("None").encode('utf-8') in response.data # Tests if it returns None when the order does not exist response = self.client.get('/get_toppings/4/1') assert response.status_code == 200 assert ("None").encode('utf-8') in response.data # Tests if it returns None when the product does not exist response = self.client.get('/item_type/1/1') assert response.status_code == 200 assert ("None").encode('utf-8') in response.data
def test_cancel_order(self): '''Tests if cancel_order cancels the right order ''' pizza1 = Pizza("pepperoni_pizza", 5.0, "medium") PP.order_fac.create_new_order() PP.order_fac.create_new_order() PP.order_fac.add_to_order(2, [pizza1]) PP.order_fac.create_new_order() # Tests if cancel_order rejects invalid ids response = self.client.get('/cancel_order/4') assert response.status_code == 200 assert ("invalid").encode('utf-8') in response.data # Tests if cancel_order removes the order, regardless of formatting response = self.client.get('/cancel_order/2') assert "invalid" in PP.order_fac.get_order(2) assert response.status_code == 200 assert ("2").encode('utf-8') in response.data # Tests if cancel_order rejects invalid ids, including previous ids response = self.client.get('/cancel_order/2') assert response.status_code == 200 assert ("invalid").encode('utf-8') in response.data
def test_is_pizza(self): '''Tests if is_pizza gives meaningful info about the Product type ''' pizza1 = Pizza("pepperoni_pizza", 5.0, "medium") drink1 = Drink("drink", 0, "Coke") PP.order_fac.create_new_order() PP.order_fac.create_new_order() PP.order_fac.add_to_order(2, [pizza1]) PP.order_fac.create_new_order() PP.order_fac.add_to_order(3, [drink1]) # Tests if it returns True when it is a pizza response = self.client.get('/item_type/2/1') assert response.status_code == 200 assert ("True").encode('utf-8') in response.data # Tests if it returns False when it is a drink response = self.client.get('/item_type/3/1') assert response.status_code == 200 assert ("False").encode('utf-8') in response.data # Tests if it returns None when the order does not exist response = self.client.get('/item_type/4/1') assert response.status_code == 200 assert ("None").encode('utf-8') in response.data # Tests if it returns None when the product does not exist response = self.client.get('/item_type/1/1') assert response.status_code == 200 assert ("None").encode('utf-8') in response.data
def test_update_total(self): order = Order(1) assert order.order_total == 0 pizza = Pizza("vegetarian_pizza", 0, "small") order.add_item(pizza) order.update_total() assert order.order_total == 9.99
def test_remove_item(self): order = Order(1) pizza = Pizza("vegetarian_pizza", 0, "small") order.add_item(pizza) order.remove_item(1) assert 1 not in order.ids_to_items assert len(order.items) == 0
def test_add_item(self): order = Order(1) pizza = Pizza("vegetarian_pizza", 0, "small") order.add_item(pizza) assert pizza.id == 1 assert 1 in order.ids_to_items assert order.ids_to_items[1] == pizza assert len(order.items) == 1
def test_create_delivery(self): '''Tests if create_delivery does as it says, and no more ''' pizza1 = Pizza("pepperoni_pizza", 5.0, "medium") PP.order_fac.create_new_order() PP.order_fac.create_new_order() PP.order_fac.add_to_order(2, [pizza1]) PP.order_fac.create_new_order() PP.order_fac.add_to_order(3, [pizza1]) PP.order_fac.create_new_order() PP.order_fac.add_to_order(3, [pizza1]) address = '321 qwert' # Tests if it returns a relevent message for pickup data = {'address': '321 qwert', 'delivery_type': 'pickup'} response = self.client.post('/create_delivery/1', data=data) assert response.status_code == 200 assert ("pickup").encode('utf-8') in response.data # Tests if it returns a relevent message for PP delivery data = {'address': address, 'delivery_type': 'pizzaparlour'} response = self.client.post('/create_delivery/2', data=data) assert response.status_code == 200 assert ("We").encode('utf-8') in response.data assert ("deliver").encode('utf-8') in response.data # Tests if it returns a relevent message for ubereats delivery, and makes a json file data = {'address': address, 'delivery_type': 'ubereats'} response = self.client.post('/create_delivery/3', data=data) assert response.status_code == 200 assert ("Uber Eats").encode('utf-8') in response.data assert ("deliver").encode('utf-8') in response.data with open('delivery.json') as f: info = json.load(f) assert info['Address'] == address assert info['Order Number'] == 3 # Tests if it returns a relevent message for foodora delivery, and makes a csv file data = {'address': address, 'delivery_type': 'foodora'} response = self.client.post('/create_delivery/4', data=data) assert response.status_code == 200 assert ("Foodora").encode('utf-8') in response.data assert ("deliver").encode('utf-8') in response.data with open('delivery.csv') as f: info = f.read() assert address in info assert '4' in info # Tests if it rejects invalid ids data = {'address': address, 'delivery_type': 'pickup'} response = self.client.post('/create_delivery/5', data=data) assert response.status_code == 200 assert ("deliver").encode('utf-8') not in response.data
def test_set_price(self): '''Tests if set_price changes the price of the given product ''' pizza1 = Pizza("pepperoni_pizza", 5.0, "small") PP.order_fac.create_new_order() PP.order_fac.add_to_order(1, [pizza1]) # Tests if it will change a price data = {'product_name': 'pepperoni_pizza', 'price': 9.0} response = self.client.post('/set_price', data=data) assert response.status_code == 200 assert "price set" in str(response.data) assert 'pepperoni_pizza' in str(response.data) assert '9.0' in str(response.data) assert PP.order_fac.orders[0].order_total == 9.0 # Tests if it will change a price back data = {'product_name': 'pepperoni_pizza', 'price': 9.3} response = self.client.post('/set_price', data=data) assert response.status_code == 200 assert "price set" in str(response.data) assert 'pepperoni_pizza' in str(response.data) assert '9.3' in str(response.data) # Create a new order with the old pizza and a new order with a new pizza. All should have the new price. PP.order_fac.create_new_order() PP.order_fac.add_to_order(2, [pizza1]) PP.order_fac.create_new_order() pizza2 = Pizza("pepperoni_pizza", 5.0, "small") PP.order_fac.add_to_order(3, [pizza2]) assert PP.order_fac.orders[2].order_total == 9.3 assert PP.order_fac.orders[1].order_total == 9.3 assert PP.order_fac.orders[0].order_total == 9.3 # Tests if it will do nothing on a faulty price data = {'product_name': 'pepperoni_pizza', 'price': 'a'} response = self.client.post('/set_price', data=data) assert response.status_code == 200 assert 'failure' in str(response.data).lower() assert PP.order_fac.orders[0].order_total == 9.3
def create_pizza(): ''' Edits the item indicated in the update_type way using the provided data. ''' if request.method == 'POST': order_number = request.form.get('order_number',type=int) quantity = request.form.get('quantity',type=int) pizza_type = request.form.get('pizza_type',type=str) pizza_size = request.form.get('pizza_size',type=str) toppings = request.form.getlist('toppings',type=str) if len(toppings) == 0: toppings = None items = [] for i in range(0, int(quantity)): try: items.append(Pizza(pizza_type, 0, pizza_size, toppings)) except KeyError: return("This pizza is invalid") return(order_fac.add_to_order(order_number, items))
def test_get_item(self): '''Tests if get_item gives expected output ''' pizza1 = Pizza("pepperoni_pizza", 5.0, "medium") PP.order_fac.create_new_order() PP.order_fac.add_to_order(1, [pizza1]) PP.order_fac.create_new_order() # Tests if get_item returns string representation response = self.client.get('/get_item/1/1') assert response.status_code == 200 assert response.data == (str(pizza1)).encode('utf-8') # Tests if get_item rejects invalid ids response = self.client.get('/get_item/3/1') assert response.status_code == 200 assert response.data == ("None").encode('utf-8') response = self.client.get('/get_item/1/2') assert response.status_code == 200 assert response.data == ("None").encode('utf-8')
def test_get_order(self): '''Tests if get_order returns info about the right order ''' pizza1 = Pizza("pepperoni_pizza", 5.0, "medium") PP.order_fac.create_new_order() PP.order_fac.create_new_order() PP.order_fac.add_to_order(2, [pizza1]) # Tests if get_order returns vital info, regardless of formatting response = self.client.get('/get_order/2') assert response.status_code == 200 assert ("2").encode('utf-8') in response.data assert ("pepperoni_pizza").encode('utf-8') in response.data assert ("tomatoes").encode('utf-8') in response.data # Tests if get_item rejects invalid ids response = self.client.get('/get_order/3') assert response.status_code == 200 assert ("3").encode('utf-8') not in response.data assert ("valid").encode('utf-8') in response.data
def test_get_all_orders(self): '''Tests if get_all_orders does as it says, and no more ''' pizza1 = Pizza("pepperoni_pizza", 5.0, "medium") PP.order_fac.create_new_order() PP.order_fac.create_new_order() PP.order_fac.add_to_order(2, [pizza1]) PP.order_fac.create_new_order() # Tests if it returns all current orders, regardless of formatting response = self.client.get('/get_order_list') assert response.status_code == 200 assert ("1 ").encode('utf-8') in response.data assert ("2 ").encode('utf-8') in response.data assert ("3 ").encode('utf-8') in response.data assert ("4 ").encode('utf-8') not in response.data # Tests if it continues to work once an order is removed PP.order_fac.cancel_order(2) response = self.client.get('/get_order_list') assert response.status_code == 200 assert ("1 ").encode('utf-8') in response.data assert ("2 ").encode('utf-8') not in response.data assert ("3 ").encode('utf-8') in response.data assert ("4 ").encode('utf-8') not in response.data # Tests if it continues to work once an order is added PP.order_fac.create_new_order() response = self.client.get('/get_order_list') assert response.status_code == 200 assert ("1 ").encode('utf-8') in response.data assert ("2 ").encode('utf-8') not in response.data assert ("3 ").encode('utf-8') in response.data assert ("4 ").encode('utf-8') in response.data assert ("5 ").encode('utf-8') not in response.data
def test_update_item_size(self): order = Order(1) pizza = Pizza("pepperoni_pizza", 0, "small") order.add_item(pizza) order.update_item(1, "size", "medium") assert pizza.size == "medium"
def test_update_item_type(self): order = Order(1) pizza = Pizza("pepperoni_pizza", 0, "small") order.add_item(pizza) order.update_item(1, "type", "vegetarian_pizza") assert pizza.get_type() == "vegetarian_pizza"
def test_get_toppings(self): order = Order(1) pizza = Pizza("pepperoni_pizza", 0, "small") order.add_item(pizza) order.get_toppings(1) == {"pepperoni": 1, "tomatoes": 1}
def test_process_toppings(self): pizza = Pizza("vegetarian_pizza", 0, "small") value = pizza.process_toppings(["olives", "chicken", "olives"]) assert value == {"chicken": 1, "olives": 2}
def test_is_pizza(self): order = Order(1) pizza = Pizza("vegetarian_pizza", 0, "small") order.add_item(pizza) assert order.is_pizza(1) == "True"
def test_get_item_by_id(self): order = Order(1) pizza = Pizza("vegetarian_pizza", 0, "small") order.add_item(pizza) assert order.get_item_by_id(1) != "None"
def test_update_prices(self): pizza = Pizza("pepperoni_pizza", 0, "small") pizza.set_type("vegetarian_pizza") pizza.toppings = pizza.set_up_toppings() pizza.update_prices() assert pizza.get_price() == 9.99
def test_update_toppings_add(self): pizza = Pizza("pepperoni_pizza", 0, "small") pizza.update_toppings("add", ["olives"]) assert pizza.toppings == {'pepperoni': 1, 'tomatoes': 1, 'olives': 1}
def test_update_toppings_remove(self): pizza = Pizza("pepperoni_pizza", 0, "small") pizza.update_toppings("remove", ["tomatoes"]) assert pizza.toppings == {'pepperoni': 1}
def test_set_id(self): pizza = Pizza("vegetarian_pizza", 0, "small") pizza.set_id(1) assert pizza.id == 1
def test_update_pizza_size(self): pizza = Pizza("pepperoni_pizza", 0, "small") pizza.update_pizza_size("medium") assert pizza.size == "medium"
def test_update_item_toppings(self): order = Order(1) pizza = Pizza("pepperoni_pizza", 0, "small") order.add_item(pizza) order.update_item(1, "toppings", ["olives"], "add") assert pizza.toppings == {"pepperoni": 1, "tomatoes": 1, "olives": 1}
def test_create_pizza(self): pizza = Pizza("vegetarian_pizza", 0, "small") assert isinstance(pizza, Pizza)
def test_set_up_toppings(self): pizza = Pizza("pepperoni_pizza", 0, "small") pizza.set_up_toppings() pizza.get_toppings() == {"pepperoni": 1, "tomatoes": 1}