test: alert severity badges, maintenance form save success paths
This commit is contained in:
parent
16bbf07dd5
commit
e39d1fb9e1
2 changed files with 92 additions and 0 deletions
|
|
@ -56,6 +56,44 @@ defmodule ToweropsWeb.AlertLive.IndexTest do
|
|||
assert html =~ "DOWN"
|
||||
end
|
||||
|
||||
test "renders alerts with different severity ages (drives severity_badge_class branches)",
|
||||
%{conn: conn, device: device} do
|
||||
now = DateTime.utc_now()
|
||||
|
||||
# Yellow: <= 15 min old
|
||||
{:ok, _yellow} =
|
||||
Towerops.Alerts.create_alert(%{
|
||||
device_id: device.id,
|
||||
alert_type: "device_down",
|
||||
triggered_at: DateTime.add(now, -5, :minute),
|
||||
message: "Recent"
|
||||
})
|
||||
|
||||
# Orange: 15–60 min old
|
||||
{:ok, _orange} =
|
||||
Towerops.Alerts.create_alert(%{
|
||||
device_id: device.id,
|
||||
alert_type: "device_down",
|
||||
triggered_at: DateTime.add(now, -30, :minute),
|
||||
message: "Half hour"
|
||||
})
|
||||
|
||||
# Red: > 60 min old
|
||||
{:ok, _red} =
|
||||
Towerops.Alerts.create_alert(%{
|
||||
device_id: device.id,
|
||||
alert_type: "device_down",
|
||||
triggered_at: DateTime.add(now, -2, :hour),
|
||||
message: "Two hours"
|
||||
})
|
||||
|
||||
{:ok, _view, html} = live(conn, ~p"/alerts")
|
||||
|
||||
assert html =~ "bg-yellow-500"
|
||||
assert html =~ "bg-orange-500"
|
||||
assert html =~ "bg-red-500"
|
||||
end
|
||||
|
||||
test "filters critical alerts", %{conn: conn, organization: _organization, device: device} do
|
||||
# Create a critical device_down alert (unresolved)
|
||||
{:ok, _active_alert} =
|
||||
|
|
|
|||
|
|
@ -84,5 +84,59 @@ defmodule ToweropsWeb.MaintenanceLive.FormEventsTest do
|
|||
|
||||
assert true
|
||||
end
|
||||
|
||||
test "save :new with valid params navigates to the new window's show page", %{conn: conn} do
|
||||
{:ok, view, _html} = live(conn, ~p"/maintenance/new")
|
||||
|
||||
now = DateTime.truncate(DateTime.utc_now(), :second)
|
||||
starts = DateTime.add(now, 60, :second)
|
||||
ends = DateTime.add(now, 7200, :second)
|
||||
|
||||
result =
|
||||
render_hook(view, "save", %{
|
||||
"maintenance_window" => %{
|
||||
"name" => "Test create window",
|
||||
"reason" => "test",
|
||||
"scope_type" => "org",
|
||||
"starts_at" => Calendar.strftime(starts, "%Y-%m-%dT%H:%M"),
|
||||
"ends_at" => Calendar.strftime(ends, "%Y-%m-%dT%H:%M")
|
||||
}
|
||||
})
|
||||
|
||||
# On success, save_window/3 push_navigates → result is a redirect tuple.
|
||||
assert match?({:error, {:live_redirect, _}}, result) or is_binary(result)
|
||||
end
|
||||
|
||||
test "save :edit with valid params navigates", %{conn: conn, user: user, organization: org} do
|
||||
now = DateTime.truncate(DateTime.utc_now(), :second)
|
||||
|
||||
{:ok, window} =
|
||||
Towerops.Maintenance.create_window(%{
|
||||
name: "Existing",
|
||||
reason: "test",
|
||||
organization_id: org.id,
|
||||
created_by_id: user.id,
|
||||
starts_at: DateTime.add(now, 60, :second),
|
||||
ends_at: DateTime.add(now, 7200, :second)
|
||||
})
|
||||
|
||||
{:ok, view, _html} = live(conn, ~p"/maintenance/#{window.id}/edit")
|
||||
|
||||
starts = DateTime.add(now, 120, :second)
|
||||
ends = DateTime.add(now, 8000, :second)
|
||||
|
||||
result =
|
||||
render_hook(view, "save", %{
|
||||
"maintenance_window" => %{
|
||||
"name" => "Edited",
|
||||
"reason" => "still test",
|
||||
"scope_type" => "org",
|
||||
"starts_at" => Calendar.strftime(starts, "%Y-%m-%dT%H:%M"),
|
||||
"ends_at" => Calendar.strftime(ends, "%Y-%m-%dT%H:%M")
|
||||
}
|
||||
})
|
||||
|
||||
assert match?({:error, {:live_redirect, _}}, result) or is_binary(result)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue