Extract file menu action planning
This commit is contained in:
@@ -328,6 +328,16 @@ add_test(NAME pp_app_core_document_route_tests COMMAND pp_app_core_document_rout
|
||||
set_tests_properties(pp_app_core_document_route_tests PROPERTIES
|
||||
LABELS "app;desktop-fast;fuzz")
|
||||
|
||||
add_executable(pp_app_core_file_menu_tests
|
||||
app_core/file_menu_tests.cpp)
|
||||
target_link_libraries(pp_app_core_file_menu_tests PRIVATE
|
||||
pp_app_core
|
||||
pp_test_harness)
|
||||
|
||||
add_test(NAME pp_app_core_file_menu_tests COMMAND pp_app_core_file_menu_tests)
|
||||
set_tests_properties(pp_app_core_file_menu_tests PROPERTIES
|
||||
LABELS "app;desktop-fast;fuzz")
|
||||
|
||||
add_executable(pp_app_core_document_canvas_tests
|
||||
app_core/document_canvas_tests.cpp)
|
||||
target_link_libraries(pp_app_core_document_canvas_tests PRIVATE
|
||||
@@ -569,6 +579,36 @@ if(TARGET pano_cli)
|
||||
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_file_menu_import_smoke
|
||||
COMMAND pano_cli plan-file-menu --command import)
|
||||
set_tests_properties(pano_cli_plan_file_menu_import_smoke PROPERTIES
|
||||
LABELS "app;integration;desktop-fast"
|
||||
PASS_REGULAR_EXPRESSION "\"command\":\"plan-file-menu\".*\"command\":\"import\".*\"action\":\"pick-image-for-import\"")
|
||||
|
||||
add_test(NAME pano_cli_plan_file_menu_save_as_smoke
|
||||
COMMAND pano_cli plan-file-menu --command save-as)
|
||||
set_tests_properties(pano_cli_plan_file_menu_save_as_smoke PROPERTIES
|
||||
LABELS "app;integration;desktop-fast"
|
||||
PASS_REGULAR_EXPRESSION "\"command\":\"plan-file-menu\".*\"command\":\"save-as\".*\"action\":\"save-document\".*\"saveIntent\":\"save-as\"")
|
||||
|
||||
add_test(NAME pano_cli_plan_file_menu_export_smoke
|
||||
COMMAND pano_cli plan-file-menu --command export)
|
||||
set_tests_properties(pano_cli_plan_file_menu_export_smoke PROPERTIES
|
||||
LABELS "app;integration;desktop-fast"
|
||||
PASS_REGULAR_EXPRESSION "\"command\":\"plan-file-menu\".*\"command\":\"export\".*\"action\":\"show-export-jpeg-dialog\".*\"exportKind\":\"jpeg\"")
|
||||
|
||||
add_test(NAME pano_cli_plan_file_menu_cloud_upload_smoke
|
||||
COMMAND pano_cli plan-file-menu --command cloud-upload)
|
||||
set_tests_properties(pano_cli_plan_file_menu_cloud_upload_smoke PROPERTIES
|
||||
LABELS "app;integration;desktop-fast"
|
||||
PASS_REGULAR_EXPRESSION "\"command\":\"plan-file-menu\".*\"command\":\"cloud-upload\".*\"action\":\"upload-to-cloud\"")
|
||||
|
||||
add_test(NAME pano_cli_plan_file_menu_rejects_unknown
|
||||
COMMAND pano_cli plan-file-menu --command nope)
|
||||
set_tests_properties(pano_cli_plan_file_menu_rejects_unknown PROPERTIES
|
||||
LABELS "app;integration;desktop-fast;fuzz"
|
||||
WILL_FAIL TRUE)
|
||||
|
||||
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
|
||||
|
||||
70
tests/app_core/file_menu_tests.cpp
Normal file
70
tests/app_core/file_menu_tests.cpp
Normal file
@@ -0,0 +1,70 @@
|
||||
#include "app_core/file_menu.h"
|
||||
#include "test_harness.h"
|
||||
|
||||
namespace {
|
||||
|
||||
void file_menu_routes_document_creation_and_opening(pp::tests::Harness& harness)
|
||||
{
|
||||
const auto new_doc = pp::app::plan_file_menu_command(pp::app::FileMenuCommand::new_document);
|
||||
const auto open = pp::app::plan_file_menu_command(pp::app::FileMenuCommand::open_project);
|
||||
const auto import = pp::app::plan_file_menu_command(pp::app::FileMenuCommand::import_image);
|
||||
|
||||
PP_EXPECT(harness, new_doc.action == pp::app::FileMenuAction::show_new_document_dialog);
|
||||
PP_EXPECT(harness, open.action == pp::app::FileMenuAction::pick_project_file);
|
||||
PP_EXPECT(harness, import.action == pp::app::FileMenuAction::pick_image_for_import);
|
||||
}
|
||||
|
||||
void file_menu_preserves_save_intents(pp::tests::Harness& harness)
|
||||
{
|
||||
const auto save = pp::app::plan_file_menu_command(pp::app::FileMenuCommand::save);
|
||||
const auto save_as = pp::app::plan_file_menu_command(pp::app::FileMenuCommand::save_as);
|
||||
const auto save_version = pp::app::plan_file_menu_command(pp::app::FileMenuCommand::save_version);
|
||||
|
||||
PP_EXPECT(harness, save.action == pp::app::FileMenuAction::save_document);
|
||||
PP_EXPECT(harness, save.save_intent == pp::app::DocumentSaveIntent::save);
|
||||
PP_EXPECT(harness, save_as.save_intent == pp::app::DocumentSaveIntent::save_as);
|
||||
PP_EXPECT(harness, save_version.save_intent == pp::app::DocumentSaveIntent::save_version);
|
||||
}
|
||||
|
||||
void file_menu_routes_export_and_cloud_actions(pp::tests::Harness& harness)
|
||||
{
|
||||
const auto jpeg = pp::app::plan_file_menu_command(pp::app::FileMenuCommand::export_jpeg);
|
||||
const auto submenu = pp::app::plan_file_menu_command(pp::app::FileMenuCommand::export_submenu);
|
||||
const auto upload = pp::app::plan_file_menu_command(pp::app::FileMenuCommand::cloud_upload);
|
||||
const auto browse = pp::app::plan_file_menu_command(pp::app::FileMenuCommand::cloud_browse);
|
||||
|
||||
PP_EXPECT(harness, jpeg.action == pp::app::FileMenuAction::show_export_jpeg_dialog);
|
||||
PP_EXPECT(harness, jpeg.export_kind == pp::app::DocumentExportMenuKind::jpeg);
|
||||
PP_EXPECT(harness, submenu.action == pp::app::FileMenuAction::show_export_submenu);
|
||||
PP_EXPECT(harness, upload.action == pp::app::FileMenuAction::upload_to_cloud);
|
||||
PP_EXPECT(harness, browse.action == pp::app::FileMenuAction::browse_cloud_documents);
|
||||
}
|
||||
|
||||
void file_menu_parser_accepts_legacy_button_names(pp::tests::Harness& harness)
|
||||
{
|
||||
const auto export_jpeg = pp::app::parse_file_menu_command("export");
|
||||
const auto cloud_upload = pp::app::parse_file_menu_command("cloud-upload");
|
||||
const auto invalid = pp::app::parse_file_menu_command("not-a-command");
|
||||
|
||||
PP_EXPECT(harness, export_jpeg);
|
||||
if (export_jpeg) {
|
||||
PP_EXPECT(harness, export_jpeg.value() == pp::app::FileMenuCommand::export_jpeg);
|
||||
}
|
||||
PP_EXPECT(harness, cloud_upload);
|
||||
if (cloud_upload) {
|
||||
PP_EXPECT(harness, cloud_upload.value() == pp::app::FileMenuCommand::cloud_upload);
|
||||
}
|
||||
PP_EXPECT(harness, !invalid);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
pp::tests::Harness harness;
|
||||
harness.run("file menu routes document creation and opening", file_menu_routes_document_creation_and_opening);
|
||||
harness.run("file menu preserves save intents", file_menu_preserves_save_intents);
|
||||
harness.run("file menu routes export and cloud actions", file_menu_routes_export_and_cloud_actions);
|
||||
harness.run("file menu parser accepts legacy button names", file_menu_parser_accepts_legacy_button_names);
|
||||
return harness.finish();
|
||||
}
|
||||
Reference in New Issue
Block a user