The before code has no tests, risking unnoticed bugs in CRUD operations. The after code adds unit tests for create, read, update, and delete methods on the Book entity, ensuring each operation works correctly and data remains consistent.
### Before: No CRUD tests
# No tests present
### After: CRUD tests for Book entity
import unittest
class Book:
def __init__(self, id, title):
self.id = id
self.title = title
class LibraryDB:
def __init__(self):
self.books = {}
def create_book(self, book):
self.books[book.id] = book
def read_book(self, book_id):
return self.books.get(book_id)
def update_book(self, book_id, title):
if book_id in self.books:
self.books[book_id].title = title
def delete_book(self, book_id):
if book_id in self.books:
del self.books[book_id]
class TestLibraryCRUD(unittest.TestCase):
def setUp(self):
self.db = LibraryDB()
self.book = Book(1, "Original Title")
self.db.create_book(self.book)
def test_create_book(self):
self.assertIn(1, self.db.books)
def test_read_book(self):
book = self.db.read_book(1)
self.assertEqual(book.title, "Original Title")
def test_update_book(self):
self.db.update_book(1, "New Title")
self.assertEqual(self.db.read_book(1).title, "New Title")
def test_delete_book(self):
self.db.delete_book(1)
self.assertIsNone(self.db.read_book(1))
if __name__ == '__main__':
unittest.main()