summaryrefslogtreecommitdiffstats
path: root/chromium/components/dom_distiller/core/dom_distiller_store_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/components/dom_distiller/core/dom_distiller_store_unittest.cc')
-rw-r--r--chromium/components/dom_distiller/core/dom_distiller_store_unittest.cc507
1 files changed, 0 insertions, 507 deletions
diff --git a/chromium/components/dom_distiller/core/dom_distiller_store_unittest.cc b/chromium/components/dom_distiller/core/dom_distiller_store_unittest.cc
deleted file mode 100644
index 60c89d81794..00000000000
--- a/chromium/components/dom_distiller/core/dom_distiller_store_unittest.cc
+++ /dev/null
@@ -1,507 +0,0 @@
-// Copyright 2013 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.
-
-#include "components/dom_distiller/core/dom_distiller_store.h"
-
-#include "base/bind.h"
-#include "base/file_util.h"
-#include "base/files/scoped_temp_dir.h"
-#include "base/run_loop.h"
-#include "base/time/time.h"
-#include "components/dom_distiller/core/article_entry.h"
-#include "components/dom_distiller/core/dom_distiller_test_util.h"
-#include "components/dom_distiller/core/fake_db.h"
-#include "sync/protocol/sync.pb.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-using base::Time;
-using dom_distiller::test::FakeDB;
-using sync_pb::EntitySpecifics;
-using syncer::ModelType;
-using syncer::SyncChange;
-using syncer::SyncChangeList;
-using syncer::SyncChangeProcessor;
-using syncer::SyncData;
-using syncer::SyncDataList;
-using syncer::SyncError;
-using syncer::SyncErrorFactory;
-using testing::AssertionFailure;
-using testing::AssertionResult;
-using testing::AssertionSuccess;
-
-namespace dom_distiller {
-
-namespace {
-
-const ModelType kDomDistillerModelType = syncer::ARTICLES;
-
-typedef base::hash_map<std::string, ArticleEntry> EntryMap;
-
-void AddEntry(const ArticleEntry& e, EntryMap* map) {
- (*map)[e.entry_id()] = e;
-}
-
-class FakeSyncErrorFactory : public syncer::SyncErrorFactory {
- public:
- virtual syncer::SyncError CreateAndUploadError(
- const tracked_objects::Location& location,
- const std::string& message) OVERRIDE {
- return syncer::SyncError();
- }
-};
-
-class FakeSyncChangeProcessor : public syncer::SyncChangeProcessor {
- public:
- explicit FakeSyncChangeProcessor(EntryMap* model) : model_(model) {}
-
- virtual syncer::SyncDataList GetAllSyncData(syncer::ModelType type) const
- OVERRIDE {
- ADD_FAILURE() << "FakeSyncChangeProcessor::GetAllSyncData not implemented.";
- return syncer::SyncDataList();
- }
-
- virtual SyncError ProcessSyncChanges(
- const tracked_objects::Location&,
- const syncer::SyncChangeList& changes) OVERRIDE {
- for (SyncChangeList::const_iterator it = changes.begin();
- it != changes.end();
- ++it) {
- AddEntry(GetEntryFromChange(*it), model_);
- }
- return SyncError();
- }
-
- private:
- EntryMap* model_;
-};
-
-ArticleEntry CreateEntry(std::string entry_id,
- std::string page_url1,
- std::string page_url2,
- std::string page_url3) {
- ArticleEntry entry;
- entry.set_entry_id(entry_id);
- if (!page_url1.empty()) {
- ArticleEntryPage* page = entry.add_pages();
- page->set_url(page_url1);
- }
- if (!page_url2.empty()) {
- ArticleEntryPage* page = entry.add_pages();
- page->set_url(page_url2);
- }
- if (!page_url3.empty()) {
- ArticleEntryPage* page = entry.add_pages();
- page->set_url(page_url3);
- }
- return entry;
-}
-
-ArticleEntry GetSampleEntry(int id) {
- static ArticleEntry entries[] = {
- CreateEntry("entry0", "example.com/1", "example.com/2", "example.com/3"),
- CreateEntry("entry1", "example.com/1", "", ""),
- CreateEntry("entry2", "example.com/p1", "example.com/p2", ""),
- CreateEntry("entry3", "example.com/something/all", "", ""),
- CreateEntry("entry4", "example.com/somethingelse/1", "", ""),
- CreateEntry("entry5", "rock.example.com/p1", "rock.example.com/p2", ""),
- CreateEntry("entry7", "example.com/entry7/1", "example.com/entry7/2", ""),
- CreateEntry("entry8", "example.com/entry8/1", "", ""),
- CreateEntry("entry9", "example.com/entry9/all", "", ""), };
- EXPECT_LT(id, 9);
- return entries[id % 9];
-}
-
-class MockDistillerObserver : public DomDistillerObserver {
- public:
- MOCK_METHOD1(ArticleEntriesUpdated, void(const std::vector<ArticleUpdate>&));
- virtual ~MockDistillerObserver() {}
-};
-
-} // namespace
-
-class DomDistillerStoreTest : public testing::Test {
- public:
- virtual void SetUp() {
- db_model_.clear();
- sync_model_.clear();
- store_model_.clear();
- next_sync_id_ = 1;
- }
-
- virtual void TearDown() {
- store_.reset();
- fake_db_ = NULL;
- fake_sync_processor_ = NULL;
- }
-
- // Creates a simple DomDistillerStore initialized with |store_model_| and
- // with a FakeDB backed by |db_model_|.
- void CreateStore() {
- fake_db_ = new FakeDB(&db_model_);
- store_.reset(test::util::CreateStoreWithFakeDB(fake_db_, &store_model_));
- }
-
- void StartSyncing() {
- fake_sync_processor_ = new FakeSyncChangeProcessor(&sync_model_);
-
- store_->MergeDataAndStartSyncing(
- kDomDistillerModelType,
- SyncDataFromEntryMap(sync_model_),
- make_scoped_ptr<SyncChangeProcessor>(fake_sync_processor_),
- scoped_ptr<SyncErrorFactory>(new FakeSyncErrorFactory()));
- }
-
- protected:
- SyncData CreateSyncData(const ArticleEntry& entry) {
- EntitySpecifics specifics = SpecificsFromEntry(entry);
- return SyncData::CreateRemoteData(
- next_sync_id_++, specifics, Time::UnixEpoch());
- }
-
- SyncDataList SyncDataFromEntryMap(const EntryMap& model) {
- SyncDataList data;
- for (EntryMap::const_iterator it = model.begin(); it != model.end(); ++it) {
- data.push_back(CreateSyncData(it->second));
- }
- return data;
- }
-
- EntryMap db_model_;
- EntryMap sync_model_;
- EntryMap store_model_;
-
- scoped_ptr<DomDistillerStore> store_;
-
- // Both owned by |store_|.
- FakeDB* fake_db_;
- FakeSyncChangeProcessor* fake_sync_processor_;
-
- int64 next_sync_id_;
-};
-
-AssertionResult AreEntriesEqual(const EntryVector& entries,
- EntryMap expected_entries) {
- if (entries.size() != expected_entries.size())
- return AssertionFailure() << "Expected " << expected_entries.size()
- << " entries but found " << entries.size();
-
- for (EntryVector::const_iterator it = entries.begin(); it != entries.end();
- ++it) {
- EntryMap::iterator expected_it = expected_entries.find(it->entry_id());
- if (expected_it == expected_entries.end()) {
- return AssertionFailure() << "Found unexpected entry with id <"
- << it->entry_id() << ">";
- }
- if (!AreEntriesEqual(expected_it->second, *it)) {
- return AssertionFailure() << "Mismatched entry with id <"
- << it->entry_id() << ">";
- }
- expected_entries.erase(expected_it);
- }
- return AssertionSuccess();
-}
-
-AssertionResult AreEntryMapsEqual(const EntryMap& left, const EntryMap& right) {
- EntryVector entries;
- for (EntryMap::const_iterator it = left.begin(); it != left.end(); ++it) {
- entries.push_back(it->second);
- }
- return AreEntriesEqual(entries, right);
-}
-
-TEST_F(DomDistillerStoreTest, TestDatabaseLoad) {
- AddEntry(GetSampleEntry(0), &db_model_);
- AddEntry(GetSampleEntry(1), &db_model_);
- AddEntry(GetSampleEntry(2), &db_model_);
-
- CreateStore();
-
- fake_db_->InitCallback(true);
- EXPECT_EQ(fake_db_->GetDirectory(), FakeDB::DirectoryForTestDB());
-
- fake_db_->LoadCallback(true);
- EXPECT_TRUE(AreEntriesEqual(store_->GetEntries(), db_model_));
-}
-
-TEST_F(DomDistillerStoreTest, TestDatabaseLoadMerge) {
- AddEntry(GetSampleEntry(0), &db_model_);
- AddEntry(GetSampleEntry(1), &db_model_);
- AddEntry(GetSampleEntry(2), &db_model_);
-
- AddEntry(GetSampleEntry(2), &store_model_);
- AddEntry(GetSampleEntry(3), &store_model_);
- AddEntry(GetSampleEntry(4), &store_model_);
-
- EntryMap expected_model(db_model_);
- AddEntry(GetSampleEntry(3), &expected_model);
- AddEntry(GetSampleEntry(4), &expected_model);
-
- CreateStore();
- fake_db_->InitCallback(true);
- fake_db_->LoadCallback(true);
-
- EXPECT_TRUE(AreEntriesEqual(store_->GetEntries(), expected_model));
- EXPECT_TRUE(AreEntryMapsEqual(db_model_, expected_model));
-}
-
-TEST_F(DomDistillerStoreTest, TestAddAndRemoveEntry) {
- CreateStore();
- fake_db_->InitCallback(true);
- fake_db_->LoadCallback(true);
-
- EXPECT_TRUE(store_->GetEntries().empty());
- EXPECT_TRUE(db_model_.empty());
-
- store_->AddEntry(GetSampleEntry(0));
-
- EntryMap expected_model;
- AddEntry(GetSampleEntry(0), &expected_model);
-
- EXPECT_TRUE(AreEntriesEqual(store_->GetEntries(), expected_model));
- EXPECT_TRUE(AreEntryMapsEqual(db_model_, expected_model));
-
- store_->RemoveEntry(GetSampleEntry(0));
- expected_model.clear();
-
- EXPECT_TRUE(AreEntriesEqual(store_->GetEntries(), expected_model));
- EXPECT_TRUE(AreEntryMapsEqual(db_model_, expected_model));
-}
-
-TEST_F(DomDistillerStoreTest, TestAddAndUpdateEntry) {
- CreateStore();
- fake_db_->InitCallback(true);
- fake_db_->LoadCallback(true);
-
- EXPECT_TRUE(store_->GetEntries().empty());
- EXPECT_TRUE(db_model_.empty());
-
- store_->AddEntry(GetSampleEntry(0));
-
- EntryMap expected_model;
- AddEntry(GetSampleEntry(0), &expected_model);
-
- EXPECT_TRUE(AreEntriesEqual(store_->GetEntries(), expected_model));
- EXPECT_TRUE(AreEntryMapsEqual(db_model_, expected_model));
-
- EXPECT_FALSE(store_->UpdateEntry(GetSampleEntry(0)));
-
- ArticleEntry updated_entry(GetSampleEntry(0));
- updated_entry.set_title("updated title.");
- EXPECT_TRUE(store_->UpdateEntry(updated_entry));
- expected_model.clear();
- AddEntry(updated_entry, &expected_model);
-
- EXPECT_TRUE(AreEntriesEqual(store_->GetEntries(), expected_model));
- EXPECT_TRUE(AreEntryMapsEqual(db_model_, expected_model));
-
- store_->RemoveEntry(updated_entry);
- EXPECT_FALSE(store_->UpdateEntry(updated_entry));
- EXPECT_FALSE(store_->UpdateEntry(GetSampleEntry(0)));
-}
-
-TEST_F(DomDistillerStoreTest, TestSyncMergeWithEmptyDatabase) {
- AddEntry(GetSampleEntry(0), &sync_model_);
- AddEntry(GetSampleEntry(1), &sync_model_);
- AddEntry(GetSampleEntry(2), &sync_model_);
-
- CreateStore();
- fake_db_->InitCallback(true);
- fake_db_->LoadCallback(true);
-
- StartSyncing();
-
- EXPECT_TRUE(AreEntriesEqual(store_->GetEntries(), sync_model_));
- EXPECT_TRUE(AreEntryMapsEqual(db_model_, sync_model_));
-}
-
-TEST_F(DomDistillerStoreTest, TestSyncMergeAfterDatabaseLoad) {
- AddEntry(GetSampleEntry(0), &db_model_);
- AddEntry(GetSampleEntry(1), &db_model_);
- AddEntry(GetSampleEntry(2), &db_model_);
-
- AddEntry(GetSampleEntry(2), &sync_model_);
- AddEntry(GetSampleEntry(3), &sync_model_);
- AddEntry(GetSampleEntry(4), &sync_model_);
-
- EntryMap expected_model(db_model_);
- AddEntry(GetSampleEntry(3), &expected_model);
- AddEntry(GetSampleEntry(4), &expected_model);
-
- CreateStore();
- fake_db_->InitCallback(true);
- fake_db_->LoadCallback(true);
-
- EXPECT_TRUE(AreEntriesEqual(store_->GetEntries(), db_model_));
-
- StartSyncing();
-
- EXPECT_TRUE(AreEntriesEqual(store_->GetEntries(), expected_model));
- EXPECT_TRUE(AreEntryMapsEqual(db_model_, expected_model));
- EXPECT_TRUE(AreEntryMapsEqual(sync_model_, expected_model));
-}
-
-TEST_F(DomDistillerStoreTest, TestGetAllSyncData) {
- AddEntry(GetSampleEntry(0), &db_model_);
- AddEntry(GetSampleEntry(1), &db_model_);
- AddEntry(GetSampleEntry(2), &db_model_);
-
- AddEntry(GetSampleEntry(2), &sync_model_);
- AddEntry(GetSampleEntry(3), &sync_model_);
- AddEntry(GetSampleEntry(4), &sync_model_);
-
- EntryMap expected_model(db_model_);
- AddEntry(GetSampleEntry(3), &expected_model);
- AddEntry(GetSampleEntry(4), &expected_model);
-
- CreateStore();
-
- fake_db_->InitCallback(true);
- fake_db_->LoadCallback(true);
-
- StartSyncing();
-
- SyncDataList data = store_->GetAllSyncData(kDomDistillerModelType);
- EntryVector entries;
- for (SyncDataList::iterator it = data.begin(); it != data.end(); ++it) {
- entries.push_back(EntryFromSpecifics(it->GetSpecifics()));
- }
- EXPECT_TRUE(AreEntriesEqual(entries, expected_model));
-}
-
-TEST_F(DomDistillerStoreTest, TestProcessSyncChanges) {
- AddEntry(GetSampleEntry(0), &db_model_);
- AddEntry(GetSampleEntry(1), &db_model_);
- sync_model_ = db_model_;
-
- EntryMap expected_model(db_model_);
- AddEntry(GetSampleEntry(2), &expected_model);
- AddEntry(GetSampleEntry(3), &expected_model);
-
- CreateStore();
-
- fake_db_->InitCallback(true);
- fake_db_->LoadCallback(true);
-
- StartSyncing();
-
- SyncChangeList changes;
- changes.push_back(SyncChange(
- FROM_HERE, SyncChange::ACTION_ADD, CreateSyncData(GetSampleEntry(2))));
- changes.push_back(SyncChange(
- FROM_HERE, SyncChange::ACTION_ADD, CreateSyncData(GetSampleEntry(3))));
-
- store_->ProcessSyncChanges(FROM_HERE, changes);
-
- EXPECT_TRUE(AreEntriesEqual(store_->GetEntries(), expected_model));
- EXPECT_TRUE(AreEntryMapsEqual(db_model_, expected_model));
-}
-
-TEST_F(DomDistillerStoreTest, TestSyncMergeWithSecondDomDistillerStore) {
- AddEntry(GetSampleEntry(0), &db_model_);
- AddEntry(GetSampleEntry(1), &db_model_);
- AddEntry(GetSampleEntry(2), &db_model_);
-
- EntryMap other_db_model;
- AddEntry(GetSampleEntry(2), &other_db_model);
- AddEntry(GetSampleEntry(3), &other_db_model);
- AddEntry(GetSampleEntry(4), &other_db_model);
-
- EntryMap expected_model(db_model_);
- AddEntry(GetSampleEntry(3), &expected_model);
- AddEntry(GetSampleEntry(4), &expected_model);
-
- CreateStore();
-
- fake_db_->InitCallback(true);
- fake_db_->LoadCallback(true);
-
- FakeDB* other_fake_db = new FakeDB(&other_db_model);
- scoped_ptr<DomDistillerStore> owned_other_store(new DomDistillerStore(
- scoped_ptr<DomDistillerDatabaseInterface>(other_fake_db),
- std::vector<ArticleEntry>(),
- base::FilePath(FILE_PATH_LITERAL("/fake/other/path"))));
- DomDistillerStore* other_store = owned_other_store.get();
- other_fake_db->InitCallback(true);
- other_fake_db->LoadCallback(true);
-
- EXPECT_FALSE(AreEntriesEqual(store_->GetEntries(), expected_model));
- EXPECT_FALSE(AreEntriesEqual(other_store->GetEntries(), expected_model));
- ASSERT_TRUE(AreEntriesEqual(other_store->GetEntries(), other_db_model));
-
- FakeSyncErrorFactory* other_error_factory = new FakeSyncErrorFactory();
- store_->MergeDataAndStartSyncing(
- kDomDistillerModelType,
- SyncDataFromEntryMap(other_db_model),
- owned_other_store.PassAs<SyncChangeProcessor>(),
- make_scoped_ptr<SyncErrorFactory>(other_error_factory));
-
- EXPECT_TRUE(AreEntriesEqual(store_->GetEntries(), expected_model));
- EXPECT_TRUE(AreEntriesEqual(other_store->GetEntries(), expected_model));
-}
-
-TEST_F(DomDistillerStoreTest, TestObserver) {
- CreateStore();
- MockDistillerObserver observer;
- store_->AddObserver(&observer);
- fake_db_->InitCallback(true);
- fake_db_->LoadCallback(true);
- std::vector<DomDistillerObserver::ArticleUpdate> expected_updates;
- DomDistillerObserver::ArticleUpdate update;
- update.entry_id = GetSampleEntry(0).entry_id();
- update.update_type = DomDistillerObserver::ArticleUpdate::ADD;
- expected_updates.push_back(update);
- EXPECT_CALL(
- observer,
- ArticleEntriesUpdated(test::util::HasExpectedUpdates(expected_updates)));
- store_->AddEntry(GetSampleEntry(0));
-
- expected_updates.clear();
- update.entry_id = GetSampleEntry(1).entry_id();
- update.update_type = DomDistillerObserver::ArticleUpdate::ADD;
- expected_updates.push_back(update);
- EXPECT_CALL(
- observer,
- ArticleEntriesUpdated(test::util::HasExpectedUpdates(expected_updates)));
- store_->AddEntry(GetSampleEntry(1));
-
- expected_updates.clear();
- update.entry_id = GetSampleEntry(0).entry_id();
- update.update_type = DomDistillerObserver::ArticleUpdate::REMOVE;
- expected_updates.clear();
- expected_updates.push_back(update);
- EXPECT_CALL(
- observer,
- ArticleEntriesUpdated(test::util::HasExpectedUpdates(expected_updates)));
- store_->RemoveEntry(GetSampleEntry(0));
-
- // Add entry_id = 3 and update entry_id = 1.
- expected_updates.clear();
- SyncDataList change_data;
- change_data.push_back(CreateSyncData(GetSampleEntry(3)));
- ArticleEntry updated_entry(GetSampleEntry(1));
- updated_entry.set_title("changed_title");
- change_data.push_back(CreateSyncData(updated_entry));
- update.entry_id = GetSampleEntry(3).entry_id();
- update.update_type = DomDistillerObserver::ArticleUpdate::ADD;
- expected_updates.push_back(update);
- update.entry_id = GetSampleEntry(1).entry_id();
- update.update_type = DomDistillerObserver::ArticleUpdate::UPDATE;
- expected_updates.push_back(update);
- EXPECT_CALL(
- observer,
- ArticleEntriesUpdated(test::util::HasExpectedUpdates(expected_updates)));
-
- FakeSyncErrorFactory* fake_error_factory = new FakeSyncErrorFactory();
- EntryMap fake_model;
- FakeSyncChangeProcessor* fake_sync_change_processor =
- new FakeSyncChangeProcessor(&fake_model);
- store_->MergeDataAndStartSyncing(
- kDomDistillerModelType,
- change_data,
- make_scoped_ptr<SyncChangeProcessor>(fake_sync_change_processor),
- make_scoped_ptr<SyncErrorFactory>(fake_error_factory));
-}
-
-} // namespace dom_distiller