def test_new_non_published_post_does_not_purge_cached_pages(self):
        self._create_test_posts()

        Post.get_posts_by_page(2)

        self.assertIsNotNone(memcache.get(Post._page_memcached_key_prefix % (date.today(), 2)))

        Post(
            subject="another test post",
            mark_down="test mark down",
            html="test html",
            is_published=False,
            author=self.test_author,
        ).put()

        self.assertIsNotNone(memcache.get(Post._page_memcached_key_prefix % (date.today(), 2)))
    def _get_data_for_list(self):
        page_number = int(self.request.route_kwargs.get('page_number', 1))

        try:
            posts = Post.get_posts_by_page(page_number)
        except InvalidPageSelectedException:
            self.abort(404)

        return posts
    def test_getting_posts_by_page_does_not_include_future_posts(self):
        self._create_test_posts()

        # Create a post for the future.
        Post(
            subject="this post shouldn't show up.",
            mark_down="test mark down",
            html="test html",
            is_published=True,
            author=self.test_author,
            post_date=datetime.today() + timedelta(days=1),
        ).put()

        posts = Post.get_posts_by_page(1)

        self.assertFalse(posts[0].subject == "this post shouldn't show up.")
    def test_exception_if_invalid_page_number_is_requested(self):
        self._create_test_posts()

        with self.assertRaises(InvalidPageSelectedException):
            Post.get_posts_by_page(10)
    def test_getting_posts_by_page_caches_in_memcached(self):
        self._create_test_posts()

        Post.get_posts_by_page(2)

        self.assertIsNotNone(memcache.get(Post._page_memcached_key_prefix % (date.today(), 2)))
    def test_getting_posts_by_page_does_not_include_non_published_posts(self):
        self._create_test_posts()
        self._create_test_non_published_posts()

        self.assertEqual(len(Post.get_posts_by_page(2)), 4)
    def test_can_get_posts_by_page(self):
        self._create_test_posts()

        self.assertEqual(len(Post.get_posts_by_page(2)), 4)