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)
Exemplo n.º 7
0
 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()
Exemplo n.º 8
0
 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)
Exemplo n.º 12
0
 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)
Exemplo n.º 13
0
 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
Exemplo n.º 16
0
 def remove_client_by_index(self, index):
     self.__read_all_from_file()
     ClientRepository.remove_client_by_index(self, index)
     self.__write_all_to_file()
Exemplo n.º 17
0
 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)
Exemplo n.º 19
0
 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()
Exemplo n.º 20
0
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