def setUp(self):
     self.movieRepo = MovieRepo()
     self.movieRepo.addMovie(MovieDAO("Titanic", "lovely", "Romance"))
     self.movieRepo.addMovie(MovieDAO("Avatar", "lovely1", "Romance1"))
     self.movieRepo.addMovie(MovieDAO("TestMovie", "lovely1", "Romance1"))
     self.movieRepo.addMovie(MovieDAO("Titanic", "lovely", "Romance"))
     self.movieRepo.addMovie(MovieDAO("Avatar", "lovely1", "Romance1"))
     self.movieRepo.addMovie(MovieDAO("TestMovie", "lovely1", "Romance1"))
     self.clientRepo = ClientRepo()
     self.clientRepo.addClient(ClientDAO("dani"))
     self.clientRepo.addClient(ClientDAO("ancu"))
     self.clientRepo.addClient(ClientDAO("dani1"))
     self.clientRepo.addClient(ClientDAO("ancu1"))
     self.clientRepo.addClient(ClientDAO("dani2"))
     self.clientRepo.addClient(ClientDAO("ancu2"))
     self.rentalRepo = RentalRepo()
     self.rentalRepo.addRental(
         RentalDAO(0, 0, Date(5, 4, 2018), Date(7, 9, 2020), self.movieRepo,
                   self.clientRepo))
     self.rentalRepo.addRental(
         RentalDAO(1, 1, Date(5, 4, 2018), Date(7, 9, 2020), self.movieRepo,
                   self.clientRepo))
     self.printer = Printer()
     self.constants = Constants()
     self.rentalController = RentalController(self.rentalRepo)
Ejemplo n.º 2
0
 def setUp(self):
     self.movieRepo = MovieRepo()
     self.movieRepo.addMovie(MovieDAO("Titanic", "lovely", "Romance"))
     self.clientRepo = ClientRepo()
     self.clientRepo.addClient(ClientDAO("dani"))
     self.rental = RentalDAO(0, 0, Date(5, 4, 2018), Date(7, 9, 2020),
                             self.movieRepo, self.clientRepo)
Ejemplo n.º 3
0
 def test_getList(self):
     rental1 = RentalDAO(1, 2, Date(5, 4, 2018), Date(7, 9, 2020))
     rental2 = RentalDAO(1, 2, Date(5, 4, 2018), Date(7, 9, 2020))
     rental3 = RentalDAO(1, 2, Date(5, 4, 2018), Date(7, 9, 2020))
     self.rentalBinaryRepository.addRental(rental1)
     self.rentalBinaryRepository.addRental(rental2)
     self.rentalBinaryRepository.addRental(rental3)
     self.assertEqual(self.rentalBinaryRepository.getList(), [rental1, rental2, rental3])
 def test_hasClientWithId(self):
     rental1 = RentalDAO(1, 2, Date(5, 4, 2018), Date(7, 9, 2020))
     rental2 = RentalDAO(1, 2, Date(5, 4, 2018), Date(7, 9, 2020))
     rental3 = RentalDAO(1, 2, Date(5, 4, 2018), Date(7, 9, 2020))
     self.rentalFileRepository.addRental(rental1)
     self.rentalFileRepository.addRental(rental2)
     self.rentalFileRepository.addRental(rental3)
     self.assertEqual(self.rentalFileRepository.hasRentalWithId(1), True)
     self.assertEqual(self.rentalFileRepository.hasRentalWithId(4), False)
Ejemplo n.º 5
0
 def test_updateRental(self):
     self.rentalRepo.updateRentalWithId(0, RentalDAO(0, 0, Date(5, 4, 2018), Date(7, 9, 2021), self.movieRepo,
                                                     self.clientRepo))
     testRental1 = RentalDAO(0, 0, Date(5, 4, 2018), Date(7, 9, 2021), self.movieRepo, self.clientRepo)
     testRental1.setRentalId(0)
     testRental2 = RentalDAO(1, 1, Date(5, 4, 2018), Date(7, 9, 2020), self.movieRepo, self.clientRepo)
     testRental2.setRentalId(1)
     testRentalList = [testRental1, testRental2]
     self.assertEqual(self.rentalRepo.getList(), testRentalList)
Ejemplo n.º 6
0
 def test_addRental(self):
     self.rentalRepo.addRental(RentalDAO(1, 2, Date(5, 4, 2018), Date(7, 9, 2020), self.movieRepo, self.clientRepo))
     self.assertEqual((self.rentalRepo.getList()[0]).getId(), 0)
     self.assertEqual((self.rentalRepo.getList()[0]).getClientId(), 0)
     self.assertEqual((self.rentalRepo.getList()[0]).getMovieId(), 0)
     self.assertEqual((self.rentalRepo.getList()[0]).getRentedDate(), Date(5, 4, 2018))
     self.assertEqual((self.rentalRepo.getList()[0]).getDueDate(), Date(7, 9, 2020))
     self.assertEqual((self.rentalRepo.getList()[2]).getId(), 2)
     self.assertEqual((self.rentalRepo.getList()[2]).getMovieId(), 2)
     self.assertEqual((self.rentalRepo.getList()[2]).getClientId(), 1)
     self.assertEqual((self.rentalRepo.getList()[2]).getRentedDate(), Date(5, 4, 2018))
     self.assertEqual((self.rentalRepo.getList()[2]).getDueDate(), Date(7, 9, 2020))
Ejemplo n.º 7
0
 def test_updateRental(self):
     rental = RentalDAO(1, 2, Date(5, 4, 2018), Date(7, 9, 2020))
     self.rentalBinaryRepository.addRental(rental)
     self.rentalBinaryRepository.updateRentalWithId(0, RentalDAO(0, 0, Date(5, 4, 2018), Date(7, 9, 2021)))
     testRental1 = RentalDAO(0, 0, Date(5, 4, 2018), Date(7, 9, 2021))
     testRental1.setRentalId(0)
     self.assertEqual(self.rentalBinaryRepository.getList(), [testRental1])
