Plan export start decisions in app core

This commit is contained in:
2026-06-02 23:24:44 +02:00
parent 8de9dadf1d
commit 561193b2ab
9 changed files with 244 additions and 94 deletions

View File

@@ -443,6 +443,24 @@ if(TARGET pano_cli)
LABELS "app;integration;desktop-fast"
PASS_REGULAR_EXPRESSION "\"command\":\"plan-document-version\".*\"documentName\":\"demo.01\".*\"existingPaths\":1.*\"name\":\"demo.03\".*\"path\":\"D:/Paint/demo.03.ppi\"")
add_test(NAME pano_cli_plan_export_start_allowed_smoke
COMMAND pano_cli plan-export-start --requires-license)
set_tests_properties(pano_cli_plan_export_start_allowed_smoke PROPERTIES
LABELS "app;integration;desktop-fast"
PASS_REGULAR_EXPRESSION "\"command\":\"plan-export-start\".*\"requiresLicense\":true.*\"licenseValid\":true.*\"hasCanvas\":true.*\"decision\":\"start-now\"")
add_test(NAME pano_cli_plan_export_start_demo_blocked_smoke
COMMAND pano_cli plan-export-start --requires-license --demo)
set_tests_properties(pano_cli_plan_export_start_demo_blocked_smoke PROPERTIES
LABELS "app;integration;desktop-fast"
PASS_REGULAR_EXPRESSION "\"command\":\"plan-export-start\".*\"requiresLicense\":true.*\"licenseValid\":false.*\"decision\":\"show-license-disabled\"")
add_test(NAME pano_cli_plan_export_start_no_canvas_smoke
COMMAND pano_cli plan-export-start --no-canvas)
set_tests_properties(pano_cli_plan_export_start_no_canvas_smoke PROPERTIES
LABELS "app;integration;desktop-fast;fuzz"
PASS_REGULAR_EXPRESSION "\"command\":\"plan-export-start\".*\"requiresLicense\":false.*\"hasCanvas\":false.*\"decision\":\"unavailable-no-canvas\"")
add_test(NAME pano_cli_plan_export_target_file_smoke
COMMAND pano_cli plan-export-target --kind file --work-dir D:/Paint --doc-name demo --extension .png)
set_tests_properties(pano_cli_plan_export_target_file_smoke PROPERTIES

View File

@@ -46,6 +46,38 @@ void video_export_builds_suggested_name(pp::tests::Harness& harness)
PP_EXPECT(harness, animation.value().name == "demo-animation");
}
void export_start_allows_valid_canvas_state(pp::tests::Harness& harness)
{
PP_EXPECT(
harness,
pp::app::plan_document_export_start(true, true, true)
== pp::app::DocumentExportStartDecision::start_now);
PP_EXPECT(
harness,
pp::app::plan_document_export_start(false, false, true)
== pp::app::DocumentExportStartDecision::start_now);
}
void export_start_blocks_demo_only_when_license_required(pp::tests::Harness& harness)
{
PP_EXPECT(
harness,
pp::app::plan_document_export_start(true, false, true)
== pp::app::DocumentExportStartDecision::show_license_disabled);
}
void export_start_reports_missing_canvas_after_license_gate(pp::tests::Harness& harness)
{
PP_EXPECT(
harness,
pp::app::plan_document_export_start(false, true, false)
== pp::app::DocumentExportStartDecision::unavailable_no_canvas);
PP_EXPECT(
harness,
pp::app::plan_document_export_start(true, false, false)
== pp::app::DocumentExportStartDecision::show_license_disabled);
}
}
int main()
@@ -56,5 +88,8 @@ int main()
harness.run("collection export builds directory and stem", collection_export_builds_directory_and_stem);
harness.run("picked directory export builds stem", picked_directory_export_builds_stem);
harness.run("video export builds suggested name", video_export_builds_suggested_name);
harness.run("export start allows valid canvas state", export_start_allows_valid_canvas_state);
harness.run("export start blocks demo only when license required", export_start_blocks_demo_only_when_license_required);
harness.run("export start reports missing canvas after license gate", export_start_reports_missing_canvas_after_license_gate);
return harness.finish();
}