Ejemplo n.º 1
0
    def test_get_pets(self):
        """Test GET / to view pets"""
        register_user_helper(self.client)
        login_user_helper(self.client)

        # No pets
        response = self.client.get("/")
        self.assertEqual(response.status_code, 200)
        self.assertTrue("No pets found." in response.get_data(as_text=True))

        # Add some pets
        first_pet = add_pet_helper(self.db_session, random_pet())
        second_pet = add_pet_helper(self.db_session, random_pet())

        response = self.client.get("/")
        self.assertEqual(response.status_code, 200)
        self.assertTrue(">{}</a>".format(first_pet.name) in response.get_data(
            as_text=True))
        self.assertTrue(
            "<td>{}</td>".format(first_pet.breed.title()) in response.get_data(
                as_text=True))
        self.assertTrue("<td>{}</td>".format(first_pet.species.title()) in
                        response.get_data(as_text=True))
        self.assertTrue(">{}</a>".format(second_pet.name) in response.get_data(
            as_text=True))
        self.assertTrue("<td>{}</td>".format(second_pet.breed.title()) in
                        response.get_data(as_text=True))
        self.assertTrue("<td>{}</td>".format(second_pet.species.title()) in
                        response.get_data(as_text=True))

        response = self.client.get("/logout")
        self.assertEqual(response.status_code, 302)
Ejemplo n.º 2
0
    def test_index(self):
        """Test GET /"""
        register_user_helper(self.client)
        login_user_helper(self.client)

        response = self.client.get("/")
        self.assertEqual(response.status_code, 200)
Ejemplo n.º 3
0
    def test_add_duplicate_repeat_cycle(self):
        """Test add duplicate repeat cycle details """
        register_user_helper(self.client)
        login_user_helper(self.client)

        response = self.client.post(
            "/settings/account_details/repeat_cycles",
            data=dict(repeat_cycle_name="weeKLY"),
            follow_redirects=True,
        )
        self.assertTrue("Saved Repeat Cycle" in response.get_data(
            as_text=True))

        response = self.client.post(
            "/settings/account_details/repeat_cycles",
            data=dict(repeat_cycle_name="WEEkly"),
            follow_redirects=True,
        )
        self.assertTrue(
            "Sorry, this Repeat Cycle already exists" in response.get_data(
                as_text=True))

        repeat_cycles = (db_session.query(RepeatCycle).filter(
            func.lower(RepeatCycle.name) == func.lower("WEEKLY")).all())

        self.assertEqual(len(repeat_cycles), 1)

        response = self.client.get("/logout")
        self.assertEqual(response.status_code, 302)
Ejemplo n.º 4
0
    def test_view_pet_schedules(self):
        """Test GET /view_pet with due and past schedules"""
        register_user_helper(self.client)
        login_user_helper(self.client)

        pet = add_pet_helper(self.db_session, random_pet())
        due_schedule = add_pet_schedule_helper(
            self.db_session, pet, random_schedule(self.db_session))
        past_schedule = add_pet_schedule_helper(
            self.db_session, pet, random_schedule(self.db_session, past=True))

        self.assertEqual(2, self.db_session.query(Schedule).count())

        response = self.client.get("/view_pet/{}".format(pet.id))
        self.assertEqual(response.status_code, 200)
        self.assertTrue(">{}</td>".format(pet.name) in response.get_data(
            as_text=True))
        self.assertTrue("<h5>Schedules</h5>" in response.get_data(
            as_text=True))
        self.assertTrue("<td>{}</td>".format(
            due_schedule.schedule_types.name.title()) in response.get_data(
                as_text=True))
        self.assertTrue("<td>{}</td>".format(due_schedule.date_of_next) in
                        response.get_data(as_text=True))
        self.assertTrue("<h5>History</h5>" in response.get_data(as_text=True))
        self.assertTrue("<td>{}</td>".format(
            past_schedule.schedule_types.name.title()) in response.get_data(
                as_text=True))
        self.assertTrue("<td>{}</td>".format(past_schedule.date_of_next) in
                        response.get_data(as_text=True))
