示例#1
0
    def test_localisation(self):
        loc = Localisation({
            'locale': 'eng_GB',
            'image': 'sample-uuid-000000-0001',
            'image_host': 'http://some.site.com/'
        })
        self.workspace.save(loc, 'Add localisation')
        self.workspace.refresh_index()

        request = self.mk_request({'_LOCALE_': 'eng_GB'})
        self.views = CmsViews(request)

        localisation = self.views.get_localisation()
        self.assertEqual(localisation.locale, 'eng_GB')
        self.assertEqual(localisation.image, 'sample-uuid-000000-0001')
        self.assertEqual(localisation.image_host, 'http://some.site.com/')

        # Test fallbacks
        request = self.mk_request({'_LOCALE_': 'eng_UK'})
        self.views = CmsViews(request)

        localisation = self.views.get_localisation()
        self.assertEqual(localisation.locale, 'eng_GB')
        self.assertEqual(localisation.image, 'sample-uuid-000000-0001')
        self.assertEqual(localisation.image_host, 'http://some.site.com/')
示例#2
0
    def test_image_url(self):
        self.views = CmsViews(self.mk_request())

        self.assertEqual(
            self.views.get_image_url('http://some.site.com',
                                     'sample-uuid-000000-0001'),
            'http://some.site.com/'
            '1bzRPrcuQPXBECF9mHxFVr11viY=/sample-uuid-000000-0001')

        self.assertEqual(
            self.views.get_image_url('http://some.site.com',
                                     'sample-uuid-000000-0001', 300, 200),
            'http://some.site.com/'
            '8Ko7ZiKCwOv8zDovqScWL5Lgrc8=/300x200/sample-uuid-000000-0001')

        self.assertEqual(
            self.views.get_image_url('http://some.site.com',
                                     'sample-uuid-000000-0001', 300),
            'http://some.site.com/'
            'LUyVe1umwB1caELC5m3LWu1HxvI=/300x0/sample-uuid-000000-0001')

        self.assertEqual(
            self.views.get_image_url('http://some.site.com',
                                     'sample-uuid-000000-0001',
                                     height=150), 'http://some.site.com/'
            '4kS9gT_mYqVhnheDCuQhsahI_dU=/0x150/sample-uuid-000000-0001')

        self.assertEqual(self.views.get_image_url('', ''), '')
    def setUp(self):
        self.workspace = self.mk_workspace()
        settings = self.get_settings(
            self.workspace,
            **{'unicorecomments.host': 'http://localhost/commentservice'})

        self.config = testing.setUp(settings=settings)
        self.config.include('cms')
        set_cache_regions_from_settings(settings)

        self.views = CmsViews(self.mk_request())
        self.app_id = settings['unicorehub.app_id']
        self.app = self.mk_app(self.workspace, settings=settings)

        [category] = self.create_categories(self.workspace, count=1)
        [page] = self.create_pages(self.workspace,
                                   count=1,
                                   description='description',
                                   primary_category=category.uuid)
        self.page = page
        self.stream = self.mk_comment_stream(page.uuid,
                                             state='open',
                                             offset=10,
                                             limit=5)

        self.patch_lazy_comment_page = mock.patch.object(
            LazyCommentPage,
            'data',
            new=mock.PropertyMock(return_value=self.stream))
        self.patch_lazy_comment_page.start()
示例#4
0
    def test_category_view_does_not_exist(self):
        request = self.mk_request(locale_name='swa_KE')
        views = CmsViews(request)

        for does_not_exist in (None, 'abcd'):
            request.matchdict['category'] = does_not_exist
            self.assertRaises(HTTPNotFound, views.category)
