~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to lib/lp/translations/browser/tests/test_potemplate_navigation.py

  • Committer: Launchpad Patch Queue Manager
  • Date: 2010-08-24 18:13:56 UTC
  • mfrom: (11416.1.4 bug-611179)
  • Revision ID: launchpad@pqm.canonical.com-20100824181356-0ldz5h45og1620n6
[r=gmb][ui=none][bug=611179] Fix oops on invalid +translate URLs

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Copyright 2010 Canonical Ltd.  This software is licensed under the
 
2
# GNU Affero General Public License version 3 (see the file LICENSE).
 
3
 
 
4
"""Test `POTemplateNavigation`."""
 
5
 
 
6
__metaclass__ = type
 
7
 
 
8
from canonical.launchpad.webapp.servers import LaunchpadTestRequest
 
9
from canonical.testing import DatabaseFunctionalLayer
 
10
from lp.app.errors import NotFoundError
 
11
from lp.testing import TestCaseWithFactory
 
12
from lp.translations.browser.potemplate import POTemplateNavigation
 
13
from lp.translations.model.pofile import DummyPOFile
 
14
 
 
15
 
 
16
class TestPOTemplateNavigation(TestCaseWithFactory):
 
17
    layer = DatabaseFunctionalLayer
 
18
 
 
19
    def _makeNavigation(self, potemplate, method='GET'):
 
20
        """Create a `POTemplateNavigation` for `potemplate`."""
 
21
        request = LaunchpadTestRequest()
 
22
        request.method = method
 
23
        return POTemplateNavigation(potemplate, request)
 
24
 
 
25
    def test_traverse_to_existing_pofile(self):
 
26
        pofile = self.factory.makePOFile('nl')
 
27
        nav = self._makeNavigation(pofile.potemplate)
 
28
        destination = nav.traverse('nl')
 
29
        self.assertEqual(pofile, destination)
 
30
 
 
31
    def test_traverse_to_dummy_pofile(self):
 
32
        nav = self._makeNavigation(self.factory.makePOTemplate())
 
33
        destination = nav.traverse('de')
 
34
        self.assertIsInstance(destination, DummyPOFile)
 
35
        self.assertEqual('de', destination.language.code)
 
36
 
 
37
    def test_traverse_nonexistent_language(self):
 
38
        nav = self._makeNavigation(self.factory.makePOTemplate())
 
39
        self.assertRaises(NotFoundError, nav.traverse, 'bzyzzyx_GRQ@UTF-13')
 
40
 
 
41
    def test_unsupported_method(self):
 
42
        pofile = self.factory.makePOFile('sr')
 
43
        nav = self._makeNavigation(pofile.potemplate, method='PUT')
 
44
        self.assertRaises(AssertionError, nav.traverse, 'sr')