コード例 #1
0
ファイル: test_tales.py プロジェクト: pombredanne/launchpad-3
 def test_value_override(self):
     # Override of rendered value works as expected.
     self.assertEqual('default value',
                      test_tales('foo/fmt:link::default value', foo=None))
     self.assertEqual(
         'default value',
         test_tales('foo/fmt:link:rootsite:default value', foo=None))
コード例 #2
0
 def test_value_override(self):
     # Override of rendered value works as expected.
     self.assertEqual(
         'default value',
         test_tales('foo/fmt:link::default value', foo=None))
     self.assertEqual(
         'default value',
         test_tales('foo/fmt:link:rootsite:default value', foo=None))
コード例 #3
0
 def test_pagetype(self):
     # The pagetype is 'unset', until macro:page is called.
     self.assertIs(None, getattr(self.view, '__pagetype__', None))
     self.assertEqual('unset',
                      test_tales('view/macro:pagetype', view=self.view))
     test_tales('view/macro:page/main_side', view=self.view)
     self.assertEqual('main_side', self.view.__pagetype__)
     self.assertEqual('main_side',
                      test_tales('view/macro:pagetype', view=self.view))
コード例 #4
0
 def test_pagetype(self):
     # The pagetype is 'unset', until macro:page is called.
     self.assertIs(None, getattr(self.view, '__pagetype__', None))
     self.assertEqual(
         'unset', test_tales('view/macro:pagetype', view=self.view))
     test_tales('view/macro:page/main_side', view=self.view)
     self.assertEqual('main_side', self.view.__pagetype__)
     self.assertEqual(
         'main_side', test_tales('view/macro:pagetype', view=self.view))
コード例 #5
0
 def test_query_tales(self):
     # Test that query:has-structured-doc gets sets the field annotation.
     request = LaunchpadTestRequest()
     view = TestView(None, request)
     view.initialize()
     normal_widget, structured_widget = view.widgets
     self.assertIs(None, test_tales(
             'widget/query:has-structured-doc', widget=normal_widget))
     self.assertTrue(test_tales(
             'widget/query:has-structured-doc', widget=structured_widget))
コード例 #6
0
 def test_object_link_ignores_default(self):
     # The rendering of an object's link ignores any specified default
     # value which would be used in the case where the object were None.
     person = self.factory.makePerson()
     person_link = test_tales(
         'person/fmt:link::default value', person=person)
     self.assertEqual(PersonFormatterAPI(person).link(None), person_link)
     person_link = test_tales(
         'person/fmt:link:bugs:default value', person=person)
     self.assertEqual(PersonFormatterAPI(person).link(
         None, rootsite='bugs'), person_link)
コード例 #7
0
 def test_query_tales(self):
     # Test that query:has-structured-doc gets sets the field annotation.
     request = LaunchpadTestRequest()
     view = TestView(None, request)
     view.initialize()
     normal_widget, structured_widget = view.widgets
     self.assertIs(
         None,
         test_tales('widget/query:has-structured-doc',
                    widget=normal_widget))
     self.assertTrue(
         test_tales('widget/query:has-structured-doc',
                    widget=structured_widget))
コード例 #8
0
 def test_fmt_simple_conflicts(self):
     # Conflicts are indicated using text in the link.
     preview = self._createPreviewDiff(10, 2, 3, 'conflicts')
     self.assertEqual(
         '<a href="%s/+files/preview.diff" class="diff-link">'
         '10 lines (+2/-3) (has conflicts)</a>' % canonical_url(preview),
         test_tales('preview/fmt:link', preview=preview))
コード例 #9
0
 def test_nick_displayname(self):
     person = self.factory.makePerson(name='fred')
     ircset = getUtility(IIrcIDSet)
     ircID = ircset.new(person, "irc.canonical.com", "fred")
     self.assertEqual(
         'fred on irc.canonical.com',
         test_tales('nick/fmt:displayname', nick=ircID))
コード例 #10
0
 def test_fmt_lines_no_add_or_remove(self):
     # If the lines added and removed are None, they are now shown.
     preview = self._createPreviewDiff(10, added=None, removed=None)
     self.assertEqual(
         '<a href="%s/+files/preview.diff" class="diff-link">'
         '10 lines</a>' % canonical_url(preview),
         test_tales('preview/fmt:link', preview=preview))