示例#5
0
    def setUp(self):
        self.workspace = self.mk_workspace()
        self.workspace.setup_custom_mapping(
            Page, {
                'properties': {
                    'slug': {
                        'type': 'string',
                        'index': 'not_analyzed',
                    },
                    'language': {
                        'type': 'string',
                        'index': 'not_analyzed',
                    }
                }
            })
        self.workspace.setup_custom_mapping(
            Category, {
                'properties': {
                    'slug': {
                        'type': 'string',
                        'index': 'not_analyzed',
                    },
                    'language': {
                        'type': 'string',
                        'index': 'not_analyzed',
                    },
                    'position': {
                        'type': 'long'
                    }
                }
            })

        self.workspace.setup_custom_mapping(
            Localisation, {
                'properties': {
                    'locale': {
                        'type': 'string',
                        'index': 'not_analyzed',
                    }
                }
            })

        languages = ("[('eng_GB', 'English'), ('swa_KE', 'Swahili'),"
                     "('spa_ES', 'Spanish'), ('fre_FR', 'French'),"
                     "('hin_IN', 'Hindi'), ('ind_ID', 'Bahasa'),"
                     "('per_IR', 'Persian'), ('grn_PY', 'Guarani')]")
        featured_langs = "[('spa_ES', 'Spanish'), ('eng_GB', 'English')]"

        settings = self.get_settings(self.workspace,
                                     available_languages=languages,
                                     featured_languages=featured_langs)

        self.config = testing.setUp(settings=settings)
        self.config.include('pyramid_chameleon')
        set_cache_regions_from_settings(settings)
        self.config.set_locale_negotiator(locale_negotiator_with_fallbacks)
        self.views = CmsViews(self.mk_request())

        self.app = self.mk_app(self.workspace, settings=settings)
示例#6
0
    def test_locales_displayed(self):
        langs = self.views.get_display_languages()
        self.assertEqual(langs, [('eng_GB', 'English'),
                                 ('spa_ES', u'espa\xf1ol')])

        request = self.mk_request(locale_name='fre_FR')
        self.views = CmsViews(request)
        langs = self.views.get_display_languages()
        self.assertEqual(langs, [('fre_FR', u'fran\xe7ais'),
                                 ('eng_GB', 'English'),
                                 ('spa_ES', u'espa\xf1ol')])

        request = self.mk_request(locale_name='spa_ES')
        self.views = CmsViews(request)
        langs = self.views.get_display_languages()
        self.assertEqual(langs, [('spa_ES', u'espa\xf1ol'),
                                 ('eng_GB', 'English')])
示例#7
0
    def setUp(self):
        self.workspace = self.mk_workspace()
        settings = self.get_settings(self.workspace)

        self.config = testing.setUp(settings=settings)
        self.config.include('cms')
        set_cache_regions_from_settings(settings)

        self.views = CmsViews(self.mk_request())
        self.app = self.mk_app(self.workspace, settings=settings)
示例#8
0
 def render_logo(locale, default_src=None):
     request = self.mk_request(locale_name=locale)
     self.views = CmsViews(request)
     if default_src:
         define = 'tal:define="img_attrs view.get_logo_attributes' \
             '(default_image_src=\'%s\')"' % default_src
     else:
         define = ''
     template = '<div metal:use-macro="view.logo_template" %s></div>'
     template = PageTemplate(template % define)
     return template.render(view=self.views, request=request)
示例#9
0
 def test_content_linked_pages_none(self):
     [category] = self.create_categories(self.workspace, count=1)
     [page1] = self.create_pages(self.workspace,
                                 linked_pages=None,
                                 count=1,
                                 content='',
                                 description='',
                                 primary_category=category.uuid)
     request = self.mk_request(matchdict={'uuid': page1.uuid})
     self.views = CmsViews(request)
     response = self.views.content()
     self.assertEqual(list(response['linked_pages']), [])
示例#10
0
    def test_flatpage_markdown_rendering(self):
        [category] = self.create_categories(self.workspace, count=1)
        [page] = self.create_pages(self.workspace,
                                   count=1,
                                   content='**strong**',
                                   description='_emphasised_')

        request = self.mk_request(matchdict={'slug': page.slug})
        self.views = CmsViews(request)
        response = self.views.flatpage()
        self.assertEqual(response['content'], '<p><strong>strong</strong></p>')
        self.assertEqual(response['description'], '<p><em>emphasised</em></p>')
