def test_find_users_by_shopcart_amount(self): """Find users having goods worth more than specified amount in their shopcarts """ Shopcart(user_id=1, product_id=1, quantity=1, price=12.00).save() Shopcart(user_id=1, product_id=2, quantity=1, price=12.00).save() Shopcart(user_id=2, product_id=1, quantity=1, price=12.00).save() result = Shopcart.find_users_by_shopcart_amount(13) self.assertEqual(result, [1])
def setUp(self): """ Runs before each test """ service.init_db() db.drop_all() # clean up the last tests db.create_all() # create new tables Shopcart(user_id=1, product_id=1, quantity=1, price=12.00).save() Shopcart(user_id=1, product_id=2, quantity=1, price=15.00).save() self.app = service.app.test_client()
def test_findByUserId(self): """ Find shopcart list by user_id """ shopcart = Shopcart(user_id=999, product_id=999, quantity=999, price=999.99) shopcart.save() shopcarts = Shopcart.findByUserId(999) self.assertIsNot(shopcarts, None) self.assertEqual(shopcarts[0].user_id, shopcart.user_id) self.assertEqual(shopcarts[0].product_id, shopcart.product_id)
def test_deserialize_a_shopcart_entry(self): """ Test deserialization of a Shopcart """ data = {"user_id": 1, "product_id": 1, "quantity": 1, "price": 12.00} shopcart = Shopcart() shopcart.deserialize(data) self.assertNotEqual(shopcart, None) self.assertEqual(shopcart.user_id, 1) self.assertEqual(shopcart.product_id, 1) self.assertEqual(shopcart.quantity, 1) self.assertEqual(shopcart.price, 12.00) self.test = 'test' self.assertRaises(DataValidationError)
def test_serialize_a_shopcart_entry(self): """ Test serialization of a Shopcart """ shopcart = Shopcart(user_id = 1, product_id = 1, quantity = 1, price = 12.00) data = shopcart.serialize() self.assertNotEqual(data, None) self.assertIn('user_id', data) self.assertEqual(data['user_id'], 1) self.assertIn('product_id', data) self.assertEqual(data['product_id'], 1) self.assertIn('quantity', data) self.assertEqual(data['quantity'], 1) self.assertIn('price', data) self.assertEqual(data['price'], 12.00)
def test_delete_a_shopcart_entry(self): """ Delete a shopcart entry """ shopcart = Shopcart(user_id=999, product_id=999, quantity=999, price=999.99) shopcart.save() self.assertEqual(Shopcart.findByUserId(999).count(), 1) # delete item and make sure it isn't in the database shopcart.delete() self.assertEqual(Shopcart.findByUserId(999).count(), 0)
def test_delete_a_product(self): """ Delete a Product """ shopcart = Shopcart(user_id=1, product_id=1, quantity=1, price=12.00) shopcart.save() self.assertEqual(len(Shopcart.all()), 1) # delete item and make sure it isn't in the database shopcart.delete() self.assertEqual(len(Shopcart.all()), 0)
def test_deserialize_bad_data(self): """ Test deserialization of bad data """ data = "this is not a dictionary" shopcart = Shopcart() self.assertRaises(DataValidationError, shopcart.deserialize, data) invalidKey = {"user_id": 1, "product_id": 1} self.assertRaises(DataValidationError, shopcart.deserialize, invalidKey)
def test_create_a_shopcart_entry(self): """ Create a shopcart entry and assert that it exists """ shopcart = Shopcart(user_id=999, product_id=999, quantity=999, price=999.99) self.assertTrue(shopcart != None) self.assertEqual(shopcart.user_id, 999) self.assertEqual(shopcart.product_id, 999) self.assertEqual(shopcart.quantity, 999) self.assertEqual(shopcart.price, 999.99)
def test_update_shopcart_quantity(self): """ Update a Shopcart quantity """ # Add test product in database test_product = dict(user_id=1, product_id=1, quantity=5, price=12.00) data = json.dumps(test_product) resp = self.app.post('/shopcarts', data=data, content_type='application/json') self.assertEqual(resp.status_code, status.HTTP_201_CREATED) # make it chekc if the quantity is number shopcart = Shopcart.find(1, 1) test_error = dict(user_id=1, product_id=1, quantity='a', price=12.00) data_error = json.dumps(test_error) resp = self.app.put('/shopcarts/{uid}/product/{pid}'.format( uid=shopcart.user_id, pid=shopcart.product_id), data=data_error, content_type='application/json') self.assertEqual(resp.status_code, status.HTTP_400_BAD_REQUEST) # make it chekc if the quantity is more than 0 shopcart = Shopcart.find(1, 1) test_error = dict(user_id=1, product_id=1, quantity=0, price=12.00) data_error = json.dumps(test_error) resp = self.app.put('/shopcarts/{uid}/product/{pid}'.format( uid=shopcart.user_id, pid=shopcart.product_id), data=data_error, content_type='application/json') self.assertEqual(resp.status_code, status.HTTP_400_BAD_REQUEST) # update the test product quantity shopcart = Shopcart.find(1, 1) resp = self.app.put('/shopcarts/{uid}/product/{pid}'.format( uid=shopcart.user_id, pid=shopcart.product_id), data=data, content_type='application/json') self.assertEqual(resp.status_code, status.HTTP_200_OK) #Check quantity is updated to 3 new_json = json.loads(resp.data) self.assertEqual(new_json['quantity'], 5) resp = self.app.put('/shopcarts/999/product/999', data=data, content_type='application/json') self.assertRaises(NotFound)
def test_list_all_shopcarts(self): """ Query all the shopcart in the system """ shopcart = Shopcart.list_users() cnt = len(shopcart) print(cnt) print("----------------------------------------------------") resp = self.app.get('/shopcarts', content_type='application/json') self.assertEqual(resp.status_code, status.HTTP_200_OK) print(resp.data) data = json.loads(resp.data) self.assertEqual(cnt, len(data)) Shopcart(user_id=30, product_id=1, quantity=5, price=12.00).save() Shopcart(user_id=31, product_id=2, quantity=5, price=12.00).save() shopcart = Shopcart.list_users() cnt = len(shopcart) resp = self.app.get('/shopcarts', content_type='application/json') self.assertEqual(resp.status_code, status.HTTP_200_OK) data = json.loads(resp.data) self.assertEqual(cnt, len(data))
def test_update_a_shopcart_entry(self): """ Update a Shopcart entry """ shopcart = Shopcart(user_id=999, product_id=999, quantity=999, price=999.99) shopcart.save() self.assertEqual(shopcart.user_id, 999) # Change it an save it shopcart.quantity =888 shopcart.save() self.assertEqual(shopcart.user_id, 999) self.assertEqual(shopcart.product_id, 999) # Fetch it back and make sure the id hasn't changed # but the data did change item = Shopcart.find(999,999) self.assertEqual(item.quantity, 888)
def test_delete_product(self): """ Delete product in Shopcart """ # Add test product in database test_product = dict(user_id=1, product_id=1, quantity=1, price=12.00) data = json.dumps(test_product) resp = self.app.post('/shopcarts', data=data, content_type='application/json') self.assertEqual(resp.status_code, status.HTTP_201_CREATED) # Delet the test product shopcart = Shopcart.find(1, 1) resp = self.app.delete('/shopcarts/{uid}/product/{pid}'.format( uid=shopcart.user_id, pid=shopcart.product_id)) self.assertEqual(resp.status_code, status.HTTP_204_NO_CONTENT)
def test_shop_cart_amount_by_user_id(self): """ Query the total amount of products in shopcart by user_id""" shopcarts = Shopcart.findByUserId(1) total = 0.0 for shopcart in shopcarts: total = total + shopcart.price * shopcart.quantity total = round(total, 2) resp = self.app.get('/shopcarts/1/total', content_type='application/json') self.assertEqual(resp.status_code, status.HTTP_200_OK) new_json = json.loads(resp.data) self.assertEqual(total, new_json['total_price'])
def test_find_shopcart_entry(self): """ Find a Shopcart by user_id and product_id """ Shopcart(user_id=1, product_id=1, quantity=1, price=12.00).save() entry = Shopcart(user_id=1, product_id=2, quantity=1, price=15.00) entry.save() shopcart = Shopcart.find(entry.user_id, entry.product_id) self.assertIsNot(shopcart, None) self.assertEqual(shopcart.user_id, 1) self.assertEqual(shopcart.product_id, 2) self.assertEqual(shopcart.quantity, 1) self.assertEqual(shopcart.price, 15.00)
def test_list_shop_cart_entry_by_user_id(self): """ Query shopcart by user_id """ shopcart = Shopcart.findByUserId(1) print(shopcart[0].user_id) resp = self.app.get('/shopcarts/{}'.format(shopcart[0].user_id), content_type='application/json') self.assertEqual(resp.status_code, status.HTTP_200_OK) data = json.loads(resp.data) self.assertTrue(len(resp.data) > 0) resp = self.app.get('/shopcarts/999', content_type='application/json') #self.assertRaises(NotFound) self.assertEqual(resp.status_code, status.HTTP_404_NOT_FOUND) data = json.loads(resp.data) print(data) print(data['message']) self.assertIn('was not found', data['message'])
def test_add_a_shopcart_entry(self): """ Create a shopcart entry and add it to the database """ shopcarts = Shopcart.findByUserId(999) before_cnt = (shopcarts.count()) #self.assertEqual(shopcarts, []) shopcart = Shopcart(user_id=999, product_id=999, quantity=888, price=999.99) self.assertTrue(shopcarts != None) self.assertEqual(shopcart.user_id, 999) shopcart.save() # Asert that it was assigned an id and shows up in the database shopcarts2 = Shopcart.findByUserId(999) self.assertEqual(shopcarts2.count(), before_cnt+1)
def test_get_shopcart_product_info(self): """ Query quantity and price of a product shopcart by user_id and product_id """ # Add test product in database test_product = dict(user_id=10, product_id=1, quantity=1, price=12.00) data = json.dumps(test_product) resp = self.app.post('/shopcarts', data=data, content_type='application/json') self.assertEqual(resp.status_code, status.HTTP_201_CREATED) # Fetch info of product shopcart = Shopcart.find(10, 1) resp = self.app.get('/shopcarts/{}/product/{}'.format( shopcart.user_id, shopcart.product_id), content_type='application/json') self.assertEqual(resp.status_code, status.HTTP_200_OK) ans = json.loads(resp.data) self.assertEqual(ans['quantity'], shopcart.quantity) self.assertEqual(ans['price'], shopcart.price) resp = self.app.get('/shopcarts/999/product/999', content_type='application/json') self.assertRaises(NotFound)
def test_get_users_by_total_cost_of_shopcart(self): Shopcart(user_id=3, product_id=1, quantity=5, price=12.00).save() resp = self.app.get('/shopcarts/users?amount=60', content_type='application/json') self.assertEqual(resp.status_code, status.HTTP_200_OK) self.assertEqual(len(json.loads(resp.data)), 1)
def test_delete_user_product(self): """ Delete User Products """ shopcart = Shopcart(user_id=1, product_id=1, quantity=1, price=12.00) shopcart.save() shopcart = Shopcart(user_id=1, product_id=2, quantity=1, price=12.00) shopcart.save() shopcart = Shopcart(user_id=1, product_id=3, quantity=1, price=12.00) shopcart.save() # delete item and make sure it isn't in the database shopcart.delete() shopcarts = Shopcart.findByUserId(1) self.assertIsNot(shopcarts, None)
def setUp(self): Shopcart.init_db() db.drop_all() # clean up the last tests db.create_all() # make our sqlalchemy tables
def test_remove_all(self): """ Remove all the shopcart data in the system """ shopcart = Shopcart(user_id=1, product_id=1, quantity=1, price=12.00) shopcart.save() shopcart = Shopcart(user_id=1, product_id=2, quantity=1, price=12.00) shopcart.save() # delete data shopcart.remove_all() shopcarts = Shopcart.all() self.assertEqual(len(shopcarts), 0)