defmodule AutoLinker.BuilderTest do use ExUnit.Case, async: true doctest AutoLinker.Builder import AutoLinker.Builder test "create_link/2" do expected = "text" assert create_link("text", %{href: "url"}) == expected expected = "text" assert create_link("text", %{href: "url", rel: nil}) == expected expected = "text" assert create_link("text", %{href: "url", rel: "me"}) == expected end test "create_markdown_links/2" do expected = "text" assert create_markdown_links("[text](url)", %{}) == expected end test "format_hashtag/3" do expected = "#girls" assert format_hashtag(%{href: "/t/girls"}, "girls", nil) == expected end test "format_email/3" do expected = "mailto:user@example.org" assert format_email(%{href: "mailto:user@example.org"}, "mailto:user@example.org", nil) == expected end test "format_mention/3" do expected = "@user@host" format_mention(%{href: "url"}, "user@host", nil) == expected end describe "create_phone_link" do test "finishes" do assert create_phone_link([], "", []) == "" end test "handles one link" do phrase = "my exten is x888. Call me." expected = ~s'my exten is x888. Call me.' assert create_phone_link([["x888", ""]], phrase, []) == expected end test "handles multiple links" do phrase = "555.555.5555 or (555) 888-8888" expected = ~s'555.555.5555 or ' <> ~s'(555) 888-8888' assert create_phone_link([["555.555.5555", ""], ["(555) 888-8888"]], phrase, []) == expected end end test "create_mention_link/3" do expected = "@navi" assert create_mention_link("@navi", "hello @navi", %{mention_prefix: "/u/"}) == expected end test "create_email_link/3" do expected = "user@example.org" assert create_email_link("user@example.org", %{}) == expected assert create_email_link("user@example.org", %{href: "mailto:user@example.org"}) == expected end end