Beispiel #1
0
    def test_create_backlog_already_existing(self):
        user_id = 8
        book_id = 16
        self.session.add(models.Backlog(user_id=user_id, book_id=book_id))
        self.session.commit()

        variables = {"book_id": book_id}
        errors = self.graphql_request(
            self.backlog_mutation,
            variables,
            headers=self.get_headers_with_auth(user_id=user_id)).get("errors")
        self.assertTrue(errors)
        self.assertIn("Book already in", errors[0].get("message"))
Beispiel #2
0
    def test_delete_backlog_entry(self):
        # Add Backlog item and check its existence
        user_id = 2
        book_id = 4
        self.session.add(models.Backlog(user_id=user_id, book_id=book_id))
        self.session.commit()
        self.assertTrue(self.session.query(models.Backlog).all())

        # Delete backlog entry
        variables = {"book_id": book_id}
        self.graphql_request(self.delete_mutation, variables,
                             self.get_headers_with_auth(user_id=user_id))

        # Check it was deleted
        self.assertFalse(self.session.query(models.Backlog).all())
Beispiel #3
0
    def mutate(root, info, book_id):
        user_id = utils.validate_user_id(request, info.context["secret"])

        prev_backlog_entry = (types.Backlog.get_query(info).filter(
            models.Backlog.user_id == user_id).filter(
                models.Backlog.book_id == book_id).first())
        if prev_backlog_entry:
            raise ValueError("Book already in backlog")

        backlog_entry = models.Backlog(user_id=user_id, book_id=book_id)

        session = info.context["session"]
        session.add(backlog_entry)
        session.commit()

        return AddBacklogEntry(ok=True)
Beispiel #4
0
    def test_query_backlog(self):
        user_id = 8
        backlog_books = 10
        reviewed_books = 5
        for book_id in range(backlog_books):
            self.session.add(models.Backlog(user_id=user_id, book_id=book_id))
        for book_id in range(reviewed_books):
            self.session.add(models.Review(user_id=user_id, book_id=book_id))
        self.session.commit()

        query = "{ backlog { bookId } }"
        backlog_items = (self.graphql_request(
            query, headers=self.get_headers_with_auth(user_id=user_id)).get(
                "data", {}).get("backlog", []))

        self.assertEqual(len(backlog_items), backlog_books - reviewed_books)