diff --git a/test/doggo_test.exs b/test/doggo_test.exs index 2712b530..25e495bc 100644 --- a/test/doggo_test.exs +++ b/test/doggo_test.exs @@ -326,4 +326,274 @@ defmodule DoggoTest do assert text(time) == "2023-12-28 03:30:21+09:00 JST Asia/Tokyo" end end + + describe "time/1" do + test "with Time" do + assigns = %{} + + html = + parse_heex(~H""" + + """) + + time = Floki.find(html, "time") + + assert Floki.attribute(time, "datetime") == ["18:30:21"] + assert text(time) == "18:30:21" + end + + test "with DateTime" do + assigns = %{} + + html = + parse_heex(~H""" + + """) + + time = Floki.find(html, "time") + + assert Floki.attribute(time, "datetime") == ["18:30:21"] + assert text(time) == "18:30:21" + end + + test "with NaiveDateTime" do + assigns = %{} + + html = + parse_heex(~H""" + + """) + + time = Floki.find(html, "time") + + assert Floki.attribute(time, "datetime") == ["18:30:21"] + assert text(time) == "18:30:21" + end + + test "with nil" do + assigns = %{} + + html = + parse_heex(~H""" + + """) + + assert html == [] + end + + test "with formatter" do + assigns = %{} + + html = + parse_heex(~H""" + + """) + + time = Floki.find(html, "time") + + assert Floki.attribute(time, "datetime") == ["18:30:21"] + assert text(time) == "18h 30m" + end + + test "with title formatter" do + assigns = %{} + + html = + parse_heex(~H""" + + """) + + time = Floki.find(html, "time") + + assert Floki.attribute(time, "title") == ["18h 30m"] + end + + test "with Time and microsecond precision" do + assigns = %{} + + html = + parse_heex(~H""" + + """) + + time = Floki.find(html, "time") + + assert Floki.attribute(time, "datetime") == ["18:30:21.107074"] + assert text(time) == "18:30:21.107074" + end + + test "with Time and millisecond precision" do + assigns = %{} + + html = + parse_heex(~H""" + + """) + + time = Floki.find(html, "time") + + assert Floki.attribute(time, "datetime") == ["18:30:21.107"] + assert text(time) == "18:30:21.107" + end + + test "with Time and second precision" do + assigns = %{} + + html = + parse_heex(~H""" + + """) + + time = Floki.find(html, "time") + + assert Floki.attribute(time, "datetime") == ["18:30:21"] + assert text(time) == "18:30:21" + end + + test "with Time and minute precision" do + assigns = %{} + + html = + parse_heex(~H""" + + """) + + time = Floki.find(html, "time") + + assert Floki.attribute(time, "datetime") == ["18:30:00"] + assert text(time) == "18:30:00" + end + + test "with DateTime and microsecond precision" do + assigns = %{} + + html = + parse_heex(~H""" + + """) + + time = Floki.find(html, "time") + + assert Floki.attribute(time, "datetime") == ["18:30:21.107074"] + assert text(time) == "18:30:21.107074" + end + + test "with DateTime and millisecond precision" do + assigns = %{} + + html = + parse_heex(~H""" + + """) + + time = Floki.find(html, "time") + + assert Floki.attribute(time, "datetime") == ["18:30:21.107"] + assert text(time) == "18:30:21.107" + end + + test "with DateTime and second precision" do + assigns = %{} + + html = + parse_heex(~H""" + + """) + + time = Floki.find(html, "time") + + assert Floki.attribute(time, "datetime") == ["18:30:21"] + assert text(time) == "18:30:21" + end + + test "with DateTime and minute precision" do + assigns = %{} + + html = + parse_heex(~H""" + + """) + + time = Floki.find(html, "time") + + assert Floki.attribute(time, "datetime") == ["18:30:00"] + assert text(time) == "18:30:00" + end + + test "with NaiveDateTime and microsecond precision" do + assigns = %{} + + html = + parse_heex(~H""" + + """) + + time = Floki.find(html, "time") + + assert Floki.attribute(time, "datetime") == ["18:30:21.107074"] + assert text(time) == "18:30:21.107074" + end + + test "with NaiveDateTime and millisecond precision" do + assigns = %{} + + html = + parse_heex(~H""" + + """) + + time = Floki.find(html, "time") + + assert Floki.attribute(time, "datetime") == ["18:30:21.107"] + assert text(time) == "18:30:21.107" + end + + test "with NaiveDateTime and second precision" do + assigns = %{} + + html = + parse_heex(~H""" + + """) + + time = Floki.find(html, "time") + + assert Floki.attribute(time, "datetime") == ["18:30:21"] + assert text(time) == "18:30:21" + end + + test "with NaiveDateTime and minute precision" do + assigns = %{} + + html = + parse_heex(~H""" + + """) + + time = Floki.find(html, "time") + + assert Floki.attribute(time, "datetime") == ["18:30:00"] + assert text(time) == "18:30:00" + end + + test "with DateTime and time zone" do + assigns = %{} + + html = + parse_heex(~H""" + + """) + + time = Floki.find(html, "time") + + assert Floki.attribute(time, "datetime") == ["03:30:21"] + assert text(time) == "03:30:21" + end + end end