Ejemplo n.º 5
0
    def test_delete_pets_with_schedules(self):
        """Test POST /delete_pet/<int:pet_id> with schedules"""
        register_user_helper(self.client)
        login_user_helper(self.client)

        pet = add_pet_helper(self.db_session, random_pet())
        add_pet_schedule_helper(self.db_session, pet,
                                random_schedule(self.db_session))
        add_pet_schedule_helper(self.db_session, pet,
                                random_schedule(self.db_session))

        self.assertEqual(2, self.db_session.query(Schedule).count())

        # Delete Pet
        response = self.client.post("/delete_pet/{}".format(pet.id),
                                    follow_redirects=True)
        self.assertEqual(response.status_code, 200)

        # No pets
        response = self.client.get("/")
        self.assertEqual(response.status_code, 200)
        self.assertTrue("No pets found." in response.get_data(as_text=True))

        response = self.client.get("/logout")
        self.assertEqual(response.status_code, 302)
Ejemplo n.º 6
0
    def test_validate_settings_repeat_cycle(self):
        """Test valid repeat cycle details on add /settings/account_details/repeat_cycles"""
        register_user_helper(self.client)
        login_user_helper(self.client)

        response = self.client.get("/settings/account_details/repeat_cycles")
        self.assertEqual(response.status_code, 200)
        self.assertTrue("Add Repeat Cycle" in response.get_data(as_text=True))

        response = self.client.post(
            "/settings/account_details/repeat_cycles",
            data=dict(repeat_cycle_name=""),
            follow_redirects=True,
        )
        self.assertTrue("Please provide a Repeat Cycle eg Daily, Weekly etc" in
                        response.get_data(as_text=True))

        response = self.client.post(
            "/settings/account_details/repeat_cycles",
            data=dict(repeat_cycle_name="S"),
            follow_redirects=True,
        )
        self.assertTrue("Name must be between 5 to 20 characters in length" in
                        response.get_data(as_text=True))

        response = self.client.get("/logout")
        self.assertEqual(response.status_code, 302)
Ejemplo n.º 7
0
    def test_add_duplicate_schedule_type(self):
        """Test add duplicate schedule type details """
        register_user_helper(self.client)
        login_user_helper(self.client)

        response = self.client.post(
            "/settings/account_details/schedule_types",
            data=dict(schedule_type_name="grooMING"),
            follow_redirects=True,
        )
        self.assertTrue("Saved Schedule Type" in response.get_data(
            as_text=True))

        response = self.client.post(
            "/settings/account_details/schedule_types",
            data=dict(schedule_type_name="GrOOminG"),
            follow_redirects=True,
        )
        self.assertTrue(
            "Sorry, this Schedule Type already exists" in response.get_data(
                as_text=True))

        schedule_types = (db_session.query(ScheduleType).filter(
            func.lower(ScheduleType.name) == func.lower("GROOMING")).all())

        self.assertEqual(len(schedule_types), 1)

        response = self.client.get("/logout")
        self.assertEqual(response.status_code, 302)
Ejemplo n.º 8
0
    def test_validate_settings_schedule_type(self):
        """Test valid schedule type details on add /settings/account_details/schedule_types"""
        register_user_helper(self.client)
        login_user_helper(self.client)

        response = self.client.get("/settings/account_details/schedule_types")
        self.assertEqual(response.status_code, 200)
        self.assertTrue("Add Schedule Type" in response.get_data(as_text=True))

        response = self.client.post(
            "/settings/account_details/schedule_types",
            data=dict(schedule_type_name=""),
            follow_redirects=True,
        )
        self.assertTrue(
            "Please provide a Schedule Type eg Deworming, Vaccine etc" in
            response.get_data(as_text=True))

        response = self.client.post(
            "/settings/account_details/schedule_types",
            data=dict(schedule_type_name="G"),
            follow_redirects=True,
        )
        self.assertTrue("Name must be between 5 to 20 characters in length" in
                        response.get_data(as_text=True))

        response = self.client.get("/logout")
        self.assertEqual(response.status_code, 302)
