示例#1
0
    def testSearchClient(self):
        self.clients = Repository()
        self.service = Service(self.clients, [], Repository())

        self.service.addClient(["John"])
        self.service.addClient(["Mike"])
        self.service.addClient(["zmaili"])
        self.service.addClient(["Johnny"])

        result = self.service.searchClients([2, True])
        self.assertEqual(result, [self.clients[2]])
        self.assertEqual(len(self.clients), 4)
        self.assertEqual(self.clients[2], Client(2, "Mike"))

        result = self.service.searchClients(["john", False])
        self.assertEqual(result, [self.clients[1], self.clients[4]])
        self.assertEqual(len(self.clients), 4)
        self.assertEqual(self.clients[1], Client(1, "John"))
        self.assertEqual(self.clients[4], Client(4, "Johnny"))

        result = self.service.searchClients(["luca", False])
        self.assertEqual(result, [])
        self.assertEqual(len(self.clients), 4)

        self.assertRaises(EmptyError, self.service.searchClients,
                          ["john", True])

        self.service.removeClient([2])
        self.assertRaises(EmptyError, self.service.searchClients, [2, True])

        result = self.service.searchClients([3, True])
        self.assertEqual(result, [self.clients[3]])
        self.assertEqual(len(self.clients), 3)
        self.assertEqual(self.clients[3], Client(3, "zmaili"))
示例#2
0
 def create_client(self, client_id, first_name, last_name, email):
     self.__my_session.add(
         Client(client_id=client_id,
                first_name=first_name,
                last_name=last_name,
                email=email))
     self.__my_session.commit()
示例#3
0
    def __loadFile(self):
        file = open(self.__filePath, "r")

        while True:
            line = file.readline()

            #end of file
            if line == "":
                break

            #empty line
            if line == "\n":
                continue

            #this is a comment line, it does not represent content
            if line[0] == ';':
                self.__auxText += line
                continue

            ID = int(line[:-1])

            if self.__entityType == "client":
                name = file.readline()[:-1]
                self._objList[ID] = Client(ID, name)

            elif self.__entityType == "movie":
                title = file.readline()[:-1]
                genre = file.readline()[:-1]
                description = file.readline()[:-1]
                self._objList[ID] = Movie(ID, title, genre, description)

            elif self.__entityType == "rental":
                clientID = int(file.readline()[:-1])
                movieID = int(file.readline()[:-1])

                rentDate = file.readline()[:-1]
                rentDate = date.fromisoformat(rentDate)

                dueDate = file.readline()[:-1]
                dueDate = date.fromisoformat(dueDate)

                returnDate = file.readline()

                if "None" in returnDate:
                    returnDate = None
                else:
                    try:
                        returnDate = date.fromisoformat(returnDate)
                    except:
                        returnDate = date.fromisoformat(returnDate[:-1])

                self._objList[ID] = Rental(ID, clientID, movieID, rentDate,
                                           dueDate, returnDate)

            if self.ID < ID:
                self.ID = ID

        file.close()
示例#4
0
    def testUpdate(self):
        self.clientRepo = ClientListGenerator().chooseClients()
        self.lastID = self.clientRepo.ID  #initially the nr of clients = ID of the last client = .ID
        self.service = Service(self.clientRepo, [], [])

        self.service.updateClient([1, "name", "Albon"])
        self.service.updateClient([2, "name", "Gasly"])
        self.service.updateClient([3, "name", "Kimi"])
        self.service.updateClient([4, "name", "Ricciardo"])
        self.service.updateClient([5, "name", "Sainz"])

        self.assertEqual(len(self.clientRepo), self.lastID)
        self.assertEqual(self.clientRepo.ID, self.lastID)

        self.assertEqual(self.clientRepo[1], Client(1, "Albon"))
        self.assertEqual(self.clientRepo[2], Client(2, "Gasly"))
        self.assertEqual(self.clientRepo[3], Client(3, "Kimi"))
        self.assertEqual(self.clientRepo[4], Client(4, "Ricciardo"))
        self.assertEqual(self.clientRepo[5], Client(5, "Sainz"))
