mirror of
https://github.com/livebook-dev/livebook.git
synced 2024-11-14 20:04:49 +08:00
81 lines
2.3 KiB
Elixir
81 lines
2.3 KiB
Elixir
defmodule LivebookWeb.AppsLiveTest do
|
|
use LivebookWeb.ConnCase, async: true
|
|
|
|
import Phoenix.LiveViewTest
|
|
import Livebook.TestHelpers
|
|
|
|
alias Livebook.{App, Apps, Notebook, Utils}
|
|
|
|
test "updates UI when app is deployed and terminated", %{conn: conn} do
|
|
slug = Utils.random_short_id()
|
|
app_settings = %{Notebook.AppSettings.new() | slug: slug}
|
|
notebook = %{Notebook.new() | app_settings: app_settings, name: "My app #{slug}"}
|
|
|
|
{:ok, view, _} = live(conn, ~p"/apps")
|
|
|
|
refute render(view) =~ slug
|
|
|
|
Apps.subscribe()
|
|
{:ok, app_pid} = Apps.deploy(notebook)
|
|
|
|
assert_receive {:app_created, %{pid: ^app_pid}}
|
|
assert render(view) =~ "My app #{slug}"
|
|
|
|
App.close(app_pid)
|
|
|
|
assert_receive {:app_closed, %{pid: ^app_pid}}
|
|
refute render(view) =~ slug
|
|
end
|
|
|
|
test "terminating an app", %{conn: conn} do
|
|
slug = Utils.random_short_id()
|
|
app_settings = %{Notebook.AppSettings.new() | slug: slug}
|
|
notebook = %{Notebook.new() | app_settings: app_settings, name: "My app #{slug}"}
|
|
|
|
{:ok, view, _} = live(conn, ~p"/apps")
|
|
|
|
Apps.subscribe()
|
|
{:ok, app_pid} = Apps.deploy(notebook)
|
|
|
|
assert_receive {:app_created, %{pid: ^app_pid}}
|
|
|
|
view
|
|
|> element(~s/[data-app-slug="#{slug}"] button[aria-label="terminate app"]/)
|
|
|> render_click()
|
|
|
|
render_confirm(view)
|
|
|
|
assert_receive {:app_closed, %{pid: ^app_pid}}
|
|
end
|
|
|
|
test "deactivating and terminating an app session", %{conn: conn} do
|
|
slug = Utils.random_short_id()
|
|
app_settings = %{Notebook.AppSettings.new() | slug: slug}
|
|
notebook = %{Notebook.new() | app_settings: app_settings, name: "My app #{slug}"}
|
|
|
|
{:ok, view, _} = live(conn, ~p"/apps")
|
|
|
|
Apps.subscribe()
|
|
{:ok, app_pid} = Apps.deploy(notebook)
|
|
|
|
assert_receive {:app_created, %{pid: ^app_pid}}
|
|
|
|
assert_receive {:app_updated,
|
|
%{pid: ^app_pid, sessions: [%{app_status: %{execution: :executed}}]}}
|
|
|
|
view
|
|
|> element(~s/[data-app-slug="#{slug}"] button[aria-label="deactivate app session"]/)
|
|
|> render_click()
|
|
|
|
assert_receive {:app_updated,
|
|
%{pid: ^app_pid, sessions: [%{app_status: %{lifecycle: :deactivated}}]}}
|
|
|
|
view
|
|
|> element(~s/[data-app-slug="#{slug}"] button[aria-label="terminate app session"]/)
|
|
|> render_click()
|
|
|
|
assert_receive {:app_updated, %{pid: ^app_pid, sessions: []}}
|
|
|
|
App.close(app_pid)
|
|
end
|
|
end
|