def test_put_update_item(self): with self.app() as client: with self.app_context(): StoreModel("Costco").save_to_db() ItemModel("ham", 18.29, 1).save_to_db() response = client.put("/item/ham", data={"price": 17.55, "store_id": 1}) self.assertEqual(response.status_code, 200) self.assertEqual(ItemModel.find_by_name("ham").price, 17.55)
def test_store_relationship(self): with self.app_context(): store_label=StoreModel("Costco") item=ItemModel("cookies", 19.87, 1) store_label.save_to_db() item.save_to_db() self.assertEqual(item.store.name, "Costco")
def test_store_relationship(self): with self.app_context(): store = StoreModel("Costco") item = ItemModel("ham", "20.11", 1) store.save_to_db() item.save_to_db() self.assertEqual(store.items.count(), 1) self.assertEqual(store.items.first().name, "ham") self.assertEqual(store.items.first().price, 20.11)
def put(self, name): data = Item.parser.parse_args() item = ItemModel.find_by_name(name) if item is None: try: item = ItemModel(name, **data) except: { 'message': 'An error occurred attempting to insert the item into the database' }, 500 # Internal Server Error else: try: item.price = data['price'] item.store_id = data['store_id'] except: { 'message': 'An error occurred attempting to update the item in the database' }, 500 # Internal Server Error item.save_to_db() return item.json()
def put(self, name): """ Create or Modify the existing item or new item """ data = Item.parser.parse_args() item = ItemModel.find_item_name(name) updated_item = ItemModel(name, data['price']) if item is None: try: updated_item.insert() except: return { "message": "An error occured while inserting the item" }, 500 else: try: updated_item.update() except: return { "message": "An error occured while updating the item" }, 500 return updated_item.json()
def test_crud(self): with self.app_context(): StoreModel("COSTCO").save_to_db #save COSTCO to the database in order to deal with foreigner key item = ItemModel("cookies", 19.98, 1) #test the foreign key self.assertIsNone(ItemModel.find_by_name("cookies")) item.save_to_db() self.assertIsNotNone(ItemModel.find_by_name("cookies")) item.delete_from_db() self.assertIsNone(ItemModel.find_by_name("cookies"))
def delete(self, name): item = ItemModel.find_by_name(name) if item: item.delete_from_db() return {"message": "The item is deleted"}
def get(self, name): item = ItemModel.find_by_name(name) if item: return item.json() return {"message": "Item not found"}, 404
def delete(self, name): item = ItemModel.find_by_name(name) if item: item.delte_from_db() return {'message': 'deleted item {}'.format(item.name)} else: return {'message': 'Item not found'}
def get(self, name): item=ItemModel.find_by_name(name) if item: return item.json() #item is an object and we have to return a dictionary return{'message':'item not found'},404
def delete(self, name): item = ItemModel.find_by_name(name) if item: item.delete_from_db() return {'message': 'item deleted'} return {'message': 'Item not found.'},404
def test_json_with_item(self): with self.app_context(): store = StoreModel("Costco") item = ItemModel("ham", 20.11, 1) store.save_to_db() item.save_to_db() expected = { "name": "Costco", "item_list": [{ "name": "ham", "price": 20.11 }] } self.assertDictEqual(store.json(), expected)
def test_get_item(self): with self.app() as client: with self.app_context(): #StoreModel("Costco").save_to_db() #StoreModel("Costco").save_to_db() ItemModel("ham", 18.29, 1).save_to_db() response = client.get("/item/ham", headers={"Authorization": self.access_token}) self.assertEqual(response.status_code, 200)
def get(self, name): try: item = ItemModel.find_by_name(name) except: {'message': 'An error occurred attempting to retrieve the item from the database.'}, 500 # Internal Server Error if item: return item.json() return {'message': 'Item not found'}, 404 # Not found
def get(self, name): item = ItemModel.find_by_name(name) if (item): return item.json() else: return {'message': 'Item not found'}, 404
def test_delete_item(self): with self.app() as client: with self.app_context(): # StoreModel("Costco").save_to_db() StoreModel("Costco").save_to_db() ItemModel("ham", 18.29, 1).save_to_db() response = client.delete("/item/ham") #dont need authorization anymore self.assertEqual(response.status_code, 200)
def post(self, name): if ItemModel.find_by_name(name): return { 'message': "An item with name '{}' already exists.".format(name) } data = Item.parser.parse_args() item = ItemModel(name, data['price']) try: Item.insert() except: return {"message": "An error occurred inserting the item."} return item.json(), 201
def get(self, name): """ Returns details about the item """ item = ItemModel.find_item_name(name) if item: # Return item in json format return item.json() return {"message": "Item {} not found".format(name)}, 404
def test_create_duplicate_item(self): with self.app() as client: with self.app_context(): StoreModel("Costco").save_to_db() ItemModel("ham", 18.29, 1).save_to_db() response = client.post("/item/ham", data={"price": 17.55, "store_id": 1}) self.assertEqual(response.status_code, 400) self.assertDictEqual({"message": "the item already exists"}, json.loads(response.data))
def put(self, name): data = Item.parser.parse_args() item = ItemModel.find_by_name(name) if item is None: item = ItemModel(name, data['price'], data['store_id']) else: item.price = data['price'] item.store_id = data['store_id'] item.save_to_db() return item.json()
def test_item_list(self): with self.app() as client: with self.app_context(): with self.app_context(): StoreModel("Costco").save_to_db() ItemModel("ham", 18.29, 1).save_to_db() response = client.get("/items") self.assertDictEqual(d1={'items': [{'name': 'ham', 'price': 18.29}]}, d2=json.loads(response.data))
def delete(self, name): claims = get_jwt() if not claims['is_admin']: return {'message': 'Admin privilege required.'}, 401 item = ItemModel.find_by_name(name) if item: item.delete_from_db() return {'message': 'item deleted'} return {'message': 'Item not found.'}
def test_create_item(self): with self.app() as client: with self.app_context(): StoreModel("Costco").save_to_db() #ItemModel("ham", 18.29, 1).save_to_db() response = client.post("/item/ham", data={"price": 17.55, "store_id": 1}) # dont need authorization anymore self.assertEqual(response.status_code, 201) self.assertEqual(ItemModel.find_by_name('ham').price, 17.55) self.assertDictEqual({"name": "ham", "price": 17.55}, json.loads(response.data))
def delete(self, name): claims = get_jwt_claims() if not claims['is_admin']: return {'message': 'Admin privileges required for this operation'} item = ItemModel.find_by_name(name) if item: item.delte_from_db() return {'message': 'deleted item {}'.format(item.name)} else: return {'message': 'Item not found'}
def get(self): user_id = get_jwt_identity() items = [item.json() for item in ItemModel.find_all()] if user_id: return {'items': items}, 200 return { 'items': [item['name'] for item in items], 'message': 'Login or provide authorization header to get detailed item information' }, 200
def get(self, name): """ Get item details GET /item/<string:name> """ # use params from the end point selected_item = ItemModel.find_by_name(name) if selected_item: return selected_item.json(), 200 return {"message": "No Item Found!"}, 404
def get(self): """ Get all items GET /items """ items = ItemModel.find_all() if items: #return {"users": [item.json() for item in items]}, 200 return {"users": list(map(lambda x: x.json(), items))} else: return {"message": "Sorry, No Items Found!"}, 404
def post(self): """ Add new item POST /item """ # use of request parser to validate the request body parser = reqparse.RequestParser() parser.add_argument('product_price', type=float, required=True, help="Product Price couldn't be blank") parser.add_argument('product_name', type=str, required=True, help="Product Name couldn't be blank") parser.add_argument('store_id', type=int, required=True, help="Store Id couldn't be blank") data = parser.parse_args() price = data['product_price'] name = data['product_name'] store_id = data['store_id'] exist = ItemModel.find_by_name(name) if exist: return {"message": "Product Already Exist!"}, 409 item = ItemModel(name, price, store_id) item.save_to_db() return item.json(), 201
def put(self, name): # data = request.get_json() data = Item.parser.parse_args() item = ItemModel.findByName(name) if item is None: item = ItemModel(name, data['price']) else: item.price = data['price'] item.save_to_db() return item.json()
def put(self, name): data = Item.parser.parse_args() item = ItemModel.find_by_name(name) if item is None: item = ItemModel(name, **data) else: item.price = data["price"] item.save_to_db() return item.json()