| // Copyright (c) 2012 The Chromium 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 COMPONENTS_SYNC_SYNCABLE_TEST_USER_SHARE_H_ |
| #define COMPONENTS_SYNC_SYNCABLE_TEST_USER_SHARE_H_ |
| |
| #include <stddef.h> |
| |
| #include <memory> |
| |
| #include "base/macros.h" |
| #include "components/sync/base/model_type.h" |
| #include "components/sync/syncable/user_share.h" |
| |
| namespace syncer { |
| |
| class SyncEncryptionHandler; |
| class TestDirectorySetterUpper; |
| |
| namespace syncable { |
| class TestTransactionObserver; |
| } |
| |
| // A handy class that takes care of setting up and destroying a |
| // UserShare instance for unit tests that require one. |
| // |
| // The expected usage is to make this a component of your test fixture: |
| // |
| // class AwesomenessTest : public testing::Test { |
| // public: |
| // virtual void SetUp() { |
| // test_user_share_.SetUp(); |
| // } |
| // virtual void TearDown() { |
| // test_user_share_.TearDown(); |
| // } |
| // protected: |
| // TestUserShare test_user_share_; |
| // }; |
| // |
| // Then, in your tests: |
| // |
| // TEST_F(AwesomenessTest, IsMaximal) { |
| // ReadTransaction trans(test_user_share_.user_share()); |
| // ... |
| // } |
| // |
| class TestUserShare { |
| public: |
| TestUserShare(); |
| ~TestUserShare(); |
| |
| // Sets up the UserShare instance. Clears any existing database |
| // backing files that might exist on disk. |
| void SetUp(); |
| |
| // Undo everything done by SetUp(): closes the UserShare and deletes |
| // the backing files. Before closing the directory, this will run |
| // the directory invariant checks and perform the SaveChanges action |
| // on the user share's directory. |
| void TearDown(); |
| |
| // Save and reload Directory to clear out temporary data in memory. |
| bool Reload(); |
| |
| // Non-null iff called between a call to SetUp() and TearDown(). |
| UserShare* user_share(); |
| |
| // Sync's encryption handler. Used by tests to invoke the sync encryption |
| // methods normally handled via the SyncEngine. |
| SyncEncryptionHandler* encryption_handler(); |
| |
| // Returns the directory's transaction observer. This transaction observer |
| // has methods which can be helpful when writing test assertions. |
| syncable::TestTransactionObserver* transaction_observer(); |
| |
| // A helper function to pretend to download this type's root node. |
| static bool CreateRoot(ModelType model_type, UserShare* service); |
| |
| size_t GetDeleteJournalSize() const; |
| |
| private: |
| std::unique_ptr<TestDirectorySetterUpper> dir_maker_; |
| std::unique_ptr<UserShare> user_share_; |
| |
| DISALLOW_COPY_AND_ASSIGN(TestUserShare); |
| }; |
| |
| } // namespace syncer |
| |
| #endif // COMPONENTS_SYNC_SYNCABLE_TEST_USER_SHARE_H_ |