Ejemplo n.º 8
0
 def test_init(self):
     self.assertEqual(self.rental.getMovieId(), 0)
     self.assertEqual(self.rental.getClientId(), 0)
     self.assertEqual(self.rental.getRentedDate(), Date(5, 4, 2018))
     self.assertEqual(self.rental.getDueDate(), Date(7, 9, 2020))
     self.assertRaises(TypeError, lambda: self.rental.getId(),
                       'default rental id not None')
     self.assertRaises(TypeError, lambda: self.rental.getReturnedDate(),
                       'default returned date not None')
     with self.assertRaises(ValueError):
         testRental = RentalDAO(0, "s", Date(22, 4,
                                             1995), Date(22, 4, 1996),
                                self.movieRepo, self.clientRepo)
     with self.assertRaises(ValueError):
         testRental = RentalDAO(0, -5, Date(22, 4, 1995), Date(22, 4, 1996),
                                self.movieRepo, self.clientRepo)
     with self.assertRaises(ValueError):
         testRental = RentalDAO([], 0, Date(22, 4, 1995), Date(22, 4, 1996),
                                self.movieRepo, self.clientRepo)
     with self.assertRaises(ValueError):
         testRental = RentalDAO(-99, 0, Date(22, 4,
                                             1995), Date(22, 4, 1996),
                                self.movieRepo, self.clientRepo)
     with self.assertRaises(ValueError):
         testRental = RentalDAO(0, 0, 9, Date(22, 4, 1996), self.movieRepo,
                                self.clientRepo)
     with self.assertRaises(ValueError):
         testRental = RentalDAO(0, 0, Date(22, 4, 1995), "date",
                                self.movieRepo, self.clientRepo)
     with self.assertRaises(DatesNotOrderedException):
         testRental = RentalDAO(0, 0, Date(22, 4, 1995), Date(22, 4, 1994),
                                self.movieRepo, self.clientRepo)
     with self.assertRaises(ObjectNotInCollectionException):
         testRental = RentalDAO(0, 1, Date(22, 4, 1995), Date(22, 4, 1996),
                                self.movieRepo, self.clientRepo)
     with self.assertRaises(ObjectNotInCollectionException):
         testRental = RentalDAO(1, 0, Date(22, 4, 1995), Date(22, 4, 1996),
                                self.movieRepo, self.clientRepo)
 def rentMovieByClientUntilDate(self, clientId, movieId, dueDate, movieRepo,
                                clientRepo):
     """
     Create a new rental between client and movie from today until due date
     """
     if dueDate.isBeforeDate(self.__constants.currentDay()):
         raise DatesNotOrderedException
     else:
         if self.__clientHasPassedDueDateMovies(clientId):
             raise ClientHasMoviesNotReturnedException
         else:
             if not self.__isMovieAvailable(movieId):
                 raise MovieNotAvailableException
             else:
                 self.addRental(
                     RentalDAO(clientId, movieId,
                               self.__constants.currentDay(), dueDate,
                               movieRepo, clientRepo))
 def __loadRepo(self):
     self.__loadFileReadMode()
     for line in self.__file:
         splitLine = line.split()
         rentalToAdd = RentalDAO(
             int(splitLine[1]), int(splitLine[2]),
             Date(int(splitLine[3]), int(splitLine[4]), int(splitLine[5])),
             Date(int(splitLine[6]), int(splitLine[7]), int(splitLine[8])))
         rentalToAdd.setRentalId(int(splitLine[0]))
         if len(splitLine) >= 10:
             rentalToAdd.setReturnedDate(
                 Date(int(splitLine[9]), int(splitLine[10]),
                      int(splitLine[11])))
         super().addRentalWithId(rentalToAdd)
     self.__closeFile()
 def test_removeRental(self):
     rental = RentalDAO(1, 2, Date(5, 4, 2018), Date(7, 9, 2020))
     rental.setRentalId(2)
     self.rentalFileRepository.addRentalWithId(rental)
     self.rentalFileRepository.removeRentalWithId(2)
     self.assertEqual(len(self.rentalFileRepository.getList()), 0)
