blob: 4c88ce0b1a0502108373a083fa460075c4879958 [file] [log] [blame]
// 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_