def test_create_rental(self):
        r = Rental(1, 2, "2019-11-12", "2019-11-29", "2019-11-28")
        self.assertEqual(r.id, "1-2")
        self.assertEqual(r.returned_date, "2019-11-28")
        self.assertEqual(r.movie_id, 2)
        self.assertEqual(r.client_id, 1)
        self.assertEqual(r.due_date, "2019-11-29")
        self.assertEqual(r.rented_date, "2019-11-12")
        date = "2019-11-20"
        with self.assertRaises(ValueError):
            Rv.validate_due_date("2019-11-29", date)

        r.client_id = 2
        self.assertEqual(r.client_id, 2)

        r.movie_id = 1
        self.assertEqual(r.movie_id, 1)

        r.rented_date = "2018-01-01"
        self.assertEqual(r.rented_date, "2018-01-01")

        r.due_date = datetime.strptime("2018-01-25", '%Y-%m-%d').date()
        self.assertEqual(str(r.due_date), "2018-01-25")

        r.returned_date = datetime.strptime("2018-01-30", '%Y-%m-%d').date()
        self.assertEqual(str(r.returned_date), "2018-01-30")

        self.assertEqual(r.len_late(), 5)

        r1 = Rental(3, 4, datetime.strptime("2019-11-10", '%Y-%m-%d').date(),
                    datetime.strptime("2019-11-25", '%Y-%m-%d').date(), None)
        self.assertEqual(r1.len_late(), 9)
def test_rental_store_repo():
    rt_val = RentalValidator()
    rt_rep = RentalRepository(rt_val)
    rt1 = Rental(1, 2)
    rt2 = Rental(2, 3)
    rt_rep.store(rt1)
    assert len(rt_rep.get_all_rents()) == 1
    rt_rep.store(rt2)
    assert len(rt_rep.get_all_rents()) == 2
    def test_add_rentals(self):
        repoRentals = Repository()
        repoClient = Repository()
        repoMovie = Repository()
        undo_service = UndoService()
        serviceC = ClientService(repoClient, undo_service)
        serviceM = MovieService(repoMovie,undo_service)
        serviceC.add_client(2, "Ana",False)
        serviceC.add_client(5, "Ion", False)
        serviceC.add_client(1, "Paula",False)
        serviceM.add_movie(6, "Frozen", "Ice and songs", "Animation", False)
        serviceM.add_movie(2, "Titanic", "a", "Romance", False)

        service = RentalService(repoRentals, repoClient, repoMovie, undo_service)
        service.rent_a_movie(2, 6, "2019-05-15", "2019-05-26", None)
        service.rent_a_movie(5, 2, "2019-05-15", "2019-05-26", "2019-05-25")

    # Rent a movie
        with self.assertRaises(IdError):  # client does not exist
            service.rent_a_movie(3, 6, "2019-05-20", "2019-06-07", None)

        with self.assertRaises(ServiceError):   # client eligible
            service.rent_a_movie(2, 2, "2019-05-29", "2019-06-15", None)

        with self.assertRaises(ServiceError):       # movie not available
            service.rent_a_movie(5, 6, "2019-05-20", "2019-06-07", None)

        with self.assertRaises(ServiceError):       # rental already added
            service.rent_a_movie(5, 2, "2019-05-15", "2019-05-26", "2019-05-25")

        with self.assertRaises(ValueError):     # invalid due date
            Rv.validate_due_date("2019-11-26", "2019-10-02")

    # Return a movie
        with self.assertRaises(IdError):      # client does not exist
            service.return_a_movie(3, 6, "2019-05-26")

        with self.assertRaises(IdError):      # movie does not exist
            service.return_a_movie(2, 1, "2019-05-26")

        service.return_a_movie(2, 6, "2019-05-25") # return a movie
        self.assertEqual(len(serviceM.list_movies()), 2)       # 2 valid rentals
    def setUp(self):
        self._book_validator = BookValidator()
        self._book_repository = Repository({})
        self._book_service = BookService(self._book_repository, self._book_validator)
        self._client_validator = ClientValidator()
        self._client_repository = Repository({})
        self._client_service = ClientService(self._client_repository, self._client_validator)
        self._rental_validator = RentalValidator()
        self._rental_repository = Repository({})
        self._rental_service = RentalService(self._rental_repository, self._rental_validator, self._book_repository,self._client_repository)

        self._book_service.add_book('1', 'The Book', 'King Arthur')
        self._book_service.add_book('2', 'The Prize', 'Im Somebody')
        self._book_service.add_book('3', 'Im Out Of Ideeas', 'Some random dude')

        self._client_service.add_client('1', 'Raiu Madalin')
        self._client_service.add_client('2', 'Ristei Elena')
        self._client_service.add_client('3', 'Another random dude')

        self._rental_service.add_rental('1', '2', '3', '10/10/2019')
        self._rental_service.add_rental('2', '1', '2', '02/03/2019')
        try:
            self._rental_service.add_rental('2', '1', '2', '02/03/2019')
        except RentalValidatorException as ve:
            pass
        except RepositoryException:
            pass
        self._rental_service.set_return_date('2', '02/03/2020')
        self._rental_service.add_rental('3', '1', '3', '02/03/2019')
        try:
            self._rental_service.add_rental('4', '3', '1223', '02/03/2019')
        except RentalValidatorException:
            pass
        try:
            self._rental_service.add_rental('134', '444', '1223', '02/03/2019')

        except RentalValidatorException:
            pass
        try:
            self._rental_service.add_rental('134', '3', '2', '02/03/2019')
            self._rental_service.add_rental('134', '3', '2', '02/03/2019')
        except RentalValidatorException:
            pass
        except RepositoryException:
            pass

        try:
            self._rental_service.add_rental('134', '3', '2', '0d/s3/2019')

        except RentalValidatorException:
            pass
 def setUp(self):
     """
     Prepare tests
     """
     self.rental_repository = Repository({})
     self.validator2 = RentalValidator()
     self.book_repository = Repository({})
     self.validator = BookValidator()
     self.client_repository = Repository({})
     self.validatorc = ClientValidator()
     self.undo_service = UndoService()
     self.redo_service = RedoService()
     self.book_service = BookService(self.book_repository, self.validator)
     self.client_service = ClientService(self.client_repository, self.validatorc)
     self.rental_service = RentalService(self.rental_repository, self.validator2, self.book_repository,
                                         self.client_repository)