コード例 #11
0
 def test_fmt_lines_no_add_or_remove(self):
     # If the lines added and removed are None, they are now shown.
     preview = self._createPreviewDiff(10, added=None, removed=None)
     self.assertEqual(
         '<a href="%s/+files/preview.diff" class="diff-link">' "10 lines</a>" % canonical_url(preview),
         test_tales("preview/fmt:link", preview=preview),
     )
コード例 #12
0
 def test_fmt_lines_some_added_no_removed(self):
     # If the added and removed values are not None, they are shown.
     preview = self._createPreviewDiff(10, added=4, removed=0)
     self.assertEqual(
         '<a href="%s/+files/preview.diff" class="diff-link">' "10 lines (+4/-0)</a>" % canonical_url(preview),
         test_tales("preview/fmt:link", preview=preview),
     )
コード例 #13
0
 def test_fmt_lines_some_added_no_removed(self):
     # If the added and removed values are not None, they are shown.
     preview = self._createPreviewDiff(10, added=4, removed=0)
     self.assertEqual(
         '<a href="%s/+files/preview.diff" class="diff-link">'
         '10 lines (+4/-0)</a>' % canonical_url(preview),
         test_tales('preview/fmt:link', preview=preview))
コード例 #14
0
    def test_valid_traversal(self):
        # Traversal of allowed names works as expected.

        allowed_names = set([
            'approximatedate',
            'approximateduration',
            'break-long-words',
            'date',
            'datetime',
            'displaydate',
            'isodate',
            'email-to-html',
            'exactduration',
            'lower',
            'nice_pre',
            'nl_to_br',
            'pagetitle',
            'rfc822utcdatetime',
            'text-to-html',
            'time',
            'url',
            'link',
            ])

        for name in allowed_names:
            self.assertEqual('', test_tales('foo/fmt:%s' % name, foo=None))
コード例 #15
0
 def test_link(self):
     self.factory.makeSourcePackageName('mouse')
     ubuntu = getUtility(ILaunchpadCelebrities).ubuntu
     dsp = ubuntu.getSourcePackage('mouse')
     markup = (
         u'<a href="/ubuntu/+source/mouse" class="sprite package-source">'
         u'mouse in Ubuntu</a>')
     self.assertEqual(markup, test_tales('dsp/fmt:link', dsp=dsp))
コード例 #16
0
 def test_link(self):
     self.factory.makeSourcePackageName('mouse')
     ubuntu = getUtility(ILaunchpadCelebrities).ubuntu
     dsp = ubuntu.getSourcePackage('mouse')
     markup = (
         u'<a href="/ubuntu/+source/mouse" class="sprite package-source">'
         u'mouse in Ubuntu</a>')
     self.assertEqual(markup, test_tales('dsp/fmt:link', dsp=dsp))
コード例 #17
0
 def test_fmt_lines_one_file_modified(self):
     # If only one file has been modified, a singular value is used.
     preview = self._createPreviewDiff(10, added=4, removed=0, diffstat={"file": (3, 0)})
     self.assertEqual(
         '<a href="%s/+files/preview.diff" class="diff-link">'
         "10 lines (+4/-0) 1 file modified</a>" % canonical_url(preview),
         test_tales("preview/fmt:link", preview=preview),
     )
コード例 #18
0
 def test_fmt_simple_conflicts(self):
     # Conflicts are indicated using text in the link.
     preview = self._createPreviewDiff(10, 2, 3, u"conflicts")
     self.assertEqual(
         '<a href="%s/+files/preview.diff" class="diff-link">'
         "10 lines (+2/-3) (has conflicts)</a>" % canonical_url(preview),
         test_tales("preview/fmt:link", preview=preview),
     )
コード例 #19
0
 def test_linkification_with_target(self):
     # The text-to-html-with-target formatter sets the target
     # attribute of the links it produces to _new.
     linkified_text = test_tales(
         'foo/fmt:text-to-html-with-target', foo=self.test_data)
     tree = html.fromstring(linkified_text)
     for link in tree.xpath('//a'):
         self.assertEqual('_new', link.get('target'))
