Changeset 7857
- Timestamp:
- 13 Mar 2012, 01:14:45 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/waeup.kofa/trunk/src/waeup/kofa/utils/tests/test_batching.py
r7811 r7857 21 21 import shutil 22 22 import tempfile 23 import unittest 23 24 from zope import schema 24 25 from zope.component import provideUtility … … 26 27 from zope.component.hooks import clearSite 27 28 from zope.component.interfaces import IFactory 28 from zope.interface import Interface, implements 29 from zope.interface import Interface, implements, verify 29 30 from waeup.kofa.app import University 31 from waeup.kofa.interfaces import ICSVExporter 30 32 from waeup.kofa.testing import FunctionalLayer, FunctionalTestCase 33 from waeup.kofa.utils.batching import ExporterBase 31 34 32 35 optionflags = ( … … 231 234 return 232 235 233 #def test_suite(): 234 # return unittest.TestSuite() 236 class ExporterBaseTests(unittest.TestCase): 237 238 def setUp(self): 239 self.workdir = tempfile.mkdtemp() 240 self.workfile = os.path.join(self.workdir, 'testfile.csv') 241 return 242 243 def tearDown(self): 244 shutil.rmtree(self.workdir) 245 return 246 247 def test_iface(self): 248 # ExporterBase really implements the promised interface. 249 obj = ExporterBase() 250 verify.verifyClass(ICSVExporter, ExporterBase) 251 verify.verifyObject(ICSVExporter, obj) 252 return 253 254 def test_unimplemented(self): 255 # make sure the not implemented methods signal that. 256 exporter = ExporterBase() 257 self.assertRaises(NotImplementedError, exporter.export_all, None) 258 self.assertRaises(NotImplementedError, exporter.export, None) 259 return 260 261 def test_mangle_value(self): 262 # some basic types are mangled correctly 263 exporter = ExporterBase() 264 result1 = exporter.mangle_value(True, 'foo') 265 result2 = exporter.mangle_value(False, 'foo') 266 result3 = exporter.mangle_value('string', 'foo') 267 result4 = exporter.mangle_value(u'string', 'foo') 268 result5 = exporter.mangle_value(None, 'foo') 269 self.assertEqual( 270 (result1, result2, result3, result4, result5), 271 ('1', '0', u'string', u'string', '')) 272 self.assertEqual(type(result3), type('string')) 273 self.assertEqual(type(result4), type('string')) 274 return 275 276 def test_get_csv_writer(self): 277 # we can get a CSV writer to a memory file 278 exporter = ExporterBase() 279 writer, outfile = exporter.get_csv_writer() 280 writer.writerow(dict(code='A', title='B', title_prefix='C')) 281 outfile.seek(0) 282 self.assertEqual( 283 outfile.read(), 284 'code,title,title_prefix\r\nA,B,C\r\n') 285 return 286 287 def test_get_csv_writer_with_file(self): 288 # we can get CSV writer that writes to a real file 289 exporter = ExporterBase() 290 writer, outfile = exporter.get_csv_writer(filepath=self.workfile) 291 writer.writerow(dict(code='A', title='B', title_prefix='C')) 292 outfile.close() 293 resultfile = open(self.workfile, 'rb') 294 self.assertEqual( 295 resultfile.read(), 296 'code,title,title_prefix\r\nA,B,C\r\n') 297 return 298 299 def test_write_item(self): 300 # we can write items to opened exporter files. 301 exporter = ExporterBase() 302 writer, outfile = exporter.get_csv_writer() 303 class Sample(object): 304 code = 'A' 305 title = u'B' 306 title_prefix = True 307 exporter.write_item(Sample(), writer) 308 outfile.seek(0) 309 self.assertEqual( 310 outfile.read(), 311 'code,title,title_prefix\r\nA,B,1\r\n') 312 return 313 314 def test_close_outfile(self): 315 # exporters can help to close outfiles. 316 exporter = ExporterBase() 317 writer, outfile = exporter.get_csv_writer() 318 result = exporter.close_outfile(None, outfile) 319 self.assertEqual(result, 'code,title,title_prefix\r\n') 320 return 321 322 def test_close_outfile(self): 323 # we can also close outfiles in real files. 324 exporter = ExporterBase() 325 writer, outfile = exporter.get_csv_writer(filepath=self.workfile) 326 result = exporter.close_outfile(self.workfile, outfile) 327 self.assertEqual(result, None) 328 return
Note: See TracChangeset for help on using the changeset viewer.