From fe27d593370b58ff0c2d3ab641a0fcc6af74736e Mon Sep 17 00:00:00 2001 From: "codegen-sh[bot]" <131295404+codegen-sh[bot]@users.noreply.github.com> Date: Thu, 14 Aug 2025 15:31:45 +0000 Subject: [PATCH 1/2] Add expanded test coverage for Torch.Component and Torch.Config modules --- test/torch/component_test.exs | 139 ++++++++++++++++++++++++++++++++++ test/torch/config_test.exs | 69 +++++++++++++++++ 2 files changed, 208 insertions(+) create mode 100644 test/torch/config_test.exs diff --git a/test/torch/component_test.exs b/test/torch/component_test.exs index dab4d861..30af6627 100644 --- a/test/torch/component_test.exs +++ b/test/torch/component_test.exs @@ -77,6 +77,109 @@ defmodule Torch.ComponentTest do assert html =~ ~s(can't be blank) end + + test "renders a string input type" do + html = + render_component(fn assigns -> + ~H""" + <.torch_input type="string" name="username" value="test_user" label="Username" /> + """ + end) + + assert html =~ ~s(\n Username\n) + end + + test "renders a number input type" do + html = + render_component(fn assigns -> + ~H""" + <.torch_input type="number" name="age" value="25" label="Age" /> + """ + end) + + assert html =~ ~s(\n Age\n) + end + + test "renders a date input type" do + html = + render_component(fn assigns -> + ~H""" + <.torch_input type="date" name="birthday" value="2023-01-01" label="Birthday" /> + """ + end) + + assert html =~ ~s(\n Birthday\n) + end + + test "renders with custom id" do + html = + render_component(fn assigns -> + ~H""" + <.torch_input type="text" name="username" id="custom-id" value="test_user" /> + """ + end) + + assert html =~ ~s( %{ + "name" => "John Doe", + "email" => "john@example.com" + } + } + + form = Phoenix.Component.to_form(form_data, as: :user) + field = Phoenix.HTML.FormField.to_form_field(form, :name) + + html = + render_component( + fn assigns -> + ~H""" + <.torch_input field={@field} type="text" label="Name" /> + """ + end, + %{ + field: field + } + ) + + assert html =~ ~s(\n Name\n) + end + + test "renders with form field and multiple flag" do + form_data = %{ + "user" => %{ + "roles" => ["admin", "editor"] + } + } + + form = Phoenix.Component.to_form(form_data, as: :user) + field = Phoenix.HTML.FormField.to_form_field(form, :roles) + + html = + render_component( + fn assigns -> + ~H""" + <.torch_input field={@field} type="select" multiple={true} options={@options} label="Roles" /> + """ + end, + %{ + field: field, + options: [{"Admin", "admin"}, {"Editor", "editor"}, {"Viewer", "viewer"}] + } + ) + + assert html =~ ~s(\n Username\n) end - + test "renders a number input type" do html = render_component(fn assigns -> @@ -101,7 +101,7 @@ defmodule Torch.ComponentTest do assert html =~ ~s(\n Age\n) end - + test "renders a date input type" do html = render_component(fn assigns -> @@ -113,7 +113,7 @@ defmodule Torch.ComponentTest do assert html =~ ~s(\n Birthday\n) end - + test "renders with custom id" do html = render_component(fn assigns -> @@ -124,7 +124,7 @@ defmodule Torch.ComponentTest do assert html =~ ~s( %{ @@ -132,10 +132,10 @@ defmodule Torch.ComponentTest do "email" => "john@example.com" } } - + form = Phoenix.Component.to_form(form_data, as: :user) field = Phoenix.HTML.FormField.to_form_field(form, :name) - + html = render_component( fn assigns -> @@ -151,17 +151,17 @@ defmodule Torch.ComponentTest do assert html =~ ~s(\n Name\n) end - + test "renders with form field and multiple flag" do form_data = %{ "user" => %{ "roles" => ["admin", "editor"] } } - + form = Phoenix.Component.to_form(form_data, as: :user) field = Phoenix.HTML.FormField.to_form_field(form, :roles) - + html = render_component( fn assigns -> @@ -225,7 +225,7 @@ defmodule Torch.ComponentTest do assert html =~ ~s(

Information message) assert html =~ ~s(

Error message) end - + test "renders empty flash messages" do html = render_component( @@ -256,7 +256,7 @@ defmodule Torch.ComponentTest do assert html =~ ~s(

This is a flash message.) end - + test "renders a flash message with close button" do html = render_component(fn assigns -> @@ -288,7 +288,7 @@ defmodule Torch.ComponentTest do translated = Component.translate_errors(errors, :username) assert translated == ["can't be blank"] end - + test "returns empty list when field has no errors" do errors = [username: {"can't be blank", []}, email: {"is invalid", []}] translated = Component.translate_errors(errors, :password) diff --git a/test/torch/config_test.exs b/test/torch/config_test.exs index 872c3db9..c218cf2e 100644 --- a/test/torch/config_test.exs +++ b/test/torch/config_test.exs @@ -66,4 +66,3 @@ defmodule Torch.ConfigTest do end end end -