Plan cloud upload decisions in app core
This commit is contained in:
@@ -278,6 +278,16 @@ add_test(NAME pp_app_core_document_export_tests COMMAND pp_app_core_document_exp
|
||||
set_tests_properties(pp_app_core_document_export_tests PROPERTIES
|
||||
LABELS "app;desktop-fast;fuzz")
|
||||
|
||||
add_executable(pp_app_core_document_cloud_tests
|
||||
app_core/document_cloud_tests.cpp)
|
||||
target_link_libraries(pp_app_core_document_cloud_tests PRIVATE
|
||||
pp_app_core
|
||||
pp_test_harness)
|
||||
|
||||
add_test(NAME pp_app_core_document_cloud_tests COMMAND pp_app_core_document_cloud_tests)
|
||||
set_tests_properties(pp_app_core_document_cloud_tests PROPERTIES
|
||||
LABELS "app;desktop-fast;fuzz")
|
||||
|
||||
add_executable(pp_app_core_document_session_tests
|
||||
app_core/document_session_tests.cpp)
|
||||
target_link_libraries(pp_app_core_document_session_tests PRIVATE
|
||||
@@ -479,6 +489,30 @@ if(TARGET pano_cli)
|
||||
LABELS "app;integration;desktop-fast"
|
||||
PASS_REGULAR_EXPRESSION "\"command\":\"plan-export-target\".*\"kind\":\"name\".*\"suggestedName\":\"demo-timelapse\"")
|
||||
|
||||
add_test(NAME pano_cli_plan_cloud_upload_clean_smoke
|
||||
COMMAND pano_cli plan-cloud-upload)
|
||||
set_tests_properties(pano_cli_plan_cloud_upload_clean_smoke PROPERTIES
|
||||
LABELS "app;integration;desktop-fast"
|
||||
PASS_REGULAR_EXPRESSION "\"command\":\"plan-cloud-upload\".*\"hasCanvas\":true.*\"newDocument\":false.*\"unsaved\":false.*\"decision\":\"prompt-publish\".*\"saveBeforeUpload\":false")
|
||||
|
||||
add_test(NAME pano_cli_plan_cloud_upload_unsaved_smoke
|
||||
COMMAND pano_cli plan-cloud-upload --unsaved)
|
||||
set_tests_properties(pano_cli_plan_cloud_upload_unsaved_smoke PROPERTIES
|
||||
LABELS "app;integration;desktop-fast"
|
||||
PASS_REGULAR_EXPRESSION "\"command\":\"plan-cloud-upload\".*\"unsaved\":true.*\"decision\":\"prompt-publish\".*\"saveBeforeUpload\":true")
|
||||
|
||||
add_test(NAME pano_cli_plan_cloud_upload_new_document_smoke
|
||||
COMMAND pano_cli plan-cloud-upload --new-document --unsaved)
|
||||
set_tests_properties(pano_cli_plan_cloud_upload_new_document_smoke PROPERTIES
|
||||
LABELS "app;integration;desktop-fast;fuzz"
|
||||
PASS_REGULAR_EXPRESSION "\"command\":\"plan-cloud-upload\".*\"newDocument\":true.*\"decision\":\"show-save-required-warning\".*\"saveBeforeUpload\":false")
|
||||
|
||||
add_test(NAME pano_cli_plan_cloud_upload_no_canvas_smoke
|
||||
COMMAND pano_cli plan-cloud-upload --no-canvas --new-document --unsaved)
|
||||
set_tests_properties(pano_cli_plan_cloud_upload_no_canvas_smoke PROPERTIES
|
||||
LABELS "app;integration;desktop-fast;fuzz"
|
||||
PASS_REGULAR_EXPRESSION "\"command\":\"plan-cloud-upload\".*\"hasCanvas\":false.*\"decision\":\"unavailable-no-canvas\".*\"saveBeforeUpload\":false")
|
||||
|
||||
add_test(NAME pano_cli_simulate_app_session_clean_smoke
|
||||
COMMAND pano_cli simulate-app-session)
|
||||
set_tests_properties(pano_cli_simulate_app_session_clean_smoke PROPERTIES
|
||||
|
||||
44
tests/app_core/document_cloud_tests.cpp
Normal file
44
tests/app_core/document_cloud_tests.cpp
Normal file
@@ -0,0 +1,44 @@
|
||||
#include "app_core/document_cloud.h"
|
||||
#include "test_harness.h"
|
||||
|
||||
namespace {
|
||||
|
||||
void cloud_upload_is_unavailable_without_canvas(pp::tests::Harness& harness)
|
||||
{
|
||||
const auto plan = pp::app::plan_cloud_upload(false, false, false);
|
||||
PP_EXPECT(harness, plan.action == pp::app::CloudUploadAction::unavailable_no_canvas);
|
||||
PP_EXPECT(harness, !plan.save_before_upload);
|
||||
}
|
||||
|
||||
void cloud_upload_warns_for_new_documents(pp::tests::Harness& harness)
|
||||
{
|
||||
const auto plan = pp::app::plan_cloud_upload(true, true, true);
|
||||
PP_EXPECT(harness, plan.action == pp::app::CloudUploadAction::show_save_required_warning);
|
||||
PP_EXPECT(harness, !plan.save_before_upload);
|
||||
}
|
||||
|
||||
void cloud_upload_prompts_for_clean_existing_documents(pp::tests::Harness& harness)
|
||||
{
|
||||
const auto plan = pp::app::plan_cloud_upload(true, false, false);
|
||||
PP_EXPECT(harness, plan.action == pp::app::CloudUploadAction::prompt_publish);
|
||||
PP_EXPECT(harness, !plan.save_before_upload);
|
||||
}
|
||||
|
||||
void cloud_upload_records_save_before_upload_for_dirty_existing_documents(pp::tests::Harness& harness)
|
||||
{
|
||||
const auto plan = pp::app::plan_cloud_upload(true, false, true);
|
||||
PP_EXPECT(harness, plan.action == pp::app::CloudUploadAction::prompt_publish);
|
||||
PP_EXPECT(harness, plan.save_before_upload);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
pp::tests::Harness harness;
|
||||
harness.run("cloud upload is unavailable without canvas", cloud_upload_is_unavailable_without_canvas);
|
||||
harness.run("cloud upload warns for new documents", cloud_upload_warns_for_new_documents);
|
||||
harness.run("cloud upload prompts for clean existing documents", cloud_upload_prompts_for_clean_existing_documents);
|
||||
harness.run("cloud upload records save before upload for dirty existing documents", cloud_upload_records_save_before_upload_for_dirty_existing_documents);
|
||||
return harness.finish();
|
||||
}
|
||||
Reference in New Issue
Block a user