Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(10253)

Unified Diff: chrome/test/data/chromeos/wallpaper_manager/unit_tests/event_page_unittest.js

Issue 642943002: Add tests for sync custom wallpaper feature (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add sync custom wallpaper tests in EventPageTest Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/test/data/chromeos/wallpaper_manager/unit_tests/api_mock.js ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/data/chromeos/wallpaper_manager/unit_tests/event_page_unittest.js
diff --git a/chrome/test/data/chromeos/wallpaper_manager/unit_tests/event_page_unittest.js b/chrome/test/data/chromeos/wallpaper_manager/unit_tests/event_page_unittest.js
index f836ad4b647548a06d2127b2db141ff1560eea27..a2e6b4e76645493e8fa3e945ae45177d6a721284 100644
--- a/chrome/test/data/chromeos/wallpaper_manager/unit_tests/event_page_unittest.js
+++ b/chrome/test/data/chromeos/wallpaper_manager/unit_tests/event_page_unittest.js
@@ -5,6 +5,136 @@
var mockController;
+var fileString = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];
+var mockWriter = {};
+mockWriter.write = function(blobData) {
+};
+
+var currentWallpaperName = 'currentwallpapername';
bshe 2014/10/20 21:01:00 nit: all the variables are defined in global names
Ran 2014/10/23 15:58:59 Done.
+var currentWallpaperLayout = 'currentwallpaperlayout';
+var newWallpaperName = 'newwallpapername';
+var existWallpaperName = 'existwallpapername';
+var existWallpaperThumbnailNameInSync = existWallpaperName +
+ Constants.CustomWallpaperThumbnailSuffix;
+var existOriginalWallpaperPath = Constants.WallpaperDirNameEnum.ORIGINAL + '/' +
+ existWallpaperName;
+var existThumbnailWallpaperPath = Constants.WallpaperDirNameEnum.THUMBNAIL +
+ '/'+ existWallpaperName;
+var mockCurrentFileEntry = new FileEntry(currentWallpaperName);
+var mockNewFileEntry = new FileEntry(newWallpaperName);
+var mockExistFileEntry = new FileEntry(existWallpaperName);
+var mockExistFileEntryThumbnailInSync = new FileEntry(
+ existWallpaperThumbnailNameInSync);
+var mockExistFileEntryOriginalPath = new FileEntry(existOriginalWallpaperPath);
+var mockExistFileEntryThumbnailPath = new FileEntry(
+ existThumbnailWallpaperPath);
+
+var mockSyncFS = {};
+var mockLocalFS = {};
+var mockLocalFSDir = {};
+
+mockSyncFS.fileList = [mockCurrentFileEntry, mockNewFileEntry,
+ mockExistFileEntry, mockExistFileEntryThumbnailInSync];
+mockSyncFS.root = {
+ getFile: function(fileName, isCreate, success, failure) {
+ for(var i = 0; i < mockSyncFS.fileList.length; i++) {
+ if (fileName == mockSyncFS.fileList[i].name) {
+ success(mockSyncFS.fileList[i]);
+ return;
+ }
+ }
+ if (isCreate.create == false) {
+ if (failure)
+ failure('FILE_NOT_FOUND');
+ }
+ else {
+ mockSyncFS.fileList.push(new FileEntry(fileName));
+ success(mockSyncFS.fileList[mockSyncFS.fileList.length - 1]);
+ }
+ }
+};
+
+var selectedFileEntry = null;
+mockLocalFSDir.fileList = [mockCurrentFileEntry, mockExistFileEntry,
+ mockExistFileEntryOriginalPath,
+ mockExistFileEntryThumbnailPath];
+mockLocalFSDir.getFile = function(fileName, isCreate, success, failure) {
+ for(var i = 0; i < mockLocalFSDir.fileList.length; i++) {
+ if (fileName == mockLocalFSDir.fileList[i].name) {
+ selectedFileEntry = mockLocalFSDir.fileList[i];
+ success(selectedFileEntry);
+ return;
+ }
+ }
+ if (isCreate.create == false) {
+ if (failure) {
+ failure('FILE_NOT_FOUND');
+ }
+ }
+ else {
+ mockLocalFSDir.fileList.push( new FileEntry(fileName) );
+ selectedFileEntry = mockLocalFSDir.fileList[mockLocalFSDir.fileList.length -
+ 1];
+ success(selectedFileEntry );
+ }
+}
+
+mockLocalFS.root = {
+ getDirectory: function(dir, isCreate, success, fail) {
+ success(mockLocalFSDir);
+ },
+ getFile: function(fileName, isCreate, success, failure) {
+ mockLocalFSDir.getFile(fileName, isCreate, success, failure);
+ }
+}
+
+window.webkitRequestFileSystem = function(dontcare1, dontcare2, callback) {
+ callback(mockLocalFS);
+}
+
+chrome.syncFileSystem.requestFileSystem = function(callback) {
+ callback(mockSyncFS);
+};
+
+WallpaperUtil.enabledExperimentalFeatureCallback = function(callback) {
+ callback();
+};
+
+chrome.storage.local.get = function(key, callback) {
bshe 2014/10/20 21:00:59 this overrides the globe stub implementation of ch
Ran 2014/10/23 15:58:58 Done.
+ var items = {};
+ switch (key) {
+ case Constants.AccessLocalWallpaperInfoKey:
+ items[Constants.AccessLocalWallpaperInfoKey] = {
+ 'url': currentWallpaperName,
+ 'layout': currentWallpaperLayout,
+ 'source': Constants.WallpaperSourceEnum.Custom
+ };
+ }
+ callback(items);
+};
+
bshe 2014/10/20 21:00:59 I think FileEntry and FileReader could move to api
Ran 2014/10/23 15:58:58 Done.
+function FileEntry(filename) {
+ this.name = filename;
+ this.file = function(callback) {
+ callback(fileString);
+ };
+ this.createWriter = function(callback) {
+ callback(mockWriter);
+ };
+ this.remove = function(success, failure) {
+ };
+}
+
+function FileReader() {
+ this.result = '';
+ this.onloadend = function() {
+ };
+ this.readAsArrayBuffer = function(mockFile) {
+ this.result = mockFile;
+ this.onloadend();
+ }
+}
+
function setUp() {
mockController = new MockController();
installMockXMLHttpRequest();
@@ -14,6 +144,57 @@ function tearDown() {
mockController.verifyMocks();
mockController.reset();
uninstallMockXMLHttpRequest();
+ selectedFileEntry = null;
+}
+
+// Test sync Custom wallpaper. When the synced wallpaper info is not the same as
+// the local wallpaper info, wallpaper should set to the synced one.
+function testSyncCustomWallpaperSet() {
+ var mockSetCustomWallpaper = mockController.createFunctionMock(
+ chrome.wallpaperPrivate, 'setCustomWallpaper');
+ mockSetCustomWallpaper.addExpectation(fileString,
+ currentWallpaperLayout,
+ true,
+ currentWallpaperName);
+ var syncFSChanges = {};
+ syncFSChanges.status = 'synced';
+ syncFSChanges.direction = 'remote_to_local';
+ syncFSChanges.action = 'added';
+ syncFSChanges.fileEntry = mockCurrentFileEntry;
+ chrome.syncFileSystem.onFileStatusChanged.dispatch(syncFSChanges);
+}
+
+// Test sync Custom wallpaper. When the synced wallpaper info is not the same as
+// the local wallpaper info, wallpaper should set to the synced one.
+function testSyncCustoWallpapermStore() {
+ var syncFSChanges = {};
+ syncFSChanges.status = 'synced';
+ syncFSChanges.direction = 'remote_to_local';
+ syncFSChanges.action = 'added';
+ syncFSChanges.fileEntry = mockNewFileEntry;
+
+ // TODO(ranj): support two callbacks with success and failure?
+ var mockWrite = mockController.createFunctionMock(mockWriter, 'write');
+ mockWrite.addExpectation(new Blob([new Int8Array(fileString)]));
bshe 2014/10/20 21:00:59 Is it possible to move this to previous test? This
Ran 2014/10/23 15:58:59 I think it might be clear to separate them since o
+ chrome.syncFileSystem.onFileStatusChanged.dispatch(syncFSChanges);
+}
+
+// Test sync Custom wallpaper. When the synced wallpaper info is not the same as
+// the local wallpaper info, wallpaper should set to the synced one.
bshe 2014/10/20 21:00:59 nit: update the comment.
Ran 2014/10/23 15:58:58 Done.
+function testSyncCustomWallpaperDelete() {
+ var syncFSChanges = {};
+ syncFSChanges.status = 'synced';
+ syncFSChanges.direction = 'remote_to_local';
+ syncFSChanges.action = 'deleted';
+ syncFSChanges.fileEntry = mockExistFileEntry;
+
+ var mockRemoveThumbnail = mockController.createFunctionMock(
+ mockExistFileEntryThumbnailPath, 'remove');
+ mockRemoveThumbnail.addExpectation(function() {}, null);
+ var mockRemoveOriginal = mockController.createFunctionMock(
+ mockExistFileEntryOriginalPath, 'remove');
+ mockRemoveOriginal.addExpectation(function() {}, null);
+ chrome.syncFileSystem.onFileStatusChanged.dispatch(syncFSChanges);
}
// Test sync online wallpaper. When the synced wallpaper info is not the same as
« no previous file with comments | « chrome/test/data/chromeos/wallpaper_manager/unit_tests/api_mock.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698