| // Copyright 2017 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. |
| |
| #ifndef PERIDOT_LIB_TESTING_LEDGER_REPOSITORY_FOR_TESTING_H_ |
| #define PERIDOT_LIB_TESTING_LEDGER_REPOSITORY_FOR_TESTING_H_ |
| |
| #include <string> |
| |
| #include <fuchsia/ledger/cpp/fidl.h> |
| #include <fuchsia/ledger/internal/cpp/fidl.h> |
| #include <lib/component/cpp/startup_context.h> |
| #include <lib/fidl/cpp/binding.h> |
| #include <lib/fxl/macros.h> |
| |
| #include "peridot/lib/fidl/app_client.h" |
| #include "peridot/lib/scoped_tmpfs/scoped_tmpfs.h" |
| |
| namespace modular { |
| namespace testing { |
| |
| // LedgerRepositoryForTesting spins up a ledger instance and acquires a ledger |
| // repository meant to be used for testing, particularly in gtest unittests. |
| class LedgerRepositoryForTesting { |
| public: |
| LedgerRepositoryForTesting(); |
| ~LedgerRepositoryForTesting(); |
| |
| fuchsia::ledger::internal::LedgerRepository* ledger_repository(); |
| |
| // Terminates the ledger repository app. |
| void Terminate(std::function<void()> done); |
| |
| private: |
| std::unique_ptr<component::StartupContext> startup_context_; |
| scoped_tmpfs::ScopedTmpFS tmp_fs_; |
| std::unique_ptr<AppClient<fuchsia::ledger::internal::LedgerController>> |
| ledger_app_client_; |
| fuchsia::ledger::internal::LedgerRepositoryFactoryPtr ledger_repo_factory_; |
| fuchsia::ledger::internal::LedgerRepositoryPtr ledger_repo_; |
| |
| FXL_DISALLOW_COPY_AND_ASSIGN(LedgerRepositoryForTesting); |
| }; |
| |
| } // namespace testing |
| } // namespace modular |
| |
| #endif // PERIDOT_LIB_TESTING_LEDGER_REPOSITORY_FOR_TESTING_H_ |