Ejemplo n.º 9
0
    def test_view_pet_details(self):
        """Test GET /view_pet"""
        register_user_helper(self.client)
        login_user_helper(self.client)

        pet = add_pet_helper(self.db_session, random_pet())

        response = self.client.get("/view_pet/{}".format(pet.id))
        self.assertEqual(response.status_code, 200)
        self.assertTrue(
            ">{}</td>".format(pet.name.title()) in response.get_data(
                as_text=True))
        self.assertTrue(
            ">{}</td>".format(pet.date_of_birth) in response.get_data(
                as_text=True))
        self.assertTrue(
            ">{}</td>".format(pet.breed.title()) in response.get_data(
                as_text=True))
        self.assertTrue(
            ">{}</td>".format(pet.sex.title()) in response.get_data(
                as_text=True))
        self.assertTrue(">{}</td>".format(pet.colour_and_identifying_marks) in
                        response.get_data(as_text=True))

        # Attempting to view unknown pets should return a 404
        response = self.client.get("/view_pet/{}".format(0))
        self.assertEqual(response.status_code, 404)
        self.assertTrue("h5>{}</h5".format("Sorry, Pet does not exist.") in
                        response.get_data(as_text=True))

        response = self.client.get("/logout")
        self.assertEqual(response.status_code, 302)
Ejemplo n.º 10
0
    def test_pets_validate_date_of_birth(self):
        """Test date of birth validation"""
        register_user_helper(self.client)
        login_user_helper(self.client)

        response = self.client.post(
            "/add_pet",
            data=dict(
                name="Ace",
                date_of_birth="",
                species="canine",
                breed="German Shepherd",
                sex="M",
                color_and_identifying_marks="Black with brown patches",
            ),
            follow_redirects=True,
        )
        self.assertEqual(response.status_code, 200)
        self.assertTrue(
            "Please enter a Date of Birth (YYYY-MM-DD)" in response.get_data(
                as_text=True))
        self.assertEqual(0, self.db_session.query(Pet).count())

        response = self.client.post(
            "/add_pet",
            data=dict(
                name="Ace",
                # Date format DD-MM-YYYY
                date_of_birth="23-04-2019",
                species="canine",
                breed="German Shepherd",
                sex="M",
                color_and_identifying_marks="Black with brown patches",
            ),
            follow_redirects=True,
        )
        self.assertEqual(response.status_code, 200)
        self.assertTrue(
            "Please enter a Date of Birth (YYYY-MM-DD)" in response.get_data(
                as_text=True))
        self.assertEqual(0, self.db_session.query(Pet).count())

        response = self.client.post(
            "/add_pet",
            data=dict(
                name="Ace",
                # Date in the future
                date_of_birth=date.today() + timedelta(days=2),
                species="canine",
                breed="German Shepherd",
                sex="M",
                color_and_identifying_marks="Black with brown patches",
            ),
            follow_redirects=True,
        )
        self.assertEqual(response.status_code, 200)
        self.assertTrue("Please enter a date before {}".format(date.today()) in
                        response.get_data(as_text=True))
        self.assertEqual(0, self.db_session.query(Pet).count())
Ejemplo n.º 11
0
    def test_update_pet_photo_validation(self):
        """Test validation for updating a pet photo"""
        register_user_helper(self.client)
        login_user_helper(self.client)

        pet = add_pet_helper(self.db_session, random_pet())
        response = self.client.post(
            "/update_pet_photo/{}".format(pet.id),
            data={
                "image_file": (BytesIO("IMAGE DATA".encode()), "picture.jpg")
            },
            content_type="multipart/form-data",
            follow_redirects=True,
        )
        self.assertIn(
            "No file part",
            response.get_data(as_text=True),
        )
        self.assertEqual(response.status_code, 200)

        response = self.client.post(
            "/update_pet_photo/{}".format(pet.id),
            data={"photo": (BytesIO("IMAGE DATA".encode()), "")},
            content_type="multipart/form-data",
            follow_redirects=True,
        )
        self.assertIn(
            "No selected photo",
            response.get_data(as_text=True),
        )
        self.assertEqual(response.status_code, 200)

        response = self.client.post(
            "/update_pet_photo/{}".format(pet.id),
            data={
                "photo":
                (BytesIO("IMAGE DATA".encode()), "picture.wrong_extension")
            },
            content_type="multipart/form-data",
            follow_redirects=True,
        )
        self.assertIn(
            "Photo type not allowed. Use png, gif, jpeg or jpg",
            response.get_data(as_text=True),
        )
        self.assertEqual(response.status_code, 200)

        response = self.client.post(
            "/update_pet_photo/{}".format(pet.id),
            data={"photo": (BytesIO("IMAGE DATA".encode()), "picture.jpg")},
            content_type="multipart/form-data",
            follow_redirects=True,
        )
        self.assertIn(
            "Unidentified Image Error",
            response.get_data(as_text=True),
        )
        self.assertEqual(response.status_code, 200)
