示例#1
0
    def setUp(self):
        self.site = Site.objects.get_current()
        self.author = Author.objects.create_user(username="******", email="*****@*****.**", password="******")
        self.category = Category.objects.create(title="Tests", slug="tests")
        params = {
            "title": "Test 1",
            "content": "First test entry published",
            "slug": "test-1",
            "tags": "tests",
            "creation_date": datetime(2010, 1, 1, 13, 25),
            "status": PUBLISHED,
        }
        entry = Entry.objects.create(**params)
        entry.sites.add(self.site)
        entry.categories.add(self.category)
        entry.authors.add(self.author)

        params = {
            "title": "Test 2",
            "content": "Second test entry published",
            "slug": "test-2",
            "tags": "tests",
            "creation_date": datetime(2010, 6, 1, 12, 12),
            "status": PUBLISHED,
        }
        entry = Entry.objects.create(**params)
        entry.sites.add(self.site)
        entry.categories.add(self.category)
        entry.authors.add(self.author)
示例#2
0
    def setUp(self):
        self.site = Site.objects.get_current()
        self.author = User.objects.create_superuser(
            username='******', email='*****@*****.**', password='******')
        self.category = Category.objects.create(title='Tests', slug='tests')
        params = {'title': 'Test 1',
                  'content': 'First test entry published',
                  'slug': 'test-1',
                  'tags': 'tests',
                  'creation_date': datetime(2010, 1, 1, 13, 25),
                  'status': PUBLISHED}
        entry = Entry.objects.create(**params)
        entry.sites.add(self.site)
        entry.categories.add(self.category)
        entry.authors.add(self.author)

        params = {'title': 'Test 2',
                  'content': 'Second test entry published',
                  'slug': 'test-2',
                  'tags': 'tests',
                  'creation_date': datetime(2010, 6, 1, 12, 12),
                  'status': PUBLISHED}
        entry = Entry.objects.create(**params)
        entry.sites.add(self.site)
        entry.categories.add(self.category)
        entry.authors.add(self.author)
 def test_previous_next_entry_in_one_query(self):
     site = Site.objects.get_current()
     self.entry.status = PUBLISHED
     self.entry.save()
     self.entry.sites.add(site)
     with self.assertNumQueries(1):
         self.assertFalse(self.entry.previous_entry)
         self.assertFalse(self.entry.next_entry)
         # Reload to check the cache
         self.assertFalse(self.entry.previous_entry)
         self.assertFalse(self.entry.next_entry)
     params = {'title': 'My second entry',
               'content': 'My second content',
               'slug': 'my-second-entry',
               'creation_date': datetime(2001, 1, 1),
               'status': PUBLISHED}
     self.second_entry = Entry.objects.create(**params)
     self.second_entry.sites.add(site)
     params = {'title': 'My third entry',
               'content': 'My third content',
               'slug': 'my-third-entry',
               'creation_date': datetime(2050, 1, 1),
               'status': PUBLISHED}
     self.third_entry = Entry.objects.create(**params)
     self.third_entry.sites.add(site)
     del self.entry.previous_next  # Invalidate the cached property
     with self.assertNumQueries(1):
         self.assertEqual(self.entry.previous_entry, self.second_entry)
         self.assertEqual(self.entry.next_entry, self.third_entry)
         # Reload to check the cache
         self.assertEqual(self.entry.previous_entry, self.second_entry)
         self.assertEqual(self.entry.next_entry, self.third_entry)
