Ignore:
Timestamp:
4 Nov 2012, 07:48:11 (12 years ago)
Author:
Henrik Bettermann
Message:

Reorganize getReturningData.

Students can pay for previous sessions in all workflow states.
Fresh students are excluded by the update method of the
PreviousPaymentAddFormPage?.

Students are only allowed to pay for the next session if current session payment has really been made, i.e. payment object exists and is paid.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/waeup.uniben/trunk/src/waeup/uniben/students/tests/test_browser.py

    r9513 r9520  
    214214        self.browser.addHeader('Authorization', 'Basic mgr:mgrpw')
    215215        self.browser.open(self.payments_path)
    216         self.browser.getControl("Add online payment ticket").click()
     216        self.browser.getLink("Add current session payment ticket").click()
    217217        self.browser.getControl("Create ticket").click()
    218218        self.assertMatches('...Amount could not be determined...',
     
    248248        self.assertMatches('...ticket created...',
    249249                           self.browser.contents)
     250        schoolfee_ticket = self.student['payments'].values()[0]
    250251        self.browser.open(self.payments_path + '/addop')
    251252        self.browser.getControl(name="form.p_category").value = ['gown']
     
    286287        self.browser.getControl(name="form.p_category").value = ['schoolfee']
    287288        self.browser.getControl("Create ticket").click()
     289        # Uups, we forgot to add a session configuration for next session
    288290        self.assertMatches('...Session configuration object is not...',
    289291                           self.browser.contents)
    290         # Uups, we forgot to add a session configuration for next session
    291292        configuration = createObject('waeup.SessionConfiguration')
    292293        configuration.academic_session = 2005
    293294        self.app['configuration'].addSessionConfiguration(configuration)
     295        self.browser.open(self.payments_path + '/addop')
     296        self.browser.getControl(name="form.p_category").value = ['schoolfee']
     297        self.browser.getControl("Create ticket").click()
     298        self.assertMatches('...You have not yet paid your current/active session...',
     299                           self.browser.contents)
     300        # Ok, let's pay the first schoolfee ticket.
     301        schoolfee_ticket.approve()
    294302        self.browser.open(self.payments_path + '/addop')
    295303        self.browser.getControl(name="form.p_category").value = ['schoolfee']
     
    309317        del self.app['configuration']['2004']
    310318        self.browser.open(self.payments_path)
    311         self.browser.getControl("Add online payment ticket").click()
     319        self.browser.getLink("Add current session payment ticket").click()
    312320        self.browser.getControl("Create ticket").click()
    313321        self.assertMatches('...Session configuration object is not...',
     
    375383            self.student, None, None)
    376384        self.assertEqual(payment, None)
     385        # Student is in state 'created' and can thus not pay.
    377386        self.assertTrue(u'Amount could not be determined.' in error)
    378387
     
    383392        self.assertTrue(u'The previous session must not fall below' in error)
    384393        error, payment = utils.setPaymentDetails('schoolfee',
    385             self.student, 2004, 300)
     394            self.student, 2005, 300)
    386395        self.assertEqual(payment, None)
    387396        self.assertTrue(u'This is not a previous session' in error)
    388397
    389         # Previous session payment; fresh and returning
     398        # Previous session schoolfee payment; fresh and returning
    390399        # are distinguished by their entry_level
    391400        error, payment = utils.setPaymentDetails('schoolfee',
     
    402411        self.assertFalse(payment.p_current)
    403412
    404         # Current payment; fresh and returning
     413        # Current schoolfee payment; fresh and returning
    405414        # are distinguished by their state
    406415        IWorkflowState(self.student).setState('cleared')
     
    426435        error, payment = utils.setPaymentDetails('schoolfee',
    427436            self.student, None, None)
     437        self.assertTrue(
     438            u'You have not yet paid your current/active session.' in error)
     439        # Ok, that means we have to add paid payment ticket first.
     440        payment = createObject('waeup.StudentOnlinePayment')
     441        payment.p_category = u'schoolfee'
     442        payment.p_session = self.student.current_session
     443        payment.p_item = u'My Certificate'
     444        payment.p_id = u'anyid'
     445        payment.p_state = u'paid'
     446        self.student['payments']['anykey'] = payment
     447        error, payment = utils.setPaymentDetails('schoolfee',
     448            self.student, None, None)
    428449        self.assertEqual(payment.p_level, 200)
    429450        self.assertEqual(payment.p_session, 2005)
     
    431452        self.assertEqual(payment.p_item, u'CERT1')
    432453        self.assertEqual(error, None)
     454
     455        # Staff members pay less.
    433456        self.student.is_staff = True
    434457        error, payment = utils.setPaymentDetails('schoolfee',
     
    440463        self.assertEqual(error, None)
    441464
     465        # Foreigners pay more.
    442466        IWorkflowState(self.student).setState('cleared')
    443467        self.student.is_staff = False
     
    451475        self.assertEqual(payment.p_item, u'CERT1')
    452476        self.assertEqual(error, None)
    453 
    454477        IWorkflowState(self.student).setState('returning')
    455478        self.student.is_staff = False
    456         self.student.nationality = u'DE'
    457479        self.certificate.school_fee_4 = 20000.0
    458480        error, payment = utils.setPaymentDetails(
     
    467489        # if they are ug or pg students.
    468490        IWorkflowState(self.student).setState('school fee paid')
    469         self.certificate.study_mode = 'special_pg_pt'
    470491        self.student.is_staff = False
    471492        self.student.nationality = u'NG'
    472493        self.certificate.school_fee_2 = 10000.0
    473 
     494        error, payment = utils.setPaymentDetails(
     495            'schoolfee', self.student, None, None)
     496        self.assertEqual(payment.p_level, None)
     497        self.assertEqual(payment.p_session, 2005)
     498        self.assertEqual(payment.amount_auth, 10088.0)
     499        self.assertEqual(payment.p_item, u'CERT1')
     500        self.assertEqual(error, None)
     501        IWorkflowState(self.student).setState('courses registered')
     502        self.certificate.study_mode = 'special_pg_pt'
    474503        error, payment = utils.setPaymentDetails(
    475504            'schoolfee', self.student, None, None)
     
    479508        self.assertEqual(payment.p_item, u'CERT1')
    480509        self.assertEqual(error, None)
    481 
    482         IWorkflowState(self.student).setState('courses registered')
    483         error, payment = utils.setPaymentDetails(
    484             'schoolfee', self.student, None, None)
    485         self.assertEqual(payment.p_level, None)
    486         self.assertEqual(payment.p_session, 2005)
    487         self.assertEqual(payment.amount_auth, 10000.0)
    488         self.assertEqual(payment.p_item, u'CERT1')
    489         self.assertEqual(error, None)
    490 
    491510        IWorkflowState(self.student).setState('courses validated')
    492511        error, payment = utils.setPaymentDetails(
Note: See TracChangeset for help on using the changeset viewer.