| <!DOCTYPE html> |
| <!-- |
| Copyright (C) 2015 The Android Open Source Project |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1.0, user-scalable=yes"> |
| <title>gr-change-view</title> |
| |
| <script src="../bower_components/webcomponentsjs/webcomponents.min.js"></script> |
| <script src="../bower_components/web-component-tester/browser.js"></script> |
| <script src="../bower_components/page/page.js"></script> |
| <script src="../scripts/fake-app.js"></script> |
| <script src="../scripts/util.js"></script> |
| |
| <link rel="import" href="../bower_components/iron-test-helpers/iron-test-helpers.html"> |
| <link rel="import" href="../elements/gr-change-view.html"> |
| |
| <test-fixture id="basic"> |
| <template> |
| <gr-change-view></gr-change-view> |
| </template> |
| </test-fixture> |
| |
| <script> |
| suite('gr-change-view tests', function() { |
| var element; |
| var server; |
| |
| setup(function() { |
| element = fixture('basic'); |
| element.$.configXHR.auto = false; |
| |
| server = sinon.fakeServer.create(); |
| // Eat any requests made by elements in this suite. |
| server.respondWith( |
| 'GET', |
| /\/changes\/(.*)/, |
| [ |
| 200, |
| {'Content-Type': 'application/json'}, |
| ')]}\'\n{}', |
| ] |
| ); |
| }); |
| |
| teardown(function() { |
| server.restore(); |
| }); |
| |
| test('keyboard shortcuts', function() { |
| var showStub = sinon.stub(page, 'show'); |
| |
| MockInteractions.pressAndReleaseKeyOn(element, 85); // 'u' |
| assert(showStub.lastCall.calledWithExactly('/'), |
| 'Should navigate to /'); |
| showStub.restore(); |
| |
| MockInteractions.pressAndReleaseKeyOn(element, 65); // 'a' |
| var dropdownEl = element.$.replyDropdown; |
| assert.isTrue(dropdownEl.opened); |
| dropdownEl.close(); |
| assert.isFalse(dropdownEl.opened); |
| }); |
| |
| test('patch num change', function(done) { |
| element._changeNum = '42'; |
| element._patchNum = 2; |
| element._change = { |
| change_id: 'Iad9dc96274af6946f3632be53b106ef80f7ba6ca', |
| revisions: { |
| rev2: {_number: 2}, |
| rev1: {_number: 1}, |
| rev3: {_number: 3}, |
| }, |
| current_revision: 'rev3', |
| status: 'NEW', |
| labels: {}, |
| }; |
| flushAsynchronousOperations(); |
| var selectEl = element.$$('.header select'); |
| assert.ok(selectEl); |
| var optionEls = |
| Polymer.dom(element.root).querySelectorAll('.header option'); |
| assert.equal(optionEls.length, 3); |
| assert.isFalse( |
| element.$$('.header option[value="1"]').hasAttribute('selected')); |
| assert.isTrue( |
| element.$$('.header option[value="2"]').hasAttribute('selected')); |
| assert.isFalse( |
| element.$$('.header option[value="3"]').hasAttribute('selected')); |
| |
| var showStub = sinon.stub(page, 'show'); |
| |
| var numEvents = 0; |
| selectEl.addEventListener('change', function(e) { |
| numEvents++; |
| if (numEvents == 1) { |
| assert(showStub.lastCall.calledWithExactly('/c/42/1'), |
| 'Should navigate to /c/42/1'); |
| selectEl.value = '3'; |
| element.fire('change', {}, {node: selectEl}); |
| } else if (numEvents == 2) { |
| assert(showStub.lastCall.calledWithExactly('/c/42'), |
| 'Should navigate to /c/42'); |
| showStub.restore(); |
| done(); |
| } |
| }); |
| selectEl.value = '1'; |
| element.fire('change', {}, {node: selectEl}); |
| }); |
| }); |
| </script> |