This repository has been archived on 2023-08-07. You can view files and clone it, but cannot push or open issues or pull requests.
temple/test/parser/temple_namespace_nonvoid_test.exs
Mitchell Hanberg 07a1d5d451 Rename ast properties to align with given ast
The properties were either not needed at all, or were named back when
there was only one node type. now that each node is it's own struct,
they really don't need to share any common properties.
2021-04-10 11:08:06 -04:00

73 lines
1.7 KiB
Elixir

defmodule Temple.Parser.TempleNamespaceNonvoidTest do
use ExUnit.Case, async: true
alias Temple.Parser.NonvoidElementsAliases
alias Temple.Parser.TempleNamespaceNonvoid
describe "applicable?/1" do
test "returns true when the node is a Temple aliased nonvoid element" do
raw_ast =
quote do
Temple.div do
"foo"
end
end
assert TempleNamespaceNonvoid.applicable?(raw_ast)
end
test "returns false when the node is anything other than a Temple aliased nonvoid element" do
raw_asts = [
quote do
div do
"foo"
end
end,
quote do
link to: "/the/route" do
"Label"
end
end
]
for raw_ast <- raw_asts do
refute TempleNamespaceNonvoid.applicable?(raw_ast)
end
end
end
describe "run/2" do
test "adds a node to the buffer" do
raw_ast =
quote do
Temple.div class: "foo", id: var do
"foo"
end
end
ast = TempleNamespaceNonvoid.run(raw_ast)
assert %NonvoidElementsAliases{
name: "div",
attrs: [class: "foo", id: {:var, [], _}],
children: [%Temple.Parser.Text{text: "foo"}]
} = ast
end
end
describe "to_eex/1" do
test "emits eex" do
result =
quote do
Temple.div class: "foo", id: var do
"foo"
end
end
|> TempleNamespaceNonvoid.run()
|> Temple.EEx.to_eex()
assert result |> :erlang.iolist_to_binary() ==
~s|<div class="foo" id="<%= var %>">\nfoo\n\n</div>|
end
end
end