| // Copyright 2018 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "src/modular/lib/testing/test_story_command_executor.h" |
| |
| namespace modular_testing { |
| |
| void TestStoryCommandExecutor::SetStoryStorage( |
| std::shared_ptr<modular::StoryStorage> story_storage) { |
| story_storage_ = std::move(story_storage); |
| } |
| |
| void TestStoryCommandExecutor::SetExecuteReturnResult(fuchsia::modular::ExecuteStatus status, |
| std::optional<std::string> error_message) { |
| result_.status = status; |
| result_.error_message = error_message ? fidl::StringPtr(error_message.value()) : std::nullopt; |
| } |
| |
| void TestStoryCommandExecutor::Reset() { |
| last_story_id_.reset(); |
| last_commands_.clear(); |
| execute_count_ = 0; |
| } |
| |
| void TestStoryCommandExecutor::ExecuteCommandsInternal( |
| std::string story_id, std::vector<fuchsia::modular::StoryCommand> commands, |
| fit::function<void(fuchsia::modular::ExecuteResult)> done) { |
| ++execute_count_; |
| |
| fuchsia::modular::ExecuteResult result; |
| fidl::Clone(result_, &result); |
| result.story_id = story_id; |
| |
| if (!!story_storage_) { |
| for (auto& command : commands) { |
| if (command.is_add_mod()) { |
| auto& add_mod = command.add_mod(); |
| |
| fuchsia::modular::ModuleData module_data; |
| if (add_mod.mod_name_transitional) { |
| module_data.set_module_url(*add_mod.mod_name_transitional); |
| module_data.set_module_path({*add_mod.mod_name_transitional}); |
| } else { |
| module_data.set_module_url(add_mod.mod_name.back()); |
| module_data.set_module_path(add_mod.mod_name); |
| } |
| module_data.set_module_source(fuchsia::modular::ModuleSource::INTERNAL); |
| module_data.set_module_deleted(false); |
| // This test currently ignores the following fields: |
| // Intent intent |
| // SurfaceRelation surface_relation |
| |
| story_storage_->WriteModuleData(std::move(module_data)); |
| |
| // This test currently only persists adding mods (assuming there is a story_storage_); |
| // other commands are not yet persisted, such as: |
| // |
| // else if (command.is_remove_mod()) |
| } |
| } |
| } |
| last_story_id_ = story_id; |
| last_commands_ = std::move(commands); |
| done(std::move(result)); |
| } |
| |
| } // namespace modular_testing |