# Tests for schoolgrades module. import unittest from zope.component import getGlobalSiteManager from zope.interface.verify import verifyObject, verifyClass from zope.schema.interfaces import ConstraintNotSatisfied from waeup.kofa.interfaces import IResultEntry, IResultEntryField, IKofaUtils from waeup.kofa.schoolgrades import ResultEntry, ResultEntryField from waeup.kofa.utils.utils import KofaUtils class ResultEntryTests(unittest.TestCase): def setUp(self): self.utils = KofaUtils() self.gsm = getGlobalSiteManager() self.gsm.registerUtility(self.utils, IKofaUtils) self.valid_subj = self.utils.EXAM_SUBJECTS_DICT.keys()[0] self.valid_grade = self.utils.EXAM_GRADES[0][0] return def tearDown(self): self.gsm.unregisterUtility(self.utils) return def test_ifaces(self): # make sure we implement the promised interfaces. obj = ResultEntry() verifyObject(IResultEntry, obj) verifyClass(IResultEntry, ResultEntry) return def test_init(self): # we can pass initial values item1 = ResultEntry() item2 = ResultEntry(self.valid_subj, self.valid_grade) self.assertTrue(item1.subject is None) self.assertTrue(item1.grade is None) self.assertEqual(item2.subject, self.valid_subj) self.assertEqual(item2.grade, self.valid_grade) return def test_illegal_value(self): # we do not accept values not stored in KofaUtils item = ResultEntry() self.assertRaises( ConstraintNotSatisfied, ResultEntry, 'invalid', 'invalid') self.assertRaises( ConstraintNotSatisfied, ResultEntry, 'invalid') self.assertRaises( ConstraintNotSatisfied, setattr, item, 'subject', 'blah') self.assertRaises( ConstraintNotSatisfied, setattr, item, 'grade', 'blah') return def test_to_string(self): # the string representation is handy for export item1 = ResultEntry() item2 = ResultEntry(self.valid_subj, self.valid_grade) self.assertEqual(item1.to_string(), u"(None, None)") self.assertEqual(item2.to_string(), u"('%s', '%s')" % ( self.valid_subj, self.valid_grade)) return def test_from_string(self): # we can create new result entries based on strings myinput = u"(u'%s',u'%s')" % ( self.valid_subj, self.valid_grade) item1 = ResultEntry.from_string(myinput) item2 = ResultEntry.from_string(u"(u'',u'')") item3 = ResultEntry.from_string(u"(None, None)") self.assertEqual(item1.subject, self.valid_subj) self.assertEqual(item1.grade, self.valid_grade) self.assertTrue(item2.subject is None) self.assertTrue(item2.grade is None) self.assertTrue(item3.subject is None) self.assertTrue(item3.grade is None) return class ResultEntryFieldTests(unittest.TestCase): def test_ifaces(self): # make sure we implement the promised interfaces. obj = ResultEntryField() verifyObject(IResultEntryField, obj) verifyClass(IResultEntryField, ResultEntryField) return