コード例 #20
0
 def test_fmt_stale_non_empty_diff_with_conflicts(self):
     # If there is no diff, there is no link.
     diffstat = dict((self.factory.getUniqueString(), (2, 3)) for x in range(23))
     preview = self._createStalePreviewDiff(500, 89, 340, u"conflicts", diffstat=diffstat)
     self.assertEqual(
         '<a href="%s/+files/preview.diff" class="diff-link">'
         "500 lines (+89/-340) 23 files modified (has conflicts)</a>" % canonical_url(preview),
         test_tales("preview/fmt:link", preview=preview),
     )
コード例 #21
0
 def test_fmt_lines_files_modified(self):
     # If the diffstat has been set, the number of entries in the dict
     # defines the number of files modified.
     preview = self._createPreviewDiff(10, added=4, removed=0, diffstat={"file1": (1, 0), "file2": (3, 0)})
     self.assertEqual(
         '<a href="%s/+files/preview.diff" class="diff-link">'
         "10 lines (+4/-0) 2 files modified</a>" % canonical_url(preview),
         test_tales("preview/fmt:link", preview=preview),
     )
コード例 #22
0
    def test_has_watermark_true(self):
        # A view cand define has_watermark as True.
        class NoWatermarkView(TestView):
            has_watermark = True

        self.registerBrowserViewAdapter(NoWatermarkView, ITest, '+test')
        view = create_view(TestObject(), name='+test')
        has_watermark = test_tales('view/macro:has-watermark', view=view)
        self.assertIs(True, has_watermark)
コード例 #23
0
 def test_page(self):
     # A view can be adpated to a page macro object.
     page_macro = test_tales('view/macro:page/main_side', view=self.view)
     self.assertEqual('main_side', self.view.__pagetype__)
     self.assertEqual(('mode', 'html'), page_macro[1])
     source_file = page_macro[3]
     self.assertEqual('setSourceFile', source_file[0])
     self.assertEqual(
         '/templates/base-layout.pt', source_file[1].split('..')[1])
コード例 #24
0
 def test_page(self):
     # A view can be adpated to a page macro object.
     page_macro = test_tales('view/macro:page/main_side', view=self.view)
     self.assertEqual('main_side', self.view.__pagetype__)
     self.assertEqual(('mode', 'html'), page_macro[1])
     source_file = page_macro[3]
     self.assertEqual('setSourceFile', source_file[0])
     self.assertEqual('/templates/base-layout.pt',
                      source_file[1].split('..')[1])
コード例 #25
0
    def test_has_watermark_true(self):
        # A view cand define has_watermark as True.
        class NoWatermarkView(TestView):
            has_watermark = True

        self.registerBrowserViewAdapter(NoWatermarkView, ITest, '+test')
        view = create_view(TestObject(), name='+test')
        has_watermark = test_tales('view/macro:has-watermark', view=view)
        self.assertIs(True, has_watermark)
コード例 #26
0
 def test_fmt_stale_non_empty_diff(self):
     # If there is no diff, there is no link.
     diffstat = dict(
         (self.factory.getUniqueString(), (2, 3)) for x in range(23))
     preview = self._createStalePreviewDiff(500, 89, 340, diffstat=diffstat)
     self.assertEqual(
         '<a href="%s/+files/preview.diff" class="diff-link">'
         '500 lines (+89/-340) 23 files modified</a>' %
         canonical_url(preview),
         test_tales('preview/fmt:link', preview=preview))
コード例 #27
0
 def test_fmt_lines_one_file_modified(self):
     # If only one file has been modified, a singular value is used.
     preview = self._createPreviewDiff(10,
                                       added=4,
                                       removed=0,
                                       diffstat={'file': (3, 0)})
     self.assertEqual(
         '<a href="%s/+files/preview.diff" class="diff-link">'
         '10 lines (+4/-0) 1 file modified</a>' % canonical_url(preview),
         test_tales('preview/fmt:link', preview=preview))
コード例 #28
0
 def test_nick_formatted_displayname(self):
     person = self.factory.makePerson(name='fred')
     ircset = getUtility(IIrcIDSet)
     # Include some bogus markup to check escaping works.
     ircID = ircset.new(person, "<b>irc.canonical.com</b>", "fred")
     expected_html = test_tales(
         'nick/fmt:formatted_displayname', nick=ircID)
     self.assertEquals(
         u'<strong>fred</strong>\n'
         '<span class="lesser"> on </span>\n'
         '<strong>&lt;b&gt;irc.canonical.com&lt;/b&gt;</strong>\n',
         expected_html)
