From: <de...@us...> - 2003-04-26 00:00:26
|
Update of /cvsroot/pymerase/pymerase/tests In directory sc8-pr-cvs1:/tmp/cvs-serv9185 Modified Files: TestSchool.py Log Message: Changed schema to seperate person_pk from Uid (which is now an arbitrary application element instead of being tightly tied to the schema. Change names of several functions to conform to whats produced by the UML/XMI parser. Merged in UML/XMI test case since we don't need to be dependent on Jython any longer. Index: TestSchool.py =================================================================== RCS file: /cvsroot/pymerase/pymerase/tests/TestSchool.py,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** TestSchool.py 9 Apr 2003 00:08:47 -0000 1.6 --- TestSchool.py 26 Apr 2003 00:00:19 -0000 1.7 *************** *** 39,46 **** return faculty ! def getEmployee(session, givenName): givenNameQuery = "%s = '%s'" % (givenNameFieldName, givenName) ! employees = session.getObjectsWhere(session.Employees, givenNameQuery) ! return employees --- 39,51 ---- return faculty ! def getEmployees(session, givenName): givenNameQuery = "%s = '%s'" % (givenNameFieldName, givenName) ! employee = session.getObjectsWhere(session.Employees, givenNameQuery) ! return employee ! ! def getStaff(session, givenName): ! givenNameQuery = "%s = '%s'" % (givenNameFieldName, givenName) ! staff = session.getObjectsWhere(session.Staff, givenNameQuery) ! return staff *************** *** 112,115 **** --- 117,149 ---- + def testCreateUML_underscore_API(self): + """Test generating python code from zargo file with the db using underscore_word + """ + self.resetDirectory() + + # Figure out path information + schema = os.path.abspath("./school.zargo") + api_output = os.path.abspath("./school") + sql_output = os.path.abspath("./school.sql") + + # construct pymerase object + translator = pymerase.Pymerase() + #translator.setDefaultPackage("school") + + # set mangler convetion + #mangler = NameMangling.underscore_word() + #translator.setNameMangler(mangler, 'CreateSQL') + + # do the translation + classesInModel={} + parsed_input = translator.read(schema, 'parseXMI', classesInModel) + translator.write(parsed_input, api_output, 'CreateDBAPI') + translator.write(parsed_input, sql_output, 'CreateSQL') + + # one of the later tests needs to know what the actual field name is + global givenNameFieldName + givenNameFieldName="given_name" + + def testCreateCapsAPI(self): """Test generating python api with the sql part using CapWord. *************** *** 172,192 **** # define some faculty ! xavier = s.Faculty() ! xavier.setGivenName('Xavier') ! xavier.setFamilyName('Xal') ! xavier.setStatus('Associate') ! xavier.commit() ! ! yolanda = s.Faculty() ! yolanda.setGivenName('Yolanda') ! yolanda.setFamilyName('Yetti') ! yolanda.setStatus('Visiting') ! yolanda.commit() ! ! zaphod = s.Faculty() ! zaphod.setGivenName('Zaphod') ! zaphod.setFamilyName('Zim') ! zaphod.setStatus('Full') ! zaphod.commit() # define some houses --- 206,218 ---- # define some faculty ! for faculty_values in [('0001', 'Xavier', 'Xal', 'Associate'), ! ('0002', 'Yolanda', 'Yetti', 'Visiting'), ! ('0003', 'Zaphod', 'Zim', 'Full')]: ! f = s.Faculty() ! f.setUid(faculty_values[0]) ! f.setGivenName(faculty_values[1]) ! f.setFamilyName(faculty_values[2]) ! f.setStatus(faculty_values[3]) ! f.commit() # define some houses *************** *** 197,209 **** house.commit() ! for student_values in [('Ann', 'Arbor', 1, 2), ! ('Ben', 'Blartfast', 2, 1), ! ('Charles', 'Cooper', 3, 3), ! ('Daria', 'Darwin', 4, 2),]: student = s.Students() ! student.setGivenName(student_values[0]) ! student.setFamilyName(student_values[1]) ! student.setHouseFk(student_values[2]) ! student.setAdvisorFk(student_values[3]) student.commit() --- 223,238 ---- house.commit() ! for student_values in [('0004', 'Ann', 'Arbor', 1, 2), ! ('0005', 'Ben', 'Blartfast', 2, 1), ! ('0006', 'Charles', 'Cooper', 3, 3), ! ('0007', 'Daria', 'Darwin', 4, 2),]: student = s.Students() ! student.setUid(student_values[0]) ! student.setGivenName(student_values[1]) ! student.setFamilyName(student_values[2]) ! student.setHousesFk(student_values[3]) ! # FIXME: set key link to advisor, this is a bad name ! # but does reflect the base class name ! student.setFacultyFk(student_values[4]) student.commit() *************** *** 213,217 **** for course_value in courses_list: course = s.Courses() ! course.setCode(course_value[0]) course.setDescription(course_value[1]) course.commit() --- 242,246 ---- for course_value in courses_list: course = s.Courses() ! course.setCourseCode(course_value[0]) course.setDescription(course_value[1]) course.commit() *************** *** 221,226 **** ]: c = s.Classes() ! c.setUidFk(class_values[0]) ! c.setCourseFk(class_values[1]) c.setTerm(class_values[2]) c.setGrade(class_values[3]) --- 250,257 ---- ]: c = s.Classes() ! # FIXME: need better way to declare what name the primary key should have ! #c.setUidFk(class_values[0]) ! c.setStudentsFk(class_values[0]) ! c.setCoursesFk(class_values[1]) c.setTerm(class_values[2]) c.setGrade(class_values[3]) *************** *** 228,240 **** ! for employee_value in [('diane', 'trout', 'code monkey'), ! ('kevin', 'cooper', 'lab tech'), ! ('jason', 'stewart', 'software consultant'), ! ('amanda', 'jones', 'music')]: ! employee = s.Employees() ! employee.setGivenName(employee_value[0]) ! employee.setFamilyName(employee_value[1]) ! #employee.setJobDescription(employee_value[2]) ! employee.commit() s.close() --- 259,272 ---- ! for staff_value in [('0008', 'diane', 'trout', 'code monkey'), ! ('0009', 'kevin', 'cooper', 'lab tech'), ! ('0010', 'jason', 'stewart', 'software consultant'), ! ('0011', 'amanda', 'jones', 'music')]: ! staff = s.Staff() ! staff.setUid(staff_value[0]) ! staff.setGivenName(staff_value[1]) ! staff.setFamilyName(staff_value[2]) ! staff.setJobDescription(staff_value[3]) ! staff.commit() s.close() *************** *** 248,253 **** self.failUnless(ann.getGivenName() == 'Ann') self.failUnless(ann.getFamilyName() == 'Arbor') ! self.failUnless(ann.getHouseFk() == 1) ! self.failUnless(ann.getAdvisorFk() == 2) # try to read inherited object via class factory --- 280,285 ---- self.failUnless(ann.getGivenName() == 'Ann') self.failUnless(ann.getFamilyName() == 'Arbor') ! self.failUnless(ann.getHousesFk() == 1) ! self.failUnless(ann.getFacultyFk() == 2) # try to read inherited object via class factory *************** *** 274,278 **** self.failUnless(len(advisors) == 1) ! self.failUnless(advisors[0].getUid() == 2) self.failUnless(advisors[0].getGivenName() == 'Yolanda') self.failUnless(advisors[0].getFamilyName() == 'Yetti') --- 306,310 ---- self.failUnless(len(advisors) == 1) ! self.failUnless(advisors[0].getUid() == '0002') self.failUnless(advisors[0].getGivenName() == 'Yolanda') self.failUnless(advisors[0].getFamilyName() == 'Yetti') *************** *** 307,313 **** #erin = Students(db_session=s) erin = s.Students() erin.setGivenName("Erin") erin.setFamilyName("Ericsson") ! erin.setHouses(houses['page']) faculty['yolanda'].appendStudents(erin) --- 339,346 ---- #erin = Students(db_session=s) erin = s.Students() + erin.setUid('0012') erin.setGivenName("Erin") erin.setFamilyName("Ericsson") ! erin.setHouse(houses['page']) faculty['yolanda'].appendStudents(erin) *************** *** 323,333 **** self.failUnless(erin.getGivenName() == erin_loaded.getGivenName()) self.failUnless(erin.getFamilyName() == erin_loaded.getFamilyName()) ! self.failUnless(erin.getHouseFk() == erin_loaded.getHouseFk()) ! self.failUnless(erin.getAdvisorFk() == erin_loaded.getAdvisorFk()) frederick = s.Students() frederick.setGivenName("Frederick") frederick.setFamilyName("Fergison") ! frederick.setHouses(houses['ricketts']) faculty['zaphod'].appendStudents(frederick) faculty['zaphod'].commit() --- 356,367 ---- self.failUnless(erin.getGivenName() == erin_loaded.getGivenName()) self.failUnless(erin.getFamilyName() == erin_loaded.getFamilyName()) ! self.failUnless(erin.getHousesFk() == erin_loaded.getHousesFk()) ! self.failUnless(erin.getFacultyFk() == erin_loaded.getFacultyFk()) frederick = s.Students() + frederick.setUid('0013') frederick.setGivenName("Frederick") frederick.setFamilyName("Fergison") ! frederick.setHouse(houses['ricketts']) faculty['zaphod'].appendStudents(frederick) faculty['zaphod'].commit() *************** *** 343,348 **** self.failUnless(frederick.getGivenName() == frederick_loaded.getGivenName()) self.failUnless(frederick.getFamilyName()==frederick_loaded.getFamilyName()) ! self.failUnless(frederick.getHouseFk() == frederick_loaded.getHouseFk()) ! self.failUnless(frederick.getAdvisorFk() == frederick_loaded.getAdvisorFk()) s.close() --- 377,382 ---- self.failUnless(frederick.getGivenName() == frederick_loaded.getGivenName()) self.failUnless(frederick.getFamilyName()==frederick_loaded.getFamilyName()) ! self.failUnless(frederick.getHousesFk() == frederick_loaded.getHousesFk()) ! self.failUnless(frederick.getFacultyFk() == frederick_loaded.getFacultyFk()) s.close() *************** *** 366,371 **** frederick = frederick_list[0] ! frederick.setHouses(houses['ricketts']) ! frederick.setHouses(houses['dabney']) frederick.commit() --- 400,405 ---- frederick = frederick_list[0] ! frederick.setHouse(houses['ricketts']) ! frederick.setHouse(houses['dabney']) frederick.commit() *************** *** 400,406 **** def testTreeInsert(self): ! def checkEmployee(session, givenName): ! e = getEmployee(session, givenName) ! self.failUnless(len(e) == 1) return e[0] --- 434,440 ---- def testTreeInsert(self): ! def checkEmployees(session, givenName): ! e = getEmployees(session, givenName) ! self.failUnless(len(e) == 1, "checking for %s" % (givenName)) return e[0] *************** *** 409,417 **** s = school.DBSession(host, database) ! diane = checkEmployee(s, "diane") ! kevin = checkEmployee(s, "kevin") ! jason = checkEmployee(s, "jason") ! amanda = checkEmployee(s, "amanda") ! yolanda = checkEmployee(s, "Yolanda") #yolanda.appendManaged(amanda) --- 443,451 ---- s = school.DBSession(host, database) ! diane = checkEmployees(s, "diane") ! kevin = checkEmployees(s, "kevin") ! jason = checkEmployees(s, "jason") ! amanda = checkEmployees(s, "amanda") ! yolanda = checkEmployees(s, "Yolanda") #yolanda.appendManaged(amanda) *************** *** 436,440 **** s = school.DBSession(host, database) ! yolanda = getEmployee(s, "Yolanda")[0] managedList = yolanda.getManaged() self.failUnless(len(managedList) == 3) --- 470,476 ---- s = school.DBSession(host, database) ! yolanda_list = getEmployees(s, "Yolanda") ! self.failUnless(len(yolanda_list) == 1, str(yolanda_list)) ! yolanda = yolanda_list[0] managedList = yolanda.getManaged() self.failUnless(len(managedList) == 3) *************** *** 449,454 **** self.failUnless(kevinManager.getGivenName() == diane.getGivenName()) ! amanda = filter(lambda x: x.getGivenName() == 'amanda', managedList)[0] ! amandaDirect = getEmployee(s, "amanda")[0] self.failUnless(amanda.getGivenName() == amandaDirect.getGivenName()) self.failUnless(amanda.getFamilyName() == amandaDirect.getFamilyName()) --- 485,492 ---- self.failUnless(kevinManager.getGivenName() == diane.getGivenName()) ! amanda_list = filter(lambda x: x.getGivenName() == 'amanda', managedList) ! self.failUnless(len(amanda_list) == 1, str(amanda_list)) ! amanda = amanda_list[0] ! amandaDirect = getEmployees(s, "amanda")[0] self.failUnless(amanda.getGivenName() == amandaDirect.getGivenName()) self.failUnless(amanda.getFamilyName() == amandaDirect.getFamilyName()) *************** *** 464,467 **** --- 502,506 ---- CreatePyGenexTestCases("testCreate_underscore_API"), CreatePyGenexTestCases("testCreateCapsAPI"), + CreatePyGenexTestCases("testCreateUML_underscore_API"), ] for api in api_tests: *************** *** 484,485 **** --- 523,533 ---- unittest.main(defaultTest="suite") + # NOTES: + # need to change data + # + # Limitations: + # Need to use SQL types in UML model + # String isn't specific enough for defining column sizes + # Associations + # do you always want to link to the classes primary key? + # can you link by some other attribute? |