示例#5
0
    def testAddClient(self):
        self.__reset()

        self.services.addClient(["Maic"])
        self.services.addClient(["Maichi"])
        self.services.addClient(["Maicuta"])
        self.assertEqual(len(self.clients), 3)

        self.services.undo([])
        self.assertEqual(len(self.clients), 2)
        self.assertEqual(self.clients[1], Client(1, "Maic"))
        self.assertEqual(self.clients[2], Client(2, "Maichi"))

        self.services.redo([])
        self.assertEqual(len(self.clients), 3)
        self.assertEqual(self.clients[1], Client(1, "Maic"))
        self.assertEqual(self.clients[2], Client(2, "Maichi"))
        self.assertEqual(self.clients[3], Client(3, "Maicuta"))

        self.assertRaises(UndoError, self.services.redo, [])

        self.services.undo([])
        self.assertEqual(len(self.clients), 2)
        self.assertEqual(self.clients[1], Client(1, "Maic"))
        self.assertEqual(self.clients[2], Client(2, "Maichi"))

        self.services.addClient(["Maicq"])
        self.assertRaises(UndoError, self.services.redo, [])

        self.services.undo([])
        self.assertEqual(len(self.clients), 2)
        self.assertEqual(self.clients[1], Client(1, "Maic"))
        self.assertEqual(self.clients[2], Client(2, "Maichi"))

        self.services.undo([])
        self.assertEqual(len(self.clients), 1)
        self.assertEqual(self.clients[1], Client(1, "Maic"))

        self.services.undo([])
        self.assertEqual(len(self.clients), 0)
        self.assertRaises(UndoError, self.services.undo, [])
    def chooseClients(self):
        '''
        Randomly selects CLIENT_COUNT clients from a clientList 
        '''
        clientList = self.__getClients()
        random.shuffle(clientList)

        clientRepo = Repository()
        for i in range(self.count):
            clientRepo.increaseID()
            clientRepo + Client(clientRepo.ID, clientList[i])

        return clientRepo
示例#7
0
 def addClient(self, argList):
     '''
     Adds a client to clientList
     @param:
         - argList = list of arguments, where:
             [0] = name = string (valid), representing the client's name
     @return:
         - None
     '''
     self.clientList.increaseID()
     self.clientList + Client(self.clientList.ID, argList[0])
     
     if self.__ignoreUndo == False:
         self.undoController.addAction(0, [], argList)
示例#8
0
    def testAdd(self):
        self.clientRepo = ClientListGenerator().chooseClients()
        self.service = Service(self.clientRepo, [], [])
        self.lastID = self.clientRepo.ID

        self.service.addClient(["Hamilton"])
        self.service.addClient(["Bottas"])
        self.service.addClient(["Verstappen"])
        self.service.addClient(["Leclerc"])
        self.service.addClient(["Vettel"])

        self.assertEqual(self.clientRepo.ID, self.lastID + 5)
        self.assertEqual(len(self.clientRepo), self.lastID + 5)

        self.assertEqual(self.clientRepo[self.lastID + 1],
                         Client(self.lastID + 1, "Hamilton"))
        self.assertEqual(self.clientRepo[self.lastID + 2],
                         Client(self.lastID + 2, "Bottas"))
        self.assertEqual(self.clientRepo[self.lastID + 3],
                         Client(self.lastID + 3, "Verstappen"))
        self.assertEqual(self.clientRepo[self.lastID + 4],
                         Client(self.lastID + 4, "Leclerc"))
        self.assertEqual(self.clientRepo[self.lastID + 5],
                         Client(self.lastID + 5, "Vettel"))
示例#9
0
    def updateClient(self, argList):
        '''
        Updates a client's properties
        @param:
            - argList = list of arguments, where:
                [0] = ID = integer (valid, not guaranteed to be in the list)
                [1] = property = string (valid)
                [2] = newValue = string (valid)
        @return:
            - None
        @raise:
            - EmptyError, if the ID is not in the list
        '''
        clientCopy = self.clientList[argList[0]]

        if argList[1] == "name":
            self.clientList[argList[0]] = Client(argList[0], argList[2])  
            
        if self.__ignoreUndo == False:
            self.undoController.addAction(2, [argList[0], clientCopy], argList)
