Plan document open actions in app core

This commit is contained in:
2026-06-02 23:06:36 +02:00
parent 1df506a176
commit fd1772a417
9 changed files with 179 additions and 12 deletions

View File

@@ -381,6 +381,24 @@ if(TARGET pano_cli)
LABELS "app;integration;desktop-fast;fuzz"
)
add_test(NAME pano_cli_plan_open_route_project_clean_smoke
COMMAND pano_cli plan-open-route --path "D:/Paint/Scenes/demo.ppi")
set_tests_properties(pano_cli_plan_open_route_project_clean_smoke PROPERTIES
LABELS "app;integration;desktop-fast"
PASS_REGULAR_EXPRESSION "\"command\":\"plan-open-route\".*\"kind\":\"open-project\".*\"unsaved\":false.*\"action\":\"open-project-now\"")
add_test(NAME pano_cli_plan_open_route_project_unsaved_smoke
COMMAND pano_cli plan-open-route --path "D:/Paint/Scenes/demo.ppi" --unsaved)
set_tests_properties(pano_cli_plan_open_route_project_unsaved_smoke PROPERTIES
LABELS "app;integration;desktop-fast"
PASS_REGULAR_EXPRESSION "\"command\":\"plan-open-route\".*\"kind\":\"open-project\".*\"unsaved\":true.*\"action\":\"prompt-discard-unsaved-project\"")
add_test(NAME pano_cli_plan_open_route_abr_import_smoke
COMMAND pano_cli plan-open-route --path "D:/Paint/Brushes/clouds.ABR" --unsaved)
set_tests_properties(pano_cli_plan_open_route_abr_import_smoke PROPERTIES
LABELS "app;integration;desktop-fast"
PASS_REGULAR_EXPRESSION "\"command\":\"plan-open-route\".*\"kind\":\"import-abr\".*\"unsaved\":true.*\"action\":\"prompt-import-abr\"")
add_test(NAME pano_cli_plan_document_file_save_now_smoke
COMMAND pano_cli plan-document-file --work-dir D:/Paint --name demo)
set_tests_properties(pano_cli_plan_document_file_save_now_smoke PROPERTIES

View File

@@ -15,6 +15,38 @@ void project_open_dirty_document_prompts_for_discard(pp::tests::Harness& harness
pp::app::plan_project_open(true) == pp::app::ProjectOpenDecision::prompt_discard_unsaved);
}
void document_open_project_respects_unsaved_state(pp::tests::Harness& harness)
{
PP_EXPECT(
harness,
pp::app::plan_document_open(pp::app::DocumentOpenKind::open_project, false)
== pp::app::DocumentOpenPlanAction::open_project_now);
PP_EXPECT(
harness,
pp::app::plan_document_open(pp::app::DocumentOpenKind::open_project, true)
== pp::app::DocumentOpenPlanAction::prompt_discard_unsaved_project);
}
void document_open_brush_imports_prompt_regardless_of_unsaved_state(pp::tests::Harness& harness)
{
PP_EXPECT(
harness,
pp::app::plan_document_open(pp::app::DocumentOpenKind::import_abr, false)
== pp::app::DocumentOpenPlanAction::prompt_import_abr);
PP_EXPECT(
harness,
pp::app::plan_document_open(pp::app::DocumentOpenKind::import_abr, true)
== pp::app::DocumentOpenPlanAction::prompt_import_abr);
PP_EXPECT(
harness,
pp::app::plan_document_open(pp::app::DocumentOpenKind::import_ppbr, false)
== pp::app::DocumentOpenPlanAction::prompt_import_ppbr);
PP_EXPECT(
harness,
pp::app::plan_document_open(pp::app::DocumentOpenKind::import_ppbr, true)
== pp::app::DocumentOpenPlanAction::prompt_import_ppbr);
}
void close_clean_document_executes_immediately(pp::tests::Harness& harness)
{
PP_EXPECT(
@@ -206,6 +238,10 @@ int main()
pp::tests::Harness harness;
harness.run("project open clean document executes immediately", project_open_clean_document_executes_immediately);
harness.run("project open dirty document prompts for discard", project_open_dirty_document_prompts_for_discard);
harness.run("document open project respects unsaved state", document_open_project_respects_unsaved_state);
harness.run(
"document open brush imports prompt regardless of unsaved state",
document_open_brush_imports_prompt_regardless_of_unsaved_state);
harness.run("close clean document executes immediately", close_clean_document_executes_immediately);
harness.run("close dirty document opens one prompt", close_dirty_document_opens_one_prompt);
harness.run("save clean existing document is no op", save_clean_existing_document_is_no_op);