示例#4
0
    def setUp(self):
        # Create data
        self.webmaster = Author.objects.create_superuser(
            username='******',
            email='*****@*****.**',
            password='******')
        self.contributor = Author.objects.create_user(
            username='******',
            email='*****@*****.**',
            password='******')
        self.site = Site.objects.get_current()
        self.categories = [
            Category.objects.create(title='Category 1',
                                    slug='category-1'),
            Category.objects.create(title='Category 2',
                                    slug='category-2')]
        params = {'title': 'My entry 1', 'content': 'My content 1',
                  'tags': 'zinnia, test', 'slug': 'my-entry-1',
                  'creation_date': datetime(2010, 1, 1, 12),
                  'status': PUBLISHED}
        self.entry_1 = Entry.objects.create(**params)
        self.entry_1.authors.add(self.webmaster)
        self.entry_1.categories.add(*self.categories)
        self.entry_1.sites.add(self.site)

        params = {'title': 'My entry 2', 'content': 'My content 2',
                  'creation_date': datetime(2010, 3, 15),
                  'tags': 'zinnia, test', 'slug': 'my-entry-2'}
        self.entry_2 = Entry.objects.create(**params)
        self.entry_2.authors.add(self.webmaster)
        self.entry_2.categories.add(self.categories[0])
        self.entry_2.sites.add(self.site)
        # Instanciating the server proxy
        self.server = ServerProxy('http://localhost:8000/xmlrpc/',
                                  transport=TestTransport())
    def setUp(self):
        disconnect_entry_signals()
        disconnect_discussion_signals()
        self.site = Site.objects.get_current()
        self.author = Author.objects.create_user(username='******',
                                                 email='*****@*****.**',
                                                 password='******')
        self.category = Category.objects.create(title='Tests', slug='tests')
        params = {'title': 'Test 1',
                  'content': 'First test entry published',
                  'slug': 'test-1',
                  'tags': 'tests',
                  'publication_date': datetime(2010, 1, 1, 23, 0),
                  'status': PUBLISHED}
        entry = Entry.objects.create(**params)
        entry.sites.add(self.site)
        entry.categories.add(self.category)
        entry.authors.add(self.author)
        self.first_entry = entry

        params = {'title': 'Test 2',
                  'content': 'Second test entry published',
                  'slug': 'test-2',
                  'tags': 'tests',
                  'publication_date': datetime(2010, 5, 31, 23, 00),
                  'status': PUBLISHED}
        entry = Entry.objects.create(**params)
        entry.sites.add(self.site)
        entry.categories.add(self.category)
        entry.authors.add(self.author)
        self.second_entry = entry
    def test_edit_post(self):
        post = post_structure(self.entry_2, self.site)
        self.assertRaises(Fault, self.server.metaWeblog.editPost,
                          1, 'contributor', 'password', post, 1)
        new_post_id = self.server.metaWeblog.newPost(
            1, 'webmaster', 'password', post, 0)

        entry = Entry.objects.get(pk=new_post_id)
        self.assertEqual(entry.title, self.entry_2.title)
        self.assertEqual(entry.content, self.entry_2.html_content)
        self.assertEqual(entry.excerpt, self.entry_2.excerpt)
        self.assertEqual(entry.slug, self.entry_2.slug)
        self.assertEqual(entry.status, DRAFT)
        self.assertEqual(entry.password, self.entry_2.password)
        self.assertEqual(entry.comment_enabled, True)
        self.assertEqual(entry.pingback_enabled, True)
        self.assertEqual(entry.categories.count(), 1)
        self.assertEqual(entry.authors.count(), 1)
        self.assertEqual(entry.authors.all()[0], self.webmaster)
        self.assertEqual(entry.creation_date, self.entry_2.creation_date)
        self.assertEqual(entry.publication_date, self.entry_2.creation_date)

        entry.title = 'Title edited'
        entry.creation_date = datetime(2000, 1, 1)
        post = post_structure(entry, self.site)
        post['categories'] = ''
        post['description'] = 'Content edited'
        post['mt_excerpt'] = 'Content edited'
        post['wp_slug'] = 'slug-edited'
        post['wp_password'] = '******'
        post['mt_allow_comments'] = 2
        post['mt_allow_pings'] = 0

        response = self.server.metaWeblog.editPost(
            new_post_id, 'webmaster', 'password', post, 1)
        self.assertEqual(response, True)
        entry = Entry.objects.get(pk=new_post_id)
        self.assertEqual(entry.title, post['title'])
        self.assertEqual(entry.content, post['description'])
        self.assertEqual(entry.excerpt, post['mt_excerpt'])
        self.assertEqual(entry.slug, 'slug-edited')
        self.assertEqual(entry.status, PUBLISHED)
        self.assertEqual(entry.password, 'password')
        self.assertEqual(entry.comment_enabled, False)
        self.assertEqual(entry.pingback_enabled, False)
        self.assertEqual(entry.categories.count(), 0)
        self.assertEqual(entry.creation_date, datetime(2000, 1, 1))
        self.assertEqual(entry.publication_date, datetime(2000, 1, 1))

        del post['dateCreated']
        post['wp_author_id'] = self.contributor.pk

        response = self.server.metaWeblog.editPost(
            new_post_id, 'webmaster', 'password', post, 1)
        entry = Entry.objects.get(pk=new_post_id)
        self.assertEqual(entry.authors.count(), 1)
        self.assertEqual(entry.authors.all()[0], self.contributor)
        self.assertEqual(entry.creation_date, datetime(2000, 1, 1))
        self.assertEqual(entry.publication_date, datetime(2000, 1, 1))
    def setUp(self):
        disconnect_entry_signals()
        disconnect_discussion_signals()
        # Clear the cache of user flagger to avoid error on MySQL
        get_user_flagger.cache_clear()
        # Use default URL shortener backend, to avoid networks errors
        self.original_shortener = shortener_settings.URL_SHORTENER_BACKEND
        shortener_settings.URL_SHORTENER_BACKEND = "zinnia.url_shortener." "backends.default"
        # Set up a stub around urlopen
        import zinnia.xmlrpc.pingback

        self.original_urlopen = zinnia.xmlrpc.pingback.urlopen
        zinnia.xmlrpc.pingback.urlopen = self.fake_urlopen
        # Set a short template for entry_detail to avoid rendering errors
        setup_test_template_loader(
            {
                "zinnia/entry_detail.html": "<html><head><title>{{ object.title }}</title></head>"
                "<body>{{ object.html_content|safe }}</body></html>",
                "404.html": "404",
            }
        )
        # Preparing site
        self.site = Site.objects.get_current()
        # Creating tests entries
        self.author = Author.objects.create_user(username="******", email="*****@*****.**")
        self.category = Category.objects.create(title="test", slug="test")
        params = {
            "title": "My first entry",
            "content": "My first content",
            "slug": "my-first-entry",
            "creation_date": datetime(2010, 1, 1, 12),
            "status": PUBLISHED,
        }
        self.first_entry = Entry.objects.create(**params)
        self.first_entry.sites.add(self.site)
        self.first_entry.categories.add(self.category)
        self.first_entry.authors.add(self.author)

        params = {
            "title": "My second entry",
            "content": "My second content with link "
            'to <a href="http://%s%s">first entry</a>'
            " and other links : %s %s."
            % (
                self.site.domain,
                self.first_entry.get_absolute_url(),
                "http://example.com/error-404/",
                "http://external/",
            ),
            "slug": "my-second-entry",
            "creation_date": datetime(2010, 1, 1, 12),
            "status": PUBLISHED,
        }
        self.second_entry = Entry.objects.create(**params)
        self.second_entry.sites.add(self.site)
        self.second_entry.categories.add(self.category)
        self.second_entry.authors.add(self.author)
        # Instanciating the server proxy
        self.server = ServerProxy("http://example.com/xmlrpc/", transport=TestTransport())
 def test_is_actual(self):
     self.assertTrue(self.entry.is_actual)
     self.entry.start_publication = datetime(2020, 3, 15)
     self.assertFalse(self.entry.is_actual)
     self.entry.start_publication = timezone.now()
     self.assertTrue(self.entry.is_actual)
     self.entry.end_publication = datetime(2000, 3, 15)
     self.assertFalse(self.entry.is_actual)
