From 8e2ff7669adf63485c5579c35137c6b80e329247 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 4 May 2021 16:16:42 -0500 Subject: Add Parser.CardTest --- lib/pleroma/web/rich_media/parser/embed.ex | 2 +- lib/pleroma/web/rich_media/parsers/ogp.ex | 4 +-- test/pleroma/web/rich_media/parser/card_test.exs | 42 ++++++++++++++++++++++++ 3 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 test/pleroma/web/rich_media/parser/card_test.exs 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 +# 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 -- cgit v1.2.3