OLD | NEW |
---|---|
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 | 4 |
5 /** | 5 /** |
6 * Test fixture for print preview WebUI testing. | 6 * Test fixture for print preview WebUI testing. |
7 * @extends {testing.Test} | 7 * @extends {testing.Test} |
8 * @constructor | 8 * @constructor |
9 **/ | 9 **/ |
10 function PrintPreviewWebUITest() {} | 10 function PrintPreviewWebUITest() {} |
11 | 11 |
12 PrintPreviewWebUITest.prototype = { | 12 PrintPreviewWebUITest.prototype = { |
13 __proto__: testing.Test.prototype, | 13 __proto__: testing.Test.prototype, |
14 | 14 |
15 /** | 15 /** |
16 * Browse to the sample page, cause print preview & call PreLoad(). | 16 * Browse to the sample page, cause print preview & call preLoad(). |
17 * @type {string} | 17 * @type {string} |
18 * @override | 18 * @override |
19 **/ | 19 **/ |
20 browsePrintPreload: 'print_preview_hello_world_test.html', | 20 browsePrintPreload: 'print_preview_hello_world_test.html', |
21 | 21 |
22 /** | 22 /** |
23 * Register a mock handler to ensure expectations are met and print preview | 23 * Register a mock handler to ensure expectations are met and print preview |
24 * behaves correctly. | 24 * behaves correctly. |
25 * @type {Function} | 25 * @type {Function} |
26 * @override | 26 * @override |
27 **/ | 27 **/ |
28 PreLoad: function() { | 28 preLoad: function() { |
29 // TODO(scr) remove this after tests pass consistently. | 29 // TODO(scr) remove this after tests pass consistently. |
30 console.info('PreLoad'); | 30 console.info('preLoad'); |
31 | 31 |
32 /** | 32 /** |
33 * Create a handler class with empty methods to allow mocking to register | 33 * Create a handler class with empty methods to allow mocking to register |
34 * expectations and for registration of handlers with chrome.send. | 34 * expectations and for registration of handlers with chrome.send. |
35 * @constructor | |
35 **/ | 36 **/ |
36 function MockPrintPreviewHandler() {} | 37 function MockPrintPreviewHandler() {} |
37 | 38 |
38 MockPrintPreviewHandler.prototype = { | 39 MockPrintPreviewHandler.prototype = { |
39 getDefaultPrinter: function() {}, | 40 getDefaultPrinter: function() {}, |
40 getPrinters: function() {}, | 41 getPrinters: function() {}, |
41 getPreview: function(settings) {}, | 42 getPreview: function(settings) {}, |
42 print: function(settings) {}, | 43 print: function(settings) {}, |
43 getPrinterCapabilities: function(printerName) {}, | 44 getPrinterCapabilities: function(printerName) {}, |
44 showSystemDialog: function() {}, | 45 showSystemDialog: function() {}, |
(...skipping 17 matching lines...) Expand all Loading... | |
62 setDefaultPrinter('FooDevice'); | 63 setDefaultPrinter('FooDevice'); |
63 })); | 64 })); |
64 mockHandler.stubs().getPrinterCapabilities(NOT_NULL). | 65 mockHandler.stubs().getPrinterCapabilities(NOT_NULL). |
65 will(callFunction(function() { | 66 will(callFunction(function() { |
66 updateWithPrinterCapabilities({ | 67 updateWithPrinterCapabilities({ |
67 disableColorOption: true, | 68 disableColorOption: true, |
68 setColorAsDefault: true, | 69 setColorAsDefault: true, |
69 disableCopiesOption: true, | 70 disableCopiesOption: true, |
70 }); | 71 }); |
71 })); | 72 })); |
72 mockHandler.stubs().getPreview(NOT_NULL). | 73 var savedArgs = new SaveMockArguments(); |
73 will(callFunction(function() { | 74 mockHandler.stubs().getPreview(savedArgs.match(NOT_NULL)). |
74 updatePrintPreview('title', true, 1, 1); | 75 will(callFunctionWithSavedArgs(savedArgs, function(options) { |
76 updatePrintPreview('title', true, 1, JSON.parse(options).requestID); | |
75 })); | 77 })); |
76 | 78 |
77 mockHandler.stubs().getPrinters(). | 79 mockHandler.stubs().getPrinters(). |
78 will(callFunction(function() { | 80 will(callFunction(function() { |
79 setUseCloudPrint(false, ""); | 81 setUseCloudPrint(false, ""); |
mmenke
2011/08/23 15:26:29
nit: Single quotes.
Sheridan Rawlins
2011/08/24 02:33:53
Done.
| |
80 setPrinters([{ | 82 setPrinters([{ |
81 printerName: 'FooName', | 83 printerName: 'FooName', |
82 deviceName: 'FooDevice', | 84 deviceName: 'FooDevice', |
83 }, { | 85 }, { |
84 printerName: 'BarName', | 86 printerName: 'BarName', |
85 deviceName: 'BarDevice', | 87 deviceName: 'BarDevice', |
86 }, | 88 }, |
87 ]); | 89 ]); |
88 })); | 90 })); |
89 | 91 |
90 // Register mock as a handler of the chrome.send messages. | 92 // Register mock as a handler of the chrome.send messages. |
91 registerMockMessageCallbacks(mockHandler, MockPrintPreviewHandler); | 93 registerMockMessageCallbacks(mockHandler, MockPrintPreviewHandler); |
92 | 94 |
95 /** | |
96 * Create a class to hold global functions to watch for. | |
97 * @constructor | |
98 **/ | |
99 function MockGlobals() {} | |
100 | |
101 MockGlobals.prototype = { | |
102 updateWithPrinterCapabilities: function(settingInfo) {}, | |
103 }; | |
104 | |
105 var mockGlobals = this.mockGlobals = mock(MockGlobals); | |
106 mockGlobals.stubs().updateWithPrinterCapabilities( | |
107 savedArgs.match(ANYTHING)). | |
108 will(callGlobalWithSavedArgs( | |
109 savedArgs, 'updateWithPrinterCapabilities')); | |
110 | |
111 // Register globals to mock out for us. | |
112 registerMockGlobals(mockGlobals, MockGlobals); | |
113 | |
93 // Override checkCompatiblePluginExists to return a value consistent with | 114 // Override checkCompatiblePluginExists to return a value consistent with |
94 // the state being tested and stub out the pdf viewer if it doesn't exist, | 115 // the state being tested and stub out the pdf viewer if it doesn't exist, |
95 // such as on non-official builds. When the plugin exists, use the real | 116 // such as on non-official builds. When the plugin exists, use the real |
96 // thing. | 117 // thing. |
97 var self = this; | 118 var self = this; |
98 window.addEventListener('DOMContentLoaded', function() { | 119 window.addEventListener('DOMContentLoaded', function() { |
99 if (!this.checkCompatiblePluginExists()) { | 120 if (!this.checkCompatiblePluginExists()) { |
100 // TODO(scr) remove this after tests pass consistently. | 121 // TODO(scr) remove this after tests pass consistently. |
101 console.info('no PDF Plugin; providing fake methods.'); | 122 console.info('no PDF Plugin; providing fake methods.'); |
102 this.createPDFPlugin = self.createPDFPlugin; | 123 this.createPDFPlugin = self.createPDFPlugin; |
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
310 disableLandscapeOption: false, | 331 disableLandscapeOption: false, |
311 }); | 332 }); |
312 })); | 333 })); |
313 | 334 |
314 updateControlsWithSelectedPrinterCapabilities(); | 335 updateControlsWithSelectedPrinterCapabilities(); |
315 expectFalse(colorSettings.colorRadioButton.checked); | 336 expectFalse(colorSettings.colorRadioButton.checked); |
316 expectTrue(colorSettings.bwRadioButton.checked); | 337 expectTrue(colorSettings.bwRadioButton.checked); |
317 }); | 338 }); |
318 | 339 |
319 // Test that changing the selected printer updates the preview. | 340 // Test that changing the selected printer updates the preview. |
320 TEST_F('PrintPreviewWebUITest', 'TestPrinterChangeUpdatesPreview', | 341 TEST_F('PrintPreviewWebUITest', 'TestPrinterChangeUpdatesPreview', function() { |
321 function() { | 342 var savedArgs = new SaveMockArguments(); |
322 var matchAnythingSave = new SaveArgumentsMatcher(ANYTHING); | 343 this.mockHandler.expects(once()).getPreview(savedArgs.match(ANYTHING)). |
344 will(callFunctionWithSavedArgs(savedArgs, function(options) { | |
345 updatePrintPreview('title', true, 2, | |
346 JSON.parse(options).requestID); | |
347 })); | |
323 | 348 |
324 this.mockHandler.expects(once()).getPreview(matchAnythingSave). | 349 this.mockGlobals.expects(once()).updateWithPrinterCapabilities( |
325 will(callFunction(function() { | 350 savedArgs.match(ANYTHING)). |
326 updatePrintPreview('title', true, 2, | 351 will(callGlobalWithSavedArgs( |
327 matchAnythingSave.argument.requestID); | 352 savedArgs, 'updateWithPrinterCapabilities')); |
328 })); | |
329 | 353 |
330 var printerList = $('printer-list'); | 354 var printerList = $('printer-list'); |
331 assertNotEquals(null, printerList, 'printerList'); | 355 assertNotEquals(null, printerList, 'printerList'); |
332 assertGE(printerList.options.length, printerListMinLength); | 356 assertGE(printerList.options.length, printerListMinLength); |
333 expectEquals(fooIndex, printerList.selectedIndex, | 357 expectEquals(fooIndex, printerList.selectedIndex, |
334 'fooIndex=' + fooIndex); | 358 'fooIndex=' + fooIndex); |
335 var oldLastPreviewRequestID = lastPreviewRequestID; | 359 var oldLastPreviewRequestID = lastPreviewRequestID; |
336 ++printerList.selectedIndex; | 360 ++printerList.selectedIndex; |
337 updateControlsWithSelectedPrinterCapabilities(); | 361 updateControlsWithSelectedPrinterCapabilities(); |
338 expectNotEquals(oldLastPreviewRequestID, lastPreviewRequestID); | 362 expectNotEquals(oldLastPreviewRequestID, lastPreviewRequestID); |
(...skipping 28 matching lines...) Expand all Loading... | |
367 | 391 |
368 // Test that error message is displayed when plugin doesn't exist. | 392 // Test that error message is displayed when plugin doesn't exist. |
369 TEST_F('PrintPreviewNoPDFWebUITest', 'TestErrorMessage', function() { | 393 TEST_F('PrintPreviewNoPDFWebUITest', 'TestErrorMessage', function() { |
370 var errorButton = $('error-button'); | 394 var errorButton = $('error-button'); |
371 assertNotEquals(null, errorButton); | 395 assertNotEquals(null, errorButton); |
372 expectFalse(errorButton.disabled); | 396 expectFalse(errorButton.disabled); |
373 var errorText = $('error-text'); | 397 var errorText = $('error-text'); |
374 assertNotEquals(null, errorText); | 398 assertNotEquals(null, errorText); |
375 expectFalse(errorText.classList.contains('hidden')); | 399 expectFalse(errorText.classList.contains('hidden')); |
376 }); | 400 }); |
OLD | NEW |