Exemplo n.º 1
0
 def test_deserialize_bad_available(self):
     """It should not deserialize a bad available attribute"""
     test_pet = PetFactory()
     data = test_pet.serialize()
     data["available"] = "true"
     pet = Pet()
     self.assertRaises(DataValidationError, pet.deserialize, data)
Exemplo n.º 2
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.º 3
0
 def test_deserialize_bad_gender(self):
     """It should not deserialize a bad gender attribute"""
     test_pet = PetFactory()
     data = test_pet.serialize()
     data["gender"] = "male"  # wrong case
     pet = Pet()
     self.assertRaises(DataValidationError, pet.deserialize, data)
Exemplo n.º 4
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.º 5
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.º 6
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.º 7
0
 def test_deserialize_lower_case_gender(self):
     """Test deserialization with lower case gender"""
     test_pet = PetFactory()
     data = test_pet.serialize()
     data["gender"] = "male"  # lower case
     pet = Pet()
     pet.deserialize(data)
     self.assertEqual(pet.gender, Gender.MALE)
Exemplo n.º 8
0
 def test_create_a_pet(self):
     """ Create a pet and assert that it exists """
     pet = Pet(name="fido", category="dog", available=True)
     self.assertTrue(pet != None)
     self.assertEqual(pet.id, None)
     self.assertEqual(pet.name, "fido")
     self.assertEqual(pet.category, "dog")
     self.assertEqual(pet.available, True)
Exemplo n.º 9
0
 def test_delete_a_pet(self):
     """ Delete a Pet """
     pet = Pet(name="fido", category="dog", available=True)
     pet.create()
     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.º 10
0
 def test_create_a_pet(self):
     """ Create a pet and assert that it exists """
     pet = Pet("fido", "dog", False)
     self.assertNotEqual(pet, None)
     self.assertEqual(pet.id, None)
     self.assertEqual(pet.name, "fido")
     self.assertEqual(pet.category, "dog")
     self.assertEqual(pet.available, False)
Exemplo n.º 11
0
 def test_vcap_services(self):
     """ Test if VCAP_SERVICES works """
     Pet.init_db()
     self.assertIsNotNone(Pet.client)
     Pet("fido", "dog", True).save()
     pets = Pet.find_by_name("fido")
     self.assertNotEqual(len(pets), 0)
     self.assertEqual(pets[0].name, "fido")
Exemplo n.º 12
0
 def test_deserialize_a_pet(self):
     """ Deserialize a Pet """
     data = {"id":1, "name": "kitty", "category": "cat", "available": True}
     pet = Pet(data['id'])
     pet.deserialize(data)
     self.assertNotEqual(pet, None)
     self.assertEqual(pet.id, 1)
     self.assertEqual(pet.name, "kitty")
     self.assertEqual(pet.category, "cat")
Exemplo n.º 13
0
 def test_create_a_pet(self):
     """Create a pet and assert that has correct attributes"""
     pet = Pet(name="Fido",
               category="dog",
               available=True,
               gender=Gender.MALE)
     self.assertTrue(pet is not None)
     self.assertEqual(pet.id, None)
     self.assertEqual(pet.name, "Fido")
     self.assertEqual(pet.category, "dog")
     self.assertEqual(pet.available, True)
     self.assertEqual(pet.gender, Gender.MALE)
     pet = Pet(name="Fido",
               category="dog",
               available=False,
               gender=Gender.FEMALE)
     self.assertEqual(pet.available, False)
     self.assertEqual(pet.gender, Gender.FEMALE)
Exemplo n.º 14
0
 def test_deserialize_with_bad_gender(self):
     """Deserialize a Pet with bad gender data"""
     data = {
         "name": "fido",
         "category": "dog",
         "available": True,
         "gender": "foo"
     }
     pet = Pet()
     self.assertRaises(DataValidationError, pet.deserialize, data)
Exemplo n.º 15
0
 def test_create_a_pet(self):
     """It should Create a pet and assert that it exists"""
     pet = Pet(name="Fido",
               category="dog",
               available=True,
               gender=Gender.MALE)
     self.assertEqual(str(pet), "<Pet 'Fido' id=[None]>")
     self.assertTrue(pet is not None)
     self.assertEqual(pet.id, None)
     self.assertEqual(pet.name, "Fido")
     self.assertEqual(pet.category, "dog")
     self.assertEqual(pet.available, True)
     self.assertEqual(pet.gender, Gender.MALE)
     pet = Pet(name="Fido",
               category="dog",
               available=False,
               gender=Gender.FEMALE)
     self.assertEqual(pet.available, False)
     self.assertEqual(pet.gender, Gender.FEMALE)
Exemplo n.º 16
0
 def test_deserialize_a_pet(self):
     """ Test deserialization of a Pet """
     data = {"id": 1, "name": "kitty", "category": "cat", "available": True}
     pet = Pet()
     pet.deserialize(data)
     self.assertNotEqual(pet, None)
     self.assertEqual(pet.id, None)
     self.assertEqual(pet.name, "kitty")
     self.assertEqual(pet.category, "cat")
     self.assertEqual(pet.available, True)