示例#9
0
 def test_archives_entries_tree_with_timezone(self):
     template = Template('{% load zinnia %}'
                         '{% get_archives_entries_tree %}')
     self.create_published_entry_at(datetime(2014, 1, 1, 12, 0))
     self.create_published_entry_at(datetime(2014, 1, 31, 23, 0))
     output = template.render(Context())
     self.assertTrue('/2014/01/01/' in output)
     self.assertTrue('/2014/02/01/' in output)
    def setUp(self):
        disconnect_entry_signals()
        disconnect_discussion_signals()
        # Clean the memoization of user flagger to avoid error on MySQL
        try:
            del user_flagger_[()]
        except KeyError:
            pass
        # Use default URL shortener backend, to avoid networks errors
        self.original_shortener = shortener_settings.URL_SHORTENER_BACKEND
        shortener_settings.URL_SHORTENER_BACKEND = 'zinnia.url_shortener.'\
                                                   'backends.default'
        # Set up a stub around urlopen
        import zinnia.xmlrpc.pingback
        self.original_urlopen = zinnia.xmlrpc.pingback.urlopen
        zinnia.xmlrpc.pingback.urlopen = self.fake_urlopen
        # Set a short template for entry_detail to avoid rendering errors
        setup_test_template_loader(
            {'zinnia/entry_detail.html':
             '<html><head><title>{{ object.title }}</title></head>'
             '<body>{{ object.html_content|safe }}</body></html>',
             '404.html': '404'})
        # Preparing site
        self.site = Site.objects.get_current()
        # Creating tests entries
        self.author = Author.objects.create_user(username='******',
                                                 email='*****@*****.**')
        self.category = Category.objects.create(title='test', slug='test')
        params = {'title': 'My first entry',
                  'content': 'My first content',
                  'slug': 'my-first-entry',
                  'creation_date': datetime(2010, 1, 1, 12),
                  'status': PUBLISHED}
        self.first_entry = Entry.objects.create(**params)
        self.first_entry.sites.add(self.site)
        self.first_entry.categories.add(self.category)
        self.first_entry.authors.add(self.author)

        params = {'title': 'My second entry',
                  'content': 'My second content with link '
                  'to <a href="http://%s%s">first entry</a>'
                  ' and other links : %s %s.' % (
                      self.site.domain,
                      self.first_entry.get_absolute_url(),
                      'http://example.com/error-404/',
                      'http://external/'),
                  'slug': 'my-second-entry',
                  'creation_date': datetime(2010, 1, 1, 12),
                  'status': PUBLISHED}
        self.second_entry = Entry.objects.create(**params)
        self.second_entry.sites.add(self.site)
        self.second_entry.categories.add(self.category)
        self.second_entry.authors.add(self.author)
        # Instanciating the server proxy
        self.server = ServerProxy('http://example.com/xmlrpc/',
                                  transport=TestTransport())
示例#11
0
 def test_calendar_entries_no_timezone(self):
     template = Template('{% load zinnia %}'
                         '{% get_calendar_entries 2014 1 %}')
     self.create_published_entry_at(datetime(2014, 1, 1, 12, 0))
     self.create_published_entry_at(datetime(2014, 1, 1, 23, 0))
     self.create_published_entry_at(datetime(2012, 12, 31, 23, 0))
     self.create_published_entry_at(datetime(2014, 1, 31, 23, 0))
     output = template.render(Context())
     self.assertTrue('/2014/01/01/' in output)
     self.assertTrue('/2014/01/02/' not in output)
     self.assertTrue('/2012/12/' in output)
     self.assertTrue('/2014/02/' not in output)
示例#12
0
    def test_edit_post(self):
        post = post_structure(self.entry_2, self.site)
        self.assertRaises(Fault, self.server.metaWeblog.editPost, 1, "contributor", "password", post, 1)
        new_post_id = self.server.metaWeblog.newPost(1, "webmaster", "password", post, 0)

        entry = Entry.objects.get(pk=new_post_id)
        self.assertEqual(entry.title, self.entry_2.title)
        self.assertEqual(entry.content, self.entry_2.html_content)
        self.assertEqual(entry.excerpt, self.entry_2.excerpt)
        self.assertEqual(entry.slug, self.entry_2.slug)
        self.assertEqual(entry.status, DRAFT)
        self.assertEqual(entry.password, self.entry_2.password)
        self.assertEqual(entry.comment_enabled, True)
        self.assertEqual(entry.pingback_enabled, True)
        self.assertEqual(entry.categories.count(), 1)
        self.assertEqual(entry.authors.count(), 1)
        self.assertEqual(entry.authors.all()[0], self.webmaster)
        self.assertEqual(entry.creation_date, self.entry_2.creation_date)

        entry.title = "Title edited"
        entry.creation_date = datetime(2000, 1, 1)
        post = post_structure(entry, self.site)
        post["categories"] = ""
        post["description"] = "Content edited"
        post["mt_excerpt"] = "Content edited"
        post["wp_slug"] = "slug-edited"
        post["wp_password"] = "******"
        post["mt_allow_comments"] = 2
        post["mt_allow_pings"] = 0

        response = self.server.metaWeblog.editPost(new_post_id, "webmaster", "password", post, 1)
        self.assertEqual(response, True)
        entry = Entry.objects.get(pk=new_post_id)
        self.assertEqual(entry.title, post["title"])
        self.assertEqual(entry.content, post["description"])
        self.assertEqual(entry.excerpt, post["mt_excerpt"])
        self.assertEqual(entry.slug, "slug-edited")
        self.assertEqual(entry.status, PUBLISHED)
        self.assertEqual(entry.password, "password")
        self.assertEqual(entry.comment_enabled, False)
        self.assertEqual(entry.pingback_enabled, False)
        self.assertEqual(entry.categories.count(), 0)
        self.assertEqual(entry.creation_date, datetime(2000, 1, 1))

        del post["dateCreated"]
        post["wp_author_id"] = self.contributor.pk

        response = self.server.metaWeblog.editPost(new_post_id, "webmaster", "password", post, 1)
        entry = Entry.objects.get(pk=new_post_id)
        self.assertEqual(entry.authors.count(), 1)
        self.assertEqual(entry.authors.all()[0], self.contributor)
        self.assertEqual(entry.creation_date, datetime(2000, 1, 1))
    def setUp(self):
        disconnect_entry_signals()
        disconnect_discussion_signals()
        # Clear the cache of user flagger to avoid error on MySQL
        get_user_flagger.cache_clear()
        # Use default URL shortener backend, to avoid networks errors
        self.original_shortener = shortener_settings.URL_SHORTENER_BACKEND
        shortener_settings.URL_SHORTENER_BACKEND = 'zinnia.url_shortener.'\
                                                   'backends.default'
        # Set up a stub around urlopen
        import zinnia.xmlrpc.pingback
        self.original_urlopen = zinnia.xmlrpc.pingback.urlopen
        zinnia.xmlrpc.pingback.urlopen = self.fake_urlopen
        # Set up a stub around zinnia.spam_checker
        import zinnia.spam_checker
        self.original_scb = zinnia.spam_checker.SPAM_CHECKER_BACKENDS
        zinnia.spam_checker.SPAM_CHECKER_BACKENDS = []
        # Preparing site
        self.site = Site.objects.get_current()
        # Creating tests entries
        self.author = Author.objects.create_user(username='******',
                                                 email='*****@*****.**')
        self.category = Category.objects.create(title='test', slug='test')
        params = {'title': 'My first entry',
                  'content': 'My first content',
                  'slug': 'my-first-entry',
                  'publication_date': datetime(2010, 1, 1, 12),
                  'status': PUBLISHED}
        self.first_entry = Entry.objects.create(**params)
        self.first_entry.sites.add(self.site)
        self.first_entry.categories.add(self.category)
        self.first_entry.authors.add(self.author)

        params = {'title': 'My second entry',
                  'content': 'My second content with link '
                  'to <a href="http://%s%s">first entry</a>'
                  ' and other links : %s %s.' % (
                      self.site.domain,
                      self.first_entry.get_absolute_url(),
                      'http://example.com/error-404/',
                      'http://external/'),
                  'slug': 'my-second-entry',
                  'publication_date': datetime(2010, 1, 1, 12),
                  'status': PUBLISHED}
        self.second_entry = Entry.objects.create(**params)
        self.second_entry.sites.add(self.site)
        self.second_entry.categories.add(self.category)
        self.second_entry.authors.add(self.author)
        # Instanciating the server proxy
        self.server = ServerProxy('http://example.com/xmlrpc/',
                                  transport=TestTransport())
