Chromium Code Reviews| Index: chrome/test/data/webui/print_preview.js |
| diff --git a/chrome/test/data/webui/print_preview.js b/chrome/test/data/webui/print_preview.js |
| index beb1c14fa99de9994995b9de3285b0514197c330..3e15e5a714c7df96c8112f6ecdbb1d62626dccba 100644 |
| --- a/chrome/test/data/webui/print_preview.js |
| +++ b/chrome/test/data/webui/print_preview.js |
| @@ -2,85 +2,146 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| -(function() { |
| - function MockHandler() { |
| - this.__proto__ = MockHandler.prototype; |
| - }; |
| +/** |
| + * TestFixture for print preview WebUI testing. |
| + * @extends {testing.Test} |
| + * @constructor |
| + **/ |
| +function PrintPreviewWebUITest() {} |
| - MockHandler.prototype = { |
| - 'getDefaultPrinter': function() { |
| - console.log('getDefaultPrinter'); |
| - setDefaultPrinter('FooDevice'); |
| - }, |
| - 'getPrinters': function() { |
| - console.log('getPrinters'); |
| - setPrinters([ |
| - { |
| - 'printerName': 'FooName', |
| - 'deviceName': 'FooDevice', |
| - }, |
| - { |
| - 'printerName': 'BarName', |
| - 'deviceName': 'BarDevice', |
| - }, |
| - ]); |
| - }, |
| - 'getPreview': function(settings) { |
| - console.log('getPreview(' + settings + ')'); |
| - updatePrintPreview(1, 'title', true); |
| - }, |
| - 'print': function(settings) { |
| - console.log('print(' + settings + ')'); |
| - }, |
| - 'getPrinterCapabilities': function(printer_name) { |
| - console.log('getPrinterCapabilities(' + printer_name + ')'); |
| - updateWithPrinterCapabilities({ |
| - 'disableColorOption': true, |
| - 'setColorAsDefault': true, |
| - 'disableCopiesOption': true |
| - }); |
| - }, |
| - 'showSystemDialog': function() { |
| - console.log('showSystemDialog'); |
| - }, |
| - 'managePrinters': function() { |
| - console.log('managePrinters'); |
| - }, |
| - 'closePrintPreviewTab': function() { |
| - console.log('closePrintPreviewTab'); |
| - }, |
| - 'hidePreview': function() { |
| - console.log('hidePreview'); |
| - }, |
| - }; |
| +PrintPreviewWebUITest.prototype = { |
| + '__proto__': testing.Test.prototype, |
| - function registerCallbacks() { |
| - console.log('registeringCallbacks'); |
| - var mock_handler = new MockHandler(); |
| - for (func in MockHandler.prototype) { |
| - if (typeof(mock_handler[func]) == 'function') |
| - registerMessageCallback(func, |
| - mock_handler, |
| - mock_handler[func]); |
| - } |
| - }; |
| + /** |
| + * Browse to the sample page, cause print preview & call our PreLoad(). |
| + **/ |
| + 'browsePrintPreload': 'print_preview_hello_world_test.html', |
| - if ('window' in this && 'registerMessageCallback' in window) |
| - registerCallbacks(); |
| - })(); |
| + /** |
| + * Register a mock handler to ensure expectations are met and print preview |
| + * behaves correctly. |
| + **/ |
| + 'PreLoad': function() { |
| -// Tests. |
| -function FLAKY_TestPrinterList() { |
| - var printer_list = $('printer-list'); |
| - assertTrue(!!printer_list, 'printer_list'); |
| - assertTrue(printer_list.options.length >= 2, 'printer-list has at least 2'); |
| - expectEquals('FooName', printer_list.options[0].text, '0 text is FooName'); |
| - expectEquals('FooDevice', printer_list.options[0].value, |
| + /** |
| + * Create a handler class with empty methods to allow mocking to register |
| + * expectations and for registration of handlers with chrome.send. |
| + **/ |
| + function MockPrintPreviewHandler() {} |
| + |
| + MockPrintPreviewHandler.prototype = { |
| + 'getDefaultPrinter': function() { |
| + }, |
| + 'getPrinters': function() { |
| + }, |
| + 'getPreview': function(settings) { |
| + }, |
| + 'print': function(settings) { |
| + }, |
| + 'getPrinterCapabilities': function(printerName) { |
| + }, |
| + 'showSystemDialog': function() { |
| + }, |
| + 'managePrinters': function() { |
| + }, |
| + 'closePrintPreviewTab': function() { |
| + }, |
| + 'hidePreview': function() { |
| + }, |
| + }; |
| + |
| + // Create the actual mock and register stubs for methods expected to be |
| + // called before our tests run. Specific expectations can be made in the |
| + // tests themselves. |
| + var mockHandler = this.mockHandler = mock(MockPrintPreviewHandler); |
| + mockHandler.stubs().getDefaultPrinter(). |
| + will(callFunction( |
| + function() { |
| + setDefaultPrinter('FooDevice'); |
| + })); |
| + mockHandler.stubs().getPrinterCapabilities(NOT_NULL). |
| + will(callFunction( |
| + function() { |
| + updateWithPrinterCapabilities({ |
| + 'disableColorOption': true, |
|
Evan Stade
2011/07/08 23:04:46
indent is wrong, see http://google-styleguide.goog
Sheridan Rawlins
2011/07/08 23:47:24
Done.
|
| + 'setColorAsDefault': true, |
| + 'disableCopiesOption': true |
| + }); |
| + })); |
| + mockHandler.stubs().getPreview(NOT_NULL). |
| + will(callFunction( |
| + function() { |
|
Evan Stade
2011/07/08 23:04:46
put `function() {` on the line above (throughout f
Sheridan Rawlins
2011/07/08 23:47:24
Done.
|
| + updatePrintPreview(1, 'title', true); |
| + })); |
| + |
| + mockHandler.stubs().getPrinters(). |
| + will(callFunction( |
| + function() { |
| + setPrinters([ |
| + { |
|
Evan Stade
2011/07/08 23:04:46
merge L80-81
Sheridan Rawlins
2011/07/08 23:47:24
Done.
|
| + 'printerName': 'FooName', |
|
Evan Stade
2011/07/08 23:04:46
indent wrong again
Sheridan Rawlins
2011/07/08 23:47:24
Done.
|
| + 'deviceName': 'FooDevice', |
| + }, |
|
Evan Stade
2011/07/08 23:04:46
merge L84-85
Sheridan Rawlins
2011/07/08 23:47:24
Done.
|
| + { |
| + 'printerName': 'BarName', |
| + 'deviceName': 'BarDevice', |
| + }, |
| + ]); |
| + })); |
| + |
| + // Register our mock as a handler of the chrome.send messages. |
| + registerMockMessageCallbacks(mockHandler, MockPrintPreviewHandler); |
| + }, |
| +}; |
| + |
| +GEN('#include "base/command_line.h"'); |
| +GEN('#include "base/path_service.h"'); |
| +GEN('#include "base/stringprintf.h"'); |
| +GEN('#include "chrome/browser/ui/webui/web_ui_browsertest.h"'); |
| +GEN('#include "chrome/common/chrome_paths.h"'); |
| +GEN('#include "chrome/common/chrome_switches.h"'); |
| +GEN('#include "googleurl/src/gurl.h"'); |
| +GEN('#include "testing/gtest/include/gtest/gtest.h"'); |
| +GEN(''); |
| +GEN('class PrintPreviewWebUITest'); |
| +GEN(' : public WebUIBrowserTest {'); |
| +GEN(' protected:'); |
| +GEN(' // WebUIBrowserTest:'); |
| +GEN(' virtual void SetUpOnMainThread() OVERRIDE {'); |
| +GEN(' WebUIBrowserTest::SetUpOnMainThread();'); |
| +GEN(' if (!HasPDFLib())'); |
| +GEN(' ' + |
| + 'skipTest(base::StringPrintf("%s:%d: No PDF Lib.", __FILE__, __LINE__));'); |
| +GEN(' }'); |
| +GEN(''); |
| +GEN(' virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {'); |
| +GEN(' WebUIBrowserTest::SetUpCommandLine(command_line);'); |
| +GEN('#if !defined(GOOGLE_CHROME_BUILD) || defined(OS_CHROMEOS) || \\'); |
| +GEN(' defined(OS_MACOSX)'); |
| +GEN(' // Don\'t enable the flag for chrome builds, which should be on by ' + |
| + 'default.'); |
| +GEN(' command_line->AppendSwitch(switches::kEnablePrintPreview);'); |
| +GEN('#else'); |
| +GEN(' ASSERT_TRUE(switches::IsPrintPreviewEnabled());'); |
| +GEN('#endif'); |
| +GEN(' }'); |
| +GEN(''); |
| +GEN(' bool HasPDFLib() const {'); |
| +GEN(' FilePath pdf;'); |
| +GEN(' return PathService::Get(chrome::FILE_PDF_PLUGIN, &pdf) &&'); |
| +GEN(' file_util::PathExists(pdf);'); |
| +GEN(' }'); |
| +GEN('};'); |
| +GEN(''); |
| + |
| +TEST_F('PrintPreviewWebUITest', 'FLAKY_TestPrinterList', function() { |
| + var printerList = $('printer-list'); |
| + assertTrue(!!printerList, 'printerList'); |
| + assertTrue(printerList.options.length >= 2, 'printer-list has at least 2'); |
| + expectEquals('FooName', printerList.options[0].text, '0 text is FooName'); |
| + expectEquals('FooDevice', printerList.options[0].value, |
| '0 value is FooDevice'); |
| - expectEquals('BarName', printer_list.options[1].text, '1 text is BarName'); |
| - expectEquals('BarDevice', printer_list.options[1].value, |
| + expectEquals('BarName', printerList.options[1].text, '1 text is BarName'); |
| + expectEquals('BarDevice', printerList.options[1].value, |
| '1 value is BarDevice'); |
| -} |
| - |
| -var test_fixture = 'PrintPreviewWebUITest'; |
| -var test_add_library = false; |
| +}); |