 7416b235e4
			
		
	
	7416b235e4
	
	
	
		
			
			Previously, on a changelist or file view, if you change the patchset to a lower number and then click the back button, dropdown value did not change properly. The issue was related to how the selected option was rendered in a dom-if. This change refactors the gr-select element to fit this use case. Bug: Issue 4800 Change-Id: I66ee5b7aba5421a01ca79f9e72a853a73c32e589
		
			
				
	
	
		
			123 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			123 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!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-patch-range-select</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>
 | |
| 
 | |
| <link rel="import" href="../../../bower_components/iron-test-helpers/iron-test-helpers.html">
 | |
| <link rel="import" href="gr-patch-range-select.html">
 | |
| 
 | |
| <test-fixture id="basic">
 | |
|   <template>
 | |
|     <gr-patch-range-select auto></gr-patch-range-select>
 | |
|   </template>
 | |
| </test-fixture>
 | |
| 
 | |
| <script>
 | |
|   suite('gr-patch-range-select tests', function() {
 | |
|     var element;
 | |
| 
 | |
|     setup(function() {
 | |
|       element = fixture('basic');
 | |
|     });
 | |
| 
 | |
|     test('enabled/disabled options', function() {
 | |
|       var patchRange = {
 | |
|         basePatchNum: 'PARENT',
 | |
|         patchNum: '3',
 | |
|       };
 | |
|       ['1', '2', '3'].forEach(function(patchNum) {
 | |
|         assert.isFalse(element._computeRightDisabled(patchNum, patchRange));
 | |
|       });
 | |
|       ['PARENT', '1', '2'].forEach(function(patchNum) {
 | |
|         assert.isFalse(element._computeLeftDisabled(patchNum, patchRange));
 | |
|       });
 | |
|       assert.isTrue(element._computeLeftDisabled('3', patchRange));
 | |
| 
 | |
|       patchRange.basePatchNum = '2';
 | |
|       assert.isTrue(element._computeLeftDisabled('3', patchRange));
 | |
|       assert.isTrue(element._computeRightDisabled('1', patchRange));
 | |
|       assert.isTrue(element._computeRightDisabled('2', patchRange));
 | |
|       assert.isFalse(element._computeRightDisabled('3', patchRange));
 | |
|     });
 | |
| 
 | |
|     test('navigation', function(done) {
 | |
|       var showStub = sinon.stub(page, 'show');
 | |
|       var leftSelectEl = element.$.leftPatchSelect;
 | |
|       var rightSelectEl = element.$.rightPatchSelect;
 | |
|       var blurSpy = sinon.spy(leftSelectEl, 'blur');
 | |
|       element.changeNum = '42';
 | |
|       element.path = 'path/to/file.txt';
 | |
|       element.availablePatches = ['1', '2', '3'];
 | |
|       element.patchRange = {
 | |
|         basePatchNum: 'PARENT',
 | |
|         patchNum: '3',
 | |
|       };
 | |
|       flushAsynchronousOperations();
 | |
| 
 | |
|       var numEvents = 0;
 | |
|       leftSelectEl.addEventListener('change', function(e) {
 | |
|         numEvents++;
 | |
|         if (numEvents == 1) {
 | |
|           assert(showStub.lastCall.calledWithExactly(
 | |
|               '/c/42/3/path/to/file.txt'),
 | |
|               'Should navigate to /c/42/3/path/to/file.txt');
 | |
|           leftSelectEl.value = '1';
 | |
|           element.fire('change', {}, {node: leftSelectEl});
 | |
|           assert(blurSpy.called, 'Dropdown should be blurred after selection');
 | |
|         } else if (numEvents == 2) {
 | |
|           assert(showStub.lastCall.calledWithExactly(
 | |
|               '/c/42/1..3/path/to/file.txt'),
 | |
|               'Should navigate to /c/42/1..3/path/to/file.txt');
 | |
|           showStub.restore();
 | |
|           done();
 | |
|         }
 | |
|       });
 | |
|       leftSelectEl.value = 'PARENT';
 | |
|       rightSelectEl.value = '3';
 | |
|       element.fire('change', {}, {node: leftSelectEl});
 | |
|     });
 | |
| 
 | |
|     test('filesWeblinks', function() {
 | |
|       element.filesWeblinks = {
 | |
|         meta_a: [
 | |
|           {
 | |
|             name: 'foo',
 | |
|             url: 'f.oo',
 | |
|           }
 | |
|         ],
 | |
|         meta_b: [
 | |
|           {
 | |
|             name: 'bar',
 | |
|             url: 'ba.r',
 | |
|           }
 | |
|         ],
 | |
|       };
 | |
|       flushAsynchronousOperations();
 | |
|       var domApi = Polymer.dom(element.root);
 | |
|       assert.equal(
 | |
|           domApi.querySelector('a[href="f.oo"]').textContent, 'foo');
 | |
|       assert.equal(
 | |
|           domApi.querySelector('a[href="ba.r"]').textContent, 'bar');
 | |
|     });
 | |
|   });
 | |
| </script>
 |