示例#14
0
 def test_zinnia_entry_archive_month_with_timezone(self):
     response = self.check_publishing_context(
         '/2010/01/', 1, 2, 'entry_list', 3)
     self.assertTemplateUsed(
         response, 'zinnia/archives/2010/month/01/entry_archive_month.html')
     self.assertEqual(response.context['previous_month'], None)
     self.assertEqual(response.context['next_month'], date(2010, 6, 1))
     self.assertEqual(response.context['date_list'][0].date(),
                      datetime(2010, 1, 2).date())
     response = self.client.get('/2010/06/')
     self.assertEqual(response.context['previous_month'], date(2010, 1, 1))
     self.assertEqual(response.context['next_month'], None)
     self.assertEqual(response.context['date_list'][0].date(),
                      datetime(2010, 6, 1).date())
示例#15
0
    def test_discussion_feed_with_same_slugs(self):
        """
        https://github.com/Fantomas42/django-blog-zinnia/issues/104

        OK, Here I will reproduce the original case: getting a discussion
        type feed, with a same slug.

        The correction of this case, will need some changes in the
        get_object method.
        """
        entry = self.create_published_entry()

        feed = EntryDiscussions()
        self.assertEqual(feed.get_object("request", 2010, 1, 1, entry.slug), entry)

        params = {
            "title": "My test entry, part II",
            "content": "My content ",
            "slug": "my-test-entry",
            "tags": "tests",
            "creation_date": datetime(2010, 2, 1, 12),
            "status": PUBLISHED,
        }
        entry_same_slug = Entry.objects.create(**params)
        entry_same_slug.sites.add(self.site)
        entry_same_slug.authors.add(self.author)
        self.assertEqual(feed.get_object("request", 2010, 2, 1, entry_same_slug.slug), entry_same_slug)
示例#16
0
    def test_get_archives_tree(self):
        with self.assertNumQueries(0):
            context = get_archives_entries_tree()
        self.assertEqual(len(context['archives']), 0)
        self.assertEqual(context['template'],
                         'zinnia/tags/entries_archives_tree.html')

        self.publish_entry()
        params = {'title': 'My second entry',
                  'content': 'My second content',
                  'tags': 'zinnia, test',
                  'status': PUBLISHED,
                  'creation_date': datetime(2009, 1, 10),
                  'slug': 'my-second-entry'}
        second_entry = Entry.objects.create(**params)
        second_entry.sites.add(self.site)

        with self.assertNumQueries(0):
            context = get_archives_entries_tree('custom_template.html')
        self.assertEqual(len(context['archives']), 2)
        self.assertEqual(
            context['archives'][0],
            self.make_local(
                second_entry.creation_date).replace(hour=0))
        self.assertEqual(
            context['archives'][1],
            self.make_local(
                self.entry.creation_date).replace(hour=0))
        self.assertEqual(context['template'], 'custom_template.html')
示例#17
0
    def test_get_calendar_entries_object_context(self):
        self.publish_entry()
        source_context = Context({'object': object()})
        with self.assertNumQueries(2):
            context = get_calendar_entries(source_context)
        self.assertEqual(
            context['previous_month'],
            self.make_local(self.entry.creation_date).date().replace(day=1))
        self.assertEqual(context['next_month'], None)

        params = {'title': 'My second entry',
                  'content': 'My second content',
                  'tags': 'zinnia, test',
                  'status': PUBLISHED,
                  'creation_date': datetime(2008, 1, 15),
                  'slug': 'my-second-entry'}
        second_entry = Entry.objects.create(**params)
        second_entry.sites.add(self.site)

        source_context = Context({'object': self.entry})
        with self.assertNumQueries(2):
            context = get_calendar_entries(source_context)
        self.assertEqual(
            context['previous_month'],
            self.make_local(second_entry.creation_date).date().replace(day=1))
        self.assertEqual(context['next_month'], None)

        source_context = Context({'object': second_entry})
        with self.assertNumQueries(2):
            context = get_calendar_entries(source_context)
        self.assertEqual(context['previous_month'], None)
        self.assertEqual(
            context['next_month'],
            self.make_local(self.entry.creation_date).date().replace(day=1))
示例#18
0
    def test_discussion_feed_with_same_slugs(self):
        """
        https://github.com/Fantomas42/django-blog-zinnia/issues/104

        OK, Here I will reproduce the original case: getting a discussion
        type feed, with a same slug.

        The correction of this case, will need some changes in the
        get_object method.
        """
        entry = self.create_published_entry()

        feed = EntryDiscussions()
        self.assertEquals(feed.get_object(
            'request', 2010, 1, 1, entry.slug), entry)

        params = {'title': 'My test entry, part II',
                  'content': 'My content ',
                  'slug': 'my-test-entry',
                  'tags': 'tests',
                  'creation_date': datetime(2010, 2, 1),
                  'status': PUBLISHED}
        entry_same_slug = Entry.objects.create(**params)
        entry_same_slug.sites.add(self.site)
        entry_same_slug.authors.add(self.author)

        self.assertEquals(feed.get_object(
            'request', 2010, 2, 1, entry_same_slug.slug), entry_same_slug)
