1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
|
# -*- coding: iso-8859-1 -*-
import os, sys
if __name__ == '__main__':
execfile(os.path.join(sys.path[0], 'framework.py'))
import unittest
from Testing import ZopeTestCase
import Products.PlacelessTranslationService.Tracker as TrackerModule
from Products.PlacelessTranslationService.Tracker import Tracker
ZopeTestCase.installProduct('PlacelessTranslationService')
class BasicTrackerTestCase(unittest.TestCase):
def setUp(self):
self.tracker = Tracker()
return
def testTrackerOff(self):
"""Should be off at stratup
"""
self.failIf(self.tracker.mode,
"Tracker should be off")
return
def testDontRecordWhenOff(self):
"""Don't record when tracker is off
"""
self.tracker.recordFailure('dummy', 'dummy', 'dummy')
self.failIf(self.tracker.msgids,
"There should be no message")
self.failIf(self.tracker.by_language,
"There should be no message")
return
def testDontRecordWrongDomain(self):
"""Don't record unwanted domain
"""
self.tracker.mode = True
self.tracker.domain = 'foo'
self.tracker.recordFailure('dummy', 'dummy', 'dummy')
self.failUnlessEqual(self.tracker.msgids, [])
self.failUnlessEqual(self.tracker.by_language, {})
def testRecordOnlyOnce(self):
"""A message should be recorded only once
"""
self.tracker.mode = True
self.tracker.domain = 'dummy'
self.tracker.recordFailure('dummy', 'dummy', 'dummy')
self.tracker.recordFailure('dummy', 'dummy', 'dummy')
self.failUnlessEqual(self.tracker.msgids, ['dummy'])
self.failUnlessEqual(self.tracker.by_language,
{'dummy': [0]})
self.tracker.recordFailure('dummy', 'dummy', 'dummy')
return
# /class BasicTrackerTestCase
class AdvancedTrackerTestCase(unittest.TestCase):
"""Some testing for data management
"""
def setUp(self):
domain = 'foo'
self.tracker = Tracker()
self.tracker.mode = True
self.tracker.domain = domain
messages = (
('msg1', 'fr'),
('msg2', 'fr'),
('msg1', 'de'),
('msg3', 'it'),
('msg0', 'it'))
for msg, lang in messages:
self.tracker.recordFailure(domain, msg, lang)
return
def testavailableLanguages(self):
"""Check all languages recorded for domain
"""
self.failUnlessEqual(self.tracker.availableLanguages(),
['de', 'fr', 'it'])
return
def testAllMessages(self):
"""Checks all recorded messages
"""
self.failUnlessEqual(self.tracker.availableMsgids(),
['msg0', 'msg1', 'msg2', 'msg3'])
return
def testAllMessagesByLanguage(self):
"""Checks all recorded messages for any language
"""
self.failUnlessEqual(self.tracker.availableMsgids('fr'),
['msg1', 'msg2'])
self.failUnlessEqual(self.tracker.availableMsgids('de'),
['msg1'])
self.failUnlessEqual(self.tracker.availableMsgids('it'),
['msg0', 'msg3'])
return
# /class AdvancedTrackerTestCase
class PTSTrackerTestCase(ZopeTestCase.ZopeTestCase):
"""Testing the tracker through the PlacelessTranslationService
"""
def afterSetUp(self):
this_domain = 'PlacelessTranslationService'
self.ts = self.app.Control_Panel.TranslationService
package_dir = os.path.dirname(TrackerModule.__file__)
self.ts._load_i18n_dir(os.path.join(package_dir, 'i18n'))
self.tracker = self.ts.getTracker()
self.tracker.mode = True
self.tracker.domain = this_domain
messages = (
('msg1', 'fr'),
('msg2', 'fr'),
('msg1', 'de'),
('msg3', 'it'),
('msg0', 'it'))
for msg, lang in messages:
msg = self.ts.translate(this_domain, msg, context=self.folder.REQUEST,
target_language=lang)
return
def testAllMessages(self):
"""Checks all recorded messages
"""
self.failUnlessEqual(self.tracker.availableMsgids(),
['msg0', 'msg1', 'msg2', 'msg3'])
return
def testAllMessagesByLanguage(self):
"""Checks all recorded messages for any language
"""
self.failUnlessEqual(self.tracker.availableMsgids('fr'),
['msg1', 'msg2'])
self.failUnlessEqual(self.tracker.availableMsgids('de'),
['msg1'])
self.failUnlessEqual(self.tracker.availableMsgids('it'),
['msg0', 'msg3'])
return
def test_suite():
from unittest import TestSuite, makeSuite
suite = TestSuite()
suite.addTest(makeSuite(BasicTrackerTestCase))
suite.addTest(makeSuite(AdvancedTrackerTestCase))
suite.addTest(makeSuite(PTSTrackerTestCase))
return suite
if __name__ == '__main__':
framework()
|