def test_disable_for_anonymous(self, browser):
        subsite = create(Builder('folder')
                         .titled('The Subsite')
                         .providing(INavigationRoot))

        browser.login().visit(view='global_statusmessage_config')
        browser.fill(
            {'Active': True,
             'Type': 'information',
             'Title': 'Maintenance',
             'Message': 'Scheduled Maintenance'}).submit()

        browser.logout().visit(self.portal)
        self.assertTrue(
            statusmessage(),
            'Status should be visible for anonymous by default.')

        browser.login().visit(view='global_statusmessage_config')
        browser.fill(
            {'Show to anonymous users?': False}).submit()

        browser.visit(self.portal)
        self.assertTrue(
            statusmessage(),
            'Status should still visible for logged in users.')

        browser.logout().reload()
        self.assertFalse(
            statusmessage(),
            'Status should no longer be visible for anonymous in users.')
Example #2
0
    def api_request(self,
                    method,
                    action,
                    data=(),
                    authenticate=True,
                    context=None):
        if context is None:
            context = self.layer['portal']
        if authenticate:
            browser.login(SITE_OWNER_NAME)
        else:
            browser.logout()

        with verbose_logging():
            if method.lower() == 'get':
                browser.visit(context,
                              view='upgrades-api/{0}?{1}'.format(
                                  action, urllib.urlencode(data)))

            elif method.lower() == 'post':
                if not data:
                    data = {'enforce': 'post'}
                browser.visit(context,
                              view='upgrades-api/{0}'.format(action),
                              data=data)

            else:
                raise Exception(
                    'Unsupported request method {0}'.format(method))
    def test_disable_listing_siblings_with_current_folder_only(self, browser):
        create(Builder('navigation portlet').having(currentFolderOnly=True))
        create(Builder('folder').titled('Foo'))
        bar = create(Builder('folder').titled('Bar'))
        create(Builder('folder').titled('Baz'))

        browser.visit(bar)
        self.assertEquals(['Plone site', 'Bar'], portlet().css('li').text)
    def test_siblings_not_shown_when_excluded_from_navigation(self, browser):
        create(Builder('navigation portlet').having(currentFolderOnly=False))
        folder = create(Builder('folder').titled('The Folder'))
        create(Builder('folder').titled('excluded').having(excludeFromNav=True))

        browser.visit(folder)
        self.assertEquals(['Plone site', 'The Folder'],
                          portlet().css('li').text)
    def test_limit_activity_stream(self, browser):
        create(Builder('page'))
        create(Builder('page'))
        create(Builder('page'))

        create(Builder('activity portlet').having(count=2))
        browser.visit()

        self.assertEqual(2, len(portlet().css('.event')))
    def test_lists_children(self, browser):
        create(Builder('navigation portlet'))
        folder = create(Builder('folder').titled('The Folder'))
        create(Builder('page').titled('Foo').within(folder))
        create(Builder('page').titled('bar').within(folder))
        create(Builder('page').titled('Baz').within(folder))

        browser.visit(folder)
        self.assertEquals(['Foo', 'bar', 'Baz'], portlet().css('.child').text)
    def test_siblings_not_shown_when_excluded_from_navigation(self, browser):
        create(Builder('navigation portlet').having(currentFolderOnly=False))
        folder = create(Builder('folder').titled('The Folder'))
        create(
            Builder('folder').titled('excluded').having(excludeFromNav=True))

        browser.visit(folder)
        self.assertEquals(['Plone site', 'The Folder'],
                          portlet().css('li').text)
    def test_lists_siblings_when_configured(self, browser):
        create(Builder('navigation portlet').having(currentFolderOnly=False))
        create(Builder('folder').titled('Foo'))
        bar = create(Builder('folder').titled('Bar'))
        create(Builder('folder').titled('Baz'))

        browser.visit(bar)
        self.assertEquals(['Plone site', 'Foo', 'Bar', 'Baz'],
                          portlet().css('li').text)
    def test_lists_children(self, browser):
        create(Builder('navigation portlet'))
        folder = create(Builder('folder').titled('The Folder'))
        create(Builder('page').titled('Foo').within(folder))
        create(Builder('page').titled('bar').within(folder))
        create(Builder('page').titled('Baz').within(folder))

        browser.visit(folder)
        self.assertEquals(['Foo', 'bar', 'Baz'], portlet().css('.child').text)
    def test_lists_siblings_when_configured(self, browser):
        create(Builder('navigation portlet').having(currentFolderOnly=False))
        create(Builder('folder').titled('Foo'))
        bar = create(Builder('folder').titled('Bar'))
        create(Builder('folder').titled('Baz'))

        browser.visit(bar)
        self.assertEquals(['Plone site', 'Foo', 'Bar', 'Baz'],
                          portlet().css('li').text)
    def test_disable_listing_siblings_with_current_folder_only(self, browser):
        create(Builder('navigation portlet').having(currentFolderOnly=True))
        create(Builder('folder').titled('Foo'))
        bar = create(Builder('folder').titled('Bar'))
        create(Builder('folder').titled('Baz'))

        browser.visit(bar)
        self.assertEquals(['Plone site', 'Bar'],
                          portlet().css('li').text)
    def test_does_not_list_content_excluded_from_navigation(self, browser):
        create(Builder('navigation portlet'))
        folder = create(Builder('folder').titled('The Folder'))
        create(Builder('page').titled('Foo').within(folder))
        create(Builder('page').titled('Bar').within(folder).having(
                excludeFromNav=True))

        browser.visit(folder)
        self.assertEquals(['Foo'], portlet().css('.child').text)
 def test_scaling_is_changed_when_image_changes(self, browser):
     browser.visit(self.portrait_url + '?s=100')
     hash_before = image_hash()
     self.regenerate_portrait()
     browser.visit(self.portrait_url + '?s=100')
     hash_after = image_hash()
     self.assertNotEquals(
         hash_before, hash_after,
         'Image scaling cache is not cleared when changing portrait.')
    def test_pdata_portrait_scaling(self, browser):
        """Some files are stored as Pdata objects instead of strings.
        """
        getToolByName(self.layer['portal'], 'portal_memberdata')._setPortrait(
            Pdata(self.generate_portrait().getvalue()), self.hugo.getId())
        transaction.commit()

        browser.visit(self.portrait_url + '?s=100')
        self.assertTrue(image_hash())
    def test_does_not_list_content_excluded_from_navigation(self, browser):
        create(Builder('navigation portlet'))
        folder = create(Builder('folder').titled('The Folder'))
        create(Builder('page').titled('Foo').within(folder))
        create(
            Builder('page').titled('Bar').within(folder).having(
                excludeFromNav=True))

        browser.visit(folder)
        self.assertEquals(['Foo'], portlet().css('.child').text)
    def test_append_view_to_link_if_type_in_property(self, browser):
        create(Builder('navigation portlet'))
        folder = create(Builder('folder').titled('The Folder'))

        properties = getToolByName(self.portal, 'portal_properties')
        properties.site_properties.typesUseViewActionInListings=('Image')

        create(Builder('image').titled('my-image').within(folder))
        browser.visit(folder)
        self.assertEqual('http://nohost/plone/the-folder/my-image/view',
                         portlet().css('li.child > a').first.attrib.get('href'))
    def test_does_not_list_types_excluded_from_navigation(self, browser):
        properties = getToolByName(self.layer['portal'], 'portal_properties')
        navtree_properties = properties.navtree_properties
        navtree_properties.metaTypesNotToList += ('Document', )

        create(Builder('navigation portlet'))
        folder = create(Builder('folder').titled('The Folder'))
        create(Builder('page').titled('Foo').within(folder))

        browser.visit(folder)
        self.assertEquals([], portlet().css('.child').text)
    def test_does_not_list_types_excluded_from_navigation(self, browser):
        properties = getToolByName(self.layer['portal'], 'portal_properties')
        navtree_properties = properties.navtree_properties
        navtree_properties.metaTypesNotToList += ('Document', )

        create(Builder('navigation portlet'))
        folder = create(Builder('folder').titled('The Folder'))
        create(Builder('page').titled('Foo').within(folder))

        browser.visit(folder)
        self.assertEquals([], portlet().css('.child').text)
    def test_append_view_to_link_if_type_in_property(self, browser):
        create(Builder('navigation portlet'))
        folder = create(Builder('folder').titled('The Folder'))

        properties = getToolByName(self.portal, 'portal_properties')
        properties.site_properties.typesUseViewActionInListings = ('Image')

        create(Builder('image').titled('my-image').within(folder))
        browser.visit(folder)
        self.assertEqual(
            'http://nohost/plone/the-folder/my-image/view',
            portlet().css('li.child > a').first.attrib.get('href'))
    def test_siblings_not_shown_when_type_excluded_from_navigation(self, browser):
        properties = getToolByName(self.layer['portal'], 'portal_properties')
        navtree_properties = properties.navtree_properties
        navtree_properties.metaTypesNotToList += ('Document', )

        create(Builder('navigation portlet').having(currentFolderOnly=False))
        folder = create(Builder('folder').titled('The Folder'))
        create(Builder('page').titled('excluded').having(excludeFromNav=True))

        browser.visit(folder)
        self.assertEquals(['Plone site', 'The Folder'],
                          portlet().css('li').text)
    def test_siblings_not_shown_when_type_excluded_from_navigation(
            self, browser):
        properties = getToolByName(self.layer['portal'], 'portal_properties')
        navtree_properties = properties.navtree_properties
        navtree_properties.metaTypesNotToList += ('Document', )

        create(Builder('navigation portlet').having(currentFolderOnly=False))
        folder = create(Builder('folder').titled('The Folder'))
        create(Builder('page').titled('excluded').having(excludeFromNav=True))

        browser.visit(folder)
        self.assertEquals(['Plone site', 'The Folder'],
                          portlet().css('li').text)
    def test_exclude_subsite(self, browser):
        subsite = create(Builder('folder')
                         .titled('The Subsite')
                         .providing(INavigationRoot))

        browser.login().visit(view='global_statusmessage_config')
        browser.fill(
            {'Active': True,
             'Type': 'information',
             'Title': 'Maintenance',
             'Message': 'Scheduled Maintenance',
             'Exclude sites': ['The Subsite']}).submit()


        browser.visit(self.portal)
        self.assertTrue(
            statusmessage(),
            'Status message should be visible on site root.')

        page_on_site_root = create(Builder('page'))
        browser.visit(page_on_site_root)
        self.assertTrue(
            statusmessage(),
            'Status message should be visible on pages within site root.')

        browser.visit(subsite)
        self.assertFalse(
            statusmessage(),
            'Status message should not be visible on subsite.')

        page_on_subsite = create(Builder('page').within(subsite))
        browser.visit(page_on_subsite)
        self.assertFalse(
            statusmessage(),
            'Status message should not be visible on pages within subsite.')
    def test_show_all_activities_from_navigation_root(self, browser):
        page = create(Builder('page'))
        create(Builder('page'))

        create(Builder('activity portlet'))
        browser.visit()

        self.assertEqual(2, len(portlet().css('.event')))

        browser.visit(page)

        self.assertEqual(
            2, len(portlet().css('.event')),
            'Both activites should be visible from the page')
    def test_disabling_status_message(self, browser):
        browser.login(SITE_OWNER_NAME).visit(
            view='global_statusmessage_config')
        browser.fill(
            {'Active': True,
             'Type': 'information',
             'Title': 'Maintenance',
             'Message': 'Scheduled maintenance 20PM-22PM'}).submit()
        self.assertTrue(statusmessage(),
                        'Expected a message to be configured.')

        browser.visit(view='global_statusmessage_config')
        browser.fill({'Active': False}).submit()
        self.assertFalse(statusmessage(),
                        'Expected message to be no longer visible.')
    def test_toggling_edit_mode(self, browser):
        self.grant('Manager')
        # The plone site should be "editable" by default for the site owner.
        browser.login().visit()
        self.assertTrue(
            self.is_editable(),
            'No ".documentEditable" found on site root. Markup changed?')

        # When we hit the "switch-editmode" view we are redirected back
        # to the context's default view:
        browser.visit(view='@@switch-editmode')
        self.assertEqual(
            self.portal.absolute_url(), browser.url,
            'Expected to be redirected to the context\'s default view but'
            ' (site root in this case) but was not.')

        # and now the document is no longer editable:
        self.assertFalse(self.is_editable(), 'Site root still editable.')

        # even when reloading:
        browser.visit()
        self.assertFalse(self.is_editable(),
                         'Editable switch not persistent?')

        # when switching back on we are redirected to the default view again:
        browser.visit(view='@@switch-editmode')
        self.assertEqual(
            self.portal.absolute_url(), browser.url,
            'Redirect seems to be wrong when re-enabling edit mode.')

        # and it is now editable again:
        self.assertTrue(self.is_editable(),
                        'Re-enabling the edit mode is not working.')