示例#19
0
    def test_zinnia_entry_detail(self):
        entry = self.first_entry
        with self.assertNumQueries(1):
            response = self.client.get(entry.get_absolute_url())
        self.assertEqual(response.status_code, 200)

        entry.sites.clear()
        with self.assertNumQueries(1):
            response = self.client.get(entry.get_absolute_url())
        self.assertEqual(response.status_code, 404)
        entry.sites.add(self.site)

        entry.status = DRAFT
        entry.save()
        with self.assertNumQueries(2):
            response = self.client.get(entry.get_absolute_url())
        self.assertEqual(response.status_code, 404)
        entry.status = PUBLISHED

        entry.start_publication = datetime(2020, 1, 1, 12, 0)
        entry.save()
        with self.assertNumQueries(2):
            response = self.client.get(entry.get_absolute_url())
        self.assertEqual(response.status_code, 404)
        entry.start_publication = None

        entry.save()
        with self.assertNumQueries(1):
            response = self.client.get(entry.get_absolute_url())
        self.assertEqual(response.status_code, 200)
示例#20
0
 def setUp(self):
     params = {'title': 'My entry',
               'content': 'My content',
               'tags': 'zinnia, test',
               'creation_date': datetime(2010, 1, 1),
               'slug': 'my-entry'}
     self.entry = Entry.objects.create(**params)
示例#21
0
 def test_feed_discussions_with_timezone_issue_277(self):
     entry = self.create_published_entry()
     entry.creation_date = datetime(2014, 1, 1, 23)
     entry.save()
     feed = EntryDiscussions()
     self.assertEqual(feed.get_object(
         'request', 2014, 1, 2, entry.slug), entry)
示例#22
0
    def test_get_calendar_entries(self):
        source_context = Context()
        with self.assertNumQueries(3):
            context = get_calendar_entries(source_context)
        self.assertEquals(context['previous_month'], None)
        self.assertEquals(context['next_month'], None)
        self.assertEquals(context['template'], 'zinnia/tags/calendar.html')

        self.publish_entry()
        with self.assertNumQueries(2):
            context = get_calendar_entries(source_context,
                                           template='custom_template.html')
        self.assertEquals(context['previous_month'], datetime(2010, 1, 1))
        self.assertEquals(context['next_month'], None)
        self.assertEquals(context['template'], 'custom_template.html')

        with self.assertNumQueries(2):
            context = get_calendar_entries(source_context, 2009, 1)
        self.assertEquals(context['previous_month'], None)
        self.assertEquals(context['next_month'], datetime(2010, 1, 1))

        source_context = Context({'month': datetime(2009, 1, 1)})
        with self.assertNumQueries(2):
            context = get_calendar_entries(source_context)
        self.assertEquals(context['previous_month'], None)
        self.assertEquals(context['next_month'], datetime(2010, 1, 1))

        source_context = Context({'month': datetime(2010, 1, 1)})
        with self.assertNumQueries(2):
            context = get_calendar_entries(source_context)
        self.assertEquals(context['previous_month'], None)
        self.assertEquals(context['next_month'], None)

        params = {'title': 'My second entry',
                  'content': 'My second content',
                  'tags': 'zinnia, test',
                  'status': PUBLISHED,
                  'creation_date': datetime(2008, 1, 1),
                  'slug': 'my-second-entry'}
        site = Site.objects.get_current()
        second_entry = Entry.objects.create(**params)
        second_entry.sites.add(site)

        source_context = Context()
        with self.assertNumQueries(2):
            context = get_calendar_entries(source_context, 2009, 1)
        self.assertEquals(context['previous_month'], datetime(2008, 1, 1))
        self.assertEquals(context['next_month'], datetime(2010, 1, 1))
        with self.assertNumQueries(2):
            context = get_calendar_entries(source_context)
        self.assertEquals(context['previous_month'], datetime(2010, 1, 1))
        self.assertEquals(context['next_month'], None)
示例#23
0
 def test_zinnia_entry_archive_month_no_timezone(self):
     self.inhibit_templates(
         'zinnia/archives/2010/month/01/entry_archive_month.html',
         'zinnia/entry_archive_month.html')
     response = self.check_publishing_context(
         '/2010/01/', 1, 2, 'entry_list', 3)
     self.assertTemplateUsed(
         response, 'zinnia/archives/2010/month/01/entry_archive_month.html')
     self.assertEqual(response.context['previous_month'], None)
     self.assertEqual(response.context['next_month'], date(2010, 5, 1))
     self.assertEqual(list(response.context['date_list']),
                      [datetime(2010, 1, 1)])
     response = self.client.get('/2010/05/')
     self.assertEqual(response.context['previous_month'], date(2010, 1, 1))
     self.assertEqual(response.context['next_month'], None)
     self.assertEqual(list(response.context['date_list']),
                      [datetime(2010, 5, 31)])
示例#24
0
    def test_previous_next_published_mixin(self):
        site = Site.objects.get_current()

        params = {'title': 'Entry 1', 'content': 'Entry 1',
                  'slug': 'entry-1', 'status': PUBLISHED,
                  'creation_date': datetime(2012, 1, 1, 12)}
        entry_1 = Entry.objects.create(**params)
        entry_1.sites.add(site)

        params = {'title': 'Entry 2', 'content': 'Entry 2',
                  'slug': 'entry-2', 'status': PUBLISHED,
                  'creation_date': datetime(2012, 3, 15, 12)}
        entry_2 = Entry.objects.create(**params)
        entry_2.sites.add(site)

        params = {'title': 'Entry 3', 'content': 'Entry 3',
                  'slug': 'entry-3', 'status': PUBLISHED,
                  'creation_date': datetime(2012, 6, 2, 12)}
        entry_3 = Entry.objects.create(**params)
        entry_3.sites.add(site)

        class EntryPreviousNextPublished(PreviousNextPublishedMixin):
            def get_queryset(self):
                return Entry.published.all()
        epnp = EntryPreviousNextPublished()

        test_date = datetime(2009, 12, 1)
        self.assertEquals(epnp.get_previous_month(test_date), None)
        self.assertEquals(epnp.get_previous_day(test_date), None)
        self.assertEquals(epnp.get_next_month(test_date), date(2012, 1, 1))
        self.assertEquals(epnp.get_next_day(test_date), date(2012, 1, 1))

        test_date = datetime(2012, 1, 1)
        self.assertEquals(epnp.get_previous_month(test_date), None)
        self.assertEquals(epnp.get_previous_day(test_date), None)
        self.assertEquals(epnp.get_next_month(test_date), date(2012, 3, 1))
        self.assertEquals(epnp.get_next_day(test_date), date(2012, 3, 15))

        test_date = datetime(2012, 3, 15)
        self.assertEquals(epnp.get_previous_month(test_date), date(2012, 1, 1))
        self.assertEquals(epnp.get_previous_day(test_date), date(2012, 1, 1))
        self.assertEquals(epnp.get_next_month(test_date), date(2012, 6, 1))
        self.assertEquals(epnp.get_next_day(test_date), date(2012, 6, 2))

        test_date = datetime(2012, 6, 2)
        self.assertEquals(epnp.get_previous_month(test_date), date(2012, 3, 1))
        self.assertEquals(epnp.get_previous_day(test_date), date(2012, 3, 15))
        self.assertEquals(epnp.get_next_month(test_date), None)
        self.assertEquals(epnp.get_next_day(test_date), None)

        test_date = datetime(2013, 5, 1)
        self.assertEquals(epnp.get_previous_month(test_date), date(2012, 6, 1))
        self.assertEquals(epnp.get_previous_day(test_date), date(2012, 6, 2))
        self.assertEquals(epnp.get_next_month(test_date), None)
        self.assertEquals(epnp.get_next_day(test_date), None)
