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"))
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())
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)
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)