defmodule HeroiconsTest do
use ExUnit.Case, async: true
import Phoenix.LiveViewTest
setup do
Mix.Task.run("heroicons.build")
{:ok, assigns: %{__changed__: nil}}
end
test "outline default" do
assert render_component(&Heroicons.cake/1, %{}) ==
~s||
class = "w-2"
assert render_component(&Heroicons.cake/1, %{class: class}) ==
~s||
assert render_component(&Heroicons.cake/1, %{"stroke-width": "2"}) ==
~s||
end
test "solid" do
assert render_component(&Heroicons.cake/1, %{solid: true}) ==
~s||
class = "w-2"
assert render_component(&Heroicons.cake/1, %{solid: true, class: class}) ==
~s||
assert render_component(&Heroicons.cake/1, %{solid: true, "stroke-width": "2"}) ==
~s||
end
test "mini" do
assert render_component(&Heroicons.cake/1, %{mini: true}) ==
~s||
class = "w-2"
assert render_component(&Heroicons.cake/1, %{mini: true, class: class}) ==
~s||
assert render_component(&Heroicons.cake/1, %{mini: true, "stroke-width": "2"}) ==
~s||
end
test "outline" do
assert render_component(&Heroicons.cake/1, %{outline: true}) ==
~s||
class = "w-2"
assert render_component(&Heroicons.cake/1, %{outline: true, class: class}) ==
~s||
end
test "raises on mix styles" do
assert_raise ArgumentError, "expected either mini or solid, but got both.", fn ->
render_component(&Heroicons.cake/1, %{mini: true, solid: true})
end
end
test "generated docs" do
{:docs_v1, _annotation, _beam_language, _format, _module_doc, _metadata, docs} =
Code.fetch_docs(Heroicons)
doc =
Enum.find_value(docs, fn
{{:function, :academic_cap, 1}, _annotation, _signature, doc, _metadata} -> doc
_ -> nil
end)
assert doc["en"] == """
Renders the `academic_cap` icon.
By default, the outlined (24x24) component is used, but the `solid` or `mini`
attributes can be provided for alternative styles.
You may also pass arbitrary HTML attributes to be applied to the svg tag.
## Examples
```heex
```
## Attributes
* `rest` (`:global`) - the arbitrary HTML attributes for the svg container. Supports all globals plus: `["fill", "stroke", "stroke-width"]`.
* `outline` (`:boolean`) - Defaults to `true`.
* `solid` (`:boolean`) - Defaults to `false`.
* `mini` (`:boolean`) - Defaults to `false`.
"""
end
end