Dispatch layer rename through app core
This commit is contained in:
@@ -31,6 +31,23 @@ public:
|
||||
int last_to_index = -1;
|
||||
};
|
||||
|
||||
class FakeDocumentLayerRenameServices final : public pp::app::DocumentLayerRenameServices {
|
||||
public:
|
||||
void rename_layer(std::string_view old_name, std::string_view new_name) override
|
||||
{
|
||||
rename_calls += 1;
|
||||
last_old_name = std::string(old_name);
|
||||
last_new_name = std::string(new_name);
|
||||
}
|
||||
|
||||
void finish_layer_rename() override { finish_calls += 1; }
|
||||
|
||||
int rename_calls = 0;
|
||||
int finish_calls = 0;
|
||||
std::string last_old_name;
|
||||
std::string last_new_name;
|
||||
};
|
||||
|
||||
class FakeDocumentLayerOperationServices final : public pp::app::DocumentLayerOperationServices {
|
||||
public:
|
||||
void add_layer(std::string_view name, int insert_index) override
|
||||
@@ -180,6 +197,49 @@ void layer_rename_rejects_overlong_name(pp::tests::Harness& harness)
|
||||
}
|
||||
}
|
||||
|
||||
void layer_rename_executor_dispatches_changed_name(pp::tests::Harness& harness)
|
||||
{
|
||||
FakeDocumentLayerRenameServices services;
|
||||
|
||||
const auto plan = pp::app::plan_document_layer_rename("Base", "Paint");
|
||||
PP_EXPECT(harness, plan);
|
||||
if (plan) {
|
||||
PP_EXPECT(harness, pp::app::execute_document_layer_rename_plan(plan.value(), services).ok());
|
||||
PP_EXPECT(harness, services.rename_calls == 1);
|
||||
PP_EXPECT(harness, services.finish_calls == 1);
|
||||
PP_EXPECT(harness, services.last_old_name == "Base");
|
||||
PP_EXPECT(harness, services.last_new_name == "Paint");
|
||||
}
|
||||
}
|
||||
|
||||
void layer_rename_executor_finishes_no_op(pp::tests::Harness& harness)
|
||||
{
|
||||
FakeDocumentLayerRenameServices services;
|
||||
|
||||
const auto plan = pp::app::plan_document_layer_rename("Ink", "Ink");
|
||||
PP_EXPECT(harness, plan);
|
||||
if (plan) {
|
||||
PP_EXPECT(harness, pp::app::execute_document_layer_rename_plan(plan.value(), services).ok());
|
||||
PP_EXPECT(harness, services.rename_calls == 0);
|
||||
PP_EXPECT(harness, services.finish_calls == 1);
|
||||
}
|
||||
}
|
||||
|
||||
void layer_rename_executor_rejects_malformed_changed_plan(pp::tests::Harness& harness)
|
||||
{
|
||||
FakeDocumentLayerRenameServices services;
|
||||
|
||||
pp::app::DocumentLayerRenamePlan malformed;
|
||||
malformed.old_name = "Ink";
|
||||
malformed.action = pp::app::DocumentLayerRenameAction::rename_and_record_undo;
|
||||
|
||||
const auto status = pp::app::execute_document_layer_rename_plan(malformed, services);
|
||||
PP_EXPECT(harness, !status.ok());
|
||||
PP_EXPECT(harness, status.code == pp::foundation::StatusCode::invalid_argument);
|
||||
PP_EXPECT(harness, services.rename_calls == 0);
|
||||
PP_EXPECT(harness, services.finish_calls == 0);
|
||||
}
|
||||
|
||||
void layer_add_validates_insert_index_and_name(pp::tests::Harness& harness)
|
||||
{
|
||||
const auto plan = pp::app::plan_document_layer_add(2, 1, "Paint");
|
||||
@@ -673,6 +733,9 @@ int main()
|
||||
harness.run("layer rename ignores unchanged name", layer_rename_ignores_unchanged_name);
|
||||
harness.run("layer rename rejects empty name", layer_rename_rejects_empty_name);
|
||||
harness.run("layer rename rejects overlong name", layer_rename_rejects_overlong_name);
|
||||
harness.run("layer rename executor dispatches changed name", layer_rename_executor_dispatches_changed_name);
|
||||
harness.run("layer rename executor finishes no op", layer_rename_executor_finishes_no_op);
|
||||
harness.run("layer rename executor rejects malformed changed plan", layer_rename_executor_rejects_malformed_changed_plan);
|
||||
harness.run("layer add validates insert index and name", layer_add_validates_insert_index_and_name);
|
||||
harness.run("layer duplicate select and reorder validate indices", layer_duplicate_select_and_reorder_validate_indices);
|
||||
harness.run("layer remove keeps at least one layer", layer_remove_keeps_at_least_one_layer);
|
||||
|
||||
Reference in New Issue
Block a user