summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Gleason <alex@alexgleason.me>2021-05-04 16:16:42 -0500
committerAlex Gleason <alex@alexgleason.me>2021-05-04 16:16:42 -0500
commit8e2ff7669adf63485c5579c35137c6b80e329247 (patch)
tree892f0ccb06a362375f1a8d3dba717903fe8ea69e
parent95196fb5acf99f73f37ed8358449e35560b03468 (diff)
Add Parser.CardTest
-rw-r--r--lib/pleroma/web/rich_media/parser/embed.ex2
-rw-r--r--lib/pleroma/web/rich_media/parsers/ogp.ex4
-rw-r--r--test/pleroma/web/rich_media/parser/card_test.exs42
3 files changed, 44 insertions, 4 deletions
diff --git a/lib/pleroma/web/rich_media/parser/embed.ex b/lib/pleroma/web/rich_media/parser/embed.ex
index 509e557e6..f06756b1e 100644
--- a/lib/pleroma/web/rich_media/parser/embed.ex
+++ b/lib/pleroma/web/rich_media/parser/embed.ex
@@ -6,5 +6,5 @@ defmodule Pleroma.Web.RichMedia.Parser.Embed do
@moduledoc """
Represents embedded content, including scraped markup and OEmbed.
"""
- defstruct url: nil, meta: nil, oembed: nil
+ defstruct url: nil, title: nil, meta: nil, oembed: nil
end
diff --git a/lib/pleroma/web/rich_media/parsers/ogp.ex b/lib/pleroma/web/rich_media/parsers/ogp.ex
index d0edf1c88..b33a48fb5 100644
--- a/lib/pleroma/web/rich_media/parsers/ogp.ex
+++ b/lib/pleroma/web/rich_media/parsers/ogp.ex
@@ -4,7 +4,5 @@
defmodule Pleroma.Web.RichMedia.Parsers.OGP do
@deprecated "OGP parser is deprecated. Use TwitterCard instead."
- def parse(_html, _data) do
- %{}
- end
+ def parse(_html, data), do: data
end
diff --git a/test/pleroma/web/rich_media/parser/card_test.exs b/test/pleroma/web/rich_media/parser/card_test.exs
new file mode 100644
index 000000000..489d2d848
--- /dev/null
+++ b/test/pleroma/web/rich_media/parser/card_test.exs
@@ -0,0 +1,42 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Web.RichMedia.Parser.CardTest do
+ use ExUnit.Case, async: true
+ alias Pleroma.Web.RichMedia.Parser.Card
+ alias Pleroma.Web.RichMedia.Parser.Embed
+ alias Pleroma.Web.RichMedia.Parsers.TwitterCard
+
+ describe "parse/1" do
+ test "converts an %Embed{} into a %Card{}" do
+ embed =
+ File.read!("test/fixtures/nypd-facial-recognition-children-teenagers.html")
+ |> Floki.parse_document!()
+ |> TwitterCard.parse(%Embed{})
+
+ expected = %Card{
+ description:
+ "With little oversight, the N.Y.P.D. has been using powerful surveillance technology on photos of children and teenagers.",
+ image:
+ "https://static01.nyt.com/images/2019/08/01/nyregion/01nypd-juveniles-promo/01nypd-juveniles-promo-videoSixteenByNineJumbo1600.jpg",
+ title: "She Was Arrested at 14. Then Her Photo Went to a Facial Recognition Database.",
+ type: "link"
+ }
+
+ assert Card.parse(embed) == {:ok, expected}
+ end
+ end
+
+ describe "validate/1" do
+ test "returns {:ok, card} with a valid %Card{}" do
+ card = %Card{
+ title: "Moms can't believe this one trick",
+ url: "http://spam.com",
+ type: "link"
+ }
+
+ assert {:ok, ^card} = Card.validate(card)
+ end
+ end
+end