Centralize legacy cloud bridge
This commit is contained in:
@@ -1,8 +1,77 @@
|
||||
#include "app_core/document_cloud.h"
|
||||
#include "test_harness.h"
|
||||
|
||||
#include <limits>
|
||||
#include <string>
|
||||
|
||||
namespace {
|
||||
|
||||
class FakeCloudServices final : public pp::app::CloudServices {
|
||||
public:
|
||||
void show_save_required_warning() override
|
||||
{
|
||||
warnings += 1;
|
||||
call_order += "warn;";
|
||||
}
|
||||
|
||||
void prompt_publish(bool save_before_upload) override
|
||||
{
|
||||
prompts += 1;
|
||||
last_save_before_upload = save_before_upload;
|
||||
call_order += "prompt;";
|
||||
}
|
||||
|
||||
void begin_bulk_upload(int progress_total, bool show_progress) override
|
||||
{
|
||||
bulk_begins += 1;
|
||||
last_progress_total = progress_total;
|
||||
last_show_progress = show_progress;
|
||||
call_order += "begin;";
|
||||
}
|
||||
|
||||
void upload_all_bulk_files() override
|
||||
{
|
||||
bulk_uploads += 1;
|
||||
call_order += "upload-all;";
|
||||
}
|
||||
|
||||
void end_bulk_upload() override
|
||||
{
|
||||
bulk_ends += 1;
|
||||
call_order += "end;";
|
||||
}
|
||||
|
||||
void show_browser() override
|
||||
{
|
||||
browsers += 1;
|
||||
call_order += "browse;";
|
||||
}
|
||||
|
||||
void start_download(const pp::app::CloudDownloadRequest& request) override
|
||||
{
|
||||
downloads += 1;
|
||||
last_selected_file = request.selected_file;
|
||||
last_selected_path = request.selected_path;
|
||||
last_selected_name = request.selected_name;
|
||||
call_order += "download;";
|
||||
}
|
||||
|
||||
int warnings = 0;
|
||||
int prompts = 0;
|
||||
int bulk_begins = 0;
|
||||
int bulk_uploads = 0;
|
||||
int bulk_ends = 0;
|
||||
int browsers = 0;
|
||||
int downloads = 0;
|
||||
int last_progress_total = 0;
|
||||
bool last_save_before_upload = false;
|
||||
bool last_show_progress = false;
|
||||
std::string last_selected_file;
|
||||
std::string last_selected_path;
|
||||
std::string last_selected_name;
|
||||
std::string call_order;
|
||||
};
|
||||
|
||||
void cloud_upload_is_unavailable_without_canvas(pp::tests::Harness& harness)
|
||||
{
|
||||
const auto plan = pp::app::plan_cloud_upload(false, false, false);
|
||||
@@ -88,6 +157,79 @@ void cloud_bulk_upload_clamps_progress_total(pp::tests::Harness& harness)
|
||||
PP_EXPECT(harness, plan.show_progress);
|
||||
}
|
||||
|
||||
void executor_dispatches_cloud_upload_variants(pp::tests::Harness& harness)
|
||||
{
|
||||
FakeCloudServices services;
|
||||
|
||||
PP_EXPECT(harness, pp::app::execute_cloud_upload_plan(pp::app::plan_cloud_upload(false, false, false), services).ok());
|
||||
PP_EXPECT(harness, pp::app::execute_cloud_upload_plan(pp::app::plan_cloud_upload(true, true, true), services).ok());
|
||||
PP_EXPECT(harness, pp::app::execute_cloud_upload_plan(pp::app::plan_cloud_upload(true, false, true), services).ok());
|
||||
|
||||
PP_EXPECT(harness, services.warnings == 1);
|
||||
PP_EXPECT(harness, services.prompts == 1);
|
||||
PP_EXPECT(harness, services.last_save_before_upload);
|
||||
PP_EXPECT(harness, services.call_order == "warn;prompt;");
|
||||
}
|
||||
|
||||
void executor_dispatches_cloud_bulk_browse_and_download(pp::tests::Harness& harness)
|
||||
{
|
||||
FakeCloudServices services;
|
||||
|
||||
const auto bulk = pp::app::plan_cloud_bulk_upload(3, true);
|
||||
PP_EXPECT(harness, pp::app::execute_cloud_bulk_upload_plan(bulk, services).ok());
|
||||
PP_EXPECT(harness, pp::app::execute_cloud_browse_action(pp::app::plan_cloud_browse(false), services).ok());
|
||||
PP_EXPECT(harness, pp::app::execute_cloud_browse_action(pp::app::plan_cloud_browse(true), services).ok());
|
||||
|
||||
pp::app::CloudDownloadRequest wait_request;
|
||||
PP_EXPECT(
|
||||
harness,
|
||||
pp::app::execute_cloud_download_selection_action(
|
||||
pp::app::plan_cloud_download_selection(""),
|
||||
services,
|
||||
wait_request)
|
||||
.ok());
|
||||
|
||||
pp::app::CloudDownloadRequest download_request {
|
||||
.selected_file = "demo.ppi",
|
||||
.selected_path = "D:/Paint/demo.ppi",
|
||||
.selected_name = "demo",
|
||||
};
|
||||
PP_EXPECT(
|
||||
harness,
|
||||
pp::app::execute_cloud_download_selection_action(
|
||||
pp::app::plan_cloud_download_selection(download_request.selected_file),
|
||||
services,
|
||||
download_request)
|
||||
.ok());
|
||||
|
||||
PP_EXPECT(harness, services.bulk_begins == 1);
|
||||
PP_EXPECT(harness, services.last_progress_total == 3);
|
||||
PP_EXPECT(harness, services.last_show_progress);
|
||||
PP_EXPECT(harness, services.bulk_uploads == 1);
|
||||
PP_EXPECT(harness, services.bulk_ends == 1);
|
||||
PP_EXPECT(harness, services.browsers == 1);
|
||||
PP_EXPECT(harness, services.downloads == 1);
|
||||
PP_EXPECT(harness, services.last_selected_file == "demo.ppi");
|
||||
PP_EXPECT(harness, services.last_selected_path == "D:/Paint/demo.ppi");
|
||||
PP_EXPECT(harness, services.last_selected_name == "demo");
|
||||
PP_EXPECT(harness, services.call_order == "begin;upload-all;end;browse;download;");
|
||||
}
|
||||
|
||||
void executor_rejects_mismatched_download_action(pp::tests::Harness& harness)
|
||||
{
|
||||
FakeCloudServices services;
|
||||
|
||||
pp::app::CloudDownloadRequest empty_request;
|
||||
PP_EXPECT(
|
||||
harness,
|
||||
!pp::app::execute_cloud_download_selection_action(
|
||||
pp::app::CloudDownloadSelectionAction::start_download,
|
||||
services,
|
||||
empty_request)
|
||||
.ok());
|
||||
PP_EXPECT(harness, services.downloads == 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int main()
|
||||
@@ -105,5 +247,8 @@ int main()
|
||||
harness.run("cloud bulk upload runs without progress when ui unavailable", cloud_bulk_upload_runs_without_progress_when_ui_unavailable);
|
||||
harness.run("cloud bulk upload keeps zero file progress explicit", cloud_bulk_upload_keeps_zero_file_progress_explicit);
|
||||
harness.run("cloud bulk upload clamps progress total", cloud_bulk_upload_clamps_progress_total);
|
||||
harness.run("executor dispatches cloud upload variants", executor_dispatches_cloud_upload_variants);
|
||||
harness.run("executor dispatches cloud bulk browse and download", executor_dispatches_cloud_bulk_browse_and_download);
|
||||
harness.run("executor rejects mismatched download action", executor_rejects_mismatched_download_action);
|
||||
return harness.finish();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user