def test_get__favorites(self):
        user_db = self.create_user()
        item_db = self.create_item()

        Favorites.create(
            uuid=uuid.uuid4(),
            user=user_db,
            item=item_db
        )

        resp = self.open_with_auth(
            '/favorites/', 'get', user_db.email, "p4ssw0rd", data=None)

        assert resp.status_code == OK
        data = json.loads(resp.data.decode())
        assert len(data) == 1
        assert user_db.favorite_items() == data
    def test_delete__failed_item_not_found(self):
        user_db = self.create_user()
        item_db = self.create_item()

        Favorites.create(
            uuid=uuid.uuid4(),
            user=User.get(User.uuid == user_db.uuid),
            item=Item.get(Item.uuid == item_db.uuid),
        )

        resp = self.open_with_auth(
            '/favorites/{}'.format(uuid.uuid4()), 'delete', user_db.email, "p4ssw0rd", data=None)

        assert Favorites.count() == 1
        assert Favorites.item == item_db.uuid
        assert resp.status_code == NOT_FOUND
        data = json.loads(resp.data.decode())
        assert not data
    def test_delete__failed_user_has_no_favorite_items(self):
        user_db_1 = self.create_user(email="*****@*****.**")
        user_db_2 = self.create_user(email="*****@*****.**")
        item_db = self.create_item()

        Favorites.create(
            uuid=uuid.uuid4(),
            user=User.get(User.uuid == user_db_2.uuid),
            item=Item.get(Item.uuid == item_db.uuid),
        )

        resp = self.open_with_auth(
            '/favorites/{}'.format(item_db.uuid), 'delete', user_db_1.email, "p4ssw0rd", data=None)

        assert Favorites.count() == 1
        assert Favorites.item == item_db
        assert resp.status_code == NOT_FOUND
        data = json.loads(resp.data.decode())
        assert not data
    def test_delete__favorite_success(self):
        user_db = self.create_user()
        item_db_1 = self.create_item()
        item_db_2 = self.create_item()

        Favorites.create(
            uuid=uuid.uuid4(),
            user=User.get(User.uuid == user_db.uuid),
            item=Item.get(Item.uuid == item_db_1.uuid),
        )

        Favorites.create(
            uuid=uuid.uuid4(),
            user=User.get(User.uuid == user_db.uuid),
            item=Item.get(Item.uuid == item_db_2.uuid),
        )

        resp = self.open_with_auth(
            '/favorites/{}'.format(item_db_1.uuid), 'delete', user_db.email, "p4ssw0rd", data=None)
        assert Favorites.count() == 1
        assert Favorites.item == item_db_2
        assert resp.status_code == NO_CONTENT