Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 /** @fileoverview Suite of tests for settings-bluetooth-page. */ | |
| 6 | |
| 7 GEN_INCLUDE(['settings_page_browsertest.js']); | |
| 8 | |
| 9 /** | |
| 10 * @constructor | |
| 11 * @extends {SettingsPageBrowserTest} | |
| 12 */ | |
| 13 function SettingsBluetoothPageBrowserTest() { | |
| 14 } | |
| 15 | |
| 16 SettingsBluetoothPageBrowserTest.prototype = { | |
| 17 __proto__: SettingsPageBrowserTest.prototype, | |
| 18 | |
| 19 /** @override */ | |
| 20 browsePreload: 'chrome://md-settings/advanced', | |
| 21 | |
| 22 /** @override */ | |
| 23 extraLibraries: PolymerTest.getLibraries(ROOT_PATH).concat([ | |
| 24 '../fake_chrome_event.js', | |
| 25 'fake_bluetooth.js', | |
| 26 'fake_bluetooth_private.js' | |
| 27 ]), | |
| 28 | |
| 29 /** @type {Bluetooth} */ | |
| 30 bluetoothApi_: undefined, | |
| 31 | |
| 32 /** @type {BluetoothPrivate} */ | |
| 33 bluetoothPrivateApi_: undefined, | |
| 34 | |
| 35 /** @override */ | |
| 36 preLoad: function() { | |
| 37 SettingsPageBrowserTest.prototype.preLoad.call(this); | |
| 38 settingsHidePagesByDefaultForTest = true; | |
| 39 this.bluetoothApi_ = new settings.FakeBluetooth(); | |
| 40 bluetoothApiForTest = this.bluetoothApi_; | |
|
dpapad
2015/12/16 22:07:48
Where is bluetoothApiForTest defined, and where is
stevenjb
2015/12/17 00:13:34
It, along with bluetoothPrivateApiForTest are defi
dpapad
2015/12/17 02:06:58
Ok. I am guessing that those two objects are being
stevenjb
2015/12/17 17:28:12
Correct. Once a DOM element is stamped, we have no
| |
| 41 this.bluetoothPrivateApi_ = | |
| 42 new settings.FakeBluetoothPrivate(this.bluetoothApi_); | |
| 43 bluetoothPrivateApiForTest = this.bluetoothPrivateApi_; | |
| 44 } | |
| 45 }; | |
| 46 | |
| 47 // Times out on debug builders and may time out on memory bots because | |
| 48 // the Settings page can take several seconds to load in a Release build | |
| 49 // and several times that in a Debug build. See https://crbug.com/558434. | |
| 50 GEN('#if defined(MEMORY_SANITIZER) || !defined(NDEBUG)'); | |
| 51 GEN('#define MAYBE_Bluetooth DISABLED_Bluetooth'); | |
| 52 GEN('#else'); | |
| 53 GEN('#define MAYBE_Bluetooth Bluetooth'); | |
| 54 GEN('#endif'); | |
| 55 | |
| 56 // Runs bluetooth tests. | |
| 57 TEST_F('SettingsBluetoothPageBrowserTest', 'MAYBE_Bluetooth', function() { | |
| 58 // Assign |self| to |this| instead of binding since 'this' in suite() | |
| 59 // and test() will be a Mocha 'Suite' or 'Test' instance. | |
|
dschuyler
2015/12/16 22:15:01
I'm having trouble parsing this comment. I'm wond
stevenjb
2015/12/17 00:13:34
That would be:
// Assign |self| to |this| instead
dpapad
2015/12/17 01:12:54
FWIW (I know we talked about this before), I find
stevenjb
2015/12/17 01:28:57
If we ever need to reference the Mocha Suite or Te
dpapad
2015/12/17 02:06:58
It's fine to leave as is and address in a follow u
| |
| 60 var self = this; | |
| 61 | |
| 62 var advanced = self.getPage('advanced'); | |
| 63 assertTrue(!!advanced); | |
| 64 advanced.set('pageVisibility.bluetooth', true); | |
| 65 Polymer.dom.flush(); | |
| 66 | |
| 67 var fakeDevices_ = [ | |
| 68 { | |
| 69 address: '10:00:00:00:00:01', | |
| 70 name: 'FakePairedDevice1', | |
| 71 paired: true, | |
| 72 }, | |
| 73 { | |
| 74 address: '10:00:00:00:00:02', | |
| 75 name: 'FakePairedDevice2', | |
| 76 paired: true, | |
| 77 }, | |
| 78 { | |
| 79 address: '00:00:00:00:00:01', | |
| 80 name: 'FakeUnPairedDevice1', | |
| 81 paired: false, | |
| 82 }, | |
| 83 ]; | |
| 84 | |
| 85 suite('SettingsBluetoothPage', function() { | |
| 86 test('enable', function() { | |
| 87 assertFalse(self.bluetoothApi_.enabled); | |
| 88 var bluetoothSection = self.getSection(advanced, 'bluetooth'); | |
| 89 assertTrue(!!bluetoothSection); | |
| 90 var bluetooth = | |
| 91 bluetoothSection.querySelector('settings-bluetooth-page'); | |
|
dpapad
2015/12/16 22:07:48
Nit: use $$() shorthand.
stevenjb
2015/12/17 00:13:34
Not actually the same thing. $$ queries the shadow
| |
| 92 assertTrue(!!bluetooth); | |
| 93 expectFalse(bluetooth.bluetoothEnabled); | |
| 94 var enable = bluetooth.$.enableBluetooth; | |
| 95 assertTrue(!!enable); | |
| 96 expectFalse(enable.checked); | |
| 97 // Test that tapping the enable checkbox changes its value and calls | |
| 98 // bluetooth.setAdapterState with pwered = false. | |
|
dschuyler
2015/12/16 22:15:01
is pwered a mistype of powered?
stevenjb
2015/12/17 00:13:34
Done.
| |
| 99 MockInteractions.tap(enable); | |
| 100 expectTrue(enable.checked); | |
| 101 expectTrue(self.bluetoothApi_.enabled); | |
| 102 // Confirm that 'bluetoothEnabled' remains set to true. | |
| 103 Polymer.dom.flush(); | |
| 104 expectTrue(bluetooth.bluetoothEnabled); | |
| 105 // Set 'bluetoothEnabled' directly and confirm that the checkbox | |
| 106 // toggles. | |
| 107 bluetooth.bluetoothEnabled = false; | |
| 108 Polymer.dom.flush(); | |
| 109 expectFalse(enable.checked); | |
| 110 }); | |
| 111 | |
| 112 test('device list', function() { | |
| 113 var bluetoothSection = self.getSection(advanced, 'bluetooth'); | |
| 114 var bluetooth = | |
| 115 bluetoothSection.querySelector('settings-bluetooth-page'); | |
| 116 assertTrue(!!bluetooth); | |
| 117 var deviceList = bluetooth.$.deviceList; | |
| 118 assertTrue(!!deviceList); | |
| 119 // Set enabled, with default (empty) device list. | |
| 120 self.bluetoothApi_.enabled = true; | |
| 121 bluetooth.bluetoothEnabled = true; | |
| 122 Polymer.dom.flush(); | |
| 123 // Ensure that initially the 'device list empty' span is visible. | |
| 124 expectFalse(deviceList.hidden); | |
| 125 var noDevices = deviceList.querySelector('span'); | |
| 126 assertTrue(!!noDevices); | |
| 127 expectFalse(noDevices.hidden); | |
| 128 // Set some devices (triggers onDeviceAdded events). 'empty' span should | |
| 129 // be hidden. | |
| 130 self.bluetoothApi_.setDevicesForTest(fakeDevices_); | |
| 131 Polymer.dom.flush(); | |
| 132 expectTrue(noDevices.hidden); | |
| 133 // Confirm that there are three devices in the list. | |
| 134 var devices = deviceList.querySelectorAll('iron-selector div'); | |
| 135 assertEquals(3, devices.length); | |
| 136 // Only paired devices should be visible. | |
| 137 expectFalse(devices[0].hidden); | |
| 138 expectFalse(devices[1].hidden); | |
| 139 expectTrue(devices[2].hidden); | |
| 140 }); | |
| 141 }); | |
| 142 | |
| 143 // Run all registered tests. | |
| 144 mocha.run(); | |
| 145 }); | |
| OLD | NEW |