示例#25
0
 def test_put_on_top(self):
     original_ping_directories = settings.PING_DIRECTORIES
     settings.PING_DIRECTORIES = []
     self.request._messages = TestMessageBackend()
     self.entry.creation_date = datetime(2011, 1, 1, 12, 0)
     self.admin.put_on_top(self.request, Entry.objects.all())
     self.assertEquals(Entry.objects.get(pk=self.entry.pk).creation_date.date(), timezone.now().date())
     self.assertEquals(len(self.request._messages.messages), 1)
     settings.PING_DIRECTORIES = original_ping_directories
示例#26
0
 def test_previous_next_entry_in_one_query(self):
     site = Site.objects.get_current()
     self.entry.status = PUBLISHED
     self.entry.save()
     self.entry.sites.add(site)
     if supports_savepoints:
         expected_query_count = 1
     else:
         expected_query_count = 1
     with self.assertNumQueries(expected_query_count):
         self.assertFalse(self.entry.next_entry)
         # Reload to check the cache
         self.assertFalse(self.entry.previous_entry)
         self.assertFalse(self.entry.next_entry)
     params = {
         "title": "My second entry",
         "content": "My second content",
         "slug": "my-second-entry",
         "creation_date": datetime(2001, 1, 1),
         "status": PUBLISHED,
     }
     self.second_entry = Entry.objects.create(**params)
     self.second_entry.sites.add(site)
     params = {
         "title": "My third entry",
         "content": "My third content",
         "slug": "my-third-entry",
         "creation_date": datetime(2050, 1, 1),
         "status": PUBLISHED,
     }
     self.third_entry = Entry.objects.create(**params)
     self.third_entry.sites.add(site)
     del self.entry.previous_next  # Invalidate the cached property
     if supports_savepoints:
         expected_query_count = 1
     else:
         expected_query_count = 1
     with self.assertNumQueries(expected_query_count):
         self.assertEqual(self.entry.previous_entry, self.second_entry)
         self.assertEqual(self.entry.next_entry, self.third_entry)
         # Reload to check the cache
         self.assertEqual(self.entry.previous_entry, self.second_entry)
         self.assertEqual(self.entry.next_entry, self.third_entry)
示例#27
0
 def setUp(self):
     disconnect_entry_signals()
     disconnect_discussion_signals()
     params = {'title': 'My entry',
               'content': 'My content',
               'tags': 'zinnia, test',
               'creation_date': datetime(2010, 1, 1, 12),
               'slug': 'my-entry'}
     self.entry = Entry.objects.create(**params)
     self.site = Site.objects.get_current()
示例#28
0
 def test_next_entry(self):
     site = Site.objects.get_current()
     self.assertFalse(self.entry.next_entry)
     params = {'title': 'My second entry',
               'content': 'My second content',
               'slug': 'my-second-entry',
               'creation_date': datetime(2100, 1, 1),
               'status': PUBLISHED}
     self.second_entry = Entry.objects.create(**params)
     self.second_entry.sites.add(site)
     self.assertEquals(self.entry.next_entry, self.second_entry)
     params = {'title': 'My third entry',
               'content': 'My third content',
               'slug': 'my-third-entry',
               'creation_date': datetime(2050, 1, 1),
               'status': PUBLISHED}
     self.third_entry = Entry.objects.create(**params)
     self.third_entry.sites.add(site)
     self.assertEquals(self.entry.next_entry, self.third_entry)
     self.assertEquals(self.third_entry.next_entry, self.second_entry)
示例#29
0
 def test_entries_published(self):
     self.assertEqual(entries_published(Entry.objects.all()).count(), 1)
     self.entry_2.status = PUBLISHED
     self.entry_2.save()
     self.assertEqual(entries_published(Entry.objects.all()).count(), 2)
     self.entry_1.sites.clear()
     self.assertEqual(entries_published(Entry.objects.all()).count(), 1)
     self.entry_1.sites.add(*self.sites)
     self.entry_1.start_publication = datetime(2020, 1, 1)
     self.entry_1.save()
     self.assertEqual(entries_published(Entry.objects.all()).count(), 1)
     self.entry_1.start_publication = datetime(2000, 1, 1)
     self.entry_1.save()
     self.assertEqual(entries_published(Entry.objects.all()).count(), 2)
     self.entry_1.end_publication = datetime(2000, 1, 1)
     self.entry_1.save()
     self.assertEqual(entries_published(Entry.objects.all()).count(), 1)
     self.entry_1.end_publication = datetime(2020, 1, 1)
     self.entry_1.save()
     self.assertEqual(entries_published(Entry.objects.all()).count(), 2)
示例#30
0
 def test_entry_published_manager_get_query_set(self):
     self.assertEqual(Entry.published.count(), 1)
     self.entry_2.status = PUBLISHED
     self.entry_2.save()
     self.assertEqual(Entry.published.count(), 2)
     self.entry_1.sites.clear()
     self.assertEqual(Entry.published.count(), 1)
     self.entry_1.sites.add(*self.sites)
     self.entry_1.start_publication = datetime(2020, 1, 1)
     self.entry_1.save()
     self.assertEqual(Entry.published.count(), 1)
     self.entry_1.start_publication = datetime(2000, 1, 1)
     self.entry_1.save()
     self.assertEqual(Entry.published.count(), 2)
     self.entry_1.end_publication = datetime(2000, 1, 1)
     self.entry_1.save()
     self.assertEqual(Entry.published.count(), 1)
     self.entry_1.end_publication = datetime(2020, 1, 1)
     self.entry_1.save()
     self.assertEqual(Entry.published.count(), 2)
