# -*- coding: utf-8 -*- import grok from hurry.workflow.interfaces import IWorkflowState from zope.component import getUtility from waeup.kofa.testing import FunctionalTestCase from waeup.kofa.university.faculty import Faculty from waeup.kofa.university.department import Department from waeup.kofa.students.student import Student from waeup.kofa.students.interfaces import IStudentsUtils from waeup.kofa.students.tests.test_browser import StudentsFullSetup from waeup.kwarapoly.testing import FunctionalLayer class StudentsUtilsTests(StudentsFullSetup): layer = FunctionalLayer def test_getAccommodationDetails(self): students_utils = getUtility(IStudentsUtils) acc_details = students_utils.getAccommodationDetails(self.student) self.assertEqual(acc_details['bt'], 'regular_male_fr') self.student['studycourse'].current_level = 200 acc_details = students_utils.getAccommodationDetails(self.student) self.assertEqual(acc_details['bt'], 'regular_male_re') self.student['studycourse'].current_level = 210 acc_details = students_utils.getAccommodationDetails(self.student) self.assertEqual(acc_details['bt'], 'regular_male_re') self.student['studycourse'].current_level = 300 acc_details = students_utils.getAccommodationDetails(self.student) self.assertEqual(acc_details['bt'], 'regular_male_fi') self.student['studycourse'].current_level = 400 acc_details = students_utils.getAccommodationDetails(self.student) self.assertEqual(acc_details['bt'], 'regular_male_fr') self.student['studycourse'].current_level = 500 acc_details = students_utils.getAccommodationDetails(self.student) self.assertEqual(acc_details['bt'], 'regular_male_re') self.student['studycourse'].current_level = 510 acc_details = students_utils.getAccommodationDetails(self.student) self.assertEqual(acc_details['bt'], 'regular_male_re') self.student['studycourse'].current_level = 600 acc_details = students_utils.getAccommodationDetails(self.student) self.assertEqual(acc_details['bt'], 'regular_male_fi') return def test_setMatricNumber(self): # Add second student secondstudent = Student() secondstudent.firstname = u'second' secondstudent.lastname = u'Student' self.app['students'].addStudent(secondstudent) student_id = secondstudent.student_id secondstudent['studycourse'].certificate = self.certificate secondstudent['studycourse'].entry_session = 2015 secondstudent['studycourse'].entry_mode = 'nd_ft' IWorkflowState(secondstudent).setState('school fee paid') utils = getUtility(IStudentsUtils) self.student.matric_number = None msg, mnumber = utils.setMatricNumber(self.student) self.assertEqual(msg, 'Available from session 2015/2016') self.student['studycourse'].entry_mode = 'nd_ft' self.student['studycourse'].entry_session = 2015 msg, mnumber = utils.setMatricNumber(self.student) self.assertEqual(mnumber, None) self.assertEqual(msg, 'Wrong state.') IWorkflowState(self.student).setState('school fee paid') msg, mnumber = utils.setMatricNumber(self.student) self.assertEqual(self.student.matric_number, 'ND/15/dep1/FT/001') msg, mnumber = utils.setMatricNumber(self.student) self.assertEqual(msg, 'Matriculation number already set.') # Second student gets nex matric number msg, mnumber = utils.setMatricNumber(secondstudent) self.assertEqual(secondstudent.matric_number, 'ND/15/dep1/FT/002') self.student.matric_number = u'ND/15/dep1/FT/011' secondstudent.matric_number = None msg, mnumber = utils.setMatricNumber(secondstudent) self.assertEqual(secondstudent.matric_number, 'ND/15/dep1/FT/012') # Certificate must be set. self.student.matric_number = None self.student['studycourse'].certificate = None msg, mnumber = utils.setMatricNumber(self.student) self.assertEqual(msg, 'No certificate assigned.') return def test_maxCreditsExceeded(self): students_utils = getUtility(IStudentsUtils) studylevel = grok.Container() studylevel.total_credits = 60 course = grok.Model() course.credits = 88 warning = students_utils.warnCreditsOOR(studylevel, course) self.assertEqual(warning, None) return