diff --git a/test/dsl/html_test.exs b/test/dsl/html_test.exs index e960f0b..423d9d2 100644 --- a/test/dsl/html_test.exs +++ b/test/dsl/html_test.exs @@ -166,6 +166,17 @@ defmodule Dsl.HtmlTest do assert result == ~s{} end + + test "can use string interpolation in an attribute" do + interop = "hi" + + {:safe, result} = + htm do + div class: "#{interop} world" + end + + assert result == ~s{
} + end end describe "escaping" do @@ -200,139 +211,6 @@ defmodule Dsl.HtmlTest do end end - describe "custom component" do - test "defines a basic component" do - import Component - - {:safe, result} = - htm do - flex() - end - - assert result == ~s{
} - end - - test "defines a component that takes 1 child" do - import Component - - {:safe, result} = - htm do - takes_children do - div id: "dynamic-child" - end - end - - assert result == - ~s{
} - end - - test "defines a component that takes multiple children" do - import Component - - {:safe, result} = - htm do - takes_children do - div id: "dynamic-child-1" - div id: "dynamic-child-2" - end - end - - assert result == - ~s{
} - end - - test "can access a prop" do - import Component - - {:safe, result} = - htm do - takes_children name: "mitch" do - text @name - end - end - - assert result == - ~s{
mitch
} - end - - test "can have arbitrary code inside the definition" do - import Component - - {:safe, result} = - htm do - arbitrary_code() - end - - assert result == ~s{
55
} - end - - test "can use conditionals to render different markup" do - import Component - - {:safe, result} = - htm do - uses_conditionals(condition: true) - uses_conditionals(condition: false) - end - - assert result == ~s{
} - end - - test "can pass arbitrary data as props" do - import Component - - {:safe, result} = - htm do - arbitrary_data( - lists: [:atom, %{key: "value"}, {:status, :tuple}, "string", 1, [1, 2, 3]] - ) - end - - assert result == - ~s|
:atom
%{key: "value"}
{:status, :tuple}
"string"
1
[1, 2, 3]
| - end - - test "can pass a variable as a prop" do - import Component - - bob = "hi" - - {:safe, result} = - htm do - variable_as_prop(bob: bob) - end - - assert result == - ~s|
| - end - - test "can pass a variable as a prop to a component with a block" do - import Component - - bob = "hi" - - {:safe, result} = - htm do - variable_as_prop_with_block bob: bob do - div() - end - end - - assert result == ~s|
| - end - - test "can use string interpolation in props" do - interop = "hi" - - {:safe, result} = - htm do - div class: "#{interop} world" - end - - assert result == ~s{
} - end - end - describe "form_for" do test "returns a form tag" do conn = %Plug.Conn{} diff --git a/test/dsl_test.exs b/test/dsl_test.exs index 8dd40cf..c36c4f3 100644 --- a/test/dsl_test.exs +++ b/test/dsl_test.exs @@ -1,3 +1,126 @@ defmodule DslTest do - use ExUnit.Case + use ExUnit.Case, async: true + use Dsl + + describe "custom component" do + test "defines a basic component" do + import Component + + {:safe, result} = + htm do + flex() + end + + assert result == ~s{
} + end + + test "defines a component that takes 1 child" do + import Component + + {:safe, result} = + htm do + takes_children do + div id: "dynamic-child" + end + end + + assert result == + ~s{
} + end + + test "defines a component that takes multiple children" do + import Component + + {:safe, result} = + htm do + takes_children do + div id: "dynamic-child-1" + div id: "dynamic-child-2" + end + end + + assert result == + ~s{
} + end + + test "can access a prop" do + import Component + + {:safe, result} = + htm do + takes_children name: "mitch" do + text @name + end + end + + assert result == + ~s{
mitch
} + end + + test "can have arbitrary code inside the definition" do + import Component + + {:safe, result} = + htm do + arbitrary_code() + end + + assert result == ~s{
55
} + end + + test "can use conditionals to render different markup" do + import Component + + {:safe, result} = + htm do + uses_conditionals(condition: true) + uses_conditionals(condition: false) + end + + assert result == ~s{
} + end + + test "can pass arbitrary data as props" do + import Component + + {:safe, result} = + htm do + arbitrary_data( + lists: [:atom, %{key: "value"}, {:status, :tuple}, "string", 1, [1, 2, 3]] + ) + end + + assert result == + ~s|
:atom
%{key: "value"}
{:status, :tuple}
"string"
1
[1, 2, 3]
| + end + + test "can pass a variable as a prop" do + import Component + + bob = "hi" + + {:safe, result} = + htm do + variable_as_prop(bob: bob) + end + + assert result == + ~s|
| + end + + test "can pass a variable as a prop to a component with a block" do + import Component + + bob = "hi" + + {:safe, result} = + htm do + variable_as_prop_with_block bob: bob do + div() + end + end + + assert result == ~s|
| + end + end end