// 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. // // 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()); // ... // } // #ifndef SYNC_INTERNAL_API_PUBLIC_TEST_TEST_USER_SHARE_H_ #define SYNC_INTERNAL_API_PUBLIC_TEST_TEST_USER_SHARE_H_ #include "base/basictypes.h" #include "sync/internal_api/public/base/model_type.h" #include "sync/internal_api/public/user_share.h" namespace syncer { class SyncEncryptionHandler; class TestDirectorySetterUpper; namespace syncable { class TestTransactionObserver; } 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 SyncBackendHost 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(syncer::ModelType model_type, syncer::UserShare* service); size_t GetDeleteJournalSize() const; private: scoped_ptr<TestDirectorySetterUpper> dir_maker_; scoped_ptr<UserShare> user_share_; DISALLOW_COPY_AND_ASSIGN(TestUserShare); }; } // namespace syncer #endif // SYNC_INTERNAL_API_PUBLIC_TEST_TEST_USER_SHARE_H_