Changeset 7548 for main/waeup.sirp/trunk/src/waeup/sirp/students/tests
- Timestamp:
- 1 Feb 2012, 11:19:56 (13 years ago)
- Location:
- main/waeup.sirp/trunk/src/waeup/sirp/students/tests
- Files:
-
- 1 added
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/waeup.sirp/trunk/src/waeup/sirp/students/tests/test_batching.py
r7536 r7548 32 32 from waeup.sirp.students.batching import ( 33 33 StudentProcessor, StudentStudyCourseProcessor, 34 StudentStudyLevelProcessor )34 StudentStudyLevelProcessor, CourseTicketProcessor) 35 35 from waeup.sirp.students.student import Student 36 36 from waeup.sirp.testing import FunctionalLayer, FunctionalTestCase … … 77 77 78 78 STUDYLEVEL_HEADER_FIELDS = STUDYLEVEL_SAMPLE_DATA.split( 79 '\n')[0].split(',') 80 81 COURSETICKET_SAMPLE_DATA = open( 82 os.path.join(os.path.dirname(__file__), 'sample_courseticket_data.csv'), 83 'rb').read() 84 85 COURSETICKET_HEADER_FIELDS = COURSETICKET_SAMPLE_DATA.split( 79 86 '\n')[0].split(',') 80 87 … … 161 168 assert len(self.app['students'].keys()) == 2 162 169 170 def test_checkConversion(self): 171 errs, inv_errs, conv_dict = self.importer.checkConversion( 172 dict(reg_number='1', reg_state='admitted')) 173 self.assertEqual(len(errs),0) 174 errs, inv_errs, conv_dict = self.importer.checkConversion( 175 dict(reg_number='1', reg_state='')) 176 self.assertEqual(len(errs),1) 177 self.assertTrue(('reg_state', 'no value provided') in errs) 178 errs, inv_errs, conv_dict = self.importer.checkConversion( 179 dict(reg_number='1', reg_state='nonsense')) 180 self.assertEqual(len(errs),1) 181 self.assertTrue(('reg_state', 'not allowed') in errs) 182 163 183 def test_delEntry(self): 164 184 assert self.student.student_id in self.app['students'].keys() … … 283 303 self.assertEqual(student.reg_number,'1') 284 304 305 def test_checkConversion(self): 306 errs, inv_errs, conv_dict = self.importer.checkConversion( 307 dict(reg_number='1', certificate='CERT1', current_level='200')) 308 self.assertEqual(len(errs),0) 309 errs, inv_errs, conv_dict = self.importer.checkConversion( 310 dict(reg_number='1', certificate='CERT999')) 311 self.assertEqual(len(errs),1) 312 self.assertTrue(('certificate', u'Invalid value') in errs) 313 errs, inv_errs, conv_dict = self.importer.checkConversion( 314 dict(reg_number='1', certificate='CERT1', current_level='100')) 315 self.assertEqual(len(errs),1) 316 self.assertTrue(('current_level','not in range') in errs) 317 # If we import only current_level, no conversion checking is done. 318 errs, inv_errs, conv_dict = self.importer.checkConversion( 319 dict(reg_number='1', current_level='100')) 320 self.assertEqual(len(errs),0) 321 285 322 def test_import(self): 286 323 num, num_warns, fin_file, fail_file = self.importer.doImport( … … 350 387 IBatchProcessor, StudentStudyLevelProcessor) is True 351 388 389 def test_checkConversion(self): 390 errs, inv_errs, conv_dict = self.importer.checkConversion( 391 dict(reg_number='1', level='220')) 392 self.assertEqual(len(errs),0) 393 errs, inv_errs, conv_dict = self.importer.checkConversion( 394 dict(reg_number='1', level='900')) 395 self.assertEqual(len(errs),1) 396 self.assertTrue(('level','no valid integer') in errs) 397 errs, inv_errs, conv_dict = self.importer.checkConversion( 398 dict(reg_number='1', level='xyz')) 399 self.assertEqual(len(errs),1) 400 self.assertTrue(('level','no integer') in errs) 401 352 402 def test_import(self): 353 403 num, num_warns, fin_file, fail_file = self.importer.doImport( … … 365 415 366 416 417 class CourseTicketImporterTest(FunctionalTestCase): 418 419 layer = FunctionalLayer 420 421 def setUp(self): 422 super(CourseTicketImporterTest, self).setUp() 423 self.dc_root = tempfile.mkdtemp() 424 self.workdir = tempfile.mkdtemp() 425 app = University() 426 app['datacenter'].setStoragePath(self.dc_root) 427 self.getRootFolder()['app'] = app 428 self.app = self.getRootFolder()['app'] 429 setSite(app) 430 431 # Import students with subobjects 432 student_file = os.path.join(self.workdir, 'sample_student_data.csv') 433 open(student_file, 'wb').write(STUDENT_SAMPLE_DATA) 434 num, num_warns, fin_file, fail_file = StudentProcessor().doImport( 435 student_file, STUDENT_HEADER_FIELDS) 436 shutil.rmtree(os.path.dirname(fin_file)) 437 438 # Populate university 439 self.certificate = createObject('waeup.Certificate') 440 self.certificate.code = 'CERT1' 441 self.certificate.application_category = 'basic' 442 self.certificate.start_level = 200 443 self.certificate.end_level = 500 444 self.app['faculties']['fac1'] = Faculty() 445 self.app['faculties']['fac1']['dep1'] = Department() 446 self.app['faculties']['fac1']['dep1'].certificates.addCertificate( 447 self.certificate) 448 self.course = createObject('waeup.Course') 449 self.course.code = 'COURSE1' 450 self.course.semester = 1 451 self.course.credits = 10 452 self.course.passmark = 40 453 self.app['faculties']['fac1']['dep1'].courses.addCourse( 454 self.course) 455 self.app['faculties']['fac1']['dep1'].certificates['CERT1'].addCourseRef( 456 self.course, level=100) 457 458 # Update study courses 459 studycourse_file = os.path.join( 460 self.workdir, 'sample_studycourse_data.csv') 461 open(studycourse_file, 'wb').write(STUDYCOURSE_SAMPLE_DATA) 462 importer = StudentStudyCourseProcessor() 463 num, num_warns, fin_file, fail_file = importer.doImport( 464 studycourse_file, STUDYCOURSE_HEADER_FIELDS,'update') 465 shutil.rmtree(os.path.dirname(fin_file)) 466 467 # Import study levels 468 importer = StudentStudyLevelProcessor() 469 studylevel_file = os.path.join( 470 self.workdir, 'sample_studylevel_data.csv') 471 open(studylevel_file, 'wb').write(STUDYLEVEL_SAMPLE_DATA) 472 num, num_warns, fin_file, fail_file = importer.doImport( 473 studylevel_file, STUDYLEVEL_HEADER_FIELDS,'create') 474 shutil.rmtree(os.path.dirname(fin_file)) 475 476 self.importer = CourseTicketProcessor() 477 self.csv_file = os.path.join( 478 self.workdir, 'sample_courseticket_data.csv') 479 open(self.csv_file, 'wb').write(COURSETICKET_SAMPLE_DATA) 480 481 def tearDown(self): 482 super(CourseTicketImporterTest, self).tearDown() 483 shutil.rmtree(self.workdir) 484 shutil.rmtree(self.dc_root) 485 clearSite() 486 return 487 488 def test_interface(self): 489 # Make sure we fulfill the interface contracts. 490 assert verifyObject(IBatchProcessor, self.importer) is True 491 assert verifyClass( 492 IBatchProcessor, CourseTicketProcessor) is True 493 494 def test_checkConversion(self): 495 errs, inv_errs, conv_dict = self.importer.checkConversion( 496 dict(reg_number='1', code='COURSE1', level='220')) 497 self.assertEqual(len(errs),0) 498 errs, inv_errs, conv_dict = self.importer.checkConversion( 499 dict(reg_number='1', code='COURSE2', level='220')) 500 self.assertEqual(len(errs),1) 501 self.assertTrue(('code','non-existent') in errs) 502 503 def test_import(self): 504 505 num, num_warns, fin_file, fail_file = self.importer.doImport( 506 self.csv_file, COURSETICKET_HEADER_FIELDS,'create') 507 508 self.assertEqual(num_warns,2) 509 assert self.importer.entryExists( 510 dict(reg_number='1', level='100', code='COURSE1'), self.app) is True 511 courseticket = self.importer.getEntry( 512 dict(reg_number='1', level='100', code='COURSE1'), self.app) 513 self.assertEqual(courseticket.__parent__.__parent__.certificate.code, u'CERT1') 514 self.assertEqual(courseticket.score, 1) 515 self.assertEqual(courseticket.core_or_elective, True) 516 self.assertEqual(courseticket.fcode, 'NA') 517 self.assertEqual(courseticket.dcode, 'NA') 518 self.assertEqual(courseticket.code, 'COURSE1') 519 self.assertEqual(courseticket.title, 'Unnamed Course') 520 self.assertEqual(courseticket.credits, 10) 521 self.assertEqual(courseticket.passmark, 40) 522 self.assertEqual(courseticket.semester, 1) 523 #import pdb; pdb.set_trace() 524 shutil.rmtree(os.path.dirname(fin_file)) 525 526 367 527 def test_suite(): 368 528 suite = unittest.TestSuite() 369 529 for testcase in [ 370 530 StudentImporterTest,StudentStudyCourseImporterTest, 371 StudentStudyLevelImporterTest, ]:531 StudentStudyLevelImporterTest,CourseTicketImporterTest,]: 372 532 suite.addTest(unittest.TestLoader().loadTestsFromTestCase( 373 533 testcase
Note: See TracChangeset for help on using the changeset viewer.