コード例 #29
0
 def test_fmt_lines_escapes_file_name(self):
     # File names that include HTML metacharacters are escaped.
     preview = self._createPreviewDiff(10,
                                       added=4,
                                       removed=0,
                                       diffstat={'file<name>': (3, 0)})
     self.assertEqual(
         '<a href="%s/+files/preview.diff" class="diff-link">'
         '10 lines (+4/-0)</a>'
         '<div class="collapsible">'
         '<span>1 file modified</span>'
         '<div>file&lt;name&gt; (+3/-0)</div>'
         '</div>' % canonical_url(preview),
         test_tales('preview/fmt:link', preview=preview))
コード例 #30
0
 def test_fmt_lines_files_modified(self):
     # If the diffstat has been set, the number of entries in the dict
     # defines the number of files modified.
     preview = self._createPreviewDiff(10,
                                       added=4,
                                       removed=0,
                                       diffstat={
                                           'file1': (1, 0),
                                           'file2': (3, 0)
                                       })
     self.assertEqual(
         '<a href="%s/+files/preview.diff" class="diff-link">'
         '10 lines (+4/-0) 2 files modified</a>' % canonical_url(preview),
         test_tales('preview/fmt:link', preview=preview))
コード例 #31
0
 def test_fmt_stale_non_empty_diff(self):
     # If there is no diff, there is no link.
     diffstat = dict(
         (self.factory.getUniqueString(), (2, 3)) for x in range(23))
     preview = self._createStalePreviewDiff(500, 89, 340, diffstat=diffstat)
     expected_diffstat = '<br/>'.join('%s (+2/-3)' % path
                                      for path in sorted(diffstat))
     self.assertEqual(
         '<a href="%s/+files/preview.diff" class="diff-link">'
         '500 lines (+89/-340)</a>'
         '<div class="collapsible">'
         '<span>23 files modified</span>'
         '<div>%s</div>'
         '</div>' % (canonical_url(preview), expected_diffstat),
         test_tales('preview/fmt:link', preview=preview))
コード例 #32
0
 def test_select(self):
     value = test_tales('value/css:select/visible/hidden', value=None)
     self.assertThat(value, Equals('hidden'))
     value = test_tales('value/css:select/visible/hidden', value=False)
     self.assertThat(value, Equals('hidden'))
     value = test_tales('value/css:select/visible/hidden', value='')
     self.assertThat(value, Equals('hidden'))
     value = test_tales('value/css:select/visible/hidden', value=True)
     self.assertThat(value, Equals('visible'))
     value = test_tales('value/css:select/visible/hidden', value='Hello')
     self.assertThat(value, Equals('visible'))
     value = test_tales('value/css:select/visible/hidden', value=object())
     self.assertThat(value, Equals('visible'))
コード例 #33
0
 def test_select(self):
     value = test_tales('value/css:select/visible/hidden', value=None)
     self.assertThat(value, Equals('hidden'))
     value = test_tales('value/css:select/visible/hidden', value=False)
     self.assertThat(value, Equals('hidden'))
     value = test_tales('value/css:select/visible/hidden', value='')
     self.assertThat(value, Equals('hidden'))
     value = test_tales('value/css:select/visible/hidden', value=True)
     self.assertThat(value, Equals('visible'))
     value = test_tales('value/css:select/visible/hidden', value='Hello')
     self.assertThat(value, Equals('visible'))
     value = test_tales('value/css:select/visible/hidden', value=object())
     self.assertThat(value, Equals('visible'))
コード例 #34
0
 def test_pagehas_unknown_attribute(self):
     # An error is raised if the LayoutElement does not exist.
     test_tales('view/macro:page/main_side', view=self.view)
     self.assertRaisesWithContent(
         KeyError, "'fnord'",
         self._call_test_tales, 'view/macro:pagehas/fnord')
コード例 #35
0
 def test_pagehas(self):
     # After the page type is set, the page macro can be queried
     # for what LayoutElements it supports supports.
     test_tales('view/macro:page/main_side', view=self.view)
     self.assertTrue(
         test_tales('view/macro:pagehas/portlets', view=self.view))
