defmodule HeroiconsTest do use ExUnit.Case, async: true import Phoenix.LiveViewTest test "generated function" do result = Phoenix.HTML.safe_to_string(Heroicons.Outline.academic_cap()) assert result =~ ~s( Phoenix.HTML.safe_to_string() =~ ~s(class="w-6 h-6 text-gray-500") assert Heroicons.Outline.academic_cap(class: "<> \" ") |> Phoenix.HTML.safe_to_string() =~ ~s(class="<> " ") assert Heroicons.Outline.academic_cap(foo: "bar") |> Phoenix.HTML.safe_to_string() =~ ~s(foo="bar") assert Heroicons.Outline.academic_cap(multiword_key: "foo") |> Phoenix.HTML.safe_to_string() =~ ~s(multiword-key="foo") assert Heroicons.Outline.academic_cap(viewBox: "0 0 12 12") |> Phoenix.HTML.safe_to_string() =~ ~s(viewBox="0 0 12 12") end test "generated components" do outline = render_component(&Heroicons.Outline.academic_cap/1, assigns()) assert outline =~ ~s( doc _ -> nil end) assert doc["en"] == """ ![](assets/icons/outline/academic-cap.svg) {: width=24px} ## Examples Use as a `Phoenix.Component` <.academic_cap /> <.academic_cap class="w-6 h-6 text-gray-500" /> or as a function <%= academic_cap() %> <%= academic_cap(class: "w-6 h-6 text-gray-500") %> """ end defp assigns(assgns \\ []) do Map.new(assgns) |> Map.put_new(:__changed__, %{}) end end