def test_rental_validator():
    rt = Rental("", "")
    rt2 = Rental(1, "")
    rt_val = RentalValidator()
    try:
        rt_val.validate(rt)
        assert False
    except ValidatorException as ex:
        assert len(ex.get_errs()) == 2

    try:
        rt_val.validate(rt2)
        assert False
    except ValidatorException as ex:
        assert len(ex.get_errs()) == 1
from repository.car_repository import CarRepository
from repository.client_file_repo import ClientFileRepository
from repository.client_repository import ClientRepository
from repository.rental_repository import RentalRepository
from services.car_service import CarService
from services.client_service import ClientService
from services.rental_service import RentalService
from ui.user_interface import UI

'''
The module where our application will start
'''

cl_val = ClientValidator()
car_val = CarValidator()
rt_val = RentalValidator()

#cl_rep = ClientRepository(cl_val)
cl_rep_file = ClientFileRepository("clients.txt")
#car_rep = CarRepository(car_val)
car_rep_file = CarFileRepository("cars.txt")
car_rep_file.remove_all()
rt_rep = RentalRepository(rt_val)


cl_serv = ClientService(cl_rep_file)
car_serv = CarService(car_rep_file)
rt_serv = RentalService(rt_rep, cl_rep_file, car_rep_file)


ui = UI(car_serv, cl_serv, rt_serv)
Exemple #8
0
from domain.validators import BookValidator, ClientValidator, RentalValidator
from services.BookService import BookService
from services.ClientService import ClientService
from services.RentalService import RentalService
from settings.settings import Settings

from ui.console import Console

if __name__ == '__main__':
    settings = Settings("../settings.properties")
    config = settings.get_the_settings()
    try:
        if config[0] == "inmemory":
            book_validator = BookValidator()
            client_validator = ClientValidator()
            rental_validator = RentalValidator()

            book_repository = Repository({})
            client_repository = Repository({})
            rental_repository = Repository({})

            book_service = BookService(book_repository, book_validator)
            client_service = ClientService(client_repository, client_validator)
            rental_service = RentalService(rental_repository, rental_validator, book_repository, client_repository)

            console = Console(book_service, client_service, rental_service)
            console.run_console()
        elif config[0] == "filerepository":
            book_validator = BookValidator()
            client_validator = ClientValidator()
            rental_validator = RentalValidator()