def get_article(self, slug):
        article = api.get_article(slug, self.tag_ids, self.excluded_tags)

        if not article:
            return {}

        return get_article_context(article, self.tag_ids, self.excluded_tags)
    def test_including_article(self, get):

        get.return_value = MockResponse()

        article = api.get_article(slug="test", tags=[1234, 5678])
        get.assert_called_once_with(
            "https://admin.insights.ubuntu.com/" +
            "wp-json/wp/v2/posts?slug=test&tags=1234,5678" + "&tags_exclude=")
        self.assertEqual(article, "hello_test")
    def test_getting(self, get):

        get.return_value = MockResponse()

        article = api.get_article(slug="test")
        get.assert_called_once_with(
            "https://admin.insights.ubuntu.com/wp-json/wp/v2/" +
            "posts?slug=test&tags=&tags_exclude=")
        self.assertEqual(article, "hello_test")
Ejemplo n.º 4
0
def article(request, slug):
    try:
        article = api.get_article(slug, tag_ids)
    except Exception as e:
        return HttpResponse("Error: " + e, status=502)

    if not article:
        return HttpResponseNotFound("Article not found")
    context = get_article_context(article, tag_ids)

    return render(request, "blog/article.html", context)
Ejemplo n.º 5
0
def article(request, slug):
    try:
        articles = api.get_article(tags_id, slug)
    except Exception:
        return HttpResponse(status=502)

    if not articles:
        return HttpResponseNotFound("Article not found")
    context = get_article_context(articles)

    return render(request, "blog/article.html", context)
Ejemplo n.º 6
0
    def article(slug):
        try:
            articles = api.get_article(slug, tag_ids)
        except Exception:
            return flask.abort(502)

        if not articles:
            flask.abort(404, "Article not found")

        context = get_article_context(articles, tag_ids)

        return flask.render_template("blog/article.html", **context)
Ejemplo n.º 7
0
    def test_get_article_context(self):
        article = api.get_article("canonical-announces-support-for"
                                  "-ubuntu-on-windows-subsystem-for-linux-2")

        article_context = get_article_context(article)

        self.assertIsNotNone(article_context["article"]["author"]["name"])
        self.assertIsNotNone(article_context["article"]["image"])
        self.assertIsNotNone(article_context["article"]["topic"])

        self.assertEqual(len(article_context["related_articles"]), 3)

        for tag in article_context["tags"]:
            self.assertTrue(tag["id"] in article["tags"])

        self.assertFalse(article_context["is_in_series"])
Ejemplo n.º 8
0
    def test_get_complete_article(self):
        article = api.get_article("canonical-announces-support-for"
                                  "-ubuntu-on-windows-subsystem-for-linux-2")

        complete_article = get_complete_article(article)
        self.assertEqual(complete_article["author"]["name"], "Canonical")
        self.assertEqual(complete_article["image"]["id"],
                         article["featured_media"])
        self.assertEqual(complete_article["date"], "6 May 2019")

        # The maximum allowed character count for the excerpt is 339
        # characters. If this limit is reached [...] is added
        # which is why we test for a max length of 339 + 5 = 344 here
        self.assertLessEqual(len(complete_article["excerpt"]["raw"]), 344)

        self.assertEqual(complete_article["group"]["name"],
                         "Canonical announcements")
 def test_get_article(self, get):
     slug = "test"
     _ = api.get_article(slug=slug)
     get.assert_called_once_with(
         "https://admin.insights.ubuntu.com/wp-json/wp/v2/posts?"
         "slug=test&_embed=true")