Ejemplo n.º 12
0
    def test_pets_validate_name(self):
        """Test pet name validation"""
        warnings.simplefilter("ignore", DeprecationWarning)
        register_user_helper(self.client)
        login_user_helper(self.client)

        response = self.client.post(
            "/add_pet",
            data=dict(
                name="",
                date_of_birth="2019-01-01",
                species="canine",
                breed="Mastiff",
                sex="M",
                color_and_identifying_marks="Black with brown spots",
            ),
            follow_redirects=True,
        )
        self.assertEqual(response.status_code, 200)
        self.assertTrue("Please enter a name" in response.get_data(
            as_text=True))
        self.assertEqual(0, self.db_session.query(Pet).count())

        response = self.client.post(
            "/add_pet",
            data=dict(
                name="I",
                date_of_birth="2019-01-01",
                species="canine",
                breed="Mastiff",
                sex="M",
                color_and_identifying_marks="Black with brown spots",
            ),
            follow_redirects=True,
        )
        self.assertEqual(response.status_code, 200)
        self.assertTrue("Name must be between 2 to 25 characters in length" in
                        response.get_data(as_text=True))
        self.assertEqual(0, self.db_session.query(Pet).count())

        response = self.client.post(
            "/add_pet",
            data=dict(
                name="I have a really long name that can not be saved",
                date_of_birth="2019-01-01",
                species="canine",
                breed="Mastiff",
                sex="M",
                color_and_identifying_marks="Black with brown spots",
            ),
            follow_redirects=True,
        )
        self.assertEqual(response.status_code, 200)
        self.assertTrue("Name must be between 2 to 25 characters in length" in
                        response.get_data(as_text=True))
        self.assertEqual(0, self.db_session.query(Pet).count())
Ejemplo n.º 13
0
    def test_logout(self):
        """Test GET /logout"""
        register_user_helper(self.client)
        login_user_helper(self.client)

        response = self.client.get("/add_pet")
        self.assertEqual(response.status_code, 200)

        response = self.client.get("/logout")
        self.assertEqual(response.status_code, 302)
Ejemplo n.º 14
0
    def test_pets_validate_breed(self):
        """Test breed validation"""
        register_user_helper(self.client)
        login_user_helper(self.client)

        response = self.client.post(
            "/add_pet",
            data=dict(
                name="Ace",
                date_of_birth="2001-01-01",
                species="canine",
                breed="",
                sex="M",
                color_and_identifying_marks="Black with brown patches",
            ),
            follow_redirects=True,
        )
        self.assertEqual(response.status_code, 200)
        self.assertTrue("Please provide breed details" in response.get_data(
            as_text=True))
        self.assertEqual(0, self.db_session.query(Pet).count())

        response = self.client.post(
            "/add_pet",
            data=dict(
                name="Ace",
                date_of_birth="2001-01-01",
                species="canine",
                breed="G",
                sex="M",
                color_and_identifying_marks="Black with brown patches",
            ),
            follow_redirects=True,
        )
        self.assertEqual(response.status_code, 200)
        self.assertTrue("Breed must be between 5 to 25 characters in length" in
                        response.get_data(as_text=True))
        self.assertEqual(0, self.db_session.query(Pet).count())

        response = self.client.post(
            "/add_pet",
            data=dict(
                name="Ace",
                date_of_birth="2001-01-01",
                species="canine",
                breed="This is a really long name for a dog breed",
                sex="M",
                color_and_identifying_marks="Black with brown patches",
            ),
            follow_redirects=True,
        )
        self.assertEqual(response.status_code, 200)
        self.assertTrue("Breed must be between 5 to 25 characters in length" in
                        response.get_data(as_text=True))
        self.assertEqual(0, self.db_session.query(Pet).count())
