towerops/test/towerops_web/live/org_live/new_test.exs
Graham McIntire c3d952148e
fix test warnings and failures
- Remove unused Ecto.Query import from device_poller_worker_test
- Update route paths from /orgs/:slug to /dashboard after navigation refactor
- Fix HostParser tests to match actual hostname resolution behavior
- Update UserAuth redirect assertions to expect /dashboard instead of /devices
- Fix DashboardLiveTest missing organization context
- Fix OrgLive.NewTest to verify organization creation correctly

All 4850 tests now passing with zero failures and zero warnings.
2026-02-05 15:24:41 -06:00

83 lines
2.4 KiB
Elixir

defmodule ToweropsWeb.OrgLive.NewTest do
use ToweropsWeb.ConnCase
import Phoenix.LiveViewTest
setup :register_and_log_in_user
describe "New" do
test "renders new organization form", %{conn: conn} do
{:ok, _view, html} = live(conn, ~p"/orgs/new")
assert html =~ "New Organization"
assert html =~ "name=\"organization[name]\""
end
test "validates organization name", %{conn: conn} do
{:ok, view, _html} = live(conn, ~p"/orgs/new")
html =
view
|> form("#organization-form", %{organization: %{name: ""}})
|> render_change()
assert html =~ "can't be blank"
end
test "creates new organization", %{conn: conn, user: user} do
{:ok, view, _html} = live(conn, ~p"/orgs/new")
assert view
|> form("#organization-form", %{organization: %{name: "Test Organization"}})
|> render_submit()
# Get the redirect path
{path, _flash} = assert_redirect(view)
# Verify redirected to dashboard after creating organization
assert path == ~p"/dashboard"
# Verify organization was created by looking up user's organizations
orgs = Towerops.Organizations.list_user_organizations(user.id)
org = Enum.find(orgs, fn o -> o.name == "Test Organization" end)
assert org
assert org.name == "Test Organization"
# Verify user is a member
membership = Towerops.Organizations.get_membership(org.id, user.id)
assert membership.role == :owner
end
test "shows error when organization name is invalid", %{conn: conn} do
{:ok, view, _html} = live(conn, ~p"/orgs/new")
html =
view
|> form("#organization-form", %{organization: %{name: ""}})
|> render_submit()
assert html =~ "can't be blank"
end
test "shows error when organization name is too long", %{conn: conn} do
{:ok, view, _html} = live(conn, ~p"/orgs/new")
long_name = String.duplicate("a", 256)
html =
view
|> form("#organization-form", %{organization: %{name: long_name}})
|> render_submit()
assert html =~ "should be at most"
end
test "requires authentication", %{} do
conn = build_conn()
{:error, redirect} = live(conn, ~p"/orgs/new")
assert {:redirect, %{to: path}} = redirect
assert path == ~p"/users/log-in"
end
end
end