Example #26
0
    def api_request(self, method, action, data=(), authenticate=True,
                    context=None):
        if context is None:
            context = self.layer['portal']
        if authenticate:
            browser.login(SITE_OWNER_NAME)
        else:
            browser.logout()

        with verbose_logging():
            if method.lower() == 'get':
                browser.visit(context, view='upgrades-api/{0}?{1}'.format(
                        action,
                        urllib.urlencode(data)))

            elif method.lower() == 'post':
                if not data:
                    data = {'enforce': 'post'}
                browser.visit(context, view='upgrades-api/{0}'.format(action),
                              data=data)

            else:
                raise Exception('Unsupported request method {0}'.format(method))
    def test_get_state_returns_disabled_after_switching(self, browser):
        browser.login()
        browser.visit(view='@@switch-editmode')

        self.assertEquals(
            'disabled',
            browser.visit(view='@@switch-editmode/get_state').contents)

        browser.visit(view='@@switch-editmode')
        self.assertEquals(
            'enabled',
            browser.visit(view='@@switch-editmode/get_state').contents)
Example #28
0
 def visit(self, obj):
     browser.visit(obj)
     return self
    def test_do_not_show_link_to_full_activity(self, browser):
        create(Builder('activity portlet').having(show_more=False))
        browser.visit()

        self.assertEqual(0, len(portlet().css('.showMoreLink')))
 def test_get_state_returns_enabled_by_default(self, browser):
     browser.login()
     self.assertEquals(
         'enabled',
         browser.visit(view='@@switch-editmode/get_state').contents)
 def test_has_parent_link(self, browser):
     create(Builder('navigation portlet'))
     folder = create(Builder('folder'))
     browser.visit(folder)
     self.assertEquals('Plone site', portlet().css('.parent').first.text)
 def test_shows_current_context_title(self, browser):
     create(Builder('navigation portlet'))
     folder = create(Builder('folder').titled('The Folder'))
     browser.visit(folder)
     self.assertEquals('The Folder', portlet().css('.current').first.text)
 def test_default_scaling_is_original_size(self, browser):
     browser.visit(self.portrait_url)
     self.assertEquals((220, 220), image_size())