Ejemplo n.º 12
0
 def test_removeRental(self):
     self.rentalRepo.removeRentalWithId(1)
     self.assertEqual(len(self.rentalRepo.getList()), 1)
     testRental1 = RentalDAO(0, 0, Date(5, 4, 2018), Date(7, 9, 2020), self.movieRepo, self.clientRepo)
     testRental1.setRentalId(0)
     self.assertEqual(self.rentalRepo.getList(), [testRental1])
 def test_addRental(self):
     rental0 = RentalDAO(1, 2, Date(5, 4, 2018), Date(7, 9, 2020))
     rental0.setReturnedDate(Date(5, 7, 55555))
     self.rentalFileRepository.addRental(rental0)
     rental = RentalDAO(1, 2, Date(5, 4, 2018), Date(7, 9, 2020))
     rental.setRentalId(2)
     self.rentalFileRepository.addRentalWithId(rental)
     rental2 = RentalDAO(1, 2, Date(5, 4, 2018), Date(7, 9, 2020))
     rental2.setRentalId(1)
     rental2.setReturnedDate(Date(5, 7, 55555))
     self.rentalFileRepository.addRentalWithId(rental2)
     self.assertEqual(len(self.rentalFileRepository.getList()), 3)
     self.assertEqual(
         (self.rentalFileRepository.getRentalWithId(0)).getId(), 0)
     self.assertEqual(
         (self.rentalFileRepository.getRentalWithId(0)).getMovieId(), 2)
     self.assertEqual(
         (self.rentalFileRepository.getRentalWithId(0)).getClientId(), 1)
     self.assertEqual(
         (self.rentalFileRepository.getRentalWithId(0)).getRentedDate(),
         Date(5, 4, 2018))
     self.assertEqual(
         (self.rentalFileRepository.getRentalWithId(0)).getDueDate(),
         Date(7, 9, 2020))
     self.assertEqual(
         (self.rentalFileRepository.getRentalWithId(0)).getReturnedDate(),
         Date(5, 7, 55555))
     self.assertEqual(
         (self.rentalFileRepository.getRentalWithId(2)).getId(), 2)
     self.assertEqual(
         (self.rentalFileRepository.getRentalWithId(2)).getMovieId(), 2)
     self.assertEqual(
         (self.rentalFileRepository.getRentalWithId(2)).getClientId(), 1)
     self.assertEqual(
         (self.rentalFileRepository.getRentalWithId(2)).getRentedDate(),
         Date(5, 4, 2018))
     self.assertEqual(
         (self.rentalFileRepository.getRentalWithId(2)).getDueDate(),
         Date(7, 9, 2020))
     self.assertEqual(
         (self.rentalFileRepository.getRentalWithId(1)).getId(), 1)
     self.assertEqual(
         (self.rentalFileRepository.getRentalWithId(1)).getMovieId(), 2)
     self.assertEqual(
         (self.rentalFileRepository.getRentalWithId(1)).getClientId(), 1)
     self.assertEqual(
         (self.rentalFileRepository.getRentalWithId(1)).getRentedDate(),
         Date(5, 4, 2018))
     self.assertEqual(
         (self.rentalFileRepository.getRentalWithId(1)).getDueDate(),
         Date(7, 9, 2020))
     self.assertEqual(
         (self.rentalFileRepository.getRentalWithId(1)).getReturnedDate(),
         Date(5, 7, 55555))
    def test_rent(self):
        printer = Printer()
        with self.assertRaises(DatesNotOrderedException):
            self.rentalController.rentMovieByClientUntilDate(
                0, 0, Date(1, 1, 1999), self.movieRepo, self.clientRepo)
        self.rentalController.getRepo().addRental(
            RentalDAO(3, 4, Date(5, 4, 2012), Date(7, 9, 2013), self.movieRepo,
                      self.clientRepo))
        printer.printList(self.rentalController.getRepo().getList())
        with self.assertRaises(ClientHasMoviesNotReturnedException):
            self.rentalController.rentMovieByClientUntilDate(
                3, 3, Date(5, 5, 2025), self.movieRepo, self.clientRepo)
        with self.assertRaises(MovieNotAvailableException):
            self.rentalController.rentMovieByClientUntilDate(
                0, 4, Date(5, 5, 2025), self.movieRepo, self.clientRepo)
        self.rentalController.rentMovieByClientUntilDate(
            5, 5, Date(5, 5, 2025), self.movieRepo, self.clientRepo)

        # printer.printList(self.rentalController.getRepo().getList())
        rentalTest1 = RentalDAO(0, 0, Date(5, 4, 2018), Date(7, 9, 2020),
                                self.movieRepo, self.clientRepo)
        rentalTest1.setRentalId(0)
        rentalTest2 = RentalDAO(1, 1, Date(5, 4, 2018), Date(7, 9, 2020),
                                self.movieRepo, self.clientRepo)
        rentalTest2.setRentalId(1)
        rentalTest3 = RentalDAO(3, 4, Date(5, 4, 2012), Date(7, 9, 2013),
                                self.movieRepo, self.clientRepo)
        rentalTest3.setRentalId(2)
        rentalTest4 = RentalDAO(5, 5, self.constants.currentDay(),
                                Date(5, 5, 2025), self.movieRepo,
                                self.clientRepo)
        rentalTest4.setRentalId(3)
        self.assertEqual(self.rentalController.getRentalList(),
                         [rentalTest1, rentalTest2, rentalTest3, rentalTest4])
        with self.assertRaises(MovieNotAvailableException):
            self.rentalController.rentMovieByClientUntilDate(
                5, 5, Date(5, 5, 2025), self.movieRepo, self.clientRepo)
    def test_return(self):
        printer = Printer()
        self.rentalController.getRepo().addRental(
            RentalDAO(3, 4, Date(5, 4, 2012), Date(7, 9, 2013), self.movieRepo,
                      self.clientRepo))
        printer.printList(self.rentalController.getRentalList())
        with self.assertRaises(MovieNotCurrentlyRentedByClientException):
            self.rentalController.returnMovieByClient(2, 5)
        self.rentalController.returnMovieByClient(1, 1)
        rentalTest1 = RentalDAO(0, 0, Date(5, 4, 2018), Date(7, 9, 2020),
                                self.movieRepo, self.clientRepo)
        rentalTest1.setRentalId(0)
        rentalTest2 = RentalDAO(1, 1, Date(5, 4, 2018), Date(7, 9, 2020),
                                self.movieRepo, self.clientRepo)
        rentalTest2.setRentalId(1)
        constants = Constants()
        rentalTest2.setReturnedDate(constants.currentDay())
        rentalTest3 = RentalDAO(3, 4, Date(5, 4, 2012), Date(7, 9, 2013),
                                self.movieRepo, self.clientRepo)
        rentalTest3.setRentalId(2)

        self.assertEqual(self.rentalController.getRentalList(),
                         [rentalTest1, rentalTest2, rentalTest3])
 def populateWithFew(self, movieRepo, clientRepo):
     self.addRental(
         RentalDAO(0, 0, Date(12, 5, 2011), Date(13, 6, 2012), movieRepo,
                   clientRepo))
     self.addRental(
         RentalDAO(1, 1, Date(12, 5, 2012), Date(13, 6, 2019), movieRepo,
                   clientRepo))
     self.__rentalList[1].setReturnedDate(Date(12, 6, 2013))
     self.addRental(
         RentalDAO(2, 2, Date(12, 5, 2013), Date(13, 6, 2013), movieRepo,
                   clientRepo))
     self.__rentalList[2].setReturnedDate(Date(12, 6, 2014))
     self.addRental(
         RentalDAO(3, 3, Date(12, 5, 2014), Date(13, 6, 2014), movieRepo,
                   clientRepo))
     self.__rentalList[3].setReturnedDate(Date(12, 6, 2015))
     self.addRental(
         RentalDAO(4, 4, Date(12, 5, 2015), Date(13, 6, 2015), movieRepo,
                   clientRepo))
     self.__rentalList[4].setReturnedDate(Date(12, 6, 2016))
     self.addRental(
         RentalDAO(5, 5, Date(12, 5, 2016), Date(13, 6, 2016), movieRepo,
                   clientRepo))
     self.__rentalList[5].setReturnedDate(Date(12, 6, 2017))
     self.addRental(
         RentalDAO(6, 6, Date(12, 5, 2001), Date(13, 6, 2001), movieRepo,
                   clientRepo))
     self.__rentalList[6].setReturnedDate(Date(12, 6, 2002))
     self.addRental(
         RentalDAO(7, 7, Date(12, 5, 2002), Date(13, 6, 2002), movieRepo,
                   clientRepo))
     self.__rentalList[7].setReturnedDate(Date(12, 6, 2003))
     self.addRental(
         RentalDAO(8, 8, Date(12, 5, 2003), Date(13, 6, 2003), movieRepo,
                   clientRepo))
     self.__rentalList[8].setReturnedDate(Date(12, 6, 2004))
     self.addRental(
         RentalDAO(9, 9, Date(12, 5, 2004), Date(13, 6, 2004), movieRepo,
                   clientRepo))
     self.addRental(
         RentalDAO(10, 10, Date(12, 5, 2000), Date(13, 6, 2000), movieRepo,
                   clientRepo))
     self.__rentalList[10].setReturnedDate(Date(12, 6, 2006))