Ejemplo n.º 15
0
    def test_add_schedule_type(self):
        """Test add schedule type details """
        register_user_helper(self.client)
        login_user_helper(self.client)

        response = self.client.post(
            "/settings/account_details/schedule_types",
            data=dict(schedule_type_name="Grooming"),
            follow_redirects=True,
        )
        self.assertTrue("Saved Schedule Type" in response.get_data(
            as_text=True))

        response = self.client.get("/logout")
        self.assertEqual(response.status_code, 302)
Ejemplo n.º 16
0
    def test_add_repeat_cycle(self):
        """Test add repeat cycle details """
        register_user_helper(self.client)
        login_user_helper(self.client)

        response = self.client.post(
            "/settings/account_details/repeat_cycles",
            data=dict(repeat_cycle_name="Daily"),
            follow_redirects=True,
        )
        self.assertTrue("Saved Repeat Cycle" in response.get_data(
            as_text=True))

        response = self.client.get("/logout")
        self.assertEqual(response.status_code, 302)
Ejemplo n.º 17
0
    def test_delete_pet_schedule(self):
        """Test POST /delete_schedule"""
        register_user_helper(self.client)
        login_user_helper(self.client)

        pet = add_pet_helper(self.db_session, random_pet())
        pet_schedule = add_pet_schedule_helper(
            self.db_session, pet, random_schedule(self.db_session))

        self.assertEqual(1, self.db_session.query(Schedule).count())

        response = self.client.post("/delete_schedule/{}".format(
            pet_schedule.id),
                                    follow_redirects=True)
        self.assertEqual(response.status_code, 200)
        self.assertEqual(0, self.db_session.query(Schedule).count())
Ejemplo n.º 18
0
    def test_validate_pet_schedule_details(self):
        """Test valid details on creating a schedule /add_schedule/<int:pet_id>"""
        register_user_helper(self.client)
        login_user_helper(self.client)

        pet = add_pet_helper(self.db_session, random_pet())
        vaccine = (db_session.query(ScheduleType).filter(
            ScheduleType.name == "Vaccine").first())

        # Add Pet Schedule - No data entered
        response = self.client.post(
            "/add_schedule/{}".format(pet.id),
            data=dict(
                schedule_type=vaccine.id,
                date_of_next="",
                repeats="",
                repeat_cycle="",
            ),
            follow_redirects=True,
        )
        self.assertEqual(response.status_code, 200)
        self.assertTrue(
            "Please enter the Date (YYYY-MM-DD)" in response.get_data(
                as_text=True))
        self.assertTrue("Please select either Yes or No" in response.get_data(
            as_text=True))

        # Add schedule, with a date in the past
        response = self.client.post(
            "/add_schedule/{}".format(pet.id),
            data=dict(
                schedule_type=vaccine.id,
                date_of_next="2001-02-01",
                repeats="",
                repeat_cycle="",
            ),
            follow_redirects=True,
        )
        self.assertEqual(response.status_code, 200)
        self.assertTrue("Please enter a date greater than today {}".format(
            date.today()) in response.get_data(as_text=True))
        self.assertTrue("Please select either Yes or No" in response.get_data(
            as_text=True))

        response = self.client.get("/logout")
        self.assertEqual(response.status_code, 302)
Ejemplo n.º 19
0
    def test_register_user(self):
        """Test POST /register"""
        response = register_user_helper(self.client)
        self.assertEqual(response.status_code, 200)

        self.assertTrue("Login" in response.get_data(as_text=True))
        self.assertTrue("Thanks for registering" in response.get_data(
            as_text=True))
        self.assertEqual(1, self.db_session.query(User).count())