Example #34
0
def add_item_to_cart(item, amount=1):
    browser.visit(item)
    shopitem.add_to_cart(amount=amount)
 def test_max_scaling_returns_original(self, browser):
     browser.visit(self.portrait_url + '?s=9999')
     self.assertEquals((220, 220), image_size())
 def test_scaling_with_size_parameter(self, browser):
     browser.visit(self.portrait_url + '?size=150')
     self.assertEquals((150, 150), image_size())
Example #37
0
def visit_edit_categories(item=None):
    if item is None:
        item = create(Builder('shop item'))
    browser.visit(item)
    shopitem.edit_categories_link().click()
Example #38
0
def add_item_to_cart(item, amount=1):
    browser.visit(item)
    shopitem.add_to_cart(amount=amount)
Example #39
0
 def visit_portal(self):
     browser.visit()
     return self
 def test_has_parent_link(self, browser):
     create(Builder('navigation portlet'))
     folder = create(Builder('folder'))
     browser.visit(folder)
     self.assertEquals('Plone site', portlet().css('.parent').first.text)
 def test_shows_current_context_title(self, browser):
     create(Builder('navigation portlet'))
     folder = create(Builder('folder').titled('The Folder'))
     browser.visit(folder)
     self.assertEquals('The Folder', portlet().css('.current').first.text)