def __loadFromFile(self): try: f = open(self.__fName, "r") line = f.readline().strip() while line != "": attrs = line.split(";") student = Student(attrs[0], attrs[1], Address(attrs[2], attrs[3], attrs[4])) StudentRepository.store(self, student) line = f.readline().strip() except IOError: raise FileRepositoryException() finally: f.close()
def testUpdate(self): rep = StudentRepository() st = Student("1", "Ion", Address("Cluj", "Cluj-Napoca", "Adr")) rep.store(st) st = Student("1", "Ionel", Address("Bihor", "Oradea", "Adr8")) rep.update("1", st) self.assertEqual(rep.find("1").getName(), "Ionel") self.assertEqual(rep.find("1").getAddr().getStreet(), "Adr8") try: rep.update("2", st) self.assertTrue(False) except ValueError: pass
def testCreateStudent(self): """ test function for create student Feature 1 - add a student Task 4 - Create student - controller """ ctr = StudentController(StudentValidator(), StudentRepository()) st = ctr.create("1", "Ion", "Cluj-Napoca", "Turda", "Addr") self.assertEqual(st.getId(), "1") self.assertEqual(st.getName(), "Ion") self.assertEqual(st.getAddr().getStreet(), "Addr") self.assertEqual(ctr.getNrStudents(), 1) """ Test for invalid Student instance """ try: ctr.create("1", "", "", 1, "Cluj") self.assertTrue(False) except ValidationException: pass """ Test for duplicate id """ try: ctr.create("1", "Ion2", "Adr2", 1, "Cluj") self.assertTrue(False) except DuplicateIDException: pass
def testListFirst5(self): stRep = StudentRepository() stctr = StudentController(StudentValidator(), stRep) stctr.create("1", "Ion", "Cluj", "Gherla", "Turzii") stctr.create("2", "Ion2", "Cluj", "Gherla", "Turzii") stctr.create("3", "Ion3", "Cluj", "Gherla", "Turzii") stctr.create("4", "Ion4", "Cluj", "Gherla", "Turzii") stctr.create("5", "Ion5", "Cluj", "Gherla", "Turzii") stctr.create("6", "Ion6", "Cluj", "Gherla", "Turzii") ctr = GradeController(GradeRepository(), GradeValidator(), stRep) ctr.assign("1", "FP", 2) ctr.assign("2", "FP", 7) ctr.assign("3", "FP", 8) ctr.assign("4", "FP", 10) ctr.assign("5", "FP", 6) ctr.assign("6", "FP", 9) stgrs = ctr.getTop5("FP") self.assertEqual(len(stgrs) , 5) self.assertEqual(stgrs[0].getStudentId() , "4") self.assertEqual(stgrs[1].getStudentId() , "6") self.assertEqual(stgrs[2].getStudentId() , "3") self.assertEqual(stgrs[3].getStudentId() , "2") self.assertEqual(stgrs[4].getStudentId() , "5")
def testUpdate(self): ctr = StudentController(StudentValidator(), StudentRepository()) ctr.create("1", "Ion", "Cluj", "Turda", "Adr1") st = ctr.update("1", "Ionel", "Cluj", "Dej", "Clujului") studs = ctr.search("Ionel") self.assertEqual(len(studs) , 1) self.assertEqual(studs[0].getAddr().getStreet() , "Clujului") """ Verify the old student is returned """ self.assertEqual(st.getName() , "Ion") self.assertEqual(st.getAddr().getStreet() , "Adr1") """ Try to update an inexisting student """ try: st = ctr.update("2", "Ionel", "Addrr", 1, "Cluj") self.assertTrue(False) except ValueError: pass """ Try to update to invalid data """ try: ctr.update("1", "", "", 1, "Cluj") self.assertTrue(False) except ValidationException: pass
def __storeToFile(self): f = open(self.__fName, "w") sts = StudentRepository.getAll(self) for st in sts: strf = st.getId() + ";" + st.getName() + ";" strf = strf + st.getAddr().getStreet() + ";" + str(st.getAddr().getNr()) + ";" + st.getAddr().getCity() strf = strf + "\n" f.write(strf) f.close()
def testAssignGrade(self): stRep = StudentRepository() stctr = StudentController(StudentValidator(), stRep) stctr.create("1", "Ion", "Cluj", "Turda", "Addrr8") ctr = GradeController(GradeRepository(), GradeValidator(), stRep) gr = ctr.assign("1", "FP", 10) self.assertEqual(gr.getDiscipline() , "FP") self.assertEqual(gr.getGradeValue() , 10) self.assertEqual(gr.getStudent().getId() , "1") self.assertEqual(gr.getStudent().getName() , "Ion")
def testListGrade(self): stRep = StudentRepository() stctr = StudentController(StudentValidator(), stRep) stctr.create("1", "Ion", "Adr", 1, "Cluj") ctr = GradeController(GradeRepository(), GradeValidator(), stRep) gr = ctr.assign("1", "FP", 10) grs = ctr.listGrades("1") self.assertEqual(len(grs) , 1) gr = ctr.assign("1", "SO", 10) grs = ctr.listGrades("1") self.assertEqual(len(grs) , 2)
def testListStudent(self): rep = StudentRepository() st = Student("1", "Ion", Address("Tulcea", "Tulcea", "Adr1")) rep.store(st) st = Student("2", "Ion2", Address("Cluj", "Cluj-Napoca", "Adr2")) rep.store(st) allStudents = rep.getAll() self.assertEqual(len(allStudents), 2) st1 = rep.find("1") self.assertEqual(st1.getId(), "1") self.assertEqual(st1.getName(), "Ion") self.assertEqual(st1.getAddr().getStreet(), "Adr1") st2 = rep.find("2") self.assertEqual(st2.getId(), "2") self.assertEqual(st2.getName(), "Ion2") self.assertEqual(st2.getAddr().getStreet(), "Adr2")
def testRemoveStudent(self): ctr = StudentController(StudentValidator(), StudentRepository()) ctr.create("1", "Ion", "Cluj", "Dej", "Clujului 82") """ Test for invalid id """ try: ctr.remove("2") self.assertTrue(False) except ValueError: pass self.assertEqual(ctr.getNrStudents() , 1) st = ctr.remove("1") self.assertEqual(ctr.getNrStudents() , 0) self.assertEqual(st.getId(), "1") self.assertEqual(st.getName() , "Ion") self.assertEqual(st.getAddr().getStreet() , "Clujului 82")
def testSearchCriteria(self): rep = StudentRepository() ctr = StudentController(StudentValidator(), rep) ctr.create("1", "Ion", "Adr", 1, "Cluj") st2 = ctr.create("2", "Ion2", "Adr", 1, "Cluj") ctr.create("3", "Ioana1", "Adr", 1, "Cluj") st4 = ctr.create("4", "Ioana2", "Adr", 1, "Cluj") ctr.create("5", "Vlad", "Adr", 1, "Cluj") studs = ctr.search("Ion") self.assertEqual(len(studs) , 2) self.assertTrue(st2 in studs) studs = ctr.search("Io") self.assertEqual(len(studs) , 4) self.assertTrue(st4 in studs) studs = ctr.search("Al") self.assertEqual(len(studs) , 0) studs = ctr.search("") self.assertEqual(len(studs) , 5)
def testDeleteStudent(self): rep = StudentRepository() st = Student("1", "Ion", Address("Adr", 1, "Cluj")) rep.store(st) st = Student("2", "Ion2", Address("Adr2", 1, "Cluj")) rep.store(st) self.assertEqual(rep.size(), 2) rep.remove("1") self.assertEqual(rep.size(), 1) try: rep.remove("3") self.assertTrue(False) except ValueError: pass
def testStoreStudent(self): st = Student("1", "Ion", Address("Adr", 1, "Cluj")) rep = StudentRepository() """ Test adding students """ self.assertEqual(rep.size(), 0) rep.store(st) self.assertEqual(rep.size(), 1) st2 = Student("2", "Vasile", Address("Adr2", 1, "Cluj")) rep.store(st2) self.assertEqual(rep.size(), 2) """ Test with duplicate student id """ st3 = Student("2", "Ana", Address("Adr3", 1, "Cluj")) try: rep.store(st3) self.assertTrue(False) except DuplicateIDException: pass
def update(self, studentId, student): StudentRepository.update(self, studentId, student) self.__storeToFile()
def removeAll(self): StudentRepository.removeAll(self) self.__storeToFile()
def remove(self, studentId): StudentRepository.remove(self, studentId) self.__storeToFile()
def store(self, student): StudentRepository.store(self, student) self.__storeToFile()
def __init__(self, fileName="students.txt"): StudentRepository.__init__(self) self.__fName = fileName self.__loadFromFile()