diff options
author | Kasper Nilsson <kaspern@google.com> | 2018-09-20 11:38:51 -0700 |
---|---|---|
committer | Kasper Nilsson <kaspern@google.com> | 2018-09-20 11:41:34 -0700 |
commit | 64e53550da3b1bd666d4797ddf29f5ca49797a6c (patch) | |
tree | 74c277edf3a5c4edc11d5809c45c6c9a7a69e181 | |
parent | 95a6935ff5367cd2460fa0402c68faf834755f6e (diff) |
Deflake label change test
This seems to be a more declarative way to test this functionality, as
the flush() calls caused flakes.
This test is still an integration test, as it tests the way the plugin
API interacts with the change metadata.
Bug: Issue 9259
Change-Id: I43b882a3e2eda306cd0cbef12e57b140d8a548c5
-rw-r--r-- | polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata-it_test.html | 51 |
1 files changed, 25 insertions, 26 deletions
diff --git a/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata-it_test.html b/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata-it_test.html index b056233d96..5b36221b86 100644 --- a/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata-it_test.html +++ b/polygerrit-ui/app/elements/change/gr-change-metadata/gr-change-metadata-it_test.html @@ -136,43 +136,42 @@ limitations under the License. suite('label updates', () => { let plugin; - let labelChangeStub; - setup(done => { + setup(() => { Gerrit.install(p => plugin = p, '0.1', new URL('test/plugin.html?' + Math.random(), window.location.href).toString()); sandbox.stub(Gerrit, '_arePluginsLoaded').returns(true); Gerrit._setPluginsPending([]); element = createElement(); - - labelChangeStub = sandbox.stub(); - plugin.changeMetadata().onLabelsChanged(labelChangeStub); - flush(done); }); test('labels changed callback', done => { - assert.equal(labelChangeStub.callCount, 1); - assert.isTrue(labelChangeStub.calledWithExactly(labels)); - assert.equal(labelChangeStub.args[0][0]['CI'].all.length, 2); - element.set(['change', 'labels'], { - CI: { - all: [ - {value: 1, name: 'user 2', _account_id: 1}, - ], - values: { - ' 0': 'Don\'t submit as-is', - '+1': 'No score', - '+2': 'Looks good to me', - }, - }, - }); - // Wait for fake rest API response. - flush(() => { - assert.equal(labelChangeStub.callCount, 2); - assert.equal(labelChangeStub.args[1][0]['CI'].all.length, 1); - done(); + let callCount = 0; + const labelChangeSpy = sandbox.spy(arg => { + callCount++; + if (callCount === 1) { + assert.deepEqual(arg, labels); + assert.equal(arg.CI.all.length, 2); + element.set(['change', 'labels'], { + CI: { + all: [ + {value: 1, name: 'user 2', _account_id: 1}, + ], + values: { + ' 0': 'Don\'t submit as-is', + '+1': 'No score', + '+2': 'Looks good to me', + }, + }, + }); + } else if (callCount === 2) { + assert.equal(arg.CI.all.length, 1); + done(); + } }); + + plugin.changeMetadata().onLabelsChanged(labelChangeSpy); }); }); }); |