def test_update_pet_with_no_data(self): """ Update a Pet with no data passed """ pet = Pet.find_by_name('kitty')[0] resp = self.app.put('/pets/{}'.format(pet.id), data=None, content_type='application/json') self.assertEqual(resp.status_code, status.HTTP_400_BAD_REQUEST)
def test_update_pet_with_text_data(self): """ Update a Pet with text data """ pet = Pet.find_by_name('kitty')[0] resp = self.app.put('/pets/{}'.format(pet.id), data="hello", content_type='text/plain') self.assertEqual(resp.status_code, status.HTTP_400_BAD_REQUEST)
def test_find_by_name(self): """ Find a Pet by Name """ Pet(0, "fido", "dog").save() Pet(0, "kitty", "cat").save() pets = Pet.find_by_name("fido") self.assertNotEqual(len(pets), 0) self.assertEqual(pets[0].category, "dog") self.assertEqual(pets[0].name, "fido")
def test_update_pet_with_no_name(self): """ Update a Pet without a name """ pet = Pet.find_by_name('kitty')[0] new_pet = {'category_id': self.dog_id} resp = self.app.put('/pets/{}'.format(pet.id), json=new_pet, content_type='application/json') self.assertEqual(resp.status_code, status.HTTP_400_BAD_REQUEST)
def test_find_by_name(self): """ Find a Pet by Name """ Pet(name="fido", category="dog", available=True).save() Pet(name="kitty", category="cat", available=False).save() pets = Pet.find_by_name("kitty") self.assertEqual(pets[0].category, "cat") self.assertEqual(pets[0].name, "kitty") self.assertEqual(pets[0].available, False)
def test_find_by_name(self): """ Find a Pet by Name """ Pet(name="fido", category_id=TestPets.dog.id, available=True).save() Pet(name="kitty", category_id=TestPets.cat.id, available=False).save() pets = Pet.find_by_name("kitty") self.assertEqual(pets[0].category_id, TestPets.cat.id) self.assertEqual(pets[0].name, "kitty") self.assertEqual(pets[0].available, False)
def test_get_pet(self): """ Get a single Pet """ # get the id of a pet pet = Pet.find_by_name('fido')[0] resp = self.app.get('/pets/{}'.format(pet.id), content_type='application/json') self.assertEqual(resp.status_code, status.HTTP_200_OK) data = resp.get_json() self.assertEqual(data['name'], pet.name)
def test_for_case_insensitive(self): """ Test for Case Insensitive Search """ Pet(0, "Fido", "DOG").save() Pet(0, "Kitty", "CAT").save() pets = Pet.find_by_name("fido") self.assertNotEqual(len(pets), 0) self.assertEqual(pets[0].name, "Fido") pets = Pet.find_by_category("cat") self.assertNotEqual(len(pets), 0) self.assertEqual(pets[0].category, "CAT")
def test_delete_pet(self): """ Delete a Pet """ pet = Pet.find_by_name('fido')[0] # save the current number of pets for later comparrison pet_count = self.get_pet_count() resp = self.app.delete('/pets/{}'.format(pet.id), content_type='application/json') self.assertEqual(resp.status_code, status.HTTP_204_NO_CONTENT) self.assertEqual(len(resp.data), 0) new_count = self.get_pet_count() self.assertEqual(new_count, pet_count - 1)
def test_update_pet(self): """ Update an existing Pet """ pet = Pet.find_by_name('kitty')[0] new_kitty = dict(name='kitty', category='tabby', available=True) data = json.dumps(new_kitty) resp = self.app.put('/pets/{}'.format(pet.id), data=data, content_type='application/json') self.assertEqual(resp.status_code, status.HTTP_200_OK) new_json = json.loads(resp.data) self.assertEqual(new_json['category'], 'tabby')
def list_pets(): """ Returns all of the Pets """ pets = [] category = request.args.get('category') name = request.args.get('name') if category: pets = Pet.find_by_category(category) elif name: pets = Pet.find_by_name(name) else: pets = Pet.all() results = [pet.serialize() for pet in pets] return make_response(jsonify(results), status.HTTP_200_OK)
def list_pets(): """ Returns all of the Pets """ app.logger.info('Request to list Pets...') pets = [] category = request.args.get('category') name = request.args.get('name') if category: app.logger.info('Find by category') pets = Pet.find_by_category(category) elif name: app.logger.info('Find by name') pets = Pet.find_by_name(name) else: app.logger.info('Find all') pets = Pet.all() app.logger.info('[%s] Pets returned', len(pets)) results = [pet.serialize() for pet in pets] return make_response(jsonify(results), status.HTTP_200_OK)