def test_key_error_on_update(self, bad_mock): """ Test KeyError on update """ bad_mock.side_effect = KeyError() pet = Pet("fido", "dog", False) pet.save() pet.name = 'Fifi' pet.update()
def create_pets(): """ Creates a Pet This endpoint will create a Pet based the data in the body that is posted """ app.logger.info('Request to Create a Pet...') data = {} # Check for form submission data if request.headers.get( 'Content-Type') == 'application/x-www-form-urlencoded': app.logger.info('Getting data from form submit') data = { 'name': request.form['name'], 'category': request.form['category'], 'available': True } else: check_content_type('application/json') app.logger.info('Getting json data from API call') data = request.get_json() app.logger.info(data) pet = Pet() pet.deserialize(data) pet.save() app.logger.info('Pet with new id [%s] saved!', pet.id) message = pet.serialize() location_url = url_for('get_pets', pet_id=pet.id, _external=True) return make_response(jsonify(message), status.HTTP_201_CREATED, {'Location': location_url})
def create_pets(): """ Creates a Pet This endpoint will create a Pet based the data in the body that is posted or data that is sent via an html form post. """ app.logger.info('Request to create a Pet') data = {} # Check for form submission data if request.headers.get( 'Content-Type') == 'application/x-www-form-urlencoded': app.logger.info('Processing FORM data') data = { 'name': request.form['name'], 'category': request.form['category'], 'available': request.form['available'].lower() in ['true', '1', 't'] } else: app.logger.info('Processing JSON data') data = request.get_json() pet = Pet() pet.deserialize(data) pet.save() message = pet.serialize() return make_response( jsonify(message), status.HTTP_201_CREATED, {'Location': url_for('get_pets', pet_id=pet.id, _external=True)})
def test_delete_a_pet(self): """ Delete a Pet """ pet = Pet("fido", "dog") pet.save() self.assertEqual(len(Pet.all()), 1) # delete the pet and make sure it isn't in the database pet.delete() self.assertEqual(len(Pet.all()), 0)
def test_delete_a_pet(self): """ Delete a Pet """ pet = Pet(name="fido", category="dog", available=True) pet.save() self.assertEqual(len(Pet.all()), 1) # delete the pet and make sure it isn't in the database pet.delete() self.assertEqual(len(Pet.all()), 0)
def test_find_pet(self): """ Find a Pet by id """ Pet("fido", "dog").save() # saved_pet = Pet("kitty", "cat").save() saved_pet = Pet("kitty", "cat") saved_pet.save() pet = Pet.find(saved_pet.id) self.assertIsNot(pet, None) self.assertEqual(pet.id, saved_pet.id) self.assertEqual(pet.name, "kitty")
def test_find_or_404_found(self): """ Find or return 404 found """ Pet(name="fido", category="dog", available=True).save() kitty = Pet(name="kitty", category="cat", available=False) kitty.save() pet = Pet.find_or_404(kitty.id) self.assertIsNot(pet, None) self.assertEqual(pet.id, kitty.id) self.assertEqual(pet.name, "kitty") self.assertEqual(pet.available, False)
def test_find_pet(self): """ Find a Pet by ID """ Pet(name="fido", category="dog", available=True).save() kitty = Pet(name="kitty", category="cat", available=False) kitty.save() pet = Pet.find(kitty.id) self.assertIsNot(pet, None) self.assertEqual(pet.id, kitty.id) self.assertEqual(pet.name, "kitty") self.assertEqual(pet.available, False)
def test_add_a_pet(self): """ Create a pet and add it to the database """ pets = Pet.all() self.assertEqual(pets, []) pet = Pet(name="fido", category="dog", available=True) self.assertTrue(pet != None) self.assertEqual(pet.id, None) pet.save() # Asert that it was assigned an id and shows up in the database self.assertEqual(pet.id, 1) pets = Pet.all() self.assertEqual(len(pets), 1)
def test_update_a_pet(self): """ Update a Pet """ pet = Pet("fido", "dog", True) pet.save() self.assertNotEqual(pet.id, None) # Change it an save it pet.category = "k9" pet.save() # Fetch it back and make sure the id hasn't changed # but the data did change pets = Pet.all() self.assertEqual(len(pets), 1) self.assertEqual(pets[0].category, "k9") self.assertEqual(pets[0].name, "fido")
def create_pets(): """ Creates a Pet This endpoint will create a Pet based the data in the body that is posted """ app.logger.info('Request to create a pet') check_content_type('application/json') pet = Pet() pet.deserialize(request.get_json()) pet.save() message = pet.serialize() location_url = url_for('get_pets', pet_id=pet.id, _external=True) return make_response(jsonify(message), status.HTTP_201_CREATED, {'Location': location_url})
def test_add_a_pet(self): """ Create a pet and add it to the database """ pets = Pet.all() self.assertEqual(pets, []) pet = Pet("fido", "dog", True) self.assertNotEqual(pet, None) self.assertEqual(pet.id, None) pet.save() # Asert that it was assigned an id and shows up in the database self.assertNotEqual(pet.id, None) pets = Pet.all() self.assertEqual(len(pets), 1) self.assertEqual(pets[0].name, "fido") self.assertEqual(pets[0].category, "dog") self.assertEqual(pets[0].available, True)
def post(self): """ Creates a Pet This endpoint will create a Pet based the data in the body that is posted or data that is sent via an html form post. """ app.logger.info('Request to Create a Pet') content_type = request.headers.get('Content-Type') if not content_type: abort(status.HTTP_400_BAD_REQUEST, "No Content-Type set") data = {} # Check for form submission data if content_type == 'application/x-www-form-urlencoded': app.logger.info('Processing FORM data') app.logger.info(type(request.form)) app.logger.info(request.form) data = { 'name': request.form['name'], 'category': request.form['category'], 'available': request.form['available'].lower() in ['yes', 'y', 'true', 't', '1'] } elif content_type == 'application/json': app.logger.info('Processing JSON data') data = request.get_json() else: message = 'Unsupported Content-Type: {}'.format(content_type) app.logger.info(message) abort(status.HTTP_400_BAD_REQUEST, message) pet = Pet() try: pet.deserialize(data) except DataValidationError as error: raise BadRequest(str(error)) pet.save() app.logger.info('Pet with new id [%s] saved!', pet.id) location_url = api.url_for(PetResource, pet_id=pet.id, _external=True) return pet.serialize(), status.HTTP_201_CREATED, { 'Location': location_url }
def data_load(payload): """ Loads a Pet into the database """ pet = Pet(payload['name'], payload['category'], payload['available']) pet.save()