diff options
Diffstat (limited to 'polygerrit-ui/app/elements/shared/gr-editable-content/gr-editable-content_test.html')
-rw-r--r-- | polygerrit-ui/app/elements/shared/gr-editable-content/gr-editable-content_test.html | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/polygerrit-ui/app/elements/shared/gr-editable-content/gr-editable-content_test.html b/polygerrit-ui/app/elements/shared/gr-editable-content/gr-editable-content_test.html index d8e5b219d9..cc44d9b6d0 100644 --- a/polygerrit-ui/app/elements/shared/gr-editable-content/gr-editable-content_test.html +++ b/polygerrit-ui/app/elements/shared/gr-editable-content/gr-editable-content_test.html @@ -1,5 +1,6 @@ <!DOCTYPE html> <!-- +@license Copyright (C) 2016 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); @@ -36,11 +37,15 @@ limitations under the License. <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 => { @@ -94,5 +99,57 @@ limitations under the License. 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> |