Ejemplo n.º 17
0
class TestRental(TestCase):
    def setUp(self):
        self.movieRepo = MovieRepo()
        self.movieRepo.addMovie(MovieDAO("Titanic", "lovely", "Romance"))
        self.clientRepo = ClientRepo()
        self.clientRepo.addClient(ClientDAO("dani"))
        self.rental = RentalDAO(0, 0, Date(5, 4, 2018), Date(7, 9, 2020),
                                self.movieRepo, self.clientRepo)

    def tearDown(self):
        self.rental = None
        self.clientRepo = None
        self.movieRepo = None

    def test_init(self):
        self.assertEqual(self.rental.getMovieId(), 0)
        self.assertEqual(self.rental.getClientId(), 0)
        self.assertEqual(self.rental.getRentedDate(), Date(5, 4, 2018))
        self.assertEqual(self.rental.getDueDate(), Date(7, 9, 2020))
        self.assertRaises(TypeError, lambda: self.rental.getId(),
                          'default rental id not None')
        self.assertRaises(TypeError, lambda: self.rental.getReturnedDate(),
                          'default returned date not None')
        with self.assertRaises(ValueError):
            testRental = RentalDAO(0, "s", Date(22, 4,
                                                1995), Date(22, 4, 1996),
                                   self.movieRepo, self.clientRepo)
        with self.assertRaises(ValueError):
            testRental = RentalDAO(0, -5, Date(22, 4, 1995), Date(22, 4, 1996),
                                   self.movieRepo, self.clientRepo)
        with self.assertRaises(ValueError):
            testRental = RentalDAO([], 0, Date(22, 4, 1995), Date(22, 4, 1996),
                                   self.movieRepo, self.clientRepo)
        with self.assertRaises(ValueError):
            testRental = RentalDAO(-99, 0, Date(22, 4,
                                                1995), Date(22, 4, 1996),
                                   self.movieRepo, self.clientRepo)
        with self.assertRaises(ValueError):
            testRental = RentalDAO(0, 0, 9, Date(22, 4, 1996), self.movieRepo,
                                   self.clientRepo)
        with self.assertRaises(ValueError):
            testRental = RentalDAO(0, 0, Date(22, 4, 1995), "date",
                                   self.movieRepo, self.clientRepo)
        with self.assertRaises(DatesNotOrderedException):
            testRental = RentalDAO(0, 0, Date(22, 4, 1995), Date(22, 4, 1994),
                                   self.movieRepo, self.clientRepo)
        with self.assertRaises(ObjectNotInCollectionException):
            testRental = RentalDAO(0, 1, Date(22, 4, 1995), Date(22, 4, 1996),
                                   self.movieRepo, self.clientRepo)
        with self.assertRaises(ObjectNotInCollectionException):
            testRental = RentalDAO(1, 0, Date(22, 4, 1995), Date(22, 4, 1996),
                                   self.movieRepo, self.clientRepo)

    def test_setWrongId(self):
        self.assertRaises(ValueError, lambda: self.rental.setRentalId(-3))
        self.assertRaises(ValueError, lambda: self.rental.setRentalId(5.5))
        self.assertRaises(ValueError, lambda: self.rental.setRentalId("dasas"))
        self.assertRaises(ValueError, lambda: self.rental.setRentalId([]))
        self.assertRaises(ValueError, lambda: self.rental.setRentalId({}))
        self.assertRaises(ValueError, lambda: self.rental.setRentalId((5, 3)))

    def test_setRentalIdSecondTime(self):
        self.rental.setRentalId(5)
        with self.assertRaises(AlreadySetException):
            self.rental.setRentalId(9)

    def test_setRentalId(self):
        with self.assertRaises(ValueError):
            self.rental.setRentalId(-9)
        with self.assertRaises(ValueError):
            self.rental.setRentalId("dsaa")
        self.rental.setRentalId(5)
        self.assertEqual(self.rental.getId(), 5, "rental id set wrong")

    def test_setReturnedDate(self):
        with self.assertRaises(ValueError):
            self.rental.setReturnedDate("dfsaasd")
        self.rental.setReturnedDate(Date(22, 4, 1996))
        self.assertEqual(self.rental.getReturnedDate(), Date(22, 4, 1996))

    def test_setReturnedDateSecondTime(self):
        self.rental.setReturnedDate(Date(22, 4, 1996))
        with self.assertRaises(AlreadySetException):
            self.rental.setReturnedDate(Date(22, 4, 1996))