67 lines
1.6 KiB
Elixir
67 lines
1.6 KiB
Elixir
defmodule BDS.Desktop.MainWindowTest do
|
|
use ExUnit.Case, async: false
|
|
|
|
alias BDS.Desktop.MainWindow
|
|
|
|
setup do
|
|
path =
|
|
Path.join(
|
|
System.tmp_dir!(),
|
|
"bds-main-window-state-#{System.unique_integer([:positive])}.json"
|
|
)
|
|
|
|
previous = Application.get_env(:bds, :desktop, [])
|
|
|
|
updated =
|
|
previous
|
|
|> Keyword.put(:window_state_path, path)
|
|
|> Keyword.put(:window_client_area_override, {0, 33, 1470, 851})
|
|
|
|
Application.put_env(:bds, :desktop, updated)
|
|
|
|
on_exit(fn ->
|
|
Application.put_env(:bds, :desktop, previous)
|
|
File.rm(path)
|
|
end)
|
|
|
|
%{path: path}
|
|
end
|
|
|
|
test "window options use a smaller safe default and restore persisted size and position", %{
|
|
path: path
|
|
} do
|
|
opts = MainWindow.window_options()
|
|
|
|
assert opts[:size] == {1280, 780}
|
|
assert opts[:min_size] == {800, 600}
|
|
|
|
:ok = MainWindow.persist_bounds(%{x: 120, y: 80, width: 1260, height: 820})
|
|
|
|
assert File.exists?(path)
|
|
|
|
restored = MainWindow.window_options()
|
|
assert restored[:size] == {1260, 820}
|
|
assert MainWindow.restore_bounds() == %{x: 120, y: 80, width: 1260, height: 820}
|
|
end
|
|
|
|
test "window options clamp oversized startup bounds to the visible client area" do
|
|
desktop = Application.get_env(:bds, :desktop, [])
|
|
|
|
Application.put_env(
|
|
:bds,
|
|
:desktop,
|
|
desktop
|
|
|> Keyword.put(:window_size, {1600, 950})
|
|
|> Keyword.put(:window_client_area_override, {0, 33, 1200, 700})
|
|
)
|
|
|
|
on_exit(fn ->
|
|
Application.put_env(:bds, :desktop, desktop)
|
|
end)
|
|
|
|
opts = MainWindow.window_options()
|
|
|
|
assert opts[:size] == {1200, 700}
|
|
end
|
|
end
|