blob: 5a261bf1ee9f88c0e1e8298aeb2f908f7287bf44 [file] [log] [blame]
// 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.
/**
* Test fixture for sync internals WebUI testing.
* @constructor
* @extends {testing.Test}
*/
function SyncInternalsWebUITest() {}
SyncInternalsWebUITest.prototype = {
__proto__: testing.Test.prototype,
/**
* Browse to the sync internals page.
* @override
*/
browsePreload: 'chrome://sync-internals',
/** @override */
preLoad: function() {
// TODO(zea): mock out the the sync info to fake an active syncer.
},
/**
* Checks aboutInfo's details section for the specified field.
* @param {boolean} isValid Whether the field is valid.
* @param {string} key The name of the key to search for in details.
* @param {string} value The expected value if |key| is found.
* @return {boolean} whether the field was found in the details.
* @protected
*/
hasInDetails: function(isValid, key, value) {
var details = chrome.sync.aboutInfo.details;
if (!details)
return false;
for (var i = 0; i < details.length; ++i) {
if (!details[i].data)
continue;
for (var j = 0; j < details[i].data.length; ++j) {
var obj = details[i].data[j];
if (obj.stat_name == key)
return obj.is_valid == isValid && obj.stat_value == value;
}
}
return false;
}
};
TEST_F('SyncInternalsWebUITest', 'Uninitialized', function() {
assertNotEquals(null, chrome.sync.aboutInfo);
expectTrue(this.hasInDetails(true, 'Username', ''));
expectTrue(this.hasInDetails(false, 'Summary', 'Uninitialized'));
});
TEST_F('SyncInternalsWebUITest', 'SearchTabDoesntChangeOnItemSelect',
function() {
// Select the search tab.
$('sync-search-tab').selected = true;
expectTrue($('sync-search-tab').selected);
// Build the data model and attach to result list.
cr.ui.List.decorate($('sync-results-list'));
$('sync-results-list').dataModel = new cr.ui.ArrayDataModel([
{
value: 'value 0',
toString: function() { return 'node 0'; },
},
{
value: 'value 1',
toString: function() { return 'node 1'; },
}
]);
// Select the first list item and verify the search tab remains selected.
$('sync-results-list').getListItemByIndex(0).selected = true;
expectTrue($('sync-search-tab').selected);
});