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

Side by Side 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 unified diff | 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 »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 'use strict'; 4 'use strict';
5 5
6 var mockController; 6 var mockController;
7 7
8 var fileString = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];
9 var mockWriter = {};
10 mockWriter.write = function(blobData) {
11 };
12
13 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.
14 var currentWallpaperLayout = 'currentwallpaperlayout';
15 var newWallpaperName = 'newwallpapername';
16 var existWallpaperName = 'existwallpapername';
17 var existWallpaperThumbnailNameInSync = existWallpaperName +
18 Constants.CustomWallpaperThumbnailSuffix;
19 var existOriginalWallpaperPath = Constants.WallpaperDirNameEnum.ORIGINAL + '/' +
20 existWallpaperName;
21 var existThumbnailWallpaperPath = Constants.WallpaperDirNameEnum.THUMBNAIL +
22 '/'+ existWallpaperName;
23 var mockCurrentFileEntry = new FileEntry(currentWallpaperName);
24 var mockNewFileEntry = new FileEntry(newWallpaperName);
25 var mockExistFileEntry = new FileEntry(existWallpaperName);
26 var mockExistFileEntryThumbnailInSync = new FileEntry(
27 existWallpaperThumbnailNameInSync);
28 var mockExistFileEntryOriginalPath = new FileEntry(existOriginalWallpaperPath);
29 var mockExistFileEntryThumbnailPath = new FileEntry(
30 existThumbnailWallpaperPath);
31
32 var mockSyncFS = {};
33 var mockLocalFS = {};
34 var mockLocalFSDir = {};
35
36 mockSyncFS.fileList = [mockCurrentFileEntry, mockNewFileEntry,
37 mockExistFileEntry, mockExistFileEntryThumbnailInSync];
38 mockSyncFS.root = {
39 getFile: function(fileName, isCreate, success, failure) {
40 for(var i = 0; i < mockSyncFS.fileList.length; i++) {
41 if (fileName == mockSyncFS.fileList[i].name) {
42 success(mockSyncFS.fileList[i]);
43 return;
44 }
45 }
46 if (isCreate.create == false) {
47 if (failure)
48 failure('FILE_NOT_FOUND');
49 }
50 else {
51 mockSyncFS.fileList.push(new FileEntry(fileName));
52 success(mockSyncFS.fileList[mockSyncFS.fileList.length - 1]);
53 }
54 }
55 };
56
57 var selectedFileEntry = null;
58 mockLocalFSDir.fileList = [mockCurrentFileEntry, mockExistFileEntry,
59 mockExistFileEntryOriginalPath,
60 mockExistFileEntryThumbnailPath];
61 mockLocalFSDir.getFile = function(fileName, isCreate, success, failure) {
62 for(var i = 0; i < mockLocalFSDir.fileList.length; i++) {
63 if (fileName == mockLocalFSDir.fileList[i].name) {
64 selectedFileEntry = mockLocalFSDir.fileList[i];
65 success(selectedFileEntry);
66 return;
67 }
68 }
69 if (isCreate.create == false) {
70 if (failure) {
71 failure('FILE_NOT_FOUND');
72 }
73 }
74 else {
75 mockLocalFSDir.fileList.push( new FileEntry(fileName) );
76 selectedFileEntry = mockLocalFSDir.fileList[mockLocalFSDir.fileList.length -
77 1];
78 success(selectedFileEntry );
79 }
80 }
81
82 mockLocalFS.root = {
83 getDirectory: function(dir, isCreate, success, fail) {
84 success(mockLocalFSDir);
85 },
86 getFile: function(fileName, isCreate, success, failure) {
87 mockLocalFSDir.getFile(fileName, isCreate, success, failure);
88 }
89 }
90
91 window.webkitRequestFileSystem = function(dontcare1, dontcare2, callback) {
92 callback(mockLocalFS);
93 }
94
95 chrome.syncFileSystem.requestFileSystem = function(callback) {
96 callback(mockSyncFS);
97 };
98
99 WallpaperUtil.enabledExperimentalFeatureCallback = function(callback) {
100 callback();
101 };
102
103 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.
104 var items = {};
105 switch (key) {
106 case Constants.AccessLocalWallpaperInfoKey:
107 items[Constants.AccessLocalWallpaperInfoKey] = {
108 'url': currentWallpaperName,
109 'layout': currentWallpaperLayout,
110 'source': Constants.WallpaperSourceEnum.Custom
111 };
112 }
113 callback(items);
114 };
115
bshe 2014/10/20 21:00:59 I think FileEntry and FileReader could move to api
Ran 2014/10/23 15:58:58 Done.
116 function FileEntry(filename) {
117 this.name = filename;
118 this.file = function(callback) {
119 callback(fileString);
120 };
121 this.createWriter = function(callback) {
122 callback(mockWriter);
123 };
124 this.remove = function(success, failure) {
125 };
126 }
127
128 function FileReader() {
129 this.result = '';
130 this.onloadend = function() {
131 };
132 this.readAsArrayBuffer = function(mockFile) {
133 this.result = mockFile;
134 this.onloadend();
135 }
136 }
137
8 function setUp() { 138 function setUp() {
9 mockController = new MockController(); 139 mockController = new MockController();
10 installMockXMLHttpRequest(); 140 installMockXMLHttpRequest();
11 } 141 }
12 142
13 function tearDown() { 143 function tearDown() {
14 mockController.verifyMocks(); 144 mockController.verifyMocks();
15 mockController.reset(); 145 mockController.reset();
16 uninstallMockXMLHttpRequest(); 146 uninstallMockXMLHttpRequest();
147 selectedFileEntry = null;
148 }
149
150 // Test sync Custom wallpaper. When the synced wallpaper info is not the same as
151 // the local wallpaper info, wallpaper should set to the synced one.
152 function testSyncCustomWallpaperSet() {
153 var mockSetCustomWallpaper = mockController.createFunctionMock(
154 chrome.wallpaperPrivate, 'setCustomWallpaper');
155 mockSetCustomWallpaper.addExpectation(fileString,
156 currentWallpaperLayout,
157 true,
158 currentWallpaperName);
159 var syncFSChanges = {};
160 syncFSChanges.status = 'synced';
161 syncFSChanges.direction = 'remote_to_local';
162 syncFSChanges.action = 'added';
163 syncFSChanges.fileEntry = mockCurrentFileEntry;
164 chrome.syncFileSystem.onFileStatusChanged.dispatch(syncFSChanges);
165 }
166
167 // Test sync Custom wallpaper. When the synced wallpaper info is not the same as
168 // the local wallpaper info, wallpaper should set to the synced one.
169 function testSyncCustoWallpapermStore() {
170 var syncFSChanges = {};
171 syncFSChanges.status = 'synced';
172 syncFSChanges.direction = 'remote_to_local';
173 syncFSChanges.action = 'added';
174 syncFSChanges.fileEntry = mockNewFileEntry;
175
176 // TODO(ranj): support two callbacks with success and failure?
177 var mockWrite = mockController.createFunctionMock(mockWriter, 'write');
178 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
179 chrome.syncFileSystem.onFileStatusChanged.dispatch(syncFSChanges);
180 }
181
182 // Test sync Custom wallpaper. When the synced wallpaper info is not the same as
183 // 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.
184 function testSyncCustomWallpaperDelete() {
185 var syncFSChanges = {};
186 syncFSChanges.status = 'synced';
187 syncFSChanges.direction = 'remote_to_local';
188 syncFSChanges.action = 'deleted';
189 syncFSChanges.fileEntry = mockExistFileEntry;
190
191 var mockRemoveThumbnail = mockController.createFunctionMock(
192 mockExistFileEntryThumbnailPath, 'remove');
193 mockRemoveThumbnail.addExpectation(function() {}, null);
194 var mockRemoveOriginal = mockController.createFunctionMock(
195 mockExistFileEntryOriginalPath, 'remove');
196 mockRemoveOriginal.addExpectation(function() {}, null);
197 chrome.syncFileSystem.onFileStatusChanged.dispatch(syncFSChanges);
17 } 198 }
18 199
19 // Test sync online wallpaper. When the synced wallpaper info is not the same as 200 // Test sync online wallpaper. When the synced wallpaper info is not the same as
20 // the local wallpaper info, wallpaper should set to the synced one. 201 // the local wallpaper info, wallpaper should set to the synced one.
21 function testSyncOnlineWallpaper() { 202 function testSyncOnlineWallpaper() {
22 // Setup sync value. 203 // Setup sync value.
23 var changes = {}; 204 var changes = {};
24 changes[Constants.AccessSyncWallpaperInfoKey] = {}; 205 changes[Constants.AccessSyncWallpaperInfoKey] = {};
25 changes[Constants.AccessSyncWallpaperInfoKey].newValue = { 206 changes[Constants.AccessSyncWallpaperInfoKey].newValue = {
26 'url': TestConstants.wallpaperURL, 207 'url': TestConstants.wallpaperURL,
(...skipping 10 matching lines...) Expand all
37 218
38 var mockSetWallpaper = mockController.createFunctionMock( 219 var mockSetWallpaper = mockController.createFunctionMock(
39 chrome.wallpaperPrivate, 'setWallpaper'); 220 chrome.wallpaperPrivate, 'setWallpaper');
40 mockSetWallpaper.addExpectation( 221 mockSetWallpaper.addExpectation(
41 TestConstants.image, 222 TestConstants.image,
42 changes[Constants.AccessSyncWallpaperInfoKey].newValue.layout, 223 changes[Constants.AccessSyncWallpaperInfoKey].newValue.layout,
43 changes[Constants.AccessSyncWallpaperInfoKey].newValue.url); 224 changes[Constants.AccessSyncWallpaperInfoKey].newValue.url);
44 225
45 chrome.storage.onChanged.dispatch(changes); 226 chrome.storage.onChanged.dispatch(changes);
46 } 227 }
OLDNEW
« 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