示例#10
0
    def testRemoveClient(self):
        self.__reset()

        self.services.addClient(["Maic"])
        self.services.addClient(["Maichi"])
        self.services.addClient(["Maicuta"])
        self.services.addMovie(["title", "desc", "genre"])
        self.services.rentMovie([2, 1, date(2019, 11, 20), date(2019, 11, 29)])
        self.services.returnMovie([2, 1, 1])

        self.assertEqual(len(self.clients), 3)
        self.assertEqual(len(self.movies), 1)
        self.assertEqual(len(self.rentals), 1)

        self.services.removeClient([2])
        self.assertEqual(len(self.clients), 2)
        self.assertEqual(len(self.movies), 1)
        self.assertEqual(len(self.rentals), 0)
        self.assertEqual(self.clients[1], Client(1, "Maic"))
        self.assertEqual(self.clients[3], Client(3, "Maicuta"))

        self.services.undo([])
        self.assertEqual(len(self.clients), 3)
        self.assertEqual(len(self.movies), 1)
        self.assertEqual(len(self.rentals), 1)
        self.assertEqual(self.clients[1], Client(1, "Maic"))
        self.assertEqual(self.clients[2], Client(2, "Maichi"))
        self.assertEqual(self.clients[3], Client(3, "Maicuta"))

        self.services.redo([])
        self.assertEqual(len(self.clients), 2)
        self.assertEqual(len(self.movies), 1)
        self.assertEqual(len(self.rentals), 0)
        self.assertEqual(self.clients[1], Client(1, "Maic"))
        self.assertEqual(self.clients[3], Client(3, "Maicuta"))

        self.assertRaises(UndoError, self.services.redo, [])

        self.services.undo([])
        self.assertEqual(len(self.clients), 3)
        self.assertEqual(len(self.movies), 1)
        self.assertEqual(len(self.rentals), 1)
        self.assertEqual(self.clients[1], Client(1, "Maic"))
        self.assertEqual(self.clients[2], Client(2, "Maichi"))
        self.assertEqual(self.clients[3], Client(3, "Maicuta"))

        self.services.removeClient([1])
        self.assertEqual(len(self.clients), 2)
        self.assertEqual(len(self.movies), 1)
        self.assertEqual(len(self.rentals), 1)
        self.assertEqual(self.clients[2], Client(2, "Maichi"))
        self.assertEqual(self.clients[3], Client(3, "Maicuta"))
        self.assertRaises(UndoError, self.services.redo, [])

        self.services.undo([])
        self.assertEqual(len(self.clients), 3)
        self.assertEqual(len(self.movies), 1)
        self.assertEqual(len(self.rentals), 1)
        self.assertEqual(self.clients[1], Client(1, "Maic"))
        self.assertEqual(self.clients[2], Client(2, "Maichi"))
        self.assertEqual(self.clients[3], Client(3, "Maicuta"))

        self.services.redo([])
        self.assertEqual(len(self.clients), 2)
        self.assertEqual(len(self.movies), 1)
        self.assertEqual(len(self.rentals), 1)
        self.assertEqual(self.clients[2], Client(2, "Maichi"))
        self.assertEqual(self.clients[3], Client(3, "Maicuta"))
示例#11
0
class TestSorting(unittest.TestCase):

    Client1 = Client(1, "John")
    Client2 = Client(2, "Mike")
    Client3 = Client(3, "Nike")

    Movie1 = Movie(1, "Title1", "Desc1", "Genre1")
    Movie2 = Movie(2, "Title2", "Desc2", "Genre2")
    Movie3 = Movie(3, "Title3", "Desc3", "Genre3")

    def __reset(self):
        self.clients = Repository()
        self.movies = Repository()
        self.rentals = Repository()
        self.service = Service(self.clients, self.movies, self.rentals)

        self.service.addClient(["John"])
        self.service.addClient(["Mike"])
        self.service.addClient(["Nike"])

        self.service.addMovie(["Title1", "Desc1", "Genre1"])
        self.service.addMovie(["Title2", "Desc2", "Genre2"])
        self.service.addMovie(["Title3", "Desc3", "Genre3"])

    def testActiveClients(self):
        self.__reset()

        self.service.rentMovie([1, 1, date(2019, 10, 20), date(2019, 10, 29)])
        self.service.rentMovie([2, 2, date(2019, 11, 20), date(2019, 11, 30)])
        self.service.rentMovie([3, 1, date(2019, 10, 30), date(2019, 11, 12)])

        result = self.service.mostActive(["client"])
        self.assertEqual(result, [self.Client1, self.Client3, self.Client2])

    def testRentedMovies(self):
        self.__reset()

        self.service.rentMovie([1, 1, date(2019, 10, 20), date(2019, 10, 29)])
        self.service.rentMovie([2, 2, date(2019, 11, 20), date(2019, 11, 30)])
        self.service.rentMovie([3, 1, date(2019, 10, 30), date(2019, 11, 12)])

        result = self.service.mostActive(["movie"])
        self.assertEqual(result, [self.Movie1, self.Movie2, self.Movie3])

    def testLateRentals(self):
        self.__reset()

        self.service.rentMovie([1, 1, date(2019, 10, 20), date(2019, 10, 29)])
        self.service.rentMovie([2, 2, date(2019, 11, 20), date(2019, 11, 24)])
        self.service.rentMovie([3, 3, date(2018, 10, 20), date(2018, 10, 29)])

        Rental1 = Rental(1, 1, 1, date(2019, 10, 20), date(2019, 10, 29), None)
        Rental2 = Rental(2, 2, 2, date(2019, 11, 20), date(2019, 11, 24), None)
        Rental3 = Rental(3, 3, 3, date(2018, 10, 20), date(2018, 10, 29), None)

        result = self.service.lateRentals([])

        self.assertEqual(result, [Rental3, Rental1, Rental2])

        self.service.returnMovie([3, 3, 3])
        self.service.returnMovie([2, 2, 2])
        self.service.returnMovie([1, 1, 1])