def __init__(self, read_client, read_book): self.connection = sqlite3.connect('library.db') self.__create_database() ClientRepository.__init__(self) self.__read_client = read_client self.__write_client = read_book self.set_next_client_id()
def setUp(self): self.action_repository = ActionRepository() self.book_repository = BookRepository() self.client_repository = ClientRepository() self.rental_repository = RentalRepository() self.action_service = ActionService(self.action_repository, self.book_repository, self.client_repository, self.rental_repository) self.book_validator = BookValidator() self.client_validator = ClientValidator() self.rental_validator = RentalValidator() self.rental_service = RentalService(self.action_service, self.book_repository, self.client_repository, self.rental_repository, self.book_validator, self.client_validator, self.rental_validator) client = Client(1, "Name1") self.client_repository.add_client(client) client = Client(2, "Name2") self.client_repository.add_client(client) book = Book(1, "Title1", "Author1") self.book_repository.add_book(book) book = Book(2, "Title2", "Author2") self.book_repository.add_book(book) self.rental_service.add_rental(1, 1) assert (len(self.rental_repository.get_all_rentals()) == 1)
def setUp(self): self.action_repository = ActionRepository() self.book_repository = BookRepository() self.client_repository = ClientRepository() self.rental_repository = RentalRepository() self.action_service = ActionService(self.action_repository, self.book_repository, self.client_repository, self.rental_repository) self.client_validator = ClientValidator() self.client_service = ClientService(self.action_service, self.client_repository, self.client_validator) self.client_service.add_client("Name") assert (len(self.client_repository.get_all_clients()) == 1)
def setUp(self): self.book_repository = BookRepository() self.client_repository = ClientRepository() self.rental_repository = RentalRepository() self.action_repository = ActionRepository() self.action_service = ActionService(self.action_repository, self.book_repository, self.client_repository, self.rental_repository) self.book_validator = BookValidator() self.book_service = BookService(self.action_service, self.book_repository, self.book_validator) self.client_validator = ClientValidator() self.rental_validator = RentalValidator() self.client_service = ClientService(self.action_service, self.client_repository, self.client_validator) self.rental_service = RentalService(self.action_service, self.book_repository, self.client_repository, self.rental_repository, self.book_validator, self.client_validator, self.rental_validator)
class PopulateRepositoriesTest(unittest.TestCase): def setUp(self): self.book_repository = BookRepository() self.client_repository = ClientRepository() self.rental_repository = RentalRepository() self.action_repository = ActionRepository() self.action_service = ActionService(self.action_repository, self.book_repository, self.client_repository, self.rental_repository) self.book_validator = BookValidator() self.book_service = BookService(self.action_service, self.book_repository, self.book_validator) self.client_validator = ClientValidator() self.rental_validator = RentalValidator() self.client_service = ClientService(self.action_service, self.client_repository, self.client_validator) self.rental_service = RentalService(self.action_service, self.book_repository, self.client_repository, self.rental_repository, self.book_validator, self.client_validator, self.rental_validator) def test_populate_book_repository(self): populate_book_repository(self.book_service) assert len(self.book_repository.get_all_books()) > 0 def test_populate_client_repository(self): populate_client_repository(self.client_service) assert len(self.client_repository.get_all_clients()) > 0 def test_populate_rental_repository(self): self.test_populate_book_repository() self.test_populate_client_repository() populate_rental_repository(self.rental_service) assert len(self.rental_repository.get_all_rentals()) > 0
def setUp(self): self.action_repository = ActionRepository() self.book_repository = BookRepository() self.client_repository = ClientRepository() self.rental_repository = RentalRepository() self.action_service = ActionService(self.action_repository, self.book_repository, self.client_repository, self.rental_repository) self.book_validator = BookValidator() self.book_service = BookService(self.action_service, self.book_repository, self.book_validator) self.book_service.add_book("Title", "Author") assert (len(self.book_repository.get_all_books()) == 1)
def configure_repositories(self): if self.repository_type == "inmemory": self.book_repository = BookRepository() self.client_repository = ClientRepository() self.rental_repository = RentalRepository() elif self.repository_type == "textfiles": self.book_repository = BookTextRepository(self.book_repository, Book.string_read_book, Book.string_write_book) self.client_repository = ClientTextRepository( self.client_repository, Client.read_client, Client.write_client) self.rental_repository = RentalTextRepository( self.rental_repository, Rental.string_read_rental, Rental.string_write_rental) elif self.repository_type == "binaryfiles": self.book_repository = BookBinaryRepository(self.book_repository) self.client_repository = ClientBinaryRepository( self.client_repository) self.rental_repository = RentalBinaryRepository( self.rental_repository) elif self.repository_type == "jsonfiles": self.book_repository = BookJsonRepository(self.book_repository, Book.json_read_book, Book.json_write_book) self.client_repository = ClientJsonRepository( self.client_repository, Client.json_read_client, Client.json_write_client) self.rental_repository = RentalJsonRepository( self.rental_repository, Rental.json_read_rental, Rental.json_write_rental) elif self.repository_type == "database": self.book_repository = BookDatabaseRepository( Book.read_book_database, Book.write_book_database) self.client_repository = ClientDatabaseRepository( Client.read_client_database, Client.write_client_database) self.rental_repository = RentalDatabaseRepository( Rental.read_rental_database, Rental.write_rental_database) self.action_repository = ActionRepository()
def add_client(self, client): self.__read_all_from_file() ClientRepository.add_client(self, client) self.__write_all_to_file()
def __init__(self, filename): ClientRepository.__init__(self) self.__filename = filename self.set_next_client_id()
def update_client(self, index, book): self.__read_all_from_database() ClientRepository.update_client(self, index, book) self.__update_to_database(index, book)
def remove_client_by_index(self, index): self.__read_all_from_database() client = self.get_all_clients()[index] ClientRepository.remove_client_by_index(self, index) self.__remove_from_database(client.id)
def setUp(self): self.client_repository = ClientRepository() client = Client(1, "Name1") self.client_repository.add_client(client) client = Client(2, "Name2") self.client_repository.add_client(client)
def get_all_clients(self): self.__read_all_from_file() return ClientRepository.get_all_clients(self)
class RentalServiceTest(unittest.TestCase): def setUp(self): self.action_repository = ActionRepository() self.book_repository = BookRepository() self.client_repository = ClientRepository() self.rental_repository = RentalRepository() self.action_service = ActionService(self.action_repository, self.book_repository, self.client_repository, self.rental_repository) self.book_validator = BookValidator() self.client_validator = ClientValidator() self.rental_validator = RentalValidator() self.rental_service = RentalService(self.action_service, self.book_repository, self.client_repository, self.rental_repository, self.book_validator, self.client_validator, self.rental_validator) client = Client(1, "Name1") self.client_repository.add_client(client) client = Client(2, "Name2") self.client_repository.add_client(client) book = Book(1, "Title1", "Author1") self.book_repository.add_book(book) book = Book(2, "Title2", "Author2") self.book_repository.add_book(book) self.rental_service.add_rental(1, 1) assert (len(self.rental_repository.get_all_rentals()) == 1) def test_rental_service_add_rental(self): self.rental_service.add_rental(2, 2) assert (len(self.rental_repository.get_all_rentals()) == 2) self.assertRaises(RepoError, self.rental_service.add_rental, 1, 1) self.assertRaises(RepoError, self.rental_service.add_rental, 1, 5) self.assertRaises(RepoError, self.rental_service.add_rental, 5, 1) self.action_service.undo() assert (len(self.rental_repository.get_all_rentals()) == 1) self.action_service.redo() assert (len(self.rental_repository.get_all_rentals()) == 2) def test_rental_service_return_rental_by_id(self): self.rental_service.return_rental_by_id(1) assert (len(self.rental_repository.get_all_rentals()) == 1) assert self.rental_repository.get_all_rentals()[-1].returned_date == date.today() self.assertRaises(ValidError, self.rental_service.return_rental_by_id, "k") self.assertRaises(RepoError, self.rental_service.return_rental_by_id, 5) self.action_service.undo() assert self.rental_repository.get_all_rentals()[-1].returned_date is None self.action_service.redo() assert self.rental_repository.get_all_rentals()[-1].returned_date == date.today() def test_rental_service_return_rental_by_book_id(self): self.rental_service.return_rental_by_book_id(1) assert (len(self.rental_repository.get_all_rentals()) == 1) assert self.rental_repository.get_all_rentals()[-1].returned_date == date.today() self.assertRaises(RepoError, self.rental_service.return_rental_by_book_id, 5) self.assertRaises(RepoError, self.rental_service.return_rental_by_book_id, 1) self.action_service.undo() assert self.rental_repository.get_all_rentals()[-1].returned_date is None self.action_service.redo() assert self.rental_repository.get_all_rentals()[-1].returned_date == date.today() def test_rental_service_remove_rental_by_book_id(self): assert (len(self.rental_repository.get_all_rentals()) == 1) self.rental_service.remove_rental_by_book_id(1) assert (len(self.rental_repository.get_all_rentals()) == 0) self.action_service.undo() assert (len(self.rental_repository.get_all_rentals()) == 0) self.action_service.redo() def test_rental_service_remove_rental_by_client_id(self): self.rental_service.add_rental(2, 1) assert (len(self.rental_repository.get_all_rentals()) == 2) self.rental_service.remove_rental_by_client_id(1) assert (len(self.rental_repository.get_all_rentals()) == 0) assert self.rental_service.remove_rental_by_client_id(1) is None self.action_service.undo() assert (len(self.rental_repository.get_all_rentals()) == 1) self.action_service.redo() assert (len(self.rental_repository.get_all_rentals()) == 0) def test_rental_service_get_client_active_rentals(self): self.rental_service.add_rental(2, 1) assert (len(self.rental_repository.get_all_rentals()) == 2) rentals_list = self.rental_service.get_client_active_rentals(1) assert (len(rentals_list) == 2) def test_rental_service_get_book_rental_status(self): assert self.rental_service.get_book_rental_status(1) == 1 assert self.rental_service.get_book_rental_status(5) is None def test_rental_service_get_statistics_for_most_active_clients(self): self.rental_service.add_rental(2, 1) assert (len(self.rental_repository.get_all_rentals()) == 2) rentals_list = self.rental_service.get_statistics_for_most_active_clients() assert rentals_list[-1]["ID"] == 1 def test_rental_service_get_statistics_for_most_rented_books(self): self.rental_service.return_rental_by_id(1) self.rental_service.add_rental(1, 1) self.rental_service.add_rental(2, 2) assert (len(self.rental_repository.get_all_rentals()) == 3) rentals_list = self.rental_service.get_statistics_for_most_rented_books() most_rented_book = rentals_list[0] assert most_rented_book["Title"] == "Title1" assert most_rented_book["Author"] == "Author1" assert most_rented_book["Rental amount"] == 2 def test_rental_service_get_book_by_book_id(self): book = self.rental_service.get_book_by_book_id(1) assert isinstance(book, Book) assert book.id == 1 assert self.rental_service.get_book_by_book_id(10) is None def test_rental_service_get_most_rented_author(self): self.rental_service.add_rental(2, 2) self.rental_service.return_rental_by_id(1) self.rental_service.add_rental(1, 1) book = Book(5, "New Title Book", "Author1") self.book_repository.add_book(book) self.rental_service.add_rental(5, 1) author = self.rental_service.get_most_rented_author() assert author["Name"] == "Author1" books_list = self.rental_service.get_list_of_books_of_most_rented_author(author) assert len(books_list) == 2 def tearDown(self): del self.book_repository del self.client_repository del self.rental_repository del self.book_validator del self.client_validator del self.rental_validator del self.rental_service
class ClientServiceTest(unittest.TestCase): def setUp(self): self.action_repository = ActionRepository() self.book_repository = BookRepository() self.client_repository = ClientRepository() self.rental_repository = RentalRepository() self.action_service = ActionService(self.action_repository, self.book_repository, self.client_repository, self.rental_repository) self.client_validator = ClientValidator() self.client_service = ClientService(self.action_service, self.client_repository, self.client_validator) self.client_service.add_client("Name") assert (len(self.client_repository.get_all_clients()) == 1) def test_client_service_add_client(self): self.client_service.add_client("Name2") assert (len(self.client_repository.get_all_clients()) == 2) self.action_service.undo() assert (len(self.client_repository.get_all_clients()) == 1) self.action_service.redo() assert (len(self.client_repository.get_all_clients()) == 2) def test_client_service_remove_client_by_client_id(self): self.client_service.remove_client_by_client_id(1) assert (len(self.client_repository.get_all_clients()) == 0) self.assertRaises(RepoError, self.client_service.remove_client_by_client_id, 5) self.action_service.undo() assert (len(self.client_repository.get_all_clients()) == 1) self.action_service.redo() assert (len(self.client_repository.get_all_clients()) == 0) def test_client_service_update_client_by_client_id(self): self.client_service.update_client_by_client_id(1, "New Name") client = self.client_repository.get_all_clients()[-1] assert client.id == 1 assert client.name == "New Name" self.action_service.undo() client = self.client_repository.get_all_clients()[-1] assert client.id == 1 assert client.name == "Name" self.assertRaises(RepoError, self.client_service.update_client_by_client_id, 5, "New") self.action_service.redo() client = self.client_repository.get_all_clients()[-1] assert client.id == 1 assert client.name == "New Name" def test_client_service_update_client_by_name(self): self.client_service.update_client_by_name("Name", "New Name") client = self.client_repository.get_all_clients()[-1] assert client.id == 1 assert client.name == "New Name" self.assertRaises(RepoError, self.client_service.update_client_by_name, "5", "New") def test_client_service_find_client_by_name(self): index, client = self.client_service.find_client_by_name("Name") assert index == 0 assert isinstance(client, Client) index, client = self.client_service.find_client_by_name("No Name") assert index is None def test_client_service_find_all_clients_sharing_name_value(self): self.client_service.add_client("Nova Scotia") client_list = self.client_service.find_all_clients_sharing_name_value("n") assert len(client_list) == 2 def test_client_service_find_all_clients_sharing_id_value(self): self.client_service.add_client("Nova Scotia") client_list = self.client_service.find_all_clients_sharing_id_value(1) assert len(client_list) == 1 def tearDown(self): del self.client_repository del self.client_validator del self.client_service
def remove_client_by_index(self, index): self.__read_all_from_file() ClientRepository.remove_client_by_index(self, index) self.__write_all_to_file()
def update_client(self, index, new_client): self.__read_all_from_file() ClientRepository.update_client(self, index, new_client) self.__write_all_to_file()
def add_client(self, client): self.__read_all_from_database() ClientRepository.add_client(self, client) self.__add_to_database(client)
def __init__(self, filename, read_client, write_client): ClientRepository.__init__(self) self.__filename = filename self.__read_client = read_client self.__write_client = write_client self.set_next_client_id()
class ClientRepositoryTest(unittest.TestCase): def setUp(self): self.client_repository = ClientRepository() client = Client(1, "Name1") self.client_repository.add_client(client) client = Client(2, "Name2") self.client_repository.add_client(client) def test_client_repository_add_client(self): client = Client(3, "Name3") self.client_repository.add_client(client) client = self.client_repository.get_all_clients() client = client[-1] assert client.id == 3 assert client.name == "Name3" def test_client_repository_remove_client(self): clients_list = self.client_repository.get_all_clients() client = clients_list[-1] assert client.id == 2 self.client_repository.remove_client_by_index(1) client = clients_list[-1] assert client.id == 1 def test_client_repository_update_client(self): clients_list = self.client_repository.get_all_clients() client = clients_list[-1] assert client.id == 2 assert client.name == "Name2" client = Client(10, "New Name") self.client_repository.update_client(1, client) clients_list = self.client_repository.get_all_clients() client = clients_list[-1] assert client.id == 10 assert client.name == "New Name" def test_client_repository_get_next_client_id(self): assert self.client_repository.get_next_client_id() == 1 self.client_repository.increment_last_client_id() assert self.client_repository.get_next_client_id() == 3 def test_client_repository_get_all_clients(self): clients_list = self.client_repository.get_all_clients() assert len(clients_list) == 2 def tearDown(self): del self.client_repository