def test_get_book_by_filter_no_filter(self): # Check response of get_book_by_filter if no filters are specified. [Should return all books] for i in range(3): db_util.add_book(self.get_book_json(i)) self.assertEqual(db_util.get_all_books(), db_util.get_books_by_filter())
def test_delete_exiting_book(self): # Check response when an existing book is deleted. book_data = self.get_book_data(0) book_dict = self.get_book_dict(book_data) added_book = db_util.add_book(book_dict) response = self.client.delete( url_for("api_blueprint.delete_book", book_id=added_book.id)) self.assertEqual(response.status_code, 200) data = response.get_data() self.assertIsNotNone(data) data = json.loads(data) self.assertEqual(added_book.book_name, data["book_name"]) self.assertEqual(added_book.author_name, data["author_name"]) self.assertEqual(added_book.comments, data["comments"]) # Check if the book has actually been deleted. response = self.client.delete( url_for("api_blueprint.get_book", book_id=added_book.id)) self.assertEqual(response.status_code, 404) # Add and delete multiple books just to be sure. books = [ db_util.add_book(self.get_book_dict(self.get_book_data(i))) for i in range(3) ] for i in range(3): response = self.client.delete( url_for("api_blueprint.delete_book", book_id=books[i].id)) self.assertEqual(response.status_code, 200) self.assertEqual(len(db_util.get_all_books()), (3 - i) - 1)
def test_delete_all_books(self): # Check response when all books are tried to be deleted. for i in range(3): db_util.add_book(self.get_book_dict(self.get_book_data(i))) response = self.client.delete("/api/books") self.assertEqual(response.status_code, 405)
def test_remove_book(self): org_book = db_util.add_book(self.get_book_json(0)) org_book_2 = db_util.add_book(self.get_book_json(1)) book = db_util.remove_book(org_book.id) self.assertTrue(book.book_name == org_book.book_name) self.assertTrue(book.author_name == org_book.author_name) self.assertTrue(book.comments == org_book.comments) self.assertTrue(len(db_util.get_all_books()) == 1) db_util.remove_book(org_book_2.id) self.assertTrue(len(db_util.get_all_books()) == 0)
def test_get_book_by_filter_author_name(self): # Check response of get_book_by_filter when the author's name is provided. for i in range(2): db_util.add_book(self.get_book_json(i)) required_book = self.get_book_json(0) books = db_util.get_books_by_filter( author_name=required_book["author_name"]) self.assertIsNotNone(books) self.assertEqual(len(books), 1) book = books[0] self.assertEqual(required_book["book_name"], book.book_name) self.assertEqual(required_book["author_name"], book.author_name) self.assertEqual(required_book["comments"], book.comments)
def test_bookname_unique_constraint(self): # Check the response when two books with same name are added to the DB. book_json = self.get_book_json(0) db_util.add_book(book_json) book_json["author"] = "somethingelse" book_json["comments"] = "some other comment." unique_constraint_raised = False try: db_util.add_book(book_json) except: unique_constraint_raised = True self.assertTrue(unique_constraint_raised)
def test_add_book(self): book_json = self.get_book_json(0) book = db_util.add_book(book_json) self.assertTrue(book is not None) self.assertTrue(book.book_name == book_json["book_name"]) self.assertTrue(book.author_name == book_json["author_name"]) self.assertTrue(book.comments == book_json["comments"])
def test_get_all_books(self): books = [] books.append(db_util.add_book(self.get_book_json(0))) all_books = db_util.get_all_books() self.assertTrue(all_books is not None) self.assertTrue(len(all_books) == 1) books.append(db_util.add_book(self.get_book_json(1))) all_books = db_util.get_all_books() self.assertTrue(len(all_books) == 2) books.append(db_util.add_book(self.get_book_json(2))) all_books = db_util.get_all_books() self.assertTrue(len(all_books) == 3) for i in range(3): self.assertTrue(books[i].book_name == all_books[i].book_name) self.assertTrue(books[i].author_name == all_books[i].author_name) self.assertTrue(books[i].comments == all_books[i].comments)
def test_get_book(self): book_from_get = db_util.get_book(-1) self.assertTrue(book_from_get is None) book_json = self.get_book_json(0) book = db_util.add_book(book_json) book_from_get = db_util.get_book(book.id) self.assertTrue(book_from_get is not None) self.assertTrue(book.book_name == book_from_get.book_name) self.assertTrue(book.author_name == book_from_get.author_name) self.assertTrue(book.comments == book_from_get.comments)
def test_update_book_authorname(self): book_json = self.get_book_json(0) # Modifying only the author name. modified_json = book_json.copy() modified_json["author_name"] = "New author name" org_book = db_util.add_book(book_json) updated_book = db_util.update_book(org_book.id, modified_json) self.assertTrue(book_json["book_name"] == updated_book.book_name) self.assertTrue(book_json["comments"] == updated_book.comments) self.assertTrue(book_json["author_name"] != updated_book.author_name)
def test_update_book_all(self): book_json = self.get_book_json(0) # Modifying all the attributes. modified_json = book_json.copy() modified_json["author_name"] = "New author name" modified_json["book_name"] = "New book name" modified_json["comments"] = "Updated comments." org_book = db_util.add_book(book_json) updated_book = db_util.update_book(org_book.id, modified_json) self.assertTrue(book_json["book_name"] != updated_book.book_name) self.assertTrue(book_json["comments"] != updated_book.comments) self.assertTrue(book_json["author_name"] != updated_book.author_name)
def test_get_book_that_exists(self): # Check response when a book that exists is requested. book_data = self.get_book_data(0) book_dict = self.get_book_dict(book_data) added_book = db_util.add_book(book_dict) response = self.client.get( url_for("api_blueprint.get_book", book_id=added_book.id)) self.assertEqual(response.status_code, 200) data = response.get_data() self.assertIsNotNone(data) data = json.loads(data) for key in ("book_name", "author_name", "comments", "id", "url"): self.assertIn(key, data) self.assertEqual(data["book_name"], added_book.book_name) self.assertEqual(data["author_name"], added_book.author_name) self.assertEqual(data["comments"], added_book.comments)
def test_get_all_books(self): # Check the response for get all books. books = [ db_util.add_book(self.get_book_dict(self.get_book_data(i))) for i in range(5) ] response = self.client.get(url_for("api_blueprint.get_all_books")) self.assertEqual(response.status_code, 200) data = response.get_data() self.assertIsNotNone(data) data = json.loads(data) for index, book_json in enumerate(data["books"]): book = json.loads(book_json) self.assertEqual(books[index].id, book["id"]) self.assertEqual(books[index].book_name, book["book_name"]) self.assertEqual(books[index].author_name, book["author_name"]) self.assertEqual(books[index].comments, book["comments"]) self.assertEqual(books[index].author_name, book["author_name"])