コード例 #1
0
def test_tag_filtered_article_list_view(admin_client):
    """
    Test tag filtered article view accepts tags and filter mode
    as URL parameters and filters the list of articles accordingly.
    """
    news = TagFactory(name="news")
    office = TagFactory(name="office")
    tech = TagFactory(name="tech")
    feedback = TagFactory(name="feedback")
    PublicArticleFactory(title="article1", tags=[news, office])
    PublicArticleFactory(title="article2", tags=[tech])

    publish_articles_with_publisher(Article.objects.all())
    published_article1 = Article.publisher_manager.published().get(
        title="article1")
    published_article2 = Article.publisher_manager.published().get(
        title="article2")

    # Test ANY filter mode with news and feedback tags
    url = "%s?%s&%s" % (
        reverse("tag_filtered_articles"), TagFilterMode.ANY.as_url_encoded,
        Tag.objects.filter(pk__in=[news.pk, feedback.pk]).as_url_encoded)
    response = admin_client.get(url)
    articles = response.context["articles"]
    assert published_article1 in articles
    assert published_article2 not in articles

    # Test ALL filter mode with news and office tags
    url = "%s?%s&%s" % (
        reverse("tag_filtered_articles"), TagFilterMode.ALL.as_url_encoded,
        Tag.objects.filter(pk__in=[news.pk, office.pk]).as_url_encoded)
    response = admin_client.get(url)
    articles = response.context["articles"]
    assert published_article1 in articles
    assert published_article2 not in articles
コード例 #2
0
def test_article_list_view_lang_filtering(settings, client):
    """
    Test article list view can be filtered by passing lang as url parameter.
    """
    PublicArticleFactory(language="en")
    PublicArticleFactory(language="fi")

    publish_articles_with_publisher(Article.objects.all())

    url = "%s?lang=en" % reverse("articles")
    response = client.get(url)
    published_article_en = Article.publisher_manager.published().get(
        language="en")
    published_article_fi = Article.publisher_manager.published().get(
        language="fi")
    assert published_article_en in response.context["articles"]
    assert published_article_fi not in response.context["articles"]
コード例 #3
0
def test_article_list_view_tag_filtering(settings, client):
    """
    Test article list view can be filtered by passing tag as url parameter.
    """
    news = TagFactory(name="news")
    home_office = TagFactory(name="home office")
    PublicArticleFactory(tags=[news])
    PublicArticleFactory(title="office_article", tags=[home_office])

    publish_articles_with_publisher(Article.objects.all())

    url = reverse("tagged_articles", kwargs={"tag": home_office.slug})
    response = client.get(url)
    published_office_article = Article.publisher_manager.published().get(
        title="office_article")
    assert len(response.context["articles"]) == 1
    assert response.context["articles"][0].pk == published_office_article.pk
コード例 #4
0
def test_category_detail_view(client):
    """
    Test category detail view article list.
    """
    category = CategoryFactory()
    article1 = PublicArticleFactory(category=category)
    article2 = PublicArticleFactory(category=None)
    publish_articles_with_publisher(Article.objects.all())

    # Double check that article categories are set up correctly.
    assert category == article1.category
    assert not article2.category

    published_article1 = Article.publisher_manager.published().get(
        title=article1.title)
    published_article2 = Article.publisher_manager.published().get(
        title=article2.title)

    response = client.get(category.get_absolute_url())
    articles = response.context["articles"]
    assert len(articles) == 1
    assert published_article1 in articles
    assert published_article2 not in articles
コード例 #5
0
def test_article_list_plugin_html():
    """
    Test article list plugin rendering works and html has
    relevant content.
    """
    plugin = init_plugin(ArticleList)
    article = PublicArticleFactory()
    publish_articles_with_publisher([article])
    published_article = Article.publisher_manager.published().first()
    renderer = init_content_renderer()
    html = renderer.render_plugin(instance=plugin,
                                  context={},
                                  placeholder=plugin.placeholder)
    assert published_article.title in html
コード例 #6
0
def test_article_list_plugin_language_filter(language_filter):
    """
    Test article list plugin filters articles according to language filter
    """
    article_fi = PublicArticleFactory(language="fi")
    article_en = PublicArticleFactory(language="en")
    publish_articles_with_publisher(Article.objects.all())
    published_article_fi = Article.publisher_manager.published().get(
        language="fi")
    published_article_en = Article.publisher_manager.published().get(
        language="en")

    plugin = init_plugin(ArticleList, language_filter=language_filter)
    plugin_instance = plugin.get_plugin_class_instance()
    context = plugin_instance.render({}, plugin, None)
    if language_filter == "en":
        assert published_article_fi not in context["articles"]
        assert published_article_en in context["articles"]
    elif language_filter == "fi":
        assert published_article_fi in context["articles"]
        assert published_article_en not in context["articles"]
    else:
        assert published_article_fi in context["articles"]
        assert published_article_en in context["articles"]
コード例 #7
0
def test_tag_article_list_plugin_html():
    """
    Test article list plugin rendering works and html has
    relevant content.
    """
    tag = TagFactory()
    article = PublicArticleFactory(title="article1", tags=[tag])
    publish_articles_with_publisher([article])
    published_article = Article.publisher_manager.published().first()
    plugin = init_plugin(TagFilterArticleList)
    plugin.tags.add(tag)
    renderer = init_content_renderer()
    html = renderer.render_plugin(instance=plugin,
                                  context={},
                                  placeholder=plugin.placeholder)
    assert published_article.title in html
コード例 #8
0
def create_articles(amount):
    for _ in range(amount):
        PublicArticleFactory()