示例#11
0
    def test_localisation_not_found(self):
        loc = Localisation({
            'locale': 'eng_GB',
            'image': 'sample-uuid-000000-0001',
            'image_host': 'http://some.site.com/'
        })
        self.workspace.save(loc, 'Add localisation')
        self.workspace.refresh_index()

        request = self.mk_request({'_LOCALE_': 'spa_ES'})
        self.views = CmsViews(request)

        self.assertIsNone(self.views.get_localisation())
示例#12
0
    def test_get_flatpage_using_old_english_code(self):
        [category] = self.create_categories(self.workspace, count=1)
        [page] = self.create_pages(self.workspace,
                                   count=1,
                                   content='Sample page in english',
                                   description='_emphasised_',
                                   language='eng_GB')

        request = self.mk_request({'_LOCALE_': 'eng_UK'},
                                  matchdict={'slug': page.slug})
        self.views = CmsViews(request)
        response = self.views.flatpage()
        self.assertEqual(response['content'], '<p>Sample page in english</p>')
示例#13
0
    def test_get_top_nav(self):
        category1, category2 = self.create_categories(self.workspace)
        category3, category4 = self.create_categories(self.workspace,
                                                      language='swa_KE',
                                                      featured_in_navbar=True)

        self.assertEqual([], list(self.views.get_top_nav))

        # Change language
        self.views = CmsViews(self.mk_request(locale_name='swa_KE'))
        cat1, cat2 = self.views.get_top_nav
        self.assertEqual(set([cat1.language, cat2.language]),
                         set(['swa_KE', 'swa_KE']))
示例#14
0
    def test_rtl(self):
        loc = Localisation({
            'locale': 'urd_IN',
            'image': 'sample-uuid-000000-0001',
            'image_host': 'http://some.site.com/'
        })
        self.workspace.save(loc, 'Add localisation')
        self.workspace.refresh_index()

        request = self.mk_request(locale_name='urd_IN')
        self.views = CmsViews(request)

        localisation = self.views.get_localisation()
        self.assertEqual(localisation.locale, 'urd_IN')
示例#15
0
    def test_category_view(self):
        [category] = self.create_categories(self.workspace,
                                            count=1,
                                            language='swa_KE')
        [page] = self.create_pages(self.workspace,
                                   count=1,
                                   language='swa_KE',
                                   primary_category=category.uuid)

        request = self.mk_request(matchdict={'category': category.uuid},
                                  locale_name='swa_KE')
        views = CmsViews(request)
        response = views.category()
        self.assertEqual(response['category'].uuid, category.uuid)
        self.assertEqual([p.uuid for p in response['pages']], [page.uuid])
示例#16
0
    def test_get_categories(self):
        category1, category2 = self.create_categories(self.workspace,
                                                      language='eng_GB')
        category3, category4 = self.create_categories(self.workspace,
                                                      language='swa_KE')

        cat1, cat2 = self.views.get_categories()
        self.assertEqual(
            set([category1.uuid, category2.uuid]),
            set([category.uuid for category in self.views.get_categories()]))

        # Change language
        self.views = CmsViews(self.mk_request(locale_name='swa_KE'))
        cat1, cat2 = self.views.get_categories()
        self.assertEqual(set([cat1.language, cat2.language]),
                         set(['swa_KE', 'swa_KE']))
示例#17
0
    def setUp(self):
        self.workspace = self.mk_workspace()
        self.workspace.setup_custom_mapping(
            Page, {
                'properties': {
                    'slug': {
                        'type': 'string',
                        'index': 'not_analyzed',
                    },
                    'language': {
                        'type': 'string',
                        'index': 'not_analyzed',
                    }
                }
            })
        self.workspace.setup_custom_mapping(
            Category, {
                'properties': {
                    'slug': {
                        'type': 'string',
                        'index': 'not_analyzed',
                    },
                    'language': {
                        'type': 'string',
                        'index': 'not_analyzed',
                    }
                }
            })

        self.workspace.setup_custom_mapping(
            Localisation, {
                'properties': {
                    'locale': {
                        'type': 'string',
                        'index': 'not_analyzed',
                    }
                }
            })

        settings = self.get_settings(self.workspace)
        self.config = testing.setUp(settings=settings)
        set_cache_regions_from_settings(settings)
        self.config.set_locale_negotiator(locale_negotiator_with_fallbacks)
        self.views = CmsViews(self.mk_request())
        self.app = self.mk_app(self.workspace, settings=settings)