示例#31
0
 def test_zinnia_category_detail_paginated(self):
     """Test case reproducing issue #42 on category
     detail view paginated"""
     self.inhibit_templates('zinnia/entry_list.html')
     for i in range(PAGINATION):
         params = {
             'title': 'My entry %i' % i,
             'content': 'My content %i' % i,
             'slug': 'my-entry-%i' % i,
             'creation_date': datetime(2010, 1, 1),
             'status': PUBLISHED
         }
         entry = Entry.objects.create(**params)
         entry.sites.add(self.site)
         entry.categories.add(self.category)
     response = self.client.get('/categories/tests/')
     self.assertEqual(len(response.context['object_list']), PAGINATION)
     response = self.client.get('/categories/tests/?page=2')
     self.assertEqual(len(response.context['object_list']), 2)
     response = self.client.get('/categories/tests/page/2/')
     self.assertEqual(len(response.context['object_list']), 2)
     self.assertEqual(response.context['category'].slug, 'tests')
示例#32
0
 def test_zinnia_entry_archive_week_with_timezone(self):
     self.inhibit_templates(
         'zinnia/archives/2010/week/00/entry_archive_week.html',
         'zinnia/entry_archive_week.html')
     response = self.check_publishing_context('/2010/week/00/', 1, 2,
                                              'entry_list', 3)
     self.assertTemplateUsed(
         response, 'zinnia/archives/2010/week/00/entry_archive_week.html')
     # All days in a new year preceding the first Monday
     # are considered to be in week 0.
     self.assertEqual(response.context['week'], date(2009, 12, 28))
     self.assertEqual(response.context['week_end_day'], date(2010, 1, 3))
     self.assertEqual(response.context['previous_week'], None)
     self.assertEqual(response.context['next_week'], date(2010, 5, 31))
     self.assertEqual(response.context['date_list'][0].date(),
                      datetime(2010, 1, 2).date())
     response = self.client.get('/2011/week/01/')
     self.assertEqual(response.context['week'], date(2011, 1, 3))
     self.assertEqual(response.context['week_end_day'], date(2011, 1, 9))
     self.assertEqual(response.context['previous_week'], date(2010, 5, 31))
     self.assertEqual(response.context['next_week'], None)
     self.assertEqual(list(response.context['date_list']), [])
示例#33
0
 def test_zinnia_author_detail_paginated(self):
     """Test case reproducing issue #207 on author
     detail view paginated"""
     setup_test_template_loader({'zinnia/entry_list.html': ''})
     for i in range(PAGINATION):
         params = {
             'title': 'My entry %i' % i,
             'content': 'My content %i' % i,
             'slug': 'my-entry-%i' % i,
             'creation_date': datetime(2010, 1, 1),
             'status': PUBLISHED
         }
         entry = Entry.objects.create(**params)
         entry.sites.add(self.site)
         entry.authors.add(self.author)
     response = self.client.get('/authors/admin/')
     self.assertEquals(len(response.context['object_list']), PAGINATION)
     response = self.client.get('/authors/admin/?page=2')
     self.assertEquals(len(response.context['object_list']), 2)
     response = self.client.get('/authors/admin/page/2/')
     self.assertEquals(len(response.context['object_list']), 2)
     self.assertEquals(response.context['author'].username, 'admin')
     restore_template_loaders()
    def test_get_calendar_entries_object_context(self):
        self.publish_entry()
        source_context = Context({'object': object()})
        with self.assertNumQueries(2):
            context = get_calendar_entries(source_context)
        self.assertEqual(
            context['previous_month'],
            self.make_local(self.entry.creation_date).date().replace(day=1))
        self.assertEqual(context['next_month'], None)

        params = {
            'title': 'My second entry',
            'content': 'My second content',
            'tags': 'zinnia, test',
            'status': PUBLISHED,
            'creation_date': datetime(2008, 1, 15),
            'slug': 'my-second-entry'
        }
        second_entry = Entry.objects.create(**params)
        second_entry.sites.add(self.site)

        source_context = Context({'object': self.entry})
        with self.assertNumQueries(2):
            context = get_calendar_entries(source_context)
        self.assertEqual(
            context['previous_month'],
            self.make_local(second_entry.creation_date).date().replace(day=1))
        self.assertEqual(context['next_month'], None)

        source_context = Context({'object': second_entry})
        with self.assertNumQueries(2):
            context = get_calendar_entries(source_context)
        self.assertEqual(context['previous_month'], None)
        self.assertEqual(
            context['next_month'],
            self.make_local(self.entry.creation_date).date().replace(day=1))
示例#35
0
    def setUp(self):
        disconnect_entry_signals()
        disconnect_discussion_signals()
        # Clear the cache of user flagger to avoid error on MySQL
        get_user_flagger.cache_clear()
        # Use default URL shortener backend, to avoid networks errors
        self.original_shortener = shortener_settings.URL_SHORTENER_BACKEND
        shortener_settings.URL_SHORTENER_BACKEND = 'zinnia.url_shortener.'\
                                                   'backends.default'
        # Set up a stub around urlopen
        import zinnia.xmlrpc.pingback
        self.original_urlopen = zinnia.xmlrpc.pingback.urlopen
        zinnia.xmlrpc.pingback.urlopen = self.fake_urlopen
        # Set a short template for entry_detail to avoid rendering errors
        setup_test_template_loader({
            'zinnia/entry_detail.html':
            '<html><head><title>{{ object.title }}</title></head>'
            '<body>{{ object.html_content|safe }}</body></html>',
            '404.html':
            '404'
        })
        # Preparing site
        self.site = Site.objects.get_current()
        # Creating tests entries
        self.author = Author.objects.create_user(username='******',
                                                 email='*****@*****.**')
        self.category = Category.objects.create(title='test', slug='test')
        params = {
            'title': 'My first entry',
            'content': 'My first content',
            'slug': 'my-first-entry',
            'creation_date': datetime(2010, 1, 1, 12),
            'status': PUBLISHED
        }
        self.first_entry = Entry.objects.create(**params)
        self.first_entry.sites.add(self.site)
        self.first_entry.categories.add(self.category)
        self.first_entry.authors.add(self.author)

        params = {
            'title':
            'My second entry',
            'content':
            'My second content with link '
            'to <a href="http://%s%s">first entry</a>'
            ' and other links : %s %s.' %
            (self.site.domain, self.first_entry.get_absolute_url(),
             'http://example.com/error-404/', 'http://external/'),
            'slug':
            'my-second-entry',
            'creation_date':
            datetime(2010, 1, 1, 12),
            'status':
            PUBLISHED
        }
        self.second_entry = Entry.objects.create(**params)
        self.second_entry.sites.add(self.site)
        self.second_entry.categories.add(self.category)
        self.second_entry.authors.add(self.author)
        # Instanciating the server proxy
        self.server = ServerProxy('http://example.com/xmlrpc/',
                                  transport=TestTransport())
