~loggerhead-team/loggerhead/trunk-rich

« back to all changes in this revision

Viewing changes to loggerhead/tests/test_controllers.py

Merge Francesco's fix for bug #812583

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
import simplejson
 
2
 
1
3
from loggerhead.apps.branch import BranchWSGIApp
2
4
from loggerhead.controllers.annotate_ui import AnnotateUI
3
5
from loggerhead.controllers.inventory_ui import InventoryUI
 
6
from loggerhead.controllers.revision_ui import RevisionUI
4
7
from loggerhead.tests.test_simple import BasicTests, consume_app
 
8
from loggerhead import util
5
9
 
6
10
 
7
11
class TestInventoryUI(BasicTests):
82
86
        rev_ui.parse_args(env)
83
87
        self.assertIsInstance(rev_ui.get_values('', {}, []), dict)
84
88
 
85
 
    def test_add_template_values(self):
86
 
        branch_app = self.make_branch_app_for_revision_ui(
87
 
                [('file', 'content\n')], [('file', 'new content\n')])
88
 
        env = {'SCRIPT_NAME': '/',
89
 
               'PATH_INFO': '/revision/1/non-existent-file',
90
 
               'QUERY_STRING':'start_revid=1' }
91
 
        revision_ui = branch_app.lookup_app(env)
92
 
        path = revision_ui.parse_args(env)
93
 
        values = revision_ui.get_values(path, revision_ui.kwargs, {})
94
 
        revision_ui.add_template_values(values)
95
 
        self.assertIs(values['diff_chunks'], None)
96
 
 
97
89
    def test_get_values_smoke(self):
98
90
        branch_app = self.make_branch_app_for_revision_ui(
99
91
                [('file', 'content\n'), ('other-file', 'other\n')],
145
137
        self.assertEqual(2, len(annotated))
146
138
        self.assertEqual('2', annotated[1].change.revno)
147
139
        self.assertEqual('1', annotated[2].change.revno)
148
 
 
 
140
    
149
141
    def test_annotate_empty_comment(self):
150
142
        # Testing empty comment handling without breaking
151
143
        history = [('rev1', 'old\nold\n', '.'), ('rev2', 'new\nold\n', '')]
153
145
        ann_ui.args = ['rev2']
154
146
        annotate_info = ann_ui.get_values('filename',
155
147
            kwargs={'file_id': 'file_id'}, headers={})
156
 
 
157
 
    def test_annotate_file_zero_sized(self):
158
 
        # Test against a zero-sized file without breaking. No annotation must be present.
159
 
        history = [('rev1', '' , '.')]
160
 
        ann_ui = self.make_annotate_ui_for_file_history('file_id', history)
161
 
        ann_ui.args = ['rev1']
162
 
        annotate_info = ann_ui.get_values('filename',
163
 
            kwargs={'file_id': 'file_id'}, headers={})
164
 
        annotated = annotate_info['annotated']
165
 
        self.assertEqual(0, len(annotated))
166
 
 
167
 
 
 
148
    
168
149
class TestFileDiffUI(BasicTests):
169
150
 
170
151
    def make_branch_app_for_filediff_ui(self):
230
211
        revlog_ui = branch_app.lookup_app(env)
231
212
        self.assertOkJsonResponse(revlog_ui, env)
232
213
 
233
 
 
234
 
class TestControllerHooks(BasicTests):
235
 
 
236
 
    def test_dummy_hook(self):
237
 
        return
238
 
        # A hook that returns None doesn't influence the searching for
239
 
        # a controller.
240
 
        env = {'SCRIPT_NAME': '', 'PATH_INFO': '/custom'}
241
 
        myhook = lambda app, environ: None
242
 
        branch = self.make_branch('.')
243
 
        self.addCleanup(branch.lock_read().unlock)
244
 
        app = self.make_branch_app(branch)
245
 
        self.addCleanup(BranchWSGIApp.hooks.uninstall_named_hook, 'controller',
246
 
            'captain hook')
247
 
        BranchWSGIApp.hooks.install_named_hook('controller', myhook, "captain hook")
248
 
        self.assertRaises(KeyError, app.lookup_app, env)
249
 
 
250
 
    def test_working_hook(self):
251
 
        # A hook can provide an app to use for a particular request.
252
 
        env = {'SCRIPT_NAME': '', 'PATH_INFO': '/custom'}
253
 
        myhook = lambda app, environ: "I am hooked"
254
 
        branch = self.make_branch('.')
255
 
        self.addCleanup(branch.lock_read().unlock)
256
 
        app = self.make_branch_app(branch)
257
 
        self.addCleanup(BranchWSGIApp.hooks.uninstall_named_hook, 'controller',
258
 
            'captain hook')
259
 
        BranchWSGIApp.hooks.install_named_hook('controller', myhook, "captain hook")
260
 
        self.assertEquals("I am hooked", app.lookup_app(env))