Chromium Code Reviews| Index: chrome/browser/sync/engine/syncapi_unittest.cc |
| diff --git a/chrome/browser/sync/engine/syncapi_unittest.cc b/chrome/browser/sync/engine/syncapi_unittest.cc |
| index 229947bb53370a889ab12242be97ea29a948f1b6..586768c1c9d678ceb1a77257e84745989b86c70c 100644 |
| --- a/chrome/browser/sync/engine/syncapi_unittest.cc |
| +++ b/chrome/browser/sync/engine/syncapi_unittest.cc |
| @@ -388,10 +388,9 @@ TEST_F(SyncApiTest, WriteAndReadPassword) { |
| namespace { |
| -void CheckNodeValue(const BaseNode& node, const DictionaryValue& value) { |
| +void CheckNodeValue(const BaseNode& node, const DictionaryValue& value, |
| + bool is_detailed) { |
| ExpectInt64Value(node.GetId(), value, "id"); |
| - ExpectInt64Value(node.GetModificationTime(), value, "modificationTime"); |
| - ExpectInt64Value(node.GetParentId(), value, "parentId"); |
| { |
| bool is_folder = false; |
| EXPECT_TRUE(value.GetBoolean("isFolder", &is_folder)); |
| @@ -414,28 +413,46 @@ void CheckNodeValue(const BaseNode& node, const DictionaryValue& value) { |
| ADD_FAILURE(); |
| } |
| } |
| - ExpectInt64Value(node.GetExternalId(), value, "externalId"); |
| - ExpectInt64Value(node.GetPredecessorId(), value, "predecessorId"); |
| - ExpectInt64Value(node.GetSuccessorId(), value, "successorId"); |
| - ExpectInt64Value(node.GetFirstChildId(), value, "firstChildId"); |
| - { |
| - scoped_ptr<DictionaryValue> expected_entry(node.GetEntry()->ToValue()); |
| - Value* entry = NULL; |
| - EXPECT_TRUE(value.Get("entry", &entry)); |
| - EXPECT_TRUE(Value::Equals(entry, expected_entry.get())); |
| + if (is_detailed) { |
| + ExpectInt64Value(node.GetParentId(), value, "parentId"); |
| + ExpectInt64Value(node.GetModificationTime(), value, "modificationTime"); |
| + ExpectInt64Value(node.GetExternalId(), value, "externalId"); |
| + ExpectInt64Value(node.GetPredecessorId(), value, "predecessorId"); |
| + ExpectInt64Value(node.GetSuccessorId(), value, "successorId"); |
| + ExpectInt64Value(node.GetFirstChildId(), value, "firstChildId"); |
| + { |
| + scoped_ptr<DictionaryValue> expected_entry(node.GetEntry()->ToValue()); |
| + Value* entry = NULL; |
| + EXPECT_TRUE(value.Get("entry", &entry)); |
| + EXPECT_TRUE(Value::Equals(entry, expected_entry.get())); |
| + } |
| + EXPECT_EQ(11u, value.size()); |
| + } else { |
| + EXPECT_EQ(4u, value.size()); |
| } |
| - EXPECT_EQ(11u, value.size()); |
| } |
| } // namespace |
| -TEST_F(SyncApiTest, BaseNodeToValue) { |
| +TEST_F(SyncApiTest, BaseNodeGetSummaryAsValue) { |
| + ReadTransaction trans(test_user_share_.user_share()); |
| + ReadNode node(&trans); |
| + node.InitByRootLookup(); |
| + scoped_ptr<DictionaryValue> details(node.GetSummaryAsValue()); |
| + if (details.get()) { |
| + CheckNodeValue(node, *details, false); |
| + } else { |
| + ADD_FAILURE(); |
| + } |
| +} |
| + |
| +TEST_F(SyncApiTest, BaseNodeGetDetailsAsValue) { |
| ReadTransaction trans(test_user_share_.user_share()); |
| ReadNode node(&trans); |
| node.InitByRootLookup(); |
| - scoped_ptr<DictionaryValue> value(node.ToValue()); |
| - if (value.get()) { |
| - CheckNodeValue(node, *value); |
| + scoped_ptr<DictionaryValue> details(node.GetDetailsAsValue()); |
| + if (details.get()) { |
| + CheckNodeValue(node, *details, true); |
| } else { |
| ADD_FAILURE(); |
| } |
| @@ -473,8 +490,8 @@ void CheckNonDeleteChangeRecordValue(const SyncManager::ChangeRecord& record, |
| { |
| ReadNode node(trans); |
| EXPECT_TRUE(node.InitByIdLookup(record.id)); |
| - scoped_ptr<DictionaryValue> expected_node_value(node.ToValue()); |
| - ExpectDictDictionaryValue(*expected_node_value, value, "node"); |
| + scoped_ptr<DictionaryValue> expected_details(node.GetDetailsAsValue()); |
| + ExpectDictDictionaryValue(*expected_details, value, "node"); |
| } |
| } |
| @@ -837,7 +854,7 @@ TEST_F(SyncManagerTest, ProcessMessage) { |
| } |
| } |
| -TEST_F(SyncManagerTest, ProcessMessageGetRootNode) { |
| +TEST_F(SyncManagerTest, ProcessMessageGetRootNodeDetails) { |
| const JsArgList kNoArgs; |
| browser_sync::JsBackend* js_backend = sync_manager_.GetJsBackend(); |
| @@ -848,13 +865,13 @@ TEST_F(SyncManagerTest, ProcessMessageGetRootNode) { |
| JsArgList return_args; |
| EXPECT_CALL(event_router, |
| - RouteJsMessageReply("getRootNode", _, &event_handler)) |
| + RouteJsMessageReply("getRootNodeDetails", _, &event_handler)) |
| .WillOnce(SaveArg<1>(&return_args)); |
| js_backend->SetParentJsEventRouter(&event_router); |
| // Should trigger the reply. |
| - js_backend->ProcessMessage("getRootNode", kNoArgs, &event_handler); |
| + js_backend->ProcessMessage("getRootNodeDetails", kNoArgs, &event_handler); |
| EXPECT_EQ(1u, return_args.Get().GetSize()); |
| DictionaryValue* node_info = NULL; |
| @@ -863,7 +880,7 @@ TEST_F(SyncManagerTest, ProcessMessageGetRootNode) { |
| ReadTransaction trans(sync_manager_.GetUserShare()); |
| ReadNode node(&trans); |
| node.InitByRootLookup(); |
| - CheckNodeValue(node, *node_info); |
| + CheckNodeValue(node, *node_info, true); |
| } else { |
| ADD_FAILURE(); |
| } |
| @@ -873,7 +890,8 @@ TEST_F(SyncManagerTest, ProcessMessageGetRootNode) { |
| void CheckGetNodesByIdReturnArgs(const SyncManager& sync_manager, |
| const JsArgList& return_args, |
| - int64 id) { |
| + int64 id, |
| + bool is_detailed) { |
| EXPECT_EQ(1u, return_args.Get().GetSize()); |
| ListValue* nodes = NULL; |
| ASSERT_TRUE(return_args.Get().GetList(0, &nodes)); |
| @@ -885,123 +903,146 @@ void CheckGetNodesByIdReturnArgs(const SyncManager& sync_manager, |
| ReadTransaction trans(sync_manager.GetUserShare()); |
| ReadNode node(&trans); |
| node.InitByIdLookup(id); |
| - CheckNodeValue(node, *node_info); |
| + CheckNodeValue(node, *node_info, is_detailed); |
| } |
| -TEST_F(SyncManagerTest, ProcessMessageGetNodesById) { |
| - int64 child_id = |
| - MakeNode(sync_manager_.GetUserShare(), syncable::BOOKMARKS, "testtag"); |
| +class SyncManagerGetNodesByIdTest : public SyncManagerTest { |
| + protected: |
| + virtual ~SyncManagerGetNodesByIdTest() {} |
| - browser_sync::JsBackend* js_backend = sync_manager_.GetJsBackend(); |
| + void RunGetNodesByIdTest(const char* message_name, bool is_detailed) { |
| + int64 child_id = |
| + MakeNode(sync_manager_.GetUserShare(), |
| + syncable::BOOKMARKS, "testtag"); |
| - StrictMock<MockJsEventHandler> event_handler; |
| - StrictMock<MockJsEventRouter> event_router; |
| + browser_sync::JsBackend* js_backend = sync_manager_.GetJsBackend(); |
| - JsArgList return_args; |
| + StrictMock<MockJsEventHandler> event_handler; |
| + StrictMock<MockJsEventRouter> event_router; |
| - EXPECT_CALL(event_router, |
| - RouteJsMessageReply("getNodesById", _, &event_handler)) |
| - .Times(2).WillRepeatedly(SaveArg<1>(&return_args)); |
| + JsArgList return_args; |
| - js_backend->SetParentJsEventRouter(&event_router); |
| + EXPECT_CALL(event_router, |
| + RouteJsMessageReply(message_name, _, &event_handler)) |
| + .Times(2).WillRepeatedly(SaveArg<1>(&return_args)); |
| - // Should trigger the reply. |
| - { |
| - ListValue args; |
| - ListValue* ids = new ListValue(); |
| - args.Append(ids); |
| - ids->Append(Value::CreateStringValue("1")); |
| - js_backend->ProcessMessage("getNodesById", |
| - JsArgList(&args), &event_handler); |
| - } |
| + js_backend->SetParentJsEventRouter(&event_router); |
| - CheckGetNodesByIdReturnArgs(sync_manager_, return_args, 1); |
| + // Should trigger the reply. |
| + { |
| + ListValue args; |
| + ListValue* ids = new ListValue(); |
| + args.Append(ids); |
| + ids->Append(Value::CreateStringValue("1")); |
|
lipalani1
2011/06/02 18:51:52
shouldnt this be child_id?
akalin
2011/06/02 22:13:33
It should be the id of the root, actually. Refact
|
| + js_backend->ProcessMessage(message_name, |
| + JsArgList(&args), &event_handler); |
| + } |
| - // Should trigger another reply. |
| - { |
| - ListValue args; |
| - ListValue* ids = new ListValue(); |
| - args.Append(ids); |
| - ids->Append(Value::CreateStringValue(base::Int64ToString(child_id))); |
| - js_backend->ProcessMessage("getNodesById", |
| - JsArgList(&args), &event_handler); |
| + CheckGetNodesByIdReturnArgs(sync_manager_, return_args, 1, is_detailed); |
| + |
| + // Should trigger another reply. |
| + { |
| + ListValue args; |
| + ListValue* ids = new ListValue(); |
| + args.Append(ids); |
| + ids->Append(Value::CreateStringValue(base::Int64ToString(child_id))); |
| + js_backend->ProcessMessage(message_name, |
| + JsArgList(&args), &event_handler); |
| + } |
| + |
| + CheckGetNodesByIdReturnArgs(sync_manager_, return_args, child_id, |
| + is_detailed); |
| + |
| + js_backend->RemoveParentJsEventRouter(); |
| } |
| - CheckGetNodesByIdReturnArgs(sync_manager_, return_args, child_id); |
| + void RunGetNodesByIdFailureTest(const char* message_name) { |
| + browser_sync::JsBackend* js_backend = sync_manager_.GetJsBackend(); |
| - js_backend->RemoveParentJsEventRouter(); |
| -} |
| + StrictMock<MockJsEventHandler> event_handler; |
| + StrictMock<MockJsEventRouter> event_router; |
| -TEST_F(SyncManagerTest, ProcessMessageGetNodesByIdFailure) { |
| - browser_sync::JsBackend* js_backend = sync_manager_.GetJsBackend(); |
| + ListValue empty_list_args; |
| + empty_list_args.Append(new ListValue()); |
| - StrictMock<MockJsEventHandler> event_handler; |
| - StrictMock<MockJsEventRouter> event_router; |
| + EXPECT_CALL(event_router, |
| + RouteJsMessageReply(message_name, |
| + HasArgsAsList(empty_list_args), |
| + &event_handler)) |
| + .Times(6); |
| - ListValue empty_list_args; |
| - empty_list_args.Append(new ListValue()); |
| + js_backend->SetParentJsEventRouter(&event_router); |
| - EXPECT_CALL(event_router, |
| - RouteJsMessageReply("getNodesById", |
| - HasArgsAsList(empty_list_args), |
| - &event_handler)) |
| - .Times(6); |
| + { |
| + ListValue args; |
| + js_backend->ProcessMessage(message_name, |
| + JsArgList(&args), &event_handler); |
| + } |
| - js_backend->SetParentJsEventRouter(&event_router); |
| + { |
| + ListValue args; |
| + args.Append(new ListValue()); |
| + js_backend->ProcessMessage(message_name, |
| + JsArgList(&args), &event_handler); |
| + } |
| - { |
| - ListValue args; |
| - js_backend->ProcessMessage("getNodesById", |
| - JsArgList(&args), &event_handler); |
| - } |
| + { |
| + ListValue args; |
| + ListValue* ids = new ListValue(); |
| + args.Append(ids); |
| + ids->Append(Value::CreateStringValue("")); |
| + js_backend->ProcessMessage(message_name, |
| + JsArgList(&args), &event_handler); |
| + } |
| - { |
| - ListValue args; |
| - args.Append(new ListValue()); |
| - js_backend->ProcessMessage("getNodesById", |
| - JsArgList(&args), &event_handler); |
| - } |
| + { |
| + ListValue args; |
| + ListValue* ids = new ListValue(); |
| + args.Append(ids); |
| + ids->Append(Value::CreateStringValue("nonsense")); |
| + js_backend->ProcessMessage(message_name, |
| + JsArgList(&args), &event_handler); |
| + } |
| - { |
| - ListValue args; |
| - ListValue* ids = new ListValue(); |
| - args.Append(ids); |
| - ids->Append(Value::CreateStringValue("")); |
| - js_backend->ProcessMessage("getNodesById", |
| - JsArgList(&args), &event_handler); |
| - } |
| + { |
| + ListValue args; |
| + ListValue* ids = new ListValue(); |
| + args.Append(ids); |
| + ids->Append(Value::CreateStringValue("0")); |
| + js_backend->ProcessMessage(message_name, |
| + JsArgList(&args), &event_handler); |
| + } |
| - { |
| - ListValue args; |
| - ListValue* ids = new ListValue(); |
| - args.Append(ids); |
| - ids->Append(Value::CreateStringValue("nonsense")); |
| - js_backend->ProcessMessage("getNodesById", |
| - JsArgList(&args), &event_handler); |
| - } |
| + { |
| + ListValue args; |
| + ListValue* ids = new ListValue(); |
| + args.Append(ids); |
| + ids->Append(Value::CreateStringValue("9999")); |
| + js_backend->ProcessMessage(message_name, |
| + JsArgList(&args), &event_handler); |
| + } |
| - { |
| - ListValue args; |
| - ListValue* ids = new ListValue(); |
| - args.Append(ids); |
| - ids->Append(Value::CreateStringValue("0")); |
| - js_backend->ProcessMessage("getNodesById", |
| - JsArgList(&args), &event_handler); |
| + js_backend->RemoveParentJsEventRouter(); |
| } |
| +}; |
| - { |
| - ListValue args; |
| - ListValue* ids = new ListValue(); |
| - args.Append(ids); |
| - ids->Append(Value::CreateStringValue("9999")); |
| - js_backend->ProcessMessage("getNodesById", |
| - JsArgList(&args), &event_handler); |
| - } |
| +TEST_F(SyncManagerGetNodesByIdTest, GetNodeSummariesById) { |
| + RunGetNodesByIdTest("getNodeSummariesById", false); |
| +} |
| - js_backend->RemoveParentJsEventRouter(); |
| +TEST_F(SyncManagerGetNodesByIdTest, GetNodeDetailsById) { |
| + RunGetNodesByIdTest("getNodeDetailsById", true); |
| } |
| -TEST_F(SyncManagerTest, ProcessMessageGetChildNodeIds) { |
| +TEST_F(SyncManagerGetNodesByIdTest, GetNodeSummariesByIdFailure) { |
| + RunGetNodesByIdFailureTest("getNodeSummariesById"); |
| +} |
| + |
| +TEST_F(SyncManagerGetNodesByIdTest, GetNodeDetailsByIdFailure) { |
| + RunGetNodesByIdFailureTest("getNodeDetailsById"); |
| +} |
| + |
| +TEST_F(SyncManagerTest, GetChildNodeIds) { |
| browser_sync::JsBackend* js_backend = sync_manager_.GetJsBackend(); |
| StrictMock<MockJsEventHandler> event_handler; |
| @@ -1032,7 +1073,7 @@ TEST_F(SyncManagerTest, ProcessMessageGetChildNodeIds) { |
| js_backend->RemoveParentJsEventRouter(); |
| } |
| -TEST_F(SyncManagerTest, ProcessMessageGetChildNodeIdsFailure) { |
| +TEST_F(SyncManagerTest, GetChildNodeIdsFailure) { |
| browser_sync::JsBackend* js_backend = sync_manager_.GetJsBackend(); |
| StrictMock<MockJsEventHandler> event_handler; |
| @@ -1086,6 +1127,8 @@ TEST_F(SyncManagerTest, ProcessMessageGetChildNodeIdsFailure) { |
| js_backend->RemoveParentJsEventRouter(); |
| } |
| +// TODO(akalin): Add unit tests for findNodesContainingString message. |
| + |
| TEST_F(SyncManagerTest, OnNotificationStateChange) { |
| InSequence dummy; |
| StrictMock<MockJsEventRouter> event_router; |