Ignore:
Timestamp:
6 May 2012, 14:33:14 (13 years ago)
Author:
uli
Message:

Add payments exporter.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/waeup.kofa/trunk/src/waeup/kofa/students/tests/test_export.py

    r8341 r8371  
     1import datetime
    12from zope.component import queryUtility
    23from zope.interface.verify import verifyObject, verifyClass
     
    45from waeup.kofa.students.export import (
    56    StudentsExporter, StudentStudyCourseExporter, StudentStudyLevelExporter,
    6     CourseTicketExporter)
     7    CourseTicketExporter, PaymentsExporter)
     8from waeup.kofa.students.payments import StudentOnlinePayment
    79from waeup.kofa.students.student import StudentStudyCourse
    810from waeup.kofa.students.studylevel import StudentStudyLevel, CourseTicket
     
    273275            )
    274276        return
     277
     278class PaymentsExporterTest(StudentImportExportSetup):
     279
     280    layer = FunctionalLayer
     281
     282    def setUp(self):
     283        super(PaymentsExporterTest, self).setUp()
     284        self.setup_for_export()
     285        return
     286
     287    def get_payment(self):
     288        # get a payment with all fields set
     289        payment = StudentOnlinePayment()
     290        payment.creation_date = datetime.datetime(2012, 4, 1, 13, 12, 1)
     291        payment.p_id = 'my-id'
     292        payment.ac = u'666'
     293        payment.p_item = u'p-item'
     294        payment.p_level = 100
     295        payment.p_session = 2012
     296        payment.payment_date = datetime.datetime(2012, 4, 1, 14, 12, 1)
     297        payment.r_amount_approved = 12.12
     298        payment.r_code = u'r-code'
     299        # XXX: there is no addPayment method to give predictable names
     300        self.student['payments']['my-payment'] = payment
     301        return payment
     302
     303    def test_ifaces(self):
     304        # make sure we fullfill interface contracts
     305        obj = PaymentsExporter()
     306        verifyObject(ICSVExporter, obj)
     307        verifyClass(ICSVExporter, PaymentsExporter)
     308        return
     309
     310    def test_get_as_utility(self):
     311        # we can get a payments exporter as utility
     312        result = queryUtility(ICSVExporter, name="studentpayments")
     313        self.assertTrue(result is not None)
     314        return
     315
     316    def test_export_empty(self):
     317        # we can export a nearly empty payment
     318        payment = StudentOnlinePayment()
     319        payment.creation_date = datetime.datetime(2012, 4, 1, 13, 12, 1)
     320        exporter = PaymentsExporter()
     321        exporter.export([payment], self.outfile)
     322        result = open(self.outfile, 'rb').read()
     323        self.assertEqual(
     324            result,
     325            'ac,amount_auth,creation_date,matric_number,p_category,p_id,'
     326            'p_item,p_level,p_session,p_state,payment_date,r_amount_approved,'
     327            'r_code,reg_number\r\n'
     328
     329            ',0.0,2012-04-01 13:12:01,,schoolfee,,,,,unpaid,,0.0,,\r\n'
     330            )
     331        return
     332
     333    def test_export(self):
     334        # we can really export student payments.
     335        # set values we can expect in export file
     336        self.setup_student(self.student)
     337        payment = self.get_payment()
     338        exporter = PaymentsExporter()
     339        exporter.export([payment], self.outfile)
     340        result = open(self.outfile, 'rb').read()
     341        self.assertEqual(
     342            result,
     343            'ac,amount_auth,creation_date,matric_number,p_category,p_id,'
     344            'p_item,p_level,p_session,p_state,payment_date,r_amount_approved,'
     345            'r_code,reg_number\r\n'
     346
     347            '666,0.0,2012-04-01 13:12:01,M123456,schoolfee,my-id,'
     348            'p-item,100,2012,unpaid,2012-04-01 14:12:01,12.12,'
     349            'r-code,123456\r\n'
     350            )
     351        return
     352
     353    def test_export_all(self):
     354        # we can really export all payments
     355        # set values we can expect in export file
     356        self.setup_student(self.student)
     357        self.get_payment() # adds new payment to student
     358        exporter = PaymentsExporter()
     359        exporter.export_all(self.app, self.outfile)
     360        result = open(self.outfile, 'rb').read()
     361        self.assertEqual(
     362            result,
     363            'ac,amount_auth,creation_date,matric_number,p_category,p_id,'
     364            'p_item,p_level,p_session,p_state,payment_date,r_amount_approved,'
     365            'r_code,reg_number\r\n'
     366
     367            '666,0.0,2012-04-01 13:12:01,M123456,schoolfee,my-id,'
     368            'p-item,100,2012,unpaid,2012-04-01 14:12:01,12.12,'
     369            'r-code,123456\r\n'
     370            )
     371        return
Note: See TracChangeset for help on using the changeset viewer.