Exemplo n.º 17
0
 def test_serialize_a_pet(self):
     """ Serialize a Pet """
     pet = Pet(0, "fido", "dog")
     data = pet.serialize()
     self.assertNotEqual(data, None)
     self.assertIn('id', data)
     self.assertEqual(data['id'], 0)
     self.assertIn('name', data)
     self.assertEqual(data['name'], "fido")
     self.assertIn('category', data)
     self.assertEqual(data['category'], "dog")
Exemplo n.º 18
0
 def test_serialize_a_pet(self):
     """ Serialize a Pet """
     pet = Pet("fido", "dog", False)
     data = pet.serialize()
     self.assertNotEqual(data, None)
     self.assertNotIn('_id', data)
     self.assertIn('name', data)
     self.assertEqual(data['name'], "fido")
     self.assertIn('category', data)
     self.assertEqual(data['category'], "dog")
     self.assertIn('available', data)
     self.assertEqual(data['available'], False)
Exemplo n.º 19
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.create()
     # 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.º 20
0
 def test_deserialize_a_pet(self):
     """It should de-serialize a Pet"""
     data = PetFactory().serialize()
     pet = Pet()
     pet.deserialize(data)
     self.assertNotEqual(pet, None)
     self.assertEqual(pet.id, None)
     self.assertEqual(pet.name, data["name"])
     self.assertEqual(pet.category, data["category"])
     self.assertEqual(pet.available, data["available"])
     self.assertEqual(pet.gender.name, data["gender"])
     self.assertEqual(pet.birthday, date.fromisoformat(data["birthday"]))
Exemplo n.º 21
0
 def test_serialize_a_pet(self):
     """ Test serialization of a Pet """
     pet = Pet(name="fido", category="dog", available=False)
     data = pet.serialize()
     self.assertNotEqual(data, None)
     self.assertIn('id', data)
     self.assertEqual(data['id'], None)
     self.assertIn('name', data)
     self.assertEqual(data['name'], "fido")
     self.assertIn('category', data)
     self.assertEqual(data['category'], "dog")
     self.assertIn('available', data)
     self.assertEqual(data['available'], False)
Exemplo n.º 22
0
 def test_serialize_a_pet(self):
     """ Test serialization of a Pet """
     pet = Pet(name="fido", category="dog", available=False)
     data = pet.serialize()
     self.assertNotEqual(data, None)
     self.assertIn("id", data)
     self.assertEqual(data["id"], None)
     self.assertIn("name", data)
     self.assertEqual(data["name"], "fido")
     self.assertIn("category", data)
     self.assertEqual(data["category"], "dog")
     self.assertIn("available", data)
     self.assertEqual(data["available"], False)
Exemplo n.º 23
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.create()
    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.º 24
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.º 25
0
 def test_update_a_pet(self):
     """ Update a Pet """
     pet = Pet(name="fido", category="dog", available=True)
     pet.create()
     self.assertEqual(pet.id, 1)
     # Change it an update it
     pet.category = "k9"
     pet.update()
     self.assertEqual(pet.id, 1)
     # 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")
Exemplo n.º 26
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.º 27
0
 def test_add_a_pet(self):
     """It should Create a pet and add it to the database"""
     pets = Pet.all()
     self.assertEqual(pets, [])
     pet = Pet(name="Fido",
               category="dog",
               available=True,
               gender=Gender.MALE)
     self.assertTrue(pet is not None)
     self.assertEqual(pet.id, None)
     pet.create()
     # Assert that it was assigned an id and shows up in the database
     self.assertIsNotNone(pet.id)
     pets = Pet.all()
     self.assertEqual(len(pets), 1)
Exemplo n.º 28
0
 def post(self):
     """
     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')
     pet = Pet()
     app.logger.debug('Payload = %s', api.payload)
     pet.deserialize(api.payload)
     pet.create()
     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 test_deserialize_a_pet(self):
     """ Deserialize a Pet """
     data = {
         "name": "kitty",
         "category": "cat",
         "available": True,
         "gender": Gender.Female.name
     }
     pet = Pet()
     pet.deserialize(data)
     self.assertNotEqual(pet, None)
     self.assertEqual(pet.id, None)
     self.assertEqual(pet.name, "kitty")
     self.assertEqual(pet.category, "cat")
     self.assertEqual(pet.available, True)
     self.assertEqual(pet.gender, Gender.Female)
Exemplo n.º 30
0
 def test_deserialize_a_pet(self):
     """Test deserialization of a Pet"""
     data = {
         "name": "Kitty",
         "category": "cat",
         "available": True,
         "gender": "FEMALE",
     }
     pet = Pet()
     pet.deserialize(data)
     self.assertNotEqual(pet, None)
     self.assertEqual(pet.id, None)
     self.assertEqual(pet.name, "Kitty")
     self.assertEqual(pet.category, "cat")
     self.assertEqual(pet.available, True)
     self.assertEqual(pet.gender, Gender.FEMALE)