Ejemplo n.º 20
0
    def test_add_pets(self):
        """Test POST /add_pet"""
        register_user_helper(self.client)
        login_user_helper(self.client)

        response = self.client.post(
            "/add_pet",
            data=dict(
                name="Lewis",
                date_of_birth="2019-01-01",
                species="canine",
                breed="Mastiff",
                sex="M",
                color_and_identifying_marks="Black with brown spots",
            ),
            follow_redirects=True,
        )
        self.assertEqual(response.status_code, 200)
        self.assertEqual(1, self.db_session.query(Pet).count())
Ejemplo n.º 21
0
    def test_login(self):
        """Test login POST /"""
        response = register_user_helper(self.client)
        self.assertEqual(response.status_code, 200)

        response = self.client.post(
            "/",
            data=dict(username="******", password="******"),
            follow_redirects=True,
        )
        self.assertEqual(response.status_code, 200)
Ejemplo n.º 22
0
    def test_add_new_pet_schedule_no_repeat_cycle(self):
        """Test POST /add_schedule/<int:pet_id> without a repeat_cycle"""
        register_user_helper(self.client)
        login_user_helper(self.client)

        pet = add_pet_helper(self.db_session, random_pet())
        frontline = (db_session.query(ScheduleType).filter(
            ScheduleType.name == "Frontline").first())

        response = self.client.post(
            "/add_schedule/{}".format(pet.id),
            data=dict(
                schedule_type=frontline.id,
                date_of_next=date.today() + timedelta(days=2),
                repeats="NO",
                repeat_cycle=None,
            ),
            follow_redirects=True,
        )
        self.assertEqual(response.status_code, 200)
        self.assertEqual(1, self.db_session.query(Schedule).count())
Ejemplo n.º 23
0
    def test_add_new_pet_schedule(self):
        """Test POST /add_schedule/<int:pet_id>"""
        register_user_helper(self.client)
        login_user_helper(self.client)

        pet = add_pet_helper(self.db_session, random_pet())
        vaccine = (db_session.query(ScheduleType).filter(
            ScheduleType.name == "Vaccine").first())
        yearly = (db_session.query(RepeatCycle).filter(
            RepeatCycle.name == "Yearly").first())
        response = self.client.post(
            "/add_schedule/{}".format(pet.id),
            data=dict(
                schedule_type=vaccine.id,
                date_of_next=date.today() + timedelta(days=1),
                repeats="YES",
                repeat_cycle=yearly.id,
            ),
            follow_redirects=True,
        )
        self.assertEqual(response.status_code, 200)
        self.assertEqual(1, self.db_session.query(Schedule).count())
Ejemplo n.º 24
0
    def test_login_invalid_username_or_password(self):
        """Test login POST / fails if wrong username or password"""
        response = register_user_helper(self.client)
        self.assertEqual(response.status_code, 200)

        response = self.client.post("/",
                                    data=dict(username="******",
                                              password="******"))
        self.assertEqual(response.status_code, 200)

        self.assertTrue(
            "Sorry, username or password was incorrect" in response.get_data(
                as_text=True))
Ejemplo n.º 25
0
    def test_pets_validate_sex(self):
        """Test sex validation"""
        register_user_helper(self.client)
        login_user_helper(self.client)

        response = self.client.post(
            "/add_pet",
            data=dict(
                name="Ace",
                date_of_birth="2001-01-01",
                species="canine",
                breed="German Shepherd",
                sex="",
                color_and_identifying_marks="Black with brown patches",
            ),
            follow_redirects=True,
        )
        self.assertEqual(response.status_code, 200)
        self.assertTrue("Please provide pet sex details" in response.get_data(
            as_text=True))
        self.assertEqual(0, self.db_session.query(Pet).count())

        response = self.client.post(
            "/add_pet",
            data=dict(
                name="Ace",
                date_of_birth="2001-01-01",
                species="canine",
                breed="G",
                sex="Male",
                color_and_identifying_marks="Black with brown patches",
            ),
            follow_redirects=True,
        )
        self.assertEqual(response.status_code, 200)
        self.assertTrue("Enter M or F for sex" in response.get_data(
            as_text=True))
        self.assertEqual(0, self.db_session.query(Pet).count())
