File: testTracker.py

package info (click to toggle)
zope-pts 1.3.3-1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 300 kB
  • ctags: 330
  • sloc: python: 2,022; makefile: 31; sh: 2
file content (160 lines) | stat: -rw-r--r-- 5,233 bytes parent folder | download
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()