Changeset 7739


Ignore:
Timestamp:
1 Mar 2012, 09:22:47 (13 years ago)
Author:
uli
Message:

Add course exporter tests.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/waeup.sirp/trunk/src/waeup/sirp/university/tests/test_export.py

    r7731 r7739  
    77from waeup.sirp.interfaces import ICSVExporter
    88from waeup.sirp.testing import SIRPUnitTestLayer
    9 from waeup.sirp.university import FacultiesContainer, Faculty, Department
    10 from waeup.sirp.university.export import FacultyExporter, DepartmentExporter
     9from waeup.sirp.university import (
     10    FacultiesContainer, Faculty, Department, Course,
     11    )
     12from waeup.sirp.university.export import (
     13    FacultyExporter, DepartmentExporter, CourseExporter,
     14    )
    1115
    1216class FacultyExporterTest(unittest.TestCase):
     
    133137
    134138    def test_get_as_utility(self):
    135         # we can get a faculty exporter as utility
     139        # we can get a department exporter as utility
    136140        result = queryUtility(ICSVExporter, name="departments")
    137141        self.assertTrue(result is not None)
     
    188192            )
    189193        return
     194
     195class CourseExporterTest(unittest.TestCase):
     196    # Tests for CourseExporter
     197
     198    layer = SIRPUnitTestLayer
     199
     200    def setUp(self):
     201        self.workdir = tempfile.mkdtemp()
     202        self.outfile = os.path.join(self.workdir, 'myoutput.csv')
     203        # create some departments and courses in a fake site
     204        container = FacultiesContainer()
     205        self.site = {'faculties':container}
     206        self.fac = Faculty('Faculty of Cheese', 'faculty', 'F1')
     207        container.addFaculty(self.fac)
     208        self.dept1 = Department('Department of Cheddar', 'department', 'D1')
     209        self.dept2 = Department('Institue of Gouda', 'institute', 'D2')
     210        self.fac.addDepartment(self.dept1)
     211        self.fac.addDepartment(self.dept2)
     212        self.course1 = Course('Cheese Basics', 'C1')
     213        self.course2 = Course('Advanced Cheese Making', 'C2')
     214        self.course3 = Course('Selling Cheese', 'C3')
     215        self.dept1.courses[u'C1'] = self.course1
     216        self.dept1.courses['C2'] = self.course2
     217        self.dept2.courses[u'C3'] = self.course3
     218        return
     219
     220    def tearDown(self):
     221        shutil.rmtree(self.workdir)
     222        return
     223
     224    def test_ifaces(self):
     225        # make sure we fullfill interface contracts
     226        obj = CourseExporter()
     227        verifyObject(ICSVExporter, obj)
     228        verifyClass(ICSVExporter, CourseExporter)
     229        return
     230
     231    def test_get_as_utility(self):
     232        # we can get a course exporter as utility
     233        result = queryUtility(ICSVExporter, name="courses")
     234        self.assertTrue(result is not None)
     235        return
     236
     237    def test_export(self):
     238        # we can export an iterable of courses
     239        exporter = CourseExporter()
     240        exporter.export([self.course1], self.outfile)
     241        result = open(self.outfile, 'rb').read()
     242        self.assertEqual(
     243            result,
     244            'code,faculty,department,title,credits,passmark,semester\r\n'
     245            'C1,F1,,Cheese Basics,0,40,1\r\n'
     246            )
     247        return
     248
     249    def test_export_to_string(self):
     250        # we can export an iterable of courses to a string.
     251        exporter = CourseExporter()
     252        result = exporter.export([self.course1, self.course2], filepath=None)
     253        self.assertEqual(
     254            result,
     255            'code,faculty,department,title,credits,passmark,semester\r\n'
     256            'C1,F1,,Cheese Basics,0,40,1\r\n'
     257            'C2,F1,,Advanced Cheese Making,0,40,1\r\n'
     258            )
     259        return
     260
     261    def test_export_all(self):
     262        # we can export all courses in a site
     263        exporter = CourseExporter()
     264        exporter.export_all(self.site, self.outfile)
     265        result = open(self.outfile, 'rb').read()
     266        self.assertEqual(
     267            result,
     268            'code,faculty,department,title,credits,passmark,semester\r\n'
     269            'C1,F1,,Cheese Basics,0,40,1\r\n'
     270            'C2,F1,,Advanced Cheese Making,0,40,1\r\n'
     271            'C3,F1,,Selling Cheese,0,40,1\r\n'
     272            )
     273        return
     274
     275    def test_export_all_to_string(self):
     276        # we can export all courses in a site to a string
     277        exporter = CourseExporter()
     278        result = exporter.export_all(self.site, filepath=None)
     279        self.assertEqual(
     280            result,
     281            'code,faculty,department,title,credits,passmark,semester\r\n'
     282            'C1,F1,,Cheese Basics,0,40,1\r\n'
     283            'C2,F1,,Advanced Cheese Making,0,40,1\r\n'
     284            'C3,F1,,Selling Cheese,0,40,1\r\n'
     285            )
     286        return
Note: See TracChangeset for help on using the changeset viewer.