Ignore:
Timestamp:
21 Sep 2012, 08:19:35 (12 years ago)
Author:
uli
Message:

Rollback r9209. Looks like multiple merges from trunk confuse svn when merging back into trunk.

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/hostels/tests.py

    r9209 r9211  
    1919Tests for hostels and their UI components.
    2020"""
    21 import os
    2221import shutil
    2322import tempfile
     
    3736from waeup.kofa.hostels.container import HostelsContainer
    3837from waeup.kofa.hostels.hostel import Hostel, Bed
    39 from waeup.kofa.hostels.batching import HostelProcessor
    40 from waeup.kofa.hostels.export import BedExporter, HostelExporter
    4138from waeup.kofa.testing import (FunctionalLayer, FunctionalTestCase)
    4239from waeup.kofa.students.student import Student
    4340from waeup.kofa.students.accommodation import BedTicket
    4441from waeup.kofa.university.department import Department
    45 
    46 HOSTEL_SAMPLE_DATA = open(
    47     os.path.join(os.path.dirname(__file__), 'sample_hostel_data.csv'),
    48     'rb').read()
    49 
    50 HOSTEL_HEADER_FIELDS = HOSTEL_SAMPLE_DATA.split(
    51     '\n')[0].split(',')
    5242
    5343class HostelsContainerTestCase(FunctionalTestCase):
     
    152142        # Create a bed
    153143        bed = Bed()
    154         bed.bed_id = u'hall_block_room_bed'
     144        bed.bed_id = u'xyz'
    155145        bed.bed_number = 1
    156         bed.bed_type = u'a_b_c'
     146        bed.bed_type = u'abc'
    157147        self.app['hostels'][hostel.hostel_id][bed.bed_id] = bed
    158148
     
    167157        self.browser.handleErrors = False
    168158
    169         self.logfile = os.path.join(
    170             self.app['datacenter'].storage, 'logs', 'hostels.log')
    171 
    172159    def tearDown(self):
    173160        super(HostelsFullSetup, self).tearDown()
     
    187174        # We can find a certain bed
    188175        cat = queryUtility(ICatalog, name='beds_catalog')
    189         results = cat.searchResults(bed_type=(u'a_b_c', u'a_b_c'))
     176        results = cat.searchResults(bed_type=(u'abc', u'abc'))
    190177        results = [x for x in results] # Turn results generator into list
    191178        assert len(results) == 1
    192         assert results[0] is self.app['hostels']['hall-x']['hall_block_room_bed']
     179        assert results[0] is self.app['hostels']['hall-x']['xyz']
    193180
    194181    def test_search_by_owner(self):
    195182        # We can find a certain bed
    196         myobj = self.app['hostels']['hall-x']['hall_block_room_bed']
     183        myobj = self.app['hostels']['hall-x']['xyz']
    197184        myobj.owner = u'abc'
    198185        notify(grok.ObjectModifiedEvent(myobj))
     
    201188        results = [x for x in results] # Turn results generator into list
    202189        assert len(results) == 1
    203         assert results[0] is self.app['hostels']['hall-x']['hall_block_room_bed']
     190        assert results[0] is self.app['hostels']['hall-x']['xyz']
    204191
    205192class HostelsUITests(HostelsFullSetup):
     
    313300        self.assertMatches(
    314301          '...No allocated bed selected...', self.browser.contents)
    315         # Managers can manually allocate students after cancellation
     302        # Managers can manually allocate studenst after cancellation
    316303        self.browser.open(self.container_path + '/hall-1/hall-1_A_101_A')
    317304        self.browser.getControl(name="form.owner").value = [self.student_id]
     
    347334        # Also the number of the bed has changed.
    348335        self.assertFalse(new_number == old_number)
    349         # The number of occupied bed are displayed on container page.
    350         self.browser.open(self.container_path)
    351         self.assertTrue('1 of 8' in self.browser.contents)
    352336        # Remove entire hostel
    353337        self.browser.open(self.manage_container_path)
     
    362346        results = [x for x in results]
    363347        assert len(results) == 0
    364 
    365     def test_clear_hostels(self):
    366         self.browser.addHeader('Authorization', 'Basic mgr:mgrpw')
    367         self.browser.open(self.container_path)
    368         self.browser.getLink("Manage accommodation").click()
    369         self.browser.getControl("Add hostel").click()
    370         self.browser.getControl("Create hostel").click()
    371         hall = self.app['hostels']['hall-1']
    372         hall.blocks_for_female = ['A','B']
    373         hall.rooms_per_floor = 1
    374         hall.beds_for_fresh = ['A']
    375         hall.beds_for_returning = ['B']
    376         hall.beds_for_final = ['C']
    377         hall.beds_for_all = ['D','E']
    378         self.browser.open(self.container_path + '/hall-1/manage')
    379         self.browser.getControl("Update all beds").click()
    380         cat = queryUtility(ICatalog, name='beds_catalog')
    381         results = cat.searchResults(bed_type=(None, None))
    382         self.assertEqual(len(results), 11)
    383         self.browser.getControl("Clear hostel").click()
    384         self.assertEqual(len(self.app['hostels']['hall-1']), 0)
    385         # Only the bed in hall-x remains in the catalog.
    386         results = cat.searchResults(bed_type=(None, None))
    387         self.assertEqual(len(results), 1)
    388         # We can clear all hostels at the same time.
    389         self.browser.open(self.manage_container_path)
    390         self.browser.getControl("Clear all hostels").click()
    391         results = cat.searchResults(bed_type=(None, None))
    392         self.assertEqual(len(results), 0)
    393         # Both actions have been logged.
    394         logcontent = open(self.logfile).read()
    395         self.assertTrue('INFO - zope.mgr - hostels.browser.HostelManageFormPage'
    396                         ' - hall-1 - cleared' in logcontent)
    397         self.assertTrue('zope.mgr - hostels.browser.HostelsContainerManagePage'
    398                         ' - hostels - all hostels cleared' in logcontent)
    399 
    400 class ExportTests(HostelsFullSetup):
    401 
    402     layer = FunctionalLayer
    403 
    404     def setUp(self):
    405         super(ExportTests, self).setUp()
    406         self.workdir = tempfile.mkdtemp()
    407         self.outfile = os.path.join(self.workdir, 'myoutput.csv')
    408         return
    409 
    410     def test_export_hostels(self):
    411         exporter = HostelExporter()
    412         exporter.export_all(self.app, self.outfile)
    413         result = open(self.outfile, 'rb').read()
    414         self.assertEqual(
    415             result,
    416             'beds_for_all,beds_for_final,beds_for_fresh,beds_for_pre,'
    417             'beds_for_returning,beds_reserved,blocks_for_female,'
    418             'blocks_for_male,floors_per_block,hostel_id,hostel_name,'
    419             'rooms_per_floor,sort_id,special_handling\r\n,,,,,[],,,1,'
    420             'hall-x,Hall 1,2,10,regular\r\n'
    421             )
    422         return
    423 
    424     def test_export_beds(self):
    425         exporter = BedExporter()
    426         exporter.export_all(self.app, self.outfile)
    427         result = open(self.outfile, 'rb').read()
    428         self.assertEqual(
    429             result,
    430             'bed_id,bed_number,bed_type,owner,hall,block,room,bed,'
    431             'special_handling,sex,bt\r\nhall_block_room_bed,1,a_b_c,,'
    432             'hall,block,room,bed,a,b,c\r\n'
    433             )
    434         return
    435 
    436 class HostelProcessorTest(HostelsFullSetup):
    437 
    438     layer = FunctionalLayer
    439 
    440     def test_import(self):
    441         self.processor = HostelProcessor()
    442         self.workdir = tempfile.mkdtemp()
    443         self.csv_file = os.path.join(self.workdir, 'sample_student_data.csv')
    444         open(self.csv_file, 'wb').write(HOSTEL_SAMPLE_DATA)
    445         num, num_warns, fin_file, fail_file = self.processor.doImport(
    446             self.csv_file, HOSTEL_HEADER_FIELDS)
    447         self.assertEqual(num_warns,0)
    448         self.assertEqual(len(self.app['hostels'].keys()), 11) # including hall-x
    449         self.assertEqual(self.app['hostels'][
    450             'block-a-upper-hostel'].hostel_id,'block-a-upper-hostel')
    451         self.assertEqual(self.app['hostels'][
    452             'block-a-upper-hostel'].beds_for_final, ['A', 'B'])
    453         logcontent = open(self.logfile).read()
    454         self.assertTrue(
    455             "Hostel Processor - block-a-upper-hostel - "
    456             "Record updated: beds_for_pre=['G'], floors_per_block=1, "
    457             "beds_for_final=['A', 'B'], rooms_per_floor=32, "
    458             "blocks_for_male=[], hostel_id=block-a-upper-hostel, "
    459             "sort_id=20, beds_for_returning=['C', 'D'], "
    460             "hostel_name=Block A Upper Hostel, beds_for_fresh=['E', 'F'], "
    461             "blocks_for_female=['A'], beds_for_all=[], beds_reserved=[]"
    462             in logcontent)
    463         shutil.rmtree(os.path.dirname(fin_file))
    464         return
Note: See TracChangeset for help on using the changeset viewer.