fix: still fighting crashes on close and weird AI chat behaviou

This commit is contained in:
2026-05-02 08:40:36 +02:00
parent 7db8f6d36b
commit 631ceb0521
5 changed files with 93 additions and 11 deletions

View File

@@ -23,6 +23,18 @@ defmodule BDS.DesktopTest do
end
end
defmodule FakeWindowLifecycle do
def hide(window_id) do
send(Application.fetch_env!(:bds, :desktop_shutdown_test_pid), {:window_hide_requested, window_id})
:ok
end
def quit do
send(Application.fetch_env!(:bds, :desktop_shutdown_test_pid), :window_quit_requested)
:ok
end
end
test "desktop configuration no longer uses a pending adapter" do
assert Application.get_env(:bds, BDS.Application)[:desktop_adapter] == :desktop
end
@@ -191,6 +203,30 @@ defmodule BDS.DesktopTest do
assert_receive :window_quit_requested
end
test "app-owned shutdown hides the window before hard quit" do
previous_module = Application.get_env(:bds, :desktop_shutdown_module)
previous_quit_module = Application.get_env(:bds, :desktop_window_quit_module)
previous_window_module = Application.get_env(:bds, :desktop_window_module)
previous_pid = Application.get_env(:bds, :desktop_shutdown_test_pid)
Application.put_env(:bds, :desktop_shutdown_module, BDS.Desktop.Shutdown)
Application.put_env(:bds, :desktop_window_quit_module, FakeWindowLifecycle)
Application.put_env(:bds, :desktop_window_module, FakeWindowLifecycle)
Application.put_env(:bds, :desktop_shutdown_test_pid, self())
expected_window_id = BDS.Desktop.MainWindow.window_id()
on_exit(fn ->
restore_env(:desktop_shutdown_module, previous_module)
restore_env(:desktop_window_quit_module, previous_quit_module)
restore_env(:desktop_window_module, previous_window_module)
restore_env(:desktop_shutdown_test_pid, previous_pid)
end)
assert :ok = BDS.Desktop.Shutdown.request_quit()
assert_receive {:window_hide_requested, ^expected_window_id}
assert_receive :window_quit_requested
end
test "desktop root html is a LiveView shell and references only the live bootstrap assets" do
conn = conn(:get, "/?k=#{Desktop.Auth.login_key()}")
conn = BDS.Desktop.Endpoint.call(conn, BDS.Desktop.Endpoint.init([]))