Initial commit on Forgejo
Fresh repository history for elektrine/tarakan hosted at https://git.elektrine.com/elektrine/tarakan.
This commit is contained in:
commit
af6077b9c3
455 changed files with 78366 additions and 0 deletions
79
test/tarakan_web/live/alert_live_test.exs
Normal file
79
test/tarakan_web/live/alert_live_test.exs
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
defmodule TarakanWeb.AlertLiveTest do
|
||||
use TarakanWeb.ConnCase, async: true
|
||||
|
||||
import Phoenix.LiveViewTest
|
||||
|
||||
alias Tarakan.Billing
|
||||
alias Tarakan.Repo
|
||||
|
||||
test "redirects anonymous visitors to login", %{conn: conn} do
|
||||
assert {:error, {:redirect, %{to: "/accounts/log-in"}}} = live(conn, ~p"/alerts")
|
||||
end
|
||||
|
||||
test "creates, edits, toggles, and deletes a watchlist", %{conn: conn} do
|
||||
account = account_fixture()
|
||||
{:ok, view, _html} = conn |> log_in_account(account) |> live(~p"/alerts")
|
||||
|
||||
assert has_element?(view, "#watchlists")
|
||||
assert has_element?(view, "#watchlist-form")
|
||||
|
||||
# Create
|
||||
view
|
||||
|> form("#watchlist-form", watchlist: %{name: "Deps", entries: "openai/codex\nacme/widget"})
|
||||
|> render_submit()
|
||||
|
||||
[watchlist] = Billing.list_watchlists(account)
|
||||
assert watchlist.name == "Deps"
|
||||
assert watchlist.entries == ["openai/codex", "acme/widget"]
|
||||
assert has_element?(view, "#watchlist-#{watchlist.id}")
|
||||
assert has_element?(view, "#watchlist-#{watchlist.id}", "openai/codex")
|
||||
|
||||
# Toggle notify off
|
||||
view |> element("#watchlist-notify-#{watchlist.id}") |> render_click()
|
||||
refute Repo.get!(Billing.Watchlist, watchlist.id).notify
|
||||
|
||||
# Edit
|
||||
view |> element("#watchlist-edit-#{watchlist.id}") |> render_click()
|
||||
|
||||
view
|
||||
|> form("#watchlist-form", watchlist: %{name: "Deps v2", entries: "openai/codex"})
|
||||
|> render_submit()
|
||||
|
||||
updated = Repo.get!(Billing.Watchlist, watchlist.id)
|
||||
assert updated.name == "Deps v2"
|
||||
assert updated.entries == ["openai/codex"]
|
||||
assert has_element?(view, "#watchlist-#{watchlist.id}", "Deps v2")
|
||||
|
||||
# Delete
|
||||
view |> element("#watchlist-delete-#{watchlist.id}") |> render_click()
|
||||
refute has_element?(view, "#watchlist-#{watchlist.id}")
|
||||
assert Billing.list_watchlists(account) == []
|
||||
end
|
||||
|
||||
test "invalid entries show an error and do not persist", %{conn: conn} do
|
||||
account = account_fixture()
|
||||
{:ok, view, _html} = conn |> log_in_account(account) |> live(~p"/alerts")
|
||||
|
||||
html =
|
||||
view
|
||||
|> form("#watchlist-form", watchlist: %{name: "Bad", entries: "not a ref"})
|
||||
|> render_submit()
|
||||
|
||||
assert html =~ "owner/name"
|
||||
assert Billing.list_watchlists(account) == []
|
||||
end
|
||||
|
||||
test "watchlists are owner-scoped", %{conn: conn} do
|
||||
owner = account_fixture()
|
||||
|
||||
{:ok, _} =
|
||||
Billing.create_watchlist(Tarakan.Accounts.Scope.for_account(owner), %{
|
||||
"name" => "Private",
|
||||
"entries" => ["openai/codex"]
|
||||
})
|
||||
|
||||
{:ok, view, _html} = conn |> log_in_account(account_fixture()) |> live(~p"/alerts")
|
||||
|
||||
refute has_element?(view, "#watchlists", "Private")
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue