These tags are preserved by the Closure compiler and vulcanize in order to serve the license notices embedded in the outputs. In a standalone Gerrit server, these license are also covered in the LICENSES.txt served with the documentation. When serving PG assets from a CDN, it's less obvious what the corresponding LICENSES.txt file is, since the CDN is not directly linked to a running Gerrit server. Safer to embed the licenses in the assets themselves. Change-Id: Id1add1451fad1baa7916882a6bda02c326ccc988
		
			
				
	
	
		
			156 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			156 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!DOCTYPE html>
 | 
						|
<!--
 | 
						|
@license
 | 
						|
Copyright (C) 2016 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-editable-content</title>
 | 
						|
 | 
						|
<script src="../../../bower_components/webcomponentsjs/webcomponents-lite.min.js"></script>
 | 
						|
<script src="../../../bower_components/web-component-tester/browser.js"></script>
 | 
						|
<link rel="import" href="../../../test/common-test-setup.html"/>
 | 
						|
<script src="../../../bower_components/iron-test-helpers/mock-interactions.js"></script>
 | 
						|
 | 
						|
<link rel="import" href="gr-editable-content.html">
 | 
						|
 | 
						|
<script>void(0);</script>
 | 
						|
 | 
						|
<test-fixture id="basic">
 | 
						|
  <template>
 | 
						|
    <gr-editable-content></gr-editable-content>
 | 
						|
  </template>
 | 
						|
</test-fixture>
 | 
						|
 | 
						|
<script>
 | 
						|
  suite('gr-editable-content tests', () => {
 | 
						|
    let element;
 | 
						|
    let sandbox;
 | 
						|
 | 
						|
    setup(() => {
 | 
						|
      element = fixture('basic');
 | 
						|
      sandbox = sinon.sandbox.create();
 | 
						|
    });
 | 
						|
 | 
						|
    teardown(() => { sandbox.restore(); });
 | 
						|
 | 
						|
    test('save event', done => {
 | 
						|
      element._newContent = 'foo';
 | 
						|
      element.addEventListener('editable-content-save', e => {
 | 
						|
        assert.equal(e.detail.content, 'foo');
 | 
						|
        done();
 | 
						|
      });
 | 
						|
      MockInteractions.tap(element.$$('gr-button[primary]'));
 | 
						|
    });
 | 
						|
 | 
						|
    test('cancel event', done => {
 | 
						|
      element.addEventListener('editable-content-cancel', () => {
 | 
						|
        done();
 | 
						|
      });
 | 
						|
      MockInteractions.tap(element.$$('gr-button:not([primary])'));
 | 
						|
    });
 | 
						|
 | 
						|
    test('enabling editing updates edit field contents', () => {
 | 
						|
      element.content = 'current content';
 | 
						|
      element._newContent = 'stale content';
 | 
						|
      element.editing = true;
 | 
						|
      assert.equal(element._newContent, 'current content');
 | 
						|
    });
 | 
						|
 | 
						|
    test('disabling editing does not update edit field contents', () => {
 | 
						|
      element.content = 'current content';
 | 
						|
      element.editing = true;
 | 
						|
      element._newContent = 'stale content';
 | 
						|
      element.editing = false;
 | 
						|
      assert.equal(element._newContent, 'stale content');
 | 
						|
    });
 | 
						|
 | 
						|
    test('zero width spaces are removed properly', () => {
 | 
						|
      element.removeZeroWidthSpace = true;
 | 
						|
      element.content = 'R=\u200Btest@google.com';
 | 
						|
      element.editing = true;
 | 
						|
      assert.equal(element._newContent, 'R=test@google.com');
 | 
						|
    });
 | 
						|
 | 
						|
    suite('editing', () => {
 | 
						|
      setup(() => {
 | 
						|
        element.content = 'current content';
 | 
						|
        element.editing = true;
 | 
						|
      });
 | 
						|
 | 
						|
      test('save button is disabled initially', () => {
 | 
						|
        assert.isTrue(element.$$('gr-button[primary]').disabled);
 | 
						|
      });
 | 
						|
 | 
						|
      test('save button is enabled when content changes', () => {
 | 
						|
        element._newContent = 'new content';
 | 
						|
        assert.isFalse(element.$$('gr-button[primary]').disabled);
 | 
						|
      });
 | 
						|
    });
 | 
						|
 | 
						|
    suite('storageKey and related behavior', () => {
 | 
						|
      let dispatchSpy;
 | 
						|
      setup(() => {
 | 
						|
        element.content = 'current content';
 | 
						|
        element.storageKey = 'test';
 | 
						|
        dispatchSpy = sandbox.spy(element, 'dispatchEvent');
 | 
						|
      });
 | 
						|
 | 
						|
      test('editing toggled to true, has stored data', () => {
 | 
						|
        sandbox.stub(element.$.storage, 'getEditableContentItem')
 | 
						|
            .returns({message: 'stored content'});
 | 
						|
        element.editing = true;
 | 
						|
 | 
						|
        assert.equal(element._newContent, 'stored content');
 | 
						|
        assert.isTrue(dispatchSpy.called);
 | 
						|
        assert.equal(dispatchSpy.lastCall.args[0].type, 'show-alert');
 | 
						|
      });
 | 
						|
 | 
						|
      test('editing toggled to true, has no stored data', () => {
 | 
						|
        sandbox.stub(element.$.storage, 'getEditableContentItem')
 | 
						|
            .returns({});
 | 
						|
        element.editing = true;
 | 
						|
 | 
						|
        assert.equal(element._newContent, 'current content');
 | 
						|
        assert.isFalse(dispatchSpy.called);
 | 
						|
      });
 | 
						|
 | 
						|
      test('edits are cached', () => {
 | 
						|
        const storeStub =
 | 
						|
            sandbox.stub(element.$.storage, 'setEditableContentItem');
 | 
						|
        const eraseStub =
 | 
						|
            sandbox.stub(element.$.storage, 'eraseEditableContentItem');
 | 
						|
        element.editing = true;
 | 
						|
 | 
						|
        element._newContent = 'new content';
 | 
						|
        flushAsynchronousOperations();
 | 
						|
        element.flushDebouncer('store');
 | 
						|
 | 
						|
        assert.isTrue(storeStub.called);
 | 
						|
        assert.deepEqual(
 | 
						|
            [element.storageKey, element._newContent],
 | 
						|
            storeStub.lastCall.args);
 | 
						|
 | 
						|
        element._newContent = '';
 | 
						|
        flushAsynchronousOperations();
 | 
						|
        element.flushDebouncer('store');
 | 
						|
 | 
						|
        assert.isTrue(eraseStub.called);
 | 
						|
        assert.deepEqual([element.storageKey], eraseStub.lastCall.args);
 | 
						|
      });
 | 
						|
    });
 | 
						|
  });
 | 
						|
</script>
 |