// Copyright 2016 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_MODEL_MODEL_TYPE_STORE_TEST_UTIL_H_
#define COMPONENTS_SYNC_MODEL_MODEL_TYPE_STORE_TEST_UTIL_H_

#include <memory>

#include "components/sync/model/model_type_store.h"

namespace syncer {

// Util class with several static methods to facilitate writing unit tests for
// classes that use ModelTypeStore objects.
class ModelTypeStoreTestUtil {
 public:
  // Creates an in memory store synchronously. Be aware that to do this all
  // outstanding tasks will be run as the current message loop is pumped.
  static std::unique_ptr<ModelTypeStore> CreateInMemoryStoreForTest(
      ModelType type = UNSPECIFIED);

  // Creates a factory callback to synchronously return in memory stores.
  static RepeatingModelTypeStoreFactory FactoryForInMemoryStoreForTest();

  // Can be curried with an owned store object to allow passing an already
  // created store to a service constructor in a unit test.
  static void MoveStoreToCallback(std::unique_ptr<ModelTypeStore> store,
                                  ModelType type,
                                  ModelTypeStore::InitCallback callback);
};

}  // namespace syncer

#endif  // COMPONENTS_SYNC_MODEL_MODEL_TYPE_STORE_TEST_UTIL_H_