示例#36
0
 def test_get_absolute_url_with_timezone(self):
     self.check_get_absolute_url(datetime(2013, 1, 1, 12, 0),
                                 '/2013/01/01/my-entry/')
     self.check_get_absolute_url(datetime(2013, 1, 1, 23, 0),
                                 '/2013/01/02/my-entry/')
示例#37
0
 def test_is_visible(self):
     self.assertFalse(self.entry.is_visible)
     self.entry.status = PUBLISHED
     self.assertTrue(self.entry.is_visible)
     self.entry.start_publication = datetime(2020, 3, 15)
     self.assertFalse(self.entry.is_visible)
示例#38
0
    def test_previous_next_published_mixin(self):
        site = Site.objects.get_current()

        params = {
            'title': 'Entry 1',
            'content': 'Entry 1',
            'slug': 'entry-1',
            'status': PUBLISHED,
            'creation_date': datetime(2012, 1, 1, 12)
        }
        entry_1 = Entry.objects.create(**params)
        entry_1.sites.add(site)

        params = {
            'title': 'Entry 2',
            'content': 'Entry 2',
            'slug': 'entry-2',
            'status': PUBLISHED,
            'creation_date': datetime(2012, 3, 15, 12)
        }
        entry_2 = Entry.objects.create(**params)
        entry_2.sites.add(site)

        params = {
            'title': 'Entry 3',
            'content': 'Entry 3',
            'slug': 'entry-3',
            'status': PUBLISHED,
            'creation_date': datetime(2013, 6, 2, 12)
        }
        entry_3 = Entry.objects.create(**params)
        entry_3.sites.add(site)

        class EntryPreviousNextPublished(PreviousNextPublishedMixin):
            def get_queryset(self):
                return Entry.published.all()

        test_date = datetime(2009, 12, 1)
        epnp = EntryPreviousNextPublished()
        self.assertEqual(epnp.get_previous_year(test_date), None)
        self.assertEqual(epnp.get_previous_week(test_date), None)
        self.assertEqual(epnp.get_previous_month(test_date), None)
        self.assertEqual(epnp.get_previous_day(test_date), None)
        self.assertEqual(epnp.get_next_year(test_date), date(2012, 1, 1))
        self.assertEqual(epnp.get_next_week(test_date), date(2011, 12, 26))
        self.assertEqual(epnp.get_next_month(test_date), date(2012, 1, 1))
        self.assertEqual(epnp.get_next_day(test_date), date(2012, 1, 1))

        test_date = datetime(2012, 1, 1)
        epnp = EntryPreviousNextPublished()
        self.assertEqual(epnp.get_previous_year(test_date), None)
        self.assertEqual(epnp.get_previous_week(test_date), None)
        self.assertEqual(epnp.get_previous_month(test_date), None)
        self.assertEqual(epnp.get_previous_day(test_date), None)
        self.assertEqual(epnp.get_next_year(test_date), date(2013, 1, 1))
        self.assertEqual(epnp.get_next_week(test_date), date(2012, 3, 12))
        self.assertEqual(epnp.get_next_month(test_date), date(2012, 3, 1))
        self.assertEqual(epnp.get_next_day(test_date), date(2012, 3, 15))

        test_date = datetime(2012, 3, 15)
        epnp = EntryPreviousNextPublished()
        self.assertEqual(epnp.get_previous_year(test_date), None)
        self.assertEqual(epnp.get_previous_week(test_date), date(2011, 12, 26))
        self.assertEqual(epnp.get_previous_month(test_date), date(2012, 1, 1))
        self.assertEqual(epnp.get_previous_day(test_date), date(2012, 1, 1))
        self.assertEqual(epnp.get_next_year(test_date), date(2013, 1, 1))
        self.assertEqual(epnp.get_next_week(test_date), date(2013, 5, 27))
        self.assertEqual(epnp.get_next_month(test_date), date(2013, 6, 1))
        self.assertEqual(epnp.get_next_day(test_date), date(2013, 6, 2))

        test_date = datetime(2013, 6, 2)
        epnp = EntryPreviousNextPublished()
        self.assertEqual(epnp.get_previous_year(test_date), date(2012, 1, 1))
        self.assertEqual(epnp.get_previous_week(test_date), date(2012, 3, 12))
        self.assertEqual(epnp.get_previous_month(test_date), date(2012, 3, 1))
        self.assertEqual(epnp.get_previous_day(test_date), date(2012, 3, 15))
        self.assertEqual(epnp.get_next_year(test_date), None)
        self.assertEqual(epnp.get_next_week(test_date), None)
        self.assertEqual(epnp.get_next_month(test_date), None)
        self.assertEqual(epnp.get_next_day(test_date), None)

        test_date = datetime(2014, 5, 1)
        epnp = EntryPreviousNextPublished()
        self.assertEqual(epnp.get_previous_year(test_date), date(2013, 1, 1))
        self.assertEqual(epnp.get_previous_week(test_date), date(2013, 5, 27))
        self.assertEqual(epnp.get_previous_month(test_date), date(2013, 6, 1))
        self.assertEqual(epnp.get_previous_day(test_date), date(2013, 6, 2))
        self.assertEqual(epnp.get_next_year(test_date), None)
        self.assertEqual(epnp.get_next_week(test_date), None)
        self.assertEqual(epnp.get_next_month(test_date), None)
        self.assertEqual(epnp.get_next_day(test_date), None)
示例#39
0
 def test_publication_date(self):
     self.assertEqual(self.entry.publication_date,
                      self.entry.creation_date)
     self.entry.start_publication = datetime(2020, 3, 15)
     self.assertEqual(self.entry.publication_date,
                      self.entry.start_publication)
 def test_week_number(self):
     self.assertEqual(week_number(datetime(2013, 1, 1)), '0')
     self.assertEqual(week_number(datetime(2013, 12, 21)), '50')