| // Copyright 2014 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 "sync/api/sync_data.h" |
| |
| #include <string> |
| |
| #include "base/memory/ref_counted_memory.h" |
| #include "base/message_loop/message_loop.h" |
| #include "base/thread_task_runner_handle.h" |
| #include "base/time/time.h" |
| #include "sync/api/attachments/attachment_id.h" |
| #include "sync/internal_api/public/attachments/attachment_service.h" |
| #include "sync/internal_api/public/attachments/attachment_service_impl.h" |
| #include "sync/internal_api/public/attachments/attachment_service_proxy.h" |
| #include "sync/protocol/sync.pb.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| |
| using std::string; |
| |
| namespace syncer { |
| |
| namespace { |
| |
| const string kSyncTag = "3984729834"; |
| const ModelType kDatatype = syncer::PREFERENCES; |
| const string kNonUniqueTitle = "my preference"; |
| const int64 kId = 439829; |
| const base::Time kLastModifiedTime = base::Time(); |
| |
| class SyncDataTest : public testing::Test { |
| protected: |
| SyncDataTest() |
| : attachment_service(AttachmentServiceImpl::CreateForTest()), |
| attachment_service_weak_ptr_factory(attachment_service.get()), |
| attachment_service_proxy( |
| base::ThreadTaskRunnerHandle::Get(), |
| attachment_service_weak_ptr_factory.GetWeakPtr()) {} |
| base::MessageLoop loop; |
| sync_pb::EntitySpecifics specifics; |
| scoped_ptr<AttachmentService> attachment_service; |
| base::WeakPtrFactory<AttachmentService> attachment_service_weak_ptr_factory; |
| AttachmentServiceProxy attachment_service_proxy; |
| }; |
| |
| TEST_F(SyncDataTest, NoArgCtor) { |
| SyncData data; |
| EXPECT_FALSE(data.IsValid()); |
| } |
| |
| TEST_F(SyncDataTest, CreateLocalDelete) { |
| SyncData data = SyncData::CreateLocalDelete(kSyncTag, kDatatype); |
| EXPECT_TRUE(data.IsValid()); |
| EXPECT_TRUE(data.IsLocal()); |
| EXPECT_EQ(kSyncTag, SyncDataLocal(data).GetTag()); |
| EXPECT_EQ(kDatatype, data.GetDataType()); |
| } |
| |
| TEST_F(SyncDataTest, CreateLocalData) { |
| specifics.mutable_preference(); |
| SyncData data = |
| SyncData::CreateLocalData(kSyncTag, kNonUniqueTitle, specifics); |
| EXPECT_TRUE(data.IsValid()); |
| EXPECT_TRUE(data.IsLocal()); |
| EXPECT_EQ(kSyncTag, SyncDataLocal(data).GetTag()); |
| EXPECT_EQ(kDatatype, data.GetDataType()); |
| EXPECT_EQ(kNonUniqueTitle, data.GetTitle()); |
| EXPECT_TRUE(data.GetSpecifics().has_preference()); |
| } |
| |
| TEST_F(SyncDataTest, CreateLocalDataWithAttachments) { |
| specifics.mutable_preference(); |
| AttachmentIdList attachment_ids; |
| attachment_ids.push_back(AttachmentId::Create()); |
| attachment_ids.push_back(AttachmentId::Create()); |
| attachment_ids.push_back(AttachmentId::Create()); |
| |
| SyncData data = SyncData::CreateLocalDataWithAttachments( |
| kSyncTag, kNonUniqueTitle, specifics, attachment_ids); |
| EXPECT_TRUE(data.IsValid()); |
| EXPECT_TRUE(data.IsLocal()); |
| EXPECT_EQ(kSyncTag, SyncDataLocal(data).GetTag()); |
| EXPECT_EQ(kDatatype, data.GetDataType()); |
| EXPECT_EQ(kNonUniqueTitle, data.GetTitle()); |
| EXPECT_TRUE(data.GetSpecifics().has_preference()); |
| attachment_ids = data.GetAttachmentIds(); |
| EXPECT_EQ(3U, attachment_ids.size()); |
| } |
| |
| TEST_F(SyncDataTest, CreateLocalDataWithAttachments_EmptyListOfAttachments) { |
| specifics.mutable_preference(); |
| AttachmentIdList attachment_ids; |
| SyncData data = SyncData::CreateLocalDataWithAttachments( |
| kSyncTag, kNonUniqueTitle, specifics, attachment_ids); |
| EXPECT_TRUE(data.IsValid()); |
| EXPECT_TRUE(data.IsLocal()); |
| EXPECT_EQ(kSyncTag, SyncDataLocal(data).GetTag()); |
| EXPECT_EQ(kDatatype, data.GetDataType()); |
| EXPECT_EQ(kNonUniqueTitle, data.GetTitle()); |
| EXPECT_TRUE(data.GetSpecifics().has_preference()); |
| EXPECT_TRUE(data.GetAttachmentIds().empty()); |
| } |
| |
| TEST_F(SyncDataTest, CreateRemoteData) { |
| specifics.mutable_preference(); |
| SyncData data = SyncData::CreateRemoteData(kId, |
| specifics, |
| kLastModifiedTime, |
| AttachmentIdList(), |
| attachment_service_proxy); |
| EXPECT_TRUE(data.IsValid()); |
| EXPECT_FALSE(data.IsLocal()); |
| EXPECT_EQ(kId, SyncDataRemote(data).GetId()); |
| EXPECT_EQ(kLastModifiedTime, SyncDataRemote(data).GetModifiedTime()); |
| EXPECT_TRUE(data.GetSpecifics().has_preference()); |
| EXPECT_TRUE(data.GetAttachmentIds().empty()); |
| } |
| |
| // TODO(maniscalco): Add test cases that verify GetLocalAttachmentsForUpload and |
| // DropAttachments calls are passed through to the underlying AttachmentService. |
| |
| } // namespace |
| |
| } // namespace syncer |