def list_pets(): """Returns all of the Pets""" app.logger.info("Request for pet list") pets = [] category = request.args.get("category") name = request.args.get("name") available = request.args.get("available") gender = request.args.get("gender") if category: app.logger.info("Filtering by category: %s", category) pets = Pet.find_by_category(category) elif name: app.logger.info("Filtering by name:%s", name) pets = Pet.find_by_name(name) elif available: app.logger.info("Filtering by available: %s", available) is_available = available.lower() in ["yes", "y", "true", "t", "1"] pets = Pet.find_by_availability(is_available) elif gender: app.logger.info("Filtering by gender: %s", gender) pets = Pet.find_by_gender(gender) else: pets = Pet.all() results = [pet.serialize() for pet in pets] app.logger.info("Returning %d pets", len(results)) 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') available = request.args.get('available') if available: # convert to boolean available = available.lower() in ['true', 'yes', '1'] if category: app.logger.info('Find by category: %s', category) pets = Pet.find_by_category(category) elif name: app.logger.info('Find by name: %s', name) pets = Pet.find_by_name(name) elif available: app.logger.info('Find by available: %s', available) pets = Pet.find_by_availability(available) 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)
def setUpClass(cls): """This runs once before the entire test suite""" app.config["TESTING"] = True app.config["DEBUG"] = False app.config["SQLALCHEMY_DATABASE_URI"] = DATABASE_URI app.logger.setLevel(logging.CRITICAL) Pet.init_db(app)
def test_find_by_availability(self): """ Find a Pet by Availability """ Pet("fido", "dog", False).save() Pet("kitty", "cat", True).save() pets = Pet.find_by_availability(True) self.assertEqual(len(pets), 1) self.assertEqual(pets[0].name, "kitty")
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)
def test_find_by_name(self): """ Find a Pet by Name """ Pet(name="fido", category="dog", available=True).create() Pet(name="kitty", category="cat", available=False).create() 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_category(self): """ Find a Pet by Category """ Pet("fido", "dog").save() Pet("kitty", "cat").save() pets = Pet.find_by_category("cat") self.assertNotEqual(len(pets), 0) self.assertEqual(pets[0].category, "cat") self.assertEqual(pets[0].name, "kitty")
def test_find_by_name(self): """ Find a Pet by Name """ Pet("fido", "dog").create() Pet("kitty", "cat").create() 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_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")
def test_delete_a_pet(self): """ Delete a Pet """ pet = PetFactory() 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)
def test_find_by_category(self): """ Find Pets by Category """ Pet(name="fido", category="dog", available=True).save() Pet(name="kitty", category="cat", available=False).save() pets = Pet.find_by_category("cat") self.assertEqual(pets[0].category, "cat") self.assertEqual(pets[0].name, "kitty") self.assertEqual(pets[0].available, False)
def test_find_pet(self): """ Find a Pet by id """ Pet(0, "fido", "dog").save() Pet(0, "kitty", "cat").save() pet = Pet.find(2) self.assertIsNot(pet, None) self.assertEqual(pet.id, 2) self.assertEqual(pet.name, "kitty")
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")
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_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) pet = Pet(name="fido", category="dog", available=False) self.assertEqual(pet.available, False)
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)
def test_list_all_pets(self): """List Pets in the database""" pets = Pet.all() self.assertEqual(pets, []) # Create 5 Pets for i in range(5): pet = PetFactory() pet.create() # See if we get back 5 pets pets = Pet.all() self.assertEqual(len(pets), 5)
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")
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"]))
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)
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)
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)
def test_find_by_availability(self): """ Find Pets by Category """ Pet(name="fido", category="dog", available=True).create() Pet(name="kitty", category="cat", available=False).create() Pet(name="fifi", category="dog", available=True).create() pets = Pet.find_by_availability(False) pet_list = [pet for pet in pets] self.assertEqual(len(pet_list), 1) self.assertEqual(pets[0].name, "kitty") self.assertEqual(pets[0].category, "cat") pets = Pet.find_by_availability(True) pet_list = [pet for pet in pets] self.assertEqual(len(pet_list), 2)
def test_find_pet(self): """ Find a Pet by ID """ pets = PetFactory.create_batch(3) for pet in pets: pet.create() logging.debug(pets) # make sure they got saved self.assertEqual(len(Pet.all()), 3) # find the 2nd pet in the list pet = Pet.find(pets[1].id) self.assertIsNot(pet, None) self.assertEqual(pet.id, pets[1].id) self.assertEqual(pet.name, pets[1].name) self.assertEqual(pet.available, pets[1].available)
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)
def list_pets(): """ Returns all of the Pets """ app.logger.info("Request for pet list") 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 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_find_by_gender(self): """ Find Pets by Gender """ Pet(name="fido", category="dog", available=True, gender=Gender.Male).create() Pet( name="kitty", category="cat", available=False, gender=Gender.Female ).create() Pet(name="fifi", category="dog", available=True, gender=Gender.Male).create() pets = Pet.find_by_gender(Gender.Female) pet_list = [pet for pet in pets] self.assertEqual(len(pet_list), 1) self.assertEqual(pets[0].name, "kitty") self.assertEqual(pets[0].category, "cat") pets = Pet.find_by_gender(Gender.Male) pet_list = [pet for pet in pets] self.assertEqual(len(pet_list), 2)
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)
def test_deserialize_bad_available(self): """Test deserialization of bad available attribute""" test_pet = PetFactory() data = test_pet.serialize() data["available"] = "true" pet = Pet() self.assertRaises(DataValidationError, pet.deserialize, data)