blob: 0a017b5105ab6a5e8a93734db42f0838801fc407 [file] [log] [blame]
// 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.
'use strict';
/**
* Tests if the files initially added by the C++ side are displayed, and
* that a subsequently added file shows up.
*
* @param {string} path Directory path to be tested.
*/
function fileDisplay(path) {
var appId;
var expectedFilesBefore =
TestEntryInfo.getExpectedRows(path == RootPath.DRIVE ?
BASIC_DRIVE_ENTRY_SET : BASIC_LOCAL_ENTRY_SET).sort();
var expectedFilesAfter =
expectedFilesBefore.concat([ENTRIES.newlyAdded.getExpectedRow()]).sort();
StepsRunner.run([
function() {
setupAndWaitUntilReady(null, path, this.next);
},
// Notify that the list has been verified and a new file can be added
// in file_manager_browsertest.cc.
function(results) {
appId = results.windowId;
var actualFilesBefore = results.fileList;
chrome.test.assertEq(expectedFilesBefore, actualFilesBefore);
addEntries(['local', 'drive'], [ENTRIES.newlyAdded], this.next);
},
function(result) {
chrome.test.assertTrue(result);
remoteCall.waitForFileListChange(appId, expectedFilesBefore.length).
then(this.next);
},
// Confirm the file list.
function(actualFilesAfter) {
chrome.test.assertEq(expectedFilesAfter, actualFilesAfter);
checkIfNoErrorsOccured(this.next);
},
]);
}
testcase.fileDisplayDownloads = function() {
fileDisplay(RootPath.DOWNLOADS);
};
testcase.fileDisplayDrive = function() {
fileDisplay(RootPath.DRIVE);
};
testcase.fileDisplayMtp = function() {
var appId;
var MTP_VOLUME_QUERY = '#directory-tree > .tree-item > .tree-row > ' +
'.item-icon[volume-type-icon="mtp"]';
StepsRunner.run([
function() {
setupAndWaitUntilReady(null, RootPath.DOWNLOADS, this.next);
},
// Mount a fake MTP volume.
function(results) {
appId = results.windowId;
chrome.test.sendMessage(JSON.stringify({name: 'mountFakeMtp'}),
this.next);
},
// Wait for the mount.
function(result) {
remoteCall.waitForElement(appId, MTP_VOLUME_QUERY).then(this.next);
},
// Click the MTP volume.
function() {
remoteCall.callRemoteTestUtil(
'fakeMouseClick', appId, [MTP_VOLUME_QUERY], this.next);
},
// Wait for the file list to change.
function(appIds) {
remoteCall.waitForFiles(
appId,
TestEntryInfo.getExpectedRows(BASIC_FAKE_ENTRY_SET),
{ignoreLastModifiedTime: true}).then(this.next);
},
function() {
checkIfNoErrorsOccured(this.next);
}
]);
};
/**
* Searches for a string in Downloads and checks the correct results are
* being displayed.
*
* @param {string} searchTerm The string to search for.
* @param {Array<Object>} expectedResults The results set.
*
*/
function searchDownloads(searchTerm, expectedResults) {
var appId;
StepsRunner.run([
function() {
setupAndWaitUntilReady(null, RootPath.DOWNLOADS, this.next);
},
// Focus the search box.
function(results) {
appId = results.windowId;
remoteCall.callRemoteTestUtil('fakeEvent',
appId,
['#search-box input', 'focus'],
this.next);
},
// Input a text.
function(result) {
chrome.test.assertTrue(result);
remoteCall.callRemoteTestUtil('inputText',
appId,
['#search-box input', searchTerm],
this.next);
},
// Notify the element of the input.
function() {
remoteCall.callRemoteTestUtil('fakeEvent',
appId,
['#search-box input', 'input'],
this.next);
},
function(result) {
remoteCall.waitForFileListChange(appId, BASIC_LOCAL_ENTRY_SET.length).
then(this.next);
},
function(actualFilesAfter) {
chrome.test.assertEq(
TestEntryInfo.getExpectedRows(expectedResults).sort(),
actualFilesAfter);
checkIfNoErrorsOccured(this.next);
}
]);
}
testcase.searchNormal = function() {
searchDownloads('hello', [ENTRIES.hello]);
};
testcase.searchCaseInsensitive = function() {
searchDownloads('HELLO', [ENTRIES.hello]);
};
/**
* Searches for a string that doesn't match anything in Downloads
* and checks that the no items match string is displayed.
*
*/
testcase.searchNotFound = function() {
var appId;
var searchTerm = 'blahblah';
StepsRunner.run([
function() {
setupAndWaitUntilReady(null, RootPath.DOWNLOADS, this.next);
},
// Focus the search box.
function(results) {
appId = results.windowId;
remoteCall.callRemoteTestUtil('fakeEvent',
appId,
['#search-box input', 'focus'],
this.next);
},
// Input a text.
function(result) {
chrome.test.assertTrue(result);
remoteCall.callRemoteTestUtil('inputText',
appId,
['#search-box input', searchTerm],
this.next);
},
// Notify the element of the input.
function() {
remoteCall.callRemoteTestUtil('fakeEvent',
appId,
['#search-box input', 'input'],
this.next);
},
function(result) {
remoteCall.waitForElement(appId, ['#empty-folder-label b']).
then(this.next);
},
function(element) {
chrome.test.assertEq(element.text, '\"' + searchTerm + '\"');
checkIfNoErrorsOccured(this.next);
}
]);
};