Ignore:
Timestamp:
20 Sep 2012, 08:49:37 (12 years ago)
Author:
uli
Message:

Merge changes from update branch (includes trunk changes until r9107).

Location:
main/waeup.kofa/branches/uli-zc-async
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • main/waeup.kofa/branches/uli-zc-async

  • main/waeup.kofa/branches/uli-zc-async/src/waeup/kofa/students/tests/test_student.py

    r8735 r9209  
    2121import re
    2222import unittest
     23import grok
    2324from cStringIO import StringIO
    2425from datetime import tzinfo
    25 from zope.component import getUtility
     26from zope.component import getUtility, queryUtility, createObject
     27from zope.catalog.interfaces import ICatalog
    2628from zope.component.interfaces import IFactory
     29from zope.event import notify
    2730from zope.interface import verify
     31from zope.schema.interfaces import RequiredMissing
    2832from waeup.kofa.interfaces import IExtFileStore, IFileStoreNameChooser
    2933from waeup.kofa.students.export import EXPORTER_NAMES
     
    129133        studylevel = StudentStudyLevel()
    130134        self.assertRaises(
    131             TypeError, studylevel.addCourseTicket, department)
     135            TypeError, studylevel.addCourseTicket, department, department)
    132136
    133137    def test_booking_date(self):
     
    236240        return
    237241
     242class StudentTransferTests(StudentImportExportSetup):
     243
     244    layer = FunctionalLayer
     245
     246    def setUp(self):
     247        super(StudentTransferTests, self).setUp()
     248
     249        # Add additional certificate
     250        self.certificate2 = createObject('waeup.Certificate')
     251        self.certificate2.code = 'CERT2'
     252        self.certificate2.application_category = 'basic'
     253        self.certificate2.start_level = 200
     254        self.certificate2.end_level = 500
     255        self.app['faculties']['fac1']['dep1'].certificates.addCertificate(
     256            self.certificate2)
     257
     258        # Add student with subobjects
     259        student = Student()
     260        self.app['students'].addStudent(student)
     261        student = self.setup_student(student)
     262        notify(grok.ObjectModifiedEvent(student))
     263        self.student = self.app['students'][student.student_id]
     264        return
     265
     266    def test_transfer_student(self):
     267        self.assertRaises(
     268            RequiredMissing, self.student.transfer, self.certificate2)
     269        error = self.student.transfer(self.certificate2, current_session=1000)
     270        self.assertTrue(error == -1)
     271        error = self.student.transfer(self.certificate2, current_session=2013)
     272        self.assertTrue(error == None)
     273        self.assertEqual(self.student['studycourse_1'].certificate.code, 'CERT1')
     274        self.assertEqual(self.student['studycourse'].certificate.code, 'CERT2')
     275        self.assertEqual(self.student['studycourse_1'].current_session, 2012)
     276        self.assertEqual(self.student['studycourse'].current_session, 2013)
     277        self.assertEqual(self.student['studycourse'].entry_session,
     278            self.student['studycourse_1'].entry_session)
     279        self.assertEqual(self.student['studycourse_1'].__name__, 'studycourse_1')
     280        logfile = os.path.join(
     281            self.app['datacenter'].storage, 'logs', 'students.log')
     282        logcontent = open(logfile).read()
     283        self.assertTrue('system - K1000000 - transferred from CERT1 to CERT2'
     284            in logcontent)
     285        messages = ' '.join(self.student.history.messages)
     286        self.assertMatches(
     287            '...<YYYY-MM-DD hh:mm:ss> UTC - '
     288            'Transferred from CERT1 to CERT2 by system', messages)
     289
     290        # The students_catalog has been updated.
     291        cat = queryUtility(ICatalog, name='students_catalog')
     292        results = cat.searchResults(certcode=('CERT1', 'CERT1'))
     293        results = [x for x in results]
     294        self.assertEqual(len(results), 0)
     295        results = cat.searchResults(certcode=('CERT2', 'CERT2'))
     296        results = [x for x in results]
     297        self.assertEqual(len(results), 1)
     298        assert results[0] is self.app['students'][self.student.student_id]
     299        results = cat.searchResults(current_session=(2013,2013))
     300        results = [x for x in results]
     301        self.assertEqual(len(results), 1)
     302        assert results[0] is self.app['students'][self.student.student_id]
     303
     304        # Students can be transferred (only) two times.
     305        error = self.student.transfer(self.certificate,
     306            current_session=2013)
     307        self.assertTrue(error == None)
     308        error = self.student.transfer(self.certificate2,
     309            current_session=2013)
     310        self.assertTrue(error == -3)
     311        self.assertEqual([i for i in self.student.keys()],
     312            [u'accommodation', u'payments', u'studycourse',
     313             u'studycourse_1', u'studycourse_2'])
     314
     315        # The students_catalog has been updated again.
     316        cat = queryUtility(ICatalog, name='students_catalog')
     317        results = cat.searchResults(certcode=('CERT1', 'CERT1'))
     318        results = [x for x in results]
     319        self.assertEqual(len(results), 1)
     320        assert results[0] is self.app['students'][self.student.student_id]
     321        return
    238322
    239323class StudentFactoryTest(FunctionalTestCase):
Note: See TracChangeset for help on using the changeset viewer.