示例#18
0
    def test_get_featured_category_pages_swahili(self):
        self.views = CmsViews(self.mk_request(locale_name='swa_KE'))

        [category_eng] = self.create_categories(self.workspace,
                                                language='eng_GB',
                                                count=1)
        self.create_pages(self.workspace,
                          count=10,
                          language='eng_GB',
                          primary_category=category_eng.uuid)
        self.create_pages(self.workspace,
                          count=2,
                          language='eng_GB',
                          featured_in_category=True,
                          primary_category=category_eng.uuid)

        [category_swh] = self.create_categories(self.workspace,
                                                language='swa_KE',
                                                count=1)
        self.create_pages(self.workspace,
                          count=10,
                          language='swa_KE',
                          primary_category=category_swh.uuid)
        pages_swh_featured = self.create_pages(
            self.workspace,
            count=2,
            language='swa_KE',
            featured_in_category=True,
            primary_category=category_swh.uuid)

        # Assert english content not returned since language is swahili
        self.assertEqual(
            [],
            list(self.views.get_featured_category_pages(category_eng.uuid)))

        # Assert we get back featured pages for Swahili
        self.assertEqual(
            set([page.uuid for page in pages_swh_featured]),
            set([
                page.uuid for page in self.views.get_featured_category_pages(
                    category_swh.uuid)
            ]))
示例#19
0
    def test_format_date_helper(self):
        views = CmsViews(self.mk_request())
        self.assertEqual(views.format_date('2014-10-10T09:10:17+00:00'),
                         '10 October 2014')

        self.assertEqual(
            views.format_date('2014-10-10T09:10:17+00:00', '%d-%b-%y'),
            '10-Oct-14')

        self.assertEqual(views.format_date('some invalid date'),
                         'some invalid date')

        dt = datetime(year=2014,
                      month=10,
                      day=10,
                      hour=9,
                      minute=10,
                      second=17,
                      tzinfo=pytz.utc)
        self.assertEqual(views.format_date(dt), '10 October 2014')
示例#20
0
    def test_pages_ordering(self):
        [category] = self.create_categories(self.workspace, count=1)
        page1 = Page({
            'title': 'title 1',
            'language': 'eng_GB',
            'position': 3,
            'primary_category': category.uuid
        })
        page2 = Page({
            'title': 'title 2',
            'language': 'eng_GB',
            'position': 0,
            'primary_category': category.uuid
        })
        page3 = Page({
            'title': 'title 3',
            'language': 'eng_GB',
            'position': 1,
            'primary_category': category.uuid
        })
        page4 = Page({
            'title': 'title 4',
            'language': 'eng_GB',
            'position': 2,
            'primary_category': category.uuid
        })
        self.workspace.save(page1, 'Update position')
        self.workspace.save(page2, 'Update position')
        self.workspace.save(page3, 'Update position')
        self.workspace.save(page4, 'Update position')
        self.workspace.refresh_index()

        request = self.mk_request(matchdict={'category': category.uuid})
        views = CmsViews(request)
        cat = views.category()
        p1, p2, p3, p4 = cat['pages']

        self.assertEqual(p1.uuid, page2.uuid)
        self.assertEqual(p2.uuid, page3.uuid)
        self.assertEqual(p3.uuid, page4.uuid)
        self.assertEqual(p4.uuid, page1.uuid)
示例#21
0
 def test_unsupported_locales(self):
     request = self.mk_request(locale_name='grn_PY')
     self.views = CmsViews(request)
     langs = self.views.get_display_languages()
     self.assertEqual(langs, [('grn_PY', u'Guarani'), ('eng_GB', 'English'),
                              ('spa_ES', u'espa\xf1ol')])
示例#22
0
    def test_get_category(self):
        request = self.mk_request(locale_name='swa_KE')
        views = CmsViews(request)

        for does_not_exist in (None, 'abcd'):
            self.assertIs(views.get_category(does_not_exist), None)