123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- // Copyright 2018 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/sync/model/in_memory_metadata_change_list.h"
- #include "testing/gmock/include/gmock/gmock.h"
- #include "testing/gtest/include/gtest/gtest.h"
- namespace syncer {
- namespace {
- using testing::StrictMock;
- MATCHER_P(EqualsProto, expected, "") {
- return arg.SerializeAsString() == expected.SerializeAsString();
- }
- class MockMetadataChangeList : public MetadataChangeList {
- public:
- MOCK_METHOD(void,
- UpdateModelTypeState,
- (const sync_pb::ModelTypeState& model_type_state),
- (override));
- MOCK_METHOD(void, ClearModelTypeState, (), (override));
- MOCK_METHOD(void,
- UpdateMetadata,
- (const std::string& storage_key,
- const sync_pb::EntityMetadata& metadata),
- (override));
- MOCK_METHOD(void,
- ClearMetadata,
- (const std::string& storage_key),
- (override));
- };
- TEST(InMemoryMetadataChangeListTest, ShouldTransferNothingIfEmptyChangeList) {
- StrictMock<MockMetadataChangeList> mock_change_list;
- InMemoryMetadataChangeList cl;
- // StrictMock verifies no calls are issued.
- cl.TransferChangesTo(&mock_change_list);
- }
- TEST(InMemoryMetadataChangeListTest, ShouldTransferUpdateModelTypeState) {
- StrictMock<MockMetadataChangeList> mock_change_list;
- InMemoryMetadataChangeList cl;
- sync_pb::ModelTypeState state;
- state.set_encryption_key_name("ekn");
- cl.UpdateModelTypeState(state);
- EXPECT_CALL(mock_change_list, UpdateModelTypeState(EqualsProto(state)));
- cl.TransferChangesTo(&mock_change_list);
- }
- TEST(InMemoryMetadataChangeListTest, ShouldTransferClearModelTypeState) {
- StrictMock<MockMetadataChangeList> mock_change_list;
- InMemoryMetadataChangeList cl;
- cl.ClearModelTypeState();
- EXPECT_CALL(mock_change_list, ClearModelTypeState());
- cl.TransferChangesTo(&mock_change_list);
- }
- TEST(InMemoryMetadataChangeListTest, ShouldTransferUpdateMetadata) {
- StrictMock<MockMetadataChangeList> mock_change_list;
- InMemoryMetadataChangeList cl;
- sync_pb::EntityMetadata metadata;
- metadata.set_client_tag_hash("some_hash");
- cl.UpdateMetadata("client_tag", metadata);
- EXPECT_CALL(mock_change_list,
- UpdateMetadata("client_tag", EqualsProto(metadata)));
- cl.TransferChangesTo(&mock_change_list);
- }
- TEST(InMemoryMetadataChangeListTest, ShouldTransferClearMetadata) {
- StrictMock<MockMetadataChangeList> mock_change_list;
- InMemoryMetadataChangeList cl;
- cl.ClearMetadata("client_tag");
- EXPECT_CALL(mock_change_list, ClearMetadata("client_tag"));
- cl.TransferChangesTo(&mock_change_list);
- }
- TEST(InMemoryMetadataChangeListTest, ShouldTransferMultipleChanges) {
- StrictMock<MockMetadataChangeList> mock_change_list;
- InMemoryMetadataChangeList cl;
- sync_pb::ModelTypeState state;
- state.set_encryption_key_name("ekn");
- cl.UpdateModelTypeState(state);
- sync_pb::EntityMetadata metadata;
- metadata.set_client_tag_hash("some_hash");
- cl.UpdateMetadata("client_tag", metadata);
- EXPECT_CALL(mock_change_list, UpdateModelTypeState(EqualsProto(state)));
- EXPECT_CALL(mock_change_list,
- UpdateMetadata("client_tag", EqualsProto(metadata)));
- cl.TransferChangesTo(&mock_change_list);
- }
- TEST(InMemoryMetadataChangeListTest, ShouldTransferClearDespitePriorUpdates) {
- StrictMock<MockMetadataChangeList> mock_change_list;
- InMemoryMetadataChangeList cl;
- // Updates that should be ignored due to the later clears.
- {
- sync_pb::ModelTypeState state;
- state.set_encryption_key_name("ekn");
- cl.UpdateModelTypeState(state);
- sync_pb::EntityMetadata metadata;
- metadata.set_client_tag_hash("some_hash");
- cl.UpdateMetadata("client_tag", metadata);
- }
- cl.ClearModelTypeState();
- cl.ClearMetadata("client_tag");
- EXPECT_CALL(mock_change_list, ClearModelTypeState());
- EXPECT_CALL(mock_change_list, ClearMetadata("client_tag"));
- cl.TransferChangesTo(&mock_change_list);
- }
- } // namespace
- } // namespace syncer
|