コード例 #36
0
 def _call_test_tales(self, path):
     test_tales(path, view=self.view)
コード例 #37
0
 def test_is_page_contentless_private_without_view(self):
     # Private objects the view cannot view cannot show content.
     self.view.context.private = True
     self._setUpPermissions(has_permission=False)
     result = test_tales('view/macro:is-page-contentless', view=self.view)
     self.assertTrue(result)
コード例 #38
0
 def test_is_page_contentless_public(self):
     # Public objects always have content to be shown.
     self.assertFalse(
         test_tales('view/macro:is-page-contentless', view=self.view))
コード例 #39
0
 def _tales_value(self, attr, request, path='fmt'):
     # Evaluate the given formatted attribute value on team.
     result = test_tales(
         "team/%s:%s" % (path, attr), team=self.team, request=request)
     return result
コード例 #40
0
 def test_select_chaining(self):
     value = test_tales(
         'value/css:select/VISIBLE/hidden/fmt:lower', value=None)
     self.assertThat(value, Equals('hidden'))
コード例 #41
0
 def test_has_watermark_default(self):
     # All pages have a watermark if the view does not provide the attr.
     has_watermark = test_tales('view/macro:has-watermark', view=self.view)
     self.assertIs(True, has_watermark)
コード例 #42
0
 def test_is_page_contentless_public(self):
     # Public objects always have content to be shown.
     self.assertFalse(
         test_tales('view/macro:is-page-contentless', view=self.view))
コード例 #43
0
 def test_is_page_contentless_private_with_view(self):
     # Private objects the user can view have content to be shown.
     self.view.context.private = True
     self._setUpPermissions(has_permission=True)
     result = test_tales('view/macro:is-page-contentless', view=self.view)
     self.assertFalse(result)
コード例 #44
0
 def test_has_watermark_default(self):
     # All pages have a watermark if the view does not provide the attr.
     has_watermark = test_tales('view/macro:has-watermark', view=self.view)
     self.assertIs(True, has_watermark)
コード例 #45
0
 def test_pagehas_unknown_attribute(self):
     # An error is raised if the LayoutElement does not exist.
     test_tales('view/macro:page/main_side', view=self.view)
     self.assertRaisesWithContent(KeyError, "'fnord'",
                                  self._call_test_tales,
                                  'view/macro:pagehas/fnord')
コード例 #46
0
 def test_fmt_no_diff(self):
     # If there is no diff, there is no link.
     preview = self._createPreviewDiff(0)
     self.assertEqual('<span class="empty-diff">0 lines</span>',
                      test_tales('preview/fmt:link', preview=preview))
コード例 #47
0
 def test_pagehas(self):
     # After the page type is set, the page macro can be queried
     # for what LayoutElements it supports supports.
     test_tales('view/macro:page/main_side', view=self.view)
     self.assertTrue(
         test_tales('view/macro:pagehas/portlets', view=self.view))
コード例 #48
0
 def test_is_page_contentless_private_with_view(self):
     # Private objects the user can view have content to be shown.
     self.view.context.private = True
     self._setUpPermissions(has_permission=True)
     result = test_tales('view/macro:is-page-contentless', view=self.view)
     self.assertFalse(result)
コード例 #49
0
 def test_fmt_no_diff(self):
     # If there is no diff, there is no link.
     preview = self._createPreviewDiff(0)
     self.assertEqual('<span class="empty-diff">0 lines</span>', test_tales("preview/fmt:link", preview=preview))
コード例 #50
0
 def _call_test_tales(self, path):
     test_tales(path, view=self.view)
コード例 #51
0
 def test_url(self):
     diff = self.factory.makeDiff()
     self.assertEqual(diff.diff_text.getURL(), test_tales("diff/fmt:url", diff=diff))
コード例 #52
0
 def test_select_chaining(self):
     value = test_tales('value/css:select/VISIBLE/hidden/fmt:lower',
                        value=None)
     self.assertThat(value, Equals('hidden'))
コード例 #53
0
 def test_is_page_contentless_private_without_view(self):
     # Private objects the view cannot view cannot show content.
     self.view.context.private = True
     self._setUpPermissions(has_permission=False)
     result = test_tales('view/macro:is-page-contentless', view=self.view)
     self.assertTrue(result)