-defmodule MyApp do
+defmodule MyApp do
def foo, do: :bar
diff --git a/test/beacon/template/tokenizer_test.exs b/test/beacon/template/tokenizer_test.exs
deleted file mode 100644
index b45593324..000000000
--- a/test/beacon/template/tokenizer_test.exs
+++ /dev/null
@@ -1,55 +0,0 @@
-defmodule Beacon.Template.HEEx.TokenizerTest do
- use ExUnit.Case, async: true
-
- alias Beacon.Template.HEEx.Tokenizer
-
- test "tokenizes a complex template" do
- {:ok, result} =
- Tokenizer.tokenize(
- ~s(\n <%= user.name %>
\n <%= if true do %> this
<% else %>that
<% end %>\n\n)
- )
-
- assert result ==
- [
- {
- :tag_block,
- "section",
- [],
- [
- {:text, "\n ", %{newlines: 1}},
- {
- :tag_block,
- "p",
- [],
- [{:eex, "user.name", %{column: 6, line: 2, opt: ~c"="}}],
- %{mode: :block}
- },
- {:text, "\n ", %{newlines: 1}},
- {
- :eex_block,
- "if true do",
- [
- {
- [
- {:text, " ", %{newlines: 0}},
- {:tag_block, "p", [], [{:text, "this", %{newlines: 0}}], %{mode: :block}}
- ],
- "else"
- },
- {[{:tag_block, "p", [], [{:text, "that", %{newlines: 0}}], %{mode: :block}}], "end"}
- ]
- },
- {:text, "\n", %{newlines: 1}}
- ],
- %{mode: :block}
- },
- {:text, "\n", %{newlines: 1}},
- {:tag_self_close, "BeaconWeb.Components.image_set",
- [
- {"asset", {:expr, "@beacon_live_data[:img1]", %{column: 40, line: 5}}, %{column: 33, line: 5}},
- {"sources", {:expr, "[\"480w\"]", %{column: 75, line: 5}}, %{column: 66, line: 5}},
- {"width", {:string, "200px", %{delimiter: 34}}, %{column: 85, line: 5}}
- ]}
- ]
- end
-end
diff --git a/test/beacon/types/atom_test.exs b/test/beacon/types/atom_test.exs
new file mode 100644
index 000000000..c05bb2601
--- /dev/null
+++ b/test/beacon/types/atom_test.exs
@@ -0,0 +1,24 @@
+defmodule Beacon.Types.AtomTest do
+ use ExUnit.Case, async: true
+
+ alias Beacon.Types.Atom
+
+ _ = :site
+
+ test "cast" do
+ assert Atom.cast("site") == {:ok, :site}
+ assert Atom.cast(:site) == {:ok, :site}
+ assert Atom.cast(0) == {:error, [message: "invalid site 0"]}
+ end
+
+ test "dump" do
+ assert Atom.dump("site") == {:ok, "site"}
+ assert Atom.dump(:site) == {:ok, "site"}
+ assert Atom.dump(0) == :error
+ end
+
+ test "load" do
+ assert Atom.load("site") == {:ok, :site}
+ assert Atom.load(0) == :error
+ end
+end
diff --git a/test/beacon/types/binary_test.exs b/test/beacon/types/binary_test.exs
new file mode 100644
index 000000000..2fe8f7596
--- /dev/null
+++ b/test/beacon/types/binary_test.exs
@@ -0,0 +1,23 @@
+defmodule Beacon.Types.BinaryTest do
+ use ExUnit.Case, async: true
+
+ alias Beacon.Types.Binary
+
+ @term %{"foo" => :bar}
+ @binary :erlang.term_to_binary(@term)
+
+ test "cast" do
+ assert Binary.cast(@binary) == {:ok, @binary}
+ assert Binary.cast(@term) == {:ok, @binary}
+ end
+
+ test "dump" do
+ assert Binary.dump(@binary) == {:ok, @binary}
+ assert Binary.dump(@term) == {:ok, @binary}
+ end
+
+ test "load" do
+ assert Binary.load(@binary) == {:ok, @term}
+ assert Binary.load(@term) == :error
+ end
+end
diff --git a/test/beacon/types/json_array_map_test.exs b/test/beacon/types/json_array_map_test.exs
new file mode 100644
index 000000000..34ecb3271
--- /dev/null
+++ b/test/beacon/types/json_array_map_test.exs
@@ -0,0 +1,35 @@
+defmodule Beacon.Types.JsonArrayMapTest do
+ use ExUnit.Case, async: true
+
+ alias Beacon.Types.JsonArrayMap
+
+ @map %{"foo" => "bar"}
+
+ test "cast" do
+ assert JsonArrayMap.cast([]) == {:ok, []}
+ assert JsonArrayMap.cast(@map) == {:ok, [@map]}
+ assert JsonArrayMap.cast([@map]) == {:ok, [@map]}
+ assert JsonArrayMap.cast(~s|[{"foo": "bar"}]|) == {:ok, [@map]}
+ assert JsonArrayMap.cast(nil) == {:error, [{:message, "expected a list of map or a map, got: nil"}]}
+ assert JsonArrayMap.cast([1]) == {:error, [{:message, "expected a list of map or a map, got: [1]"}]}
+ assert JsonArrayMap.cast("") == {:error, [message: "expected a list of map or a map, got error: unexpected end of input at position 0"]}
+ end
+
+ test "dump" do
+ assert JsonArrayMap.dump([]) == {:ok, []}
+ assert JsonArrayMap.dump(@map) == {:ok, [@map]}
+ assert JsonArrayMap.dump([@map]) == {:ok, [@map]}
+ assert JsonArrayMap.dump(~s|[{"foo": "bar"}]|) == {:ok, [@map]}
+ assert JsonArrayMap.dump(nil) == :error
+ assert JsonArrayMap.dump([1]) == :error
+ assert JsonArrayMap.dump("") == :error
+ end
+
+ test "load" do
+ assert JsonArrayMap.load(@map) == {:ok, [@map]}
+ assert JsonArrayMap.load([@map]) == {:ok, [@map]}
+ assert JsonArrayMap.load(~s|[{"foo": "bar"}]|) == {:ok, [@map]}
+ assert JsonArrayMap.load(nil) == :error
+ assert JsonArrayMap.load("") == :error
+ end
+end
diff --git a/test/beacon/types/site_test.exs b/test/beacon/types/site_test.exs
new file mode 100644
index 000000000..924e4fb0f
--- /dev/null
+++ b/test/beacon/types/site_test.exs
@@ -0,0 +1,27 @@
+defmodule Beacon.Types.SiteTest do
+ use ExUnit.Case, async: true
+
+ alias Beacon.Types.Site
+ import Beacon.Types.Site, only: [valid?: 1]
+
+ doctest Site, only: [valid?: 1]
+
+ _ = :site
+
+ test "cast" do
+ assert Site.cast("site") == {:ok, :site}
+ assert Site.cast(:site) == {:ok, :site}
+ assert Site.cast(0) == {:error, [message: "invalid site 0"]}
+ end
+
+ test "dump" do
+ assert Site.dump("site") == {:ok, "site"}
+ assert Site.dump(:site) == {:ok, "site"}
+ assert Site.dump(0) == :error
+ end
+
+ test "load" do
+ assert Site.load("site") == {:ok, :site}
+ assert Site.load(0) == :error
+ end
+end