コード例 #1
0
    def test_tags_request_page(self):
        """
        Tests the correct retrieval of tags for a page  from request
        """
        page, page_2 = self.get_pages()

        # Assign tags to page
        page_tags = models.PageTags.objects.create(extended_object=page)
        page_tags.tags.add(*self.tag_strings)
        page.publish()

        cache.clear()
        # Reload page from request and extract tags from it
        request = self.get_request(page, 'en')
        with self.assertNumQueries(4):
            # 1st query to get the page for the key lookup
            # 2st query to get the page in get_page_tags_from_request
            # 3nd query to get the page extension
            # 4rd query to extract tags data
            tags_list = get_page_tags_from_request(request, page.get_public_object().pk, 'en', page.site_id)
        self.assertEqual(set(self.tag_strings), set([tag.name for tag in tags_list]))

        with self.assertNumQueries(1):
            # Second run executes exactly 1 query as data is fetched from cache
            # 1st query to get the page for the key lookup
            tags_list = get_page_tags_from_request(request, page.get_public_object().pk, 'en', page.site_id)

        # Empty page has no tags
        tags_list = get_page_tags_from_request(request, 40, 'en', 1)
        self.assertEqual(set(), set(tags_list))
コード例 #2
0
    def test_cache_cleanup(self):
        """
        Tests the correct retrieval of tags for a title from request
        """
        page, page_2 = self.get_pages()

        # Assign tags to title
        title_tags = models.TitleTags.objects.create(extended_object=page.get_title_obj("en"))
        title_tags.tags.add(*self.tag_strings)
        page_tags = models.PageTags.objects.create(extended_object=page)
        page_tags.tags.add(*self.tag_strings)
        for lang in self.languages:
            page.publish(lang)

        # Reload page from request and extract tags from it
        request = self.get_request(page, "en")
        title_tags_list = get_title_tags_from_request(request, page.get_public_object().pk, "en", page.site_id)
        page_tags_list = get_page_tags_from_request(request, page.get_public_object().pk, "en", page.site_id)

        title_key = get_cache_key(None, page.get_public_object(), "en", page.get_public_object().site_id, True)
        page_key = get_cache_key(None, page.get_public_object(), "", page.get_public_object().site_id, False)

        title_cache = cache.get(title_key)
        page_cache = cache.get(page_key)

        self.assertEqual(set(title_tags_list), set(title_cache))
        self.assertEqual(set(page_tags_list), set(page_cache))

        page.get_public_object().get_title_obj("en").delete()
        self.assertIsNone(cache.get(title_key))

        page.get_public_object().delete()
        self.assertIsNone(cache.get(page_key))
コード例 #3
0
    def test_tags_request_page(self):
        """
        Tests the correct retrieval of tags for a page  from request
        """
        page, page_2 = self.get_pages()

        # Assign tags to page
        page_tags = models.PageTags.objects.create(extended_object=page)
        page_tags.tags.add(*self.tag_strings)
        for lang in self.languages:
            page.publish(lang)

        cache.clear()
        # Reload page from request and extract tags from it
        request = self.get_request(page, 'en')
        try:
            site_id = page.node.site_id
        except AttributeError:  # CMS_3_4
            site_id = page.site_id
        with self.assertNumQueries(4):
            # 1st query to get the page for the key lookup
            # 2st query to get the page in get_page_tags_from_request
            # 3nd query to get the page extension
            # 4rd query to extract tags data
            tags_list = get_page_tags_from_request(request,
                                                   page.get_public_object().pk,
                                                   'en', site_id)
        self.assertEqual(set(self.tag_strings),
                         set([tag.name for tag in tags_list]))

        with self.assertNumQueries(1):
            # Second run executes exactly 1 query as data is fetched from cache
            # 1st query to get the page for the key lookup
            tags_list = get_page_tags_from_request(request,
                                                   page.get_public_object().pk,
                                                   'en', site_id)

        # Empty page has no tags
        tags_list = get_page_tags_from_request(request, 40, 'en', 1)
        self.assertEqual(set(), set(tags_list))
コード例 #4
0
    def test_cache_cleanup(self):
        """
        Tests the correct retrieval of tags for a title from request
        """
        page, page_2 = self.get_pages()

        # Assign tags to title
        title_tags = models.TitleTags.objects.create(
            extended_object=page.get_title_obj('en'))
        title_tags.tags.add(*self.tag_strings)
        page_tags = models.PageTags.objects.create(extended_object=page)
        page_tags.tags.add(*self.tag_strings)
        for lang in self.languages:
            page.publish(lang)

        try:
            site_id = page.node.site_id
        except AttributeError:  # CMS_3_4
            site_id = page.site_id
        # Reload page from request and extract tags from it
        request = self.get_request(page, 'en')
        title_tags_list = get_title_tags_from_request(
            request,
            page.get_public_object().pk, 'en', site_id)
        page_tags_list = get_page_tags_from_request(
            request,
            page.get_public_object().pk, 'en', site_id)

        try:
            site_id = page.get_public_object().node.site_id
        except AttributeError:  # CMS_3_4
            site_id = page.get_public_object().site_id
        title_key = get_cache_key(None, page.get_public_object(), 'en',
                                  site_id, True)
        page_key = get_cache_key(None, page.get_public_object(), '', site_id,
                                 False)

        title_cache = cache.get(title_key)
        page_cache = cache.get(page_key)

        self.assertEqual(set(title_tags_list), set(title_cache))
        self.assertEqual(set(page_tags_list), set(page_cache))

        page.get_public_object().get_title_obj('en').delete()
        self.assertIsNone(cache.get(title_key))

        page.get_public_object().delete()
        self.assertIsNone(cache.get(page_key))