Exemplo n.º 1
0
 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()
Exemplo n.º 2
0
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})
Exemplo n.º 3
0
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)})
Exemplo n.º 4
0
 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)
Exemplo n.º 5
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)
Exemplo n.º 6
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")
Exemplo n.º 7
0
 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)
Exemplo n.º 8
0
 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)
Exemplo n.º 9
0
 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)
Exemplo n.º 10
0
 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")
Exemplo n.º 11
0
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})
Exemplo n.º 12
0
 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)
Exemplo n.º 13
0
    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
        }
Exemplo n.º 14
0
def data_load(payload):
    """ Loads a Pet into the database """
    pet = Pet(payload['name'], payload['category'], payload['available'])
    pet.save()