예제 #1
0
 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)
예제 #2
0
    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")
예제 #3
0
    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)
예제 #4
0
    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()
예제 #5
0
    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()
예제 #6
0
    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
예제 #9
0
 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'}
예제 #10
0
 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
예제 #11
0
    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
예제 #12
0
    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)
예제 #13
0
 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)
예제 #14
0
 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
예제 #15
0
    def get(self, name):

        item = ItemModel.find_by_name(name)

        if (item):
            return item.json()
        else:
            return {'message': 'Item not found'}, 404
예제 #16
0
 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)
예제 #17
0
파일: item.py 프로젝트: apedroed88/ItemsApi
    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
예제 #18
0
 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
예제 #19
0
    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))
예제 #20
0
    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()
예제 #21
0
    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))
예제 #22
0
    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.'}
예제 #23
0
    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))
예제 #24
0
 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'}
예제 #25
0
    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
예제 #29
0
    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()