- 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.
83 lines
2.4 KiB
Elixir
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
|