Ejemplo n.º 26
0
    def test_validate_pet_details_on_edit(self):
        """Test valid pet details on edit /edit_pet/<int:pet_id>"""
        register_user_helper(self.client)
        login_user_helper(self.client)

        # No pets
        response = self.client.get("/")
        self.assertEqual(response.status_code, 200)
        self.assertTrue("No pets found." in response.get_data(as_text=True))

        # Add pet
        pet = add_pet_helper(self.db_session, random_pet())

        # Edit Pet
        response = self.client.get("/edit_pet/{}".format(pet.id))
        self.assertEqual(response.status_code, 200)
        self.assertTrue('value="{}"'.format(pet.name) in response.get_data(
            as_text=True))
        self.assertTrue('value="{}"'.format(pet.species) in response.get_data(
            as_text=True))
        self.assertTrue('value="{}"'.format(pet.breed) in response.get_data(
            as_text=True))

        response = self.client.post(
            "/edit_pet/{}".format(pet.id),
            data=dict(name="S", species="c", breed="r"),
            follow_redirects=True,
        )
        self.assertTrue("Name must be between 2 to 25 characters in length" in
                        response.get_data(as_text=True))
        self.assertTrue("Breed must be between 5 to 25 characters in length" in
                        response.get_data(as_text=True))
        self.assertTrue("Species must be between 4 to 10 characters in length"
                        in response.get_data(as_text=True))

        response = self.client.get("/logout")
        self.assertEqual(response.status_code, 302)
Ejemplo n.º 27
0
    def test_edit_pets(self):
        """Test GET, POST /edit_pet/<int:pet_id>"""
        register_user_helper(self.client)
        login_user_helper(self.client)

        response = self.client.get("/")
        self.assertEqual(response.status_code, 200)
        self.assertTrue("No pets found." in response.get_data(as_text=True))

        pet = add_pet_helper(self.db_session, random_pet())

        # Edit Pet
        response = self.client.get("/edit_pet/{}".format(pet.id))
        self.assertEqual(response.status_code, 200)
        self.assertTrue('value="{}"'.format(pet.name) in response.get_data(
            as_text=True))
        self.assertTrue('value="{}"'.format(pet.species) in response.get_data(
            as_text=True))
        self.assertTrue('value="{}"'.format(pet.breed) in response.get_data(
            as_text=True))

        response = self.client.post(
            "/edit_pet/{}".format(pet.id),
            data=dict(name="Sykes",
                      species="canine",
                      breed="russian grey",
                      sex="m"),
            follow_redirects=True,
        )
        self.assertTrue(">Sykes</a>" in response.get_data(as_text=True))
        self.assertTrue("<td>Canine</td>" in response.get_data(as_text=True))
        self.assertTrue("<td>Russian Grey</td>" in response.get_data(
            as_text=True))

        response = self.client.get("/logout")
        self.assertEqual(response.status_code, 302)
Ejemplo n.º 28
0
    def test_update_pet_photo(self):
        """Test updating a pet photo"""
        # https://github.com/boto/boto3/issues/454
        # https://github.com/psf/requests/issues/3912
        warnings.simplefilter("ignore", ResourceWarning)
        register_user_helper(self.client)
        login_user_helper(self.client)

        pet = add_pet_helper(self.db_session, random_pet())
        test_image = os.path.join("./petsrus/tests/assets/2020155847.jpg")
        response = self.client.post(
            "/update_pet_photo/{}".format(pet.id),
            data={"photo": (
                test_image,
                "new_image.png",
            )},
            content_type="multipart/form-data",
            follow_redirects=True,
        )
        self.assertIn(
            "Changed Pet Photo",
            response.get_data(as_text=True),
        )
        self.assertEqual(response.status_code, 200)