D4-2: add 56 UI tests for editor_settings (MCP agents, style/theme, search filter, categories CRUD)
This commit is contained in:
114
test/bds/desktop/settings_search_test.exs
Normal file
114
test/bds/desktop/settings_search_test.exs
Normal file
@@ -0,0 +1,114 @@
|
||||
defmodule BDS.Desktop.ShellLive.SettingsEditor.SettingsSearchTest do
|
||||
use ExUnit.Case, async: false
|
||||
|
||||
alias BDS.Desktop.ShellLive.SettingsEditor
|
||||
|
||||
describe "build_settings/1 — search filter" do
|
||||
setup do
|
||||
:ok = Ecto.Adapters.SQL.Sandbox.checkout(BDS.Repo)
|
||||
temp_dir =
|
||||
Path.join(System.tmp_dir!(), "bds-settings-search-#{System.unique_integer([:positive])}")
|
||||
|
||||
File.mkdir_p!(temp_dir)
|
||||
|
||||
on_exit(fn -> File.rm_rf(temp_dir) end)
|
||||
|
||||
{:ok, project} =
|
||||
BDS.Projects.create_project(%{name: "SearchFilter", data_path: temp_dir})
|
||||
|
||||
%{project: project, temp_dir: temp_dir}
|
||||
end
|
||||
|
||||
defp base_assigns(project_id, temp_dir, query) do
|
||||
%{
|
||||
projects: %{active_project_id: project_id},
|
||||
current_project: %{data_path: temp_dir},
|
||||
settings_editor_search: query,
|
||||
settings_editor_project_draft: %{},
|
||||
settings_editor_editor_draft: %{},
|
||||
settings_editor_ai_draft: %{},
|
||||
settings_editor_publishing_draft: %{},
|
||||
current_tab: %{type: :settings, id: "settings"},
|
||||
tab_meta: %{}
|
||||
}
|
||||
end
|
||||
|
||||
test "empty query shows all sections visible", %{project: project, temp_dir: temp_dir} do
|
||||
result = SettingsEditor.build_settings(base_assigns(project.id, temp_dir, ""))
|
||||
|
||||
assert result.project_visible?
|
||||
assert result.editor_visible?
|
||||
assert result.content_visible?
|
||||
assert result.ai_visible?
|
||||
assert result.technology_visible?
|
||||
assert result.publishing_visible?
|
||||
assert result.mcp_visible?
|
||||
assert result.data_visible?
|
||||
end
|
||||
|
||||
test "matching query shows only relevant sections", %{project: project, temp_dir: temp_dir} do
|
||||
result = SettingsEditor.build_settings(base_assigns(project.id, temp_dir, "ai"))
|
||||
|
||||
assert result.ai_visible?
|
||||
refute result.editor_visible?
|
||||
refute result.content_visible?
|
||||
refute result.publishing_visible?
|
||||
end
|
||||
|
||||
test "query 'publishing' shows publishing section only", %{project: project, temp_dir: temp_dir} do
|
||||
result = SettingsEditor.build_settings(base_assigns(project.id, temp_dir, "publishing"))
|
||||
|
||||
assert result.publishing_visible?
|
||||
refute result.editor_visible?
|
||||
refute result.ai_visible?
|
||||
refute result.technology_visible?
|
||||
refute result.mcp_visible?
|
||||
refute result.data_visible?
|
||||
end
|
||||
|
||||
test "query 'mcp' shows mcp section", %{project: project, temp_dir: temp_dir} do
|
||||
result = SettingsEditor.build_settings(base_assigns(project.id, temp_dir, "mcp"))
|
||||
|
||||
assert result.mcp_visible?
|
||||
refute result.editor_visible?
|
||||
refute result.ai_visible?
|
||||
end
|
||||
|
||||
test "query 'claude' matches mcp section", %{project: project, temp_dir: temp_dir} do
|
||||
result = SettingsEditor.build_settings(base_assigns(project.id, temp_dir, "claude"))
|
||||
|
||||
assert result.mcp_visible?
|
||||
end
|
||||
|
||||
test "query 'data' shows data section", %{project: project, temp_dir: temp_dir} do
|
||||
result = SettingsEditor.build_settings(base_assigns(project.id, temp_dir, "data"))
|
||||
|
||||
assert result.data_visible?
|
||||
end
|
||||
|
||||
test "query 'editor' shows editor section", %{project: project, temp_dir: temp_dir} do
|
||||
result = SettingsEditor.build_settings(base_assigns(project.id, temp_dir, "editor"))
|
||||
|
||||
assert result.editor_visible?
|
||||
end
|
||||
|
||||
test "no match query shows no sections", %{project: project, temp_dir: temp_dir} do
|
||||
result = SettingsEditor.build_settings(base_assigns(project.id, temp_dir, "zzzzz"))
|
||||
|
||||
refute result.project_visible?
|
||||
refute result.editor_visible?
|
||||
refute result.content_visible?
|
||||
refute result.ai_visible?
|
||||
refute result.technology_visible?
|
||||
refute result.publishing_visible?
|
||||
refute result.mcp_visible?
|
||||
refute result.data_visible?
|
||||
end
|
||||
end
|
||||
|
||||
describe "build_settings/1 — returns nil without active project" do
|
||||
test "returns nil when active_project_id is nil" do
|
||||
assert SettingsEditor.build_settings(%{projects: %{active_project_id: nil}}) == nil
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user