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)
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 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)
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)
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))
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])
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)
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))
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))