source: main/waeup.kofa/trunk/src/waeup/kofa/tests/test_schoolgrades.py @ 7933

Last change on this file since 7933 was 7923, checked in by uli, 13 years ago

Clean up imports.

File size: 3.2 KB
Line 
1# Tests for schoolgrades module.
2import unittest
3from zope.component import getGlobalSiteManager
4from zope.interface.verify import verifyObject, verifyClass
5from zope.schema.interfaces import ConstraintNotSatisfied
6from waeup.kofa.interfaces import IResultEntry, IResultEntryField, IKofaUtils
7from waeup.kofa.schoolgrades import ResultEntry, ResultEntryField
8from waeup.kofa.utils.utils import KofaUtils
9
10class ResultEntryTests(unittest.TestCase):
11
12    def setUp(self):
13        self.utils = KofaUtils()
14        self.gsm = getGlobalSiteManager()
15        self.gsm.registerUtility(self.utils, IKofaUtils)
16        self.valid_subj = self.utils.EXAM_SUBJECTS_DICT.keys()[0]
17        self.valid_grade = self.utils.EXAM_GRADES[0][0]
18        return
19
20    def tearDown(self):
21        self.gsm.unregisterUtility(self.utils)
22        return
23
24    def test_ifaces(self):
25        # make sure we implement the promised interfaces.
26        obj = ResultEntry()
27        verifyObject(IResultEntry, obj)
28        verifyClass(IResultEntry, ResultEntry)
29        return
30
31    def test_init(self):
32        # we can pass initial values
33        item1 = ResultEntry()
34        item2 = ResultEntry(self.valid_subj, self.valid_grade)
35        self.assertTrue(item1.subject is None)
36        self.assertTrue(item1.grade is None)
37        self.assertEqual(item2.subject, self.valid_subj)
38        self.assertEqual(item2.grade, self.valid_grade)
39        return
40
41    def test_illegal_value(self):
42        # we do not accept values not stored in KofaUtils
43        item = ResultEntry()
44        self.assertRaises(
45            ConstraintNotSatisfied, ResultEntry, 'invalid', 'invalid')
46        self.assertRaises(
47            ConstraintNotSatisfied, ResultEntry, 'invalid')
48        self.assertRaises(
49            ConstraintNotSatisfied, setattr, item, 'subject', 'blah')
50        self.assertRaises(
51            ConstraintNotSatisfied, setattr, item, 'grade', 'blah')
52        return
53
54    def test_to_string(self):
55        # the string representation is handy for export
56        item1 = ResultEntry()
57        item2 = ResultEntry(self.valid_subj, self.valid_grade)
58        self.assertEqual(item1.to_string(), u"(None, None)")
59        self.assertEqual(item2.to_string(), u"('%s', '%s')" % (
60            self.valid_subj, self.valid_grade))
61        return
62
63    def test_from_string(self):
64        # we can create new result entries based on strings
65        myinput = u"(u'%s',u'%s')" % (
66            self.valid_subj, self.valid_grade)
67        item1 = ResultEntry.from_string(myinput)
68        item2 = ResultEntry.from_string(u"(u'',u'')")
69        item3 = ResultEntry.from_string(u"(None, None)")
70        self.assertEqual(item1.subject, self.valid_subj)
71        self.assertEqual(item1.grade, self.valid_grade)
72        self.assertTrue(item2.subject is None)
73        self.assertTrue(item2.grade is None)
74        self.assertTrue(item3.subject is None)
75        self.assertTrue(item3.grade is None)
76        return
77
78class ResultEntryFieldTests(unittest.TestCase):
79
80    def test_ifaces(self):
81        # make sure we implement the promised interfaces.
82        obj = ResultEntryField()
83        verifyObject(IResultEntryField, obj)
84        verifyClass(IResultEntryField, ResultEntryField)
85        return
86
Note: See TracBrowser for help on using the repository browser.