Move to async test-functions
Change-Id: Id5392032a85063f89e5eca41ab33a3815948b4c9
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder-element_test.js b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder-element_test.js
index 196567e..44b0b8b 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder-element_test.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder-element_test.js
@@ -751,7 +751,7 @@
let outputEl;
let keyLocations;
- setup(done => {
+ setup(async () => {
const prefs = {
line_length: 10,
show_tabs: true,
@@ -786,11 +786,11 @@
return builder;
});
element.diff = {content};
- element.render(keyLocations, prefs).then(done);
+ await element.render(keyLocations, prefs);
});
- test('addColumns is called', done => {
- element.render(keyLocations, {}).then(done);
+ test('addColumns is called', async () => {
+ await element.render(keyLocations, {});
assert.isTrue(element._builder.addColumns.called);
});
@@ -812,15 +812,13 @@
assert.strictEqual(sections[1], section[1]);
});
- test('render-start and render-content are fired', done => {
+ test('render-start and render-content are fired', async () => {
const dispatchEventStub = sinon.stub(element, 'dispatchEvent');
- element.render(keyLocations, {}).then(() => {
- const firedEventTypes = dispatchEventStub.getCalls()
- .map(c => c.args[0].type);
- assert.include(firedEventTypes, 'render-start');
- assert.include(firedEventTypes, 'render-content');
- done();
- });
+ await element.render(keyLocations, {});
+ const firedEventTypes = dispatchEventStub.getCalls()
+ .map(c => c.args[0].type);
+ assert.include(firedEventTypes, 'render-start');
+ assert.include(firedEventTypes, 'render-content');
});
test('cancel', () => {
@@ -837,7 +835,7 @@
let prefs;
let keyLocations;
- setup(done => {
+ setup(async () => {
element = mockDiffFixture.instantiate();
diff = getMockDiffResponse();
element.diff = diff;
@@ -849,10 +847,8 @@
};
keyLocations = {left: {}, right: {}};
- element.render(keyLocations, prefs).then(() => {
- builder = element._builder;
- done();
- });
+ await element.render(keyLocations, prefs);
+ builder = element._builder;
});
test('aria-labels on added line numbers', () => {
@@ -986,34 +982,30 @@
assert.isTrue(lineNumberEl.classList.contains('right'));
});
- test('_getLineNumberEl unified left', done => {
+ test('_getLineNumberEl unified left', async () => {
// Re-render as unified:
element.viewMode = 'UNIFIED_DIFF';
- element.render(keyLocations, prefs).then(() => {
- builder = element._builder;
+ await element.render(keyLocations, prefs);
+ builder = element._builder;
- const contentEl = builder.getContentByLine(5, 'left',
- element.$.diffTable);
- const lineNumberEl = builder._getLineNumberEl(contentEl, 'left');
- assert.isTrue(lineNumberEl.classList.contains('lineNum'));
- assert.isTrue(lineNumberEl.classList.contains('left'));
- done();
- });
+ const contentEl = builder.getContentByLine(5, 'left',
+ element.$.diffTable);
+ const lineNumberEl = builder._getLineNumberEl(contentEl, 'left');
+ assert.isTrue(lineNumberEl.classList.contains('lineNum'));
+ assert.isTrue(lineNumberEl.classList.contains('left'));
});
- test('_getLineNumberEl unified right', done => {
+ test('_getLineNumberEl unified right', async () => {
// Re-render as unified:
element.viewMode = 'UNIFIED_DIFF';
- element.render(keyLocations, prefs).then(() => {
- builder = element._builder;
+ await element.render(keyLocations, prefs);
+ builder = element._builder;
- const contentEl = builder.getContentByLine(5, 'right',
- element.$.diffTable);
- const lineNumberEl = builder._getLineNumberEl(contentEl, 'right');
- assert.isTrue(lineNumberEl.classList.contains('lineNum'));
- assert.isTrue(lineNumberEl.classList.contains('right'));
- done();
- });
+ const contentEl = builder.getContentByLine(5, 'right',
+ element.$.diffTable);
+ const lineNumberEl = builder._getLineNumberEl(contentEl, 'right');
+ assert.isTrue(lineNumberEl.classList.contains('lineNum'));
+ assert.isTrue(lineNumberEl.classList.contains('right'));
});
test('_getNextContentOnSide side-by-side left', () => {
@@ -1040,44 +1032,38 @@
assert.equal(nextElem.textContent, expectedNextString);
});
- test('_getNextContentOnSide unified left', done => {
+ test('_getNextContentOnSide unified left', async () => {
// Re-render as unified:
element.viewMode = 'UNIFIED_DIFF';
- element.render(keyLocations, prefs).then(() => {
- builder = element._builder;
+ await element.render(keyLocations, prefs);
+ builder = element._builder;
- const startElem = builder.getContentByLine(5, 'left',
- element.$.diffTable);
- const expectedStartString = diff.content[2].ab[0];
- const expectedNextString = diff.content[2].ab[1];
- assert.equal(startElem.textContent, expectedStartString);
+ const startElem = builder.getContentByLine(5, 'left',
+ element.$.diffTable);
+ const expectedStartString = diff.content[2].ab[0];
+ const expectedNextString = diff.content[2].ab[1];
+ assert.equal(startElem.textContent, expectedStartString);
- const nextElem = builder._getNextContentOnSide(startElem,
- 'left');
- assert.equal(nextElem.textContent, expectedNextString);
-
- done();
- });
+ const nextElem = builder._getNextContentOnSide(startElem,
+ 'left');
+ assert.equal(nextElem.textContent, expectedNextString);
});
- test('_getNextContentOnSide unified right', done => {
+ test('_getNextContentOnSide unified right', async () => {
// Re-render as unified:
element.viewMode = 'UNIFIED_DIFF';
- element.render(keyLocations, prefs).then(() => {
- builder = element._builder;
+ await element.render(keyLocations, prefs);
+ builder = element._builder;
- const startElem = builder.getContentByLine(5, 'right',
- element.$.diffTable);
- const expectedStartString = diff.content[1].b[0];
- const expectedNextString = diff.content[1].b[1];
- assert.equal(startElem.textContent, expectedStartString);
+ const startElem = builder.getContentByLine(5, 'right',
+ element.$.diffTable);
+ const expectedStartString = diff.content[1].b[0];
+ const expectedNextString = diff.content[1].b[1];
+ assert.equal(startElem.textContent, expectedStartString);
- const nextElem = builder._getNextContentOnSide(startElem,
- 'right');
- assert.equal(nextElem.textContent, expectedNextString);
-
- done();
- });
+ const nextElem = builder._getNextContentOnSide(startElem,
+ 'right');
+ assert.equal(nextElem.textContent, expectedNextString);
});
test('escaping HTML', () => {
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-cursor/gr-diff-cursor_test.js b/polygerrit-ui/app/elements/diff/gr-diff-cursor/gr-diff-cursor_test.js
index 3e63b0a..3b604eb 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-cursor/gr-diff-cursor_test.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-cursor/gr-diff-cursor_test.js
@@ -19,7 +19,7 @@
import '../gr-diff/gr-diff.js';
import './gr-diff-cursor.js';
import {html} from '@polymer/polymer/lib/utils/html-tag.js';
-import {listenOnce} from '../../../test/test-utils.js';
+import {listenOnce, mockPromise} from '../../../test/test-utils.js';
import {getMockDiffResponse} from '../../../test/mocks/diff-response.js';
import {createDefaultDiffPrefs} from '../../../constants/constants.js';
import {GrDiffCursor} from './gr-diff-cursor.js';
@@ -33,7 +33,7 @@
let diffElement;
let diff;
- setup(done => {
+ setup(async () => {
diffElement = basicFixture.instantiate();
cursor = new GrDiffCursor();
@@ -48,17 +48,19 @@
meta: {patchRange: undefined},
};
diffElement.path = 'some/path.ts';
+ const promise = mockPromise();
const setupDone = () => {
cursor._updateStops();
cursor.moveToFirstChunk();
diffElement.removeEventListener('render', setupDone);
- done();
+ promise.resolve();
};
diffElement.addEventListener('render', setupDone);
diff = getMockDiffResponse();
diffElement.prefs = createDefaultDiffPrefs();
diffElement.diff = diff;
+ await promise;
});
test('diff cursor functionality (side-by-side)', () => {
@@ -215,15 +217,17 @@
});
suite('unified diff', () => {
- setup(done => {
+ setup(async () => {
+ const promise = mockPromise();
// We must allow the diff to re-render after setting the viewMode.
const renderHandler = function() {
diffElement.removeEventListener('render', renderHandler);
cursor.reInitCursor();
- done();
+ promise.resolve();
};
diffElement.addEventListener('render', renderHandler);
diffElement.viewMode = 'UNIFIED_DIFF';
+ await promise;
});
test('diff cursor functionality (unified)', () => {
@@ -312,11 +316,12 @@
});
suite('moved chunks without line range)', () => {
- setup(done => {
+ setup(async () => {
+ const promise = mockPromise();
const renderHandler = function() {
diffElement.removeEventListener('render', renderHandler);
cursor.reInitCursor();
- done();
+ promise.resolve();
};
diffElement.addEventListener('render', renderHandler);
diffElement.diff = {...diff, content: [
@@ -352,6 +357,7 @@
],
},
]};
+ await promise;
});
test('renders moveControls with simple descriptions', () => {
@@ -363,11 +369,12 @@
});
suite('moved chunks (moveDetails)', () => {
- setup(done => {
+ setup(async () => {
+ const promise = mockPromise();
const renderHandler = function() {
diffElement.removeEventListener('render', renderHandler);
cursor.reInitCursor();
- done();
+ promise.resolve();
};
diffElement.addEventListener('render', renderHandler);
diffElement.diff = {...diff, content: [
@@ -403,6 +410,7 @@
],
},
]};
+ await promise;
});
test('renders moveControls with simple descriptions', () => {
@@ -412,37 +420,41 @@
assert.equal(movedOut.textContent, 'Moved to lines 2 - 4');
});
- test('startLineAnchor of movedIn chunk fires events', done => {
+ test('startLineAnchor of movedIn chunk fires events', async () => {
const [movedIn] = diffElement.root
.querySelectorAll('.dueToMove .moveControls');
const [startLineAnchor] = movedIn.querySelectorAll('a');
+ const promise = mockPromise();
const onMovedLinkClicked = e => {
assert.deepEqual(e.detail, {lineNum: 4, side: 'left'});
- done();
+ promise.resolve();
};
assert.equal(startLineAnchor.textContent, '4');
startLineAnchor
.addEventListener('moved-link-clicked', onMovedLinkClicked);
MockInteractions.click(startLineAnchor);
+ await promise;
});
- test('endLineAnchor of movedOut fires events', done => {
+ test('endLineAnchor of movedOut fires events', async () => {
const [, movedOut] = diffElement.root
.querySelectorAll('.dueToMove .moveControls');
const [, endLineAnchor] = movedOut.querySelectorAll('a');
+ const promise = mockPromise();
const onMovedLinkClicked = e => {
assert.deepEqual(e.detail, {lineNum: 4, side: 'right'});
- done();
+ promise.resolve();
};
assert.equal(endLineAnchor.textContent, '4');
endLineAnchor.addEventListener('moved-link-clicked', onMovedLinkClicked);
MockInteractions.click(endLineAnchor);
+ await promise;
});
});
- test('initialLineNumber not provided', done => {
+ test('initialLineNumber not provided', async () => {
let scrollBehaviorDuringMove;
const moveToNumStub = sinon.stub(cursor, 'moveToLineNumber');
const moveToChunkStub = sinon.stub(cursor, 'moveToFirstChunk')
@@ -450,6 +462,7 @@
scrollBehaviorDuringMove = cursor.cursorManager.scrollMode;
});
+ const promise = mockPromise();
function renderHandler() {
diffElement.removeEventListener('render', renderHandler);
cursor.reInitCursor();
@@ -457,19 +470,21 @@
assert.isTrue(moveToChunkStub.called);
assert.equal(scrollBehaviorDuringMove, 'never');
assert.equal(cursor.cursorManager.scrollMode, 'keep-visible');
- done();
+ promise.resolve();
}
diffElement.addEventListener('render', renderHandler);
diffElement._diffChanged(getMockDiffResponse());
+ await promise;
});
- test('initialLineNumber provided', done => {
+ test('initialLineNumber provided', async () => {
let scrollBehaviorDuringMove;
const moveToNumStub = sinon.stub(cursor, 'moveToLineNumber')
.callsFake(() => {
scrollBehaviorDuringMove = cursor.cursorManager.scrollMode;
});
const moveToChunkStub = sinon.stub(cursor, 'moveToFirstChunk');
+ const promise = mockPromise();
function renderHandler() {
diffElement.removeEventListener('render', renderHandler);
cursor.reInitCursor();
@@ -479,13 +494,14 @@
assert.equal(moveToNumStub.lastCall.args[1], 'right');
assert.equal(scrollBehaviorDuringMove, 'keep-visible');
assert.equal(cursor.cursorManager.scrollMode, 'keep-visible');
- done();
+ promise.resolve();
}
diffElement.addEventListener('render', renderHandler);
cursor.initialLineNumber = 10;
cursor.side = 'right';
diffElement._diffChanged(getMockDiffResponse());
+ await promise;
});
test('getTargetDiffElement', () => {
@@ -502,31 +518,35 @@
diffElement.loggedIn = true;
});
- test('adds new draft for selected line on the left', done => {
+ test('adds new draft for selected line on the left', async () => {
cursor.moveToLineNumber(2, 'left');
+ const promise = mockPromise();
diffElement.addEventListener('create-comment', e => {
const {lineNum, range, side} = e.detail;
assert.equal(lineNum, 2);
assert.equal(range, undefined);
assert.equal(side, 'left');
- done();
+ promise.resolve();
});
cursor.createCommentInPlace();
+ await promise;
});
- test('adds draft for selected line on the right', done => {
+ test('adds draft for selected line on the right', async () => {
cursor.moveToLineNumber(4, 'right');
+ const promise = mockPromise();
diffElement.addEventListener('create-comment', e => {
const {lineNum, range, side} = e.detail;
assert.equal(lineNum, 4);
assert.equal(range, undefined);
assert.equal(side, 'right');
- done();
+ promise.resolve();
});
cursor.createCommentInPlace();
+ await promise;
});
- test('creates comment for range if selected', done => {
+ test('creates comment for range if selected', async () => {
const someRange = {
start_line: 2,
start_character: 3,
@@ -537,14 +557,16 @@
side: 'right',
range: someRange,
};
+ const promise = mockPromise();
diffElement.addEventListener('create-comment', e => {
const {lineNum, range, side} = e.detail;
assert.equal(lineNum, 6);
assert.equal(range, someRange);
assert.equal(side, 'right');
- done();
+ promise.resolve();
});
cursor.createCommentInPlace();
+ await promise;
});
test('ignores call if nothing is selected', () => {
@@ -596,15 +618,13 @@
assert.equal(cursor._findRowByNumberAndFile(5, 'left'), row);
});
- test('expand context updates stops', done => {
+ test('expand context updates stops', async () => {
sinon.spy(cursor, '_updateStops');
MockInteractions.tap(diffElement.shadowRoot
.querySelector('gr-context-controls').shadowRoot
.querySelector('.showContext'));
- flush(() => {
- assert.isTrue(cursor._updateStops.called);
- done();
- });
+ await flush();
+ assert.isTrue(cursor._updateStops.called);
});
test('updates stops when loading changes', () => {
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host_test.js b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host_test.js
index 42aa160..344f9d8 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host_test.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host_test.js
@@ -23,7 +23,11 @@
import {Side, createDefaultDiffPrefs} from '../../../constants/constants.js';
import {createChange} from '../../../test/test-data-generators.js';
import {CoverageType} from '../../../types/types.js';
-import {addListenerForTest, stubRestApi} from '../../../test/test-utils.js';
+import {
+ addListenerForTest,
+ mockPromise,
+ stubRestApi,
+} from '../../../test/test-utils.js';
import {EditPatchSetNum, ParentPatchSetNum} from '../../../types/common.js';
import {_testOnly_resetState} from '../../../services/comments/comments-model.js';
@@ -64,14 +68,13 @@
});
suite('render reporting', () => {
- test('starts total and content timer on render-start', done => {
+ test('starts total and content timer on render-start', () => {
element.dispatchEvent(
new CustomEvent('render-start', {bubbles: true, composed: true}));
assert.isTrue(element.reporting.time.calledWithExactly(
'Diff Total Render'));
assert.isTrue(element.reporting.time.calledWithExactly(
'Diff Content Render'));
- done();
});
test('ends content timer on render-content', () => {
@@ -215,25 +218,23 @@
});
});
- test('prefetch getDiff', done => {
+ test('prefetch getDiff', async () => {
const diffRestApiStub = stubRestApi('getDiff')
.returns(Promise.resolve({content: []}));
element.changeNum = 123;
element.patchRange = {basePatchNum: 1, patchNum: 2};
element.path = 'file.txt';
element.prefetchDiff();
- element._getDiff().then(() =>{
- assert.isTrue(diffRestApiStub.calledOnce);
- done();
- });
+ await element._getDiff();
+ assert.isTrue(diffRestApiStub.calledOnce);
});
- test('_getDiff handles null diff responses', done => {
+ test('_getDiff handles null diff responses', async () => {
stubRestApi('getDiff').returns(Promise.resolve(null));
element.changeNum = 123;
element.patchRange = {basePatchNum: 1, patchNum: 2};
element.path = 'file.txt';
- element._getDiff().then(done);
+ await element._getDiff();
});
test('reload resolves on error', () => {
@@ -311,7 +312,7 @@
};
});
- test('renders image diffs with same file name', done => {
+ test('renders image diffs with same file name', async () => {
const mockDiff = {
meta_a: {name: 'carrot.jpg', content_type: 'image/jpeg', lines: 66},
meta_b: {name: 'carrot.jpg', content_type: 'image/jpeg',
@@ -342,6 +343,7 @@
},
}));
+ const promise = mockPromise();
const rendered = () => {
// Recognizes that it should be an image diff.
assert.isTrue(element.isImageDiff);
@@ -377,7 +379,7 @@
leftLoaded = true;
if (rightLoaded) {
element.removeEventListener('render', rendered);
- done();
+ promise.resolve();
}
});
@@ -390,7 +392,7 @@
rightLoaded = true;
if (leftLoaded) {
element.removeEventListener('render', rendered);
- done();
+ promise.resolve();
}
});
};
@@ -398,9 +400,10 @@
element.addEventListener('render', rendered);
element.prefs = createDefaultDiffPrefs();
element.reload();
+ await promise;
});
- test('renders image diffs with a different file name', done => {
+ test('renders image diffs with a different file name', async () => {
const mockDiff = {
meta_a: {name: 'carrot.jpg', content_type: 'image/jpeg', lines: 66},
meta_b: {name: 'carrot2.jpg', content_type: 'image/jpeg',
@@ -431,6 +434,7 @@
},
}));
+ const promise = mockPromise();
const rendered = () => {
// Recognizes that it should be an image diff.
assert.isTrue(element.isImageDiff);
@@ -468,7 +472,7 @@
leftLoaded = true;
if (rightLoaded) {
element.removeEventListener('render', rendered);
- done();
+ promise.resolve();
}
});
@@ -481,7 +485,7 @@
rightLoaded = true;
if (leftLoaded) {
element.removeEventListener('render', rendered);
- done();
+ promise.resolve();
}
});
};
@@ -489,9 +493,10 @@
element.addEventListener('render', rendered);
element.prefs = createDefaultDiffPrefs();
element.reload();
+ await promise;
});
- test('renders added image', done => {
+ test('renders added image', async () => {
const mockDiff = {
meta_b: {name: 'carrot.jpg', content_type: 'image/jpeg',
lines: 560},
@@ -517,6 +522,7 @@
},
}));
+ const promise = mockPromise();
element.addEventListener('render', () => {
// Recognizes that it should be an image diff.
assert.isTrue(element.isImageDiff);
@@ -530,14 +536,15 @@
assert.isNotOk(leftImage);
assert.isOk(rightImage);
- done();
+ promise.resolve();
});
element.prefs = createDefaultDiffPrefs();
element.reload();
+ await promise;
});
- test('renders removed image', done => {
+ test('renders removed image', async () => {
const mockDiff = {
meta_a: {name: 'carrot.jpg', content_type: 'image/jpeg',
lines: 560},
@@ -563,6 +570,7 @@
revisionImage: null,
}));
+ const promise = mockPromise();
element.addEventListener('render', () => {
// Recognizes that it should be an image diff.
assert.isTrue(element.isImageDiff);
@@ -576,14 +584,15 @@
assert.isOk(leftImage);
assert.isNotOk(rightImage);
- done();
+ promise.resolve();
});
element.prefs = createDefaultDiffPrefs();
element.reload();
+ await promise;
});
- test('does not render disallowed image type', done => {
+ test('does not render disallowed image type', async () => {
const mockDiff = {
meta_a: {name: 'carrot.jpg', content_type: 'image/jpeg-evil',
lines: 560},
@@ -611,6 +620,7 @@
revisionImage: null,
}));
+ const promise = mockPromise();
element.addEventListener('render', () => {
// Recognizes that it should be an image diff.
assert.isTrue(element.isImageDiff);
@@ -619,11 +629,12 @@
const leftImage =
element.$.diff.$.diffTable.querySelector('td.left img');
assert.isNotOk(leftImage);
- done();
+ promise.resolve();
});
element.prefs = createDefaultDiffPrefs();
element.reload();
+ await promise;
});
});
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.js b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.js
index 033b886..d9c4ba2 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.js
@@ -678,23 +678,21 @@
assert.isNotOk(args[3]);
});
- test('A fires an error event when not logged in', done => {
+ test('A fires an error event when not logged in', async () => {
const changeNavStub = sinon.stub(GerritNav, 'navigateToChange');
sinon.stub(element, '_getLoggedIn').returns(Promise.resolve(false));
const loggedInErrorSpy = sinon.spy();
element.addEventListener('show-auth-required', loggedInErrorSpy);
MockInteractions.pressAndReleaseKeyOn(element, 65, null, 'a');
- flush(() => {
- assert.isTrue(changeNavStub.notCalled, 'The `a` keyboard shortcut ' +
- 'should only work when the user is logged in.');
- assert.isNull(window.sessionStorage.getItem(
- 'changeView.showReplyDialog'));
- assert.isTrue(loggedInErrorSpy.called);
- done();
- });
+ await flush();
+ assert.isTrue(changeNavStub.notCalled, 'The `a` keyboard shortcut ' +
+ 'should only work when the user is logged in.');
+ assert.isNull(window.sessionStorage.getItem(
+ 'changeView.showReplyDialog'));
+ assert.isTrue(loggedInErrorSpy.called);
});
- test('A navigates to change with logged in', done => {
+ test('A navigates to change with logged in', async () => {
element._changeNum = '42';
element._patchRange = {
basePatchNum: 5,
@@ -712,41 +710,38 @@
const loggedInErrorSpy = sinon.spy();
element.addEventListener('show-auth-required', loggedInErrorSpy);
MockInteractions.pressAndReleaseKeyOn(element, 65, null, 'a');
- flush(() => {
- assert.isTrue(element.changeViewState.showReplyDialog);
- assert(changeNavStub.lastCall.calledWithExactly(element._change, 10,
- 5), 'Should navigate to /c/42/5..10');
- assert.isFalse(loggedInErrorSpy.called);
- done();
- });
+ await flush();
+ assert.isTrue(element.changeViewState.showReplyDialog);
+ assert(changeNavStub.lastCall.calledWithExactly(element._change, 10,
+ 5), 'Should navigate to /c/42/5..10');
+ assert.isFalse(loggedInErrorSpy.called);
});
- test('A navigates to change with old patch number with logged in', done => {
- element._changeNum = '42';
- element._patchRange = {
- basePatchNum: PARENT,
- patchNum: 1,
- };
- element._change = {
- _number: 42,
- revisions: {
- a: {_number: 1, commit: {parents: []}},
- b: {_number: 2, commit: {parents: []}},
- },
- };
- const changeNavStub = sinon.stub(GerritNav, 'navigateToChange');
- sinon.stub(element, '_getLoggedIn').returns(Promise.resolve(true));
- const loggedInErrorSpy = sinon.spy();
- element.addEventListener('show-auth-required', loggedInErrorSpy);
- MockInteractions.pressAndReleaseKeyOn(element, 65, null, 'a');
- flush(() => {
- assert.isTrue(element.changeViewState.showReplyDialog);
- assert(changeNavStub.lastCall.calledWithExactly(element._change, 1,
- PARENT), 'Should navigate to /c/42/1');
- assert.isFalse(loggedInErrorSpy.called);
- done();
- });
- });
+ test('A navigates to change with old patch number with logged in',
+ async () => {
+ element._changeNum = '42';
+ element._patchRange = {
+ basePatchNum: PARENT,
+ patchNum: 1,
+ };
+ element._change = {
+ _number: 42,
+ revisions: {
+ a: {_number: 1, commit: {parents: []}},
+ b: {_number: 2, commit: {parents: []}},
+ },
+ };
+ const changeNavStub = sinon.stub(GerritNav, 'navigateToChange');
+ sinon.stub(element, '_getLoggedIn').returns(Promise.resolve(true));
+ const loggedInErrorSpy = sinon.spy();
+ element.addEventListener('show-auth-required', loggedInErrorSpy);
+ MockInteractions.pressAndReleaseKeyOn(element, 65, null, 'a');
+ await flush();
+ assert.isTrue(element.changeViewState.showReplyDialog);
+ assert(changeNavStub.lastCall.calledWithExactly(element._change, 1,
+ PARENT), 'Should navigate to /c/42/1');
+ assert.isFalse(loggedInErrorSpy.called);
+ });
test('keyboard shortcuts with patch range', () => {
element._changeNum = '42';
@@ -860,7 +855,7 @@
assert.isTrue(changeNavStub.calledOnce);
});
- test('edit should redirect to edit page', done => {
+ test('edit should redirect to edit page', async () => {
element._loggedIn = true;
element._path = 't.txt';
element._patchRange = {
@@ -877,23 +872,21 @@
},
};
const redirectStub = sinon.stub(GerritNav, 'navigateToRelativeUrl');
- flush(() => {
- const editBtn = element.shadowRoot
- .querySelector('.editButton gr-button');
- assert.isTrue(!!editBtn);
- MockInteractions.tap(editBtn);
- assert.isTrue(redirectStub.called);
- assert.isTrue(redirectStub.lastCall.calledWithExactly(
- GerritNav.getEditUrlForDiff(
- element._change,
- element._path,
- element._patchRange.patchNum
- )));
- done();
- });
+ await flush();
+ const editBtn = element.shadowRoot
+ .querySelector('.editButton gr-button');
+ assert.isTrue(!!editBtn);
+ MockInteractions.tap(editBtn);
+ assert.isTrue(redirectStub.called);
+ assert.isTrue(redirectStub.lastCall.calledWithExactly(
+ GerritNav.getEditUrlForDiff(
+ element._change,
+ element._path,
+ element._patchRange.patchNum
+ )));
});
- test('edit should redirect to edit page with line number', done => {
+ test('edit should redirect to edit page with line number', async () => {
const lineNumber = 42;
element._loggedIn = true;
element._path = 't.txt';
@@ -913,21 +906,19 @@
sinon.stub(element.cursor, 'getAddress')
.returns({number: lineNumber, isLeftSide: false});
const redirectStub = sinon.stub(GerritNav, 'navigateToRelativeUrl');
- flush(() => {
- const editBtn = element.shadowRoot
- .querySelector('.editButton gr-button');
- assert.isTrue(!!editBtn);
- MockInteractions.tap(editBtn);
- assert.isTrue(redirectStub.called);
- assert.isTrue(redirectStub.lastCall.calledWithExactly(
- GerritNav.getEditUrlForDiff(
- element._change,
- element._path,
- element._patchRange.patchNum,
- lineNumber
- )));
- done();
- });
+ await flush();
+ const editBtn = element.shadowRoot
+ .querySelector('.editButton gr-button');
+ assert.isTrue(!!editBtn);
+ MockInteractions.tap(editBtn);
+ assert.isTrue(redirectStub.called);
+ assert.isTrue(redirectStub.lastCall.calledWithExactly(
+ GerritNav.getEditUrlForDiff(
+ element._change,
+ element._path,
+ element._patchRange.patchNum,
+ lineNumber
+ )));
});
function isEditVisibile({loggedIn, changeStatus}) {
@@ -1294,7 +1285,7 @@
assert.isFalse(saveReviewedStub.called);
});
- test('hash is determined from params', done => {
+ test('hash is determined from params', async () => {
sinon.stub(element.$.diffHost, 'reload');
sinon.stub(element, '_initLineOfInterestAndCursor');
@@ -1308,10 +1299,8 @@
hash: 10,
};
- flush(() => {
- assert.isTrue(element._initLineOfInterestAndCursor.calledOnce);
- done();
- });
+ await flush();
+ assert.isTrue(element._initLineOfInterestAndCursor.calledOnce);
});
test('diff mode selector correctly toggles the diff', () => {
@@ -1360,15 +1349,13 @@
assert.equal(element._getDiffViewMode(), 'SIDE_BY_SIDE');
});
- test('diff mode selector should be hidden for binary', done => {
+ test('diff mode selector should be hidden for binary', async () => {
element._diff = {binary: true, content: []};
- flush(() => {
- const diffModeSelector = element.shadowRoot
- .querySelector('.diffModeSelector');
- assert.isTrue(diffModeSelector.classList.contains('hide'));
- done();
- });
+ await flush();
+ const diffModeSelector = element.shadowRoot
+ .querySelector('.diffModeSelector');
+ assert.isTrue(diffModeSelector.classList.contains('hide'));
});
suite('_commitRange', () => {
@@ -1400,7 +1387,7 @@
change));
});
- test('uses the patchNum and basePatchNum ', done => {
+ test('uses the patchNum and basePatchNum ', async () => {
element.params = {
view: GerritNav.View.DIFF,
changeNum: '42',
@@ -1409,16 +1396,14 @@
path: '/COMMIT_MSG',
};
element._change = change;
- flush(() => {
- assert.deepEqual(element._commitRange, {
- baseCommit: 'commit-sha-2',
- commit: 'commit-sha-4',
- });
- done();
+ await flush();
+ assert.deepEqual(element._commitRange, {
+ baseCommit: 'commit-sha-2',
+ commit: 'commit-sha-4',
});
});
- test('uses the parent when there is no base patch num ', done => {
+ test('uses the parent when there is no base patch num ', async () => {
element.params = {
view: GerritNav.View.DIFF,
changeNum: '42',
@@ -1426,12 +1411,10 @@
path: '/COMMIT_MSG',
};
element._change = change;
- flush(() => {
- assert.deepEqual(element._commitRange, {
- commit: 'commit-sha-5',
- baseCommit: 'sha-5-parent',
- });
- done();
+ await flush();
+ assert.deepEqual(element._commitRange, {
+ commit: 'commit-sha-5',
+ baseCommit: 'sha-5-parent',
});
});
});
@@ -1921,7 +1904,7 @@
]);
});
- test('File change should trigger navigateToDiff once', done => {
+ test('File change should trigger navigateToDiff once', async () => {
element._files = getFilesFromFileList(['file1', 'file2', 'file3']);
sinon.stub(element, '_initLineOfInterestAndCursor');
sinon.stub(GerritNav, 'navigateToDiff');
@@ -1942,7 +1925,7 @@
...createChange(),
revisions: createRevisions(1),
};
- flush();
+ await flush();
assert.isTrue(GerritNav.navigateToDiff.notCalled);
// Switch to file2
@@ -1964,7 +1947,6 @@
// No extra call
assert.isTrue(GerritNav.navigateToDiff.calledOnce);
- done();
});
test('_computeDownloadDropdownLinks', () => {
diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.js b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.js
index c59ceb7..9ee779c 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.js
@@ -23,7 +23,7 @@
import {_setHiddenScroll} from '../../../scripts/hiddenscroll.js';
import {runA11yAudit} from '../../../test/a11y-test-utils.js';
import '@polymer/paper-button/paper-button.js';
-import {stubRestApi} from '../../../test/test-utils.js';
+import {mockPromise, stubRestApi} from '../../../test/test-utils.js';
const basicFixture = fixtureFromElement('gr-diff');
@@ -232,7 +232,9 @@
};
});
- test('renders image diffs with same file name', done => {
+ test('renders image diffs with same file name', async () => {
+ const leftRendered = mockPromise();
+ const rightRendered = mockPromise();
const rendered = () => {
// Recognizes that it should be an image diff.
assert.isTrue(element.isImageDiff);
@@ -256,19 +258,12 @@
assert.isNotOk(rightLabelName);
assert.isNotOk(leftLabelName);
- let leftLoaded = false;
- let rightLoaded = false;
-
leftImage.addEventListener('load', () => {
assert.isOk(leftImage);
assert.equal(leftImage.getAttribute('src'),
'data:image/bmp;base64,' + mockFile1.body);
assert.equal(leftLabelContent.textContent, '1\u00d71 image/bmp');// \u00d7 - '×'
- leftLoaded = true;
- if (rightLoaded) {
- element.removeEventListener('render', rendered);
- done();
- }
+ leftRendered.resolve();
});
rightImage.addEventListener('load', () => {
@@ -277,11 +272,7 @@
'data:image/bmp;base64,' + mockFile2.body);
assert.equal(rightLabelContent.textContent, '1\u00d71 image/bmp');// \u00d7 - '×'
- rightLoaded = true;
- if (leftLoaded) {
- element.removeEventListener('render', rendered);
- done();
- }
+ rightRendered.resolve();
});
};
@@ -305,9 +296,11 @@
content: [{skip: 66}],
binary: true,
};
+ await Promise.all([leftRendered, rightRendered]);
+ element.removeEventListener('render', rendered);
});
- test('renders image diffs with a different file name', done => {
+ test('renders image diffs with a different file name', async () => {
const mockDiff = {
meta_a: {name: 'carrot.jpg', content_type: 'image/jpeg', lines: 66},
meta_b: {name: 'carrot2.jpg', content_type: 'image/jpeg',
@@ -324,7 +317,8 @@
content: [{skip: 66}],
binary: true,
};
-
+ const leftRendered = mockPromise();
+ const rightRendered = mockPromise();
const rendered = () => {
// Recognizes that it should be an image diff.
assert.isTrue(element.isImageDiff);
@@ -350,19 +344,12 @@
assert.equal(leftLabelName.textContent, mockDiff.meta_a.name);
assert.equal(rightLabelName.textContent, mockDiff.meta_b.name);
- let leftLoaded = false;
- let rightLoaded = false;
-
leftImage.addEventListener('load', () => {
assert.isOk(leftImage);
assert.equal(leftImage.getAttribute('src'),
'data:image/bmp;base64,' + mockFile1.body);
assert.equal(leftLabelContent.textContent, '1\u00d71 image/bmp');// \u00d7 - '×'
- leftLoaded = true;
- if (rightLoaded) {
- element.removeEventListener('render', rendered);
- done();
- }
+ leftRendered.resolve();
});
rightImage.addEventListener('load', () => {
@@ -371,11 +358,7 @@
'data:image/bmp;base64,' + mockFile2.body);
assert.equal(rightLabelContent.textContent, '1\u00d71 image/bmp');// \u00d7 - '×'
- rightLoaded = true;
- if (leftLoaded) {
- element.removeEventListener('render', rendered);
- done();
- }
+ rightRendered.resolve();
});
};
@@ -386,9 +369,11 @@
element.revisionImage = mockFile2;
element.revisionImage._name = mockDiff.meta_b.name;
element.diff = mockDiff;
+ await Promise.all([leftRendered, rightRendered]);
+ element.removeEventListener('render', rendered);
});
- test('renders added image', done => {
+ test('renders added image', async () => {
const mockDiff = {
meta_b: {name: 'carrot.jpg', content_type: 'image/jpeg',
lines: 560},
@@ -405,27 +390,27 @@
binary: true,
};
- function rendered() {
- // Recognizes that it should be an image diff.
- assert.isTrue(element.isImageDiff);
- assert.instanceOf(
- element.$.diffBuilder._builder, GrDiffBuilderImage);
-
- const leftImage = element.$.diffTable.querySelector('td.left img');
- const rightImage = element.$.diffTable.querySelector('td.right img');
-
- assert.isNotOk(leftImage);
- assert.isOk(rightImage);
- done();
- element.removeEventListener('render', rendered);
- }
+ const promise = mockPromise();
+ function rendered() { promise.resolve(); }
element.addEventListener('render', rendered);
element.revisionImage = mockFile2;
element.diff = mockDiff;
+ await promise;
+ element.removeEventListener('render', rendered);
+ // Recognizes that it should be an image diff.
+ assert.isTrue(element.isImageDiff);
+ assert.instanceOf(
+ element.$.diffBuilder._builder, GrDiffBuilderImage);
+
+ const leftImage = element.$.diffTable.querySelector('td.left img');
+ const rightImage = element.$.diffTable.querySelector('td.right img');
+
+ assert.isNotOk(leftImage);
+ assert.isOk(rightImage);
});
- test('renders removed image', done => {
+ test('renders removed image', async () => {
const mockDiff = {
meta_a: {name: 'carrot.jpg', content_type: 'image/jpeg',
lines: 560},
@@ -441,28 +426,27 @@
content: [{skip: 66}],
binary: true,
};
-
- function rendered() {
- // Recognizes that it should be an image diff.
- assert.isTrue(element.isImageDiff);
- assert.instanceOf(
- element.$.diffBuilder._builder, GrDiffBuilderImage);
-
- const leftImage = element.$.diffTable.querySelector('td.left img');
- const rightImage = element.$.diffTable.querySelector('td.right img');
-
- assert.isOk(leftImage);
- assert.isNotOk(rightImage);
- done();
- element.removeEventListener('render', rendered);
- }
+ const promise = mockPromise();
+ function rendered() { promise.resolve(); }
element.addEventListener('render', rendered);
element.baseImage = mockFile1;
element.diff = mockDiff;
+ await promise;
+ element.removeEventListener('render', rendered);
+ // Recognizes that it should be an image diff.
+ assert.isTrue(element.isImageDiff);
+ assert.instanceOf(
+ element.$.diffBuilder._builder, GrDiffBuilderImage);
+
+ const leftImage = element.$.diffTable.querySelector('td.left img');
+ const rightImage = element.$.diffTable.querySelector('td.right img');
+
+ assert.isOk(leftImage);
+ assert.isNotOk(rightImage);
});
- test('does not render disallowed image type', done => {
+ test('does not render disallowed image type', async () => {
const mockDiff = {
meta_a: {name: 'carrot.jpg', content_type: 'image/jpeg-evil',
lines: 560},
@@ -480,50 +464,54 @@
};
mockFile1.type = 'image/jpeg-evil';
- function rendered() {
- // Recognizes that it should be an image diff.
- assert.isTrue(element.isImageDiff);
- assert.instanceOf(
- element.$.diffBuilder._builder, GrDiffBuilderImage);
- const leftImage = element.$.diffTable.querySelector('td.left img');
- assert.isNotOk(leftImage);
- done();
- element.removeEventListener('render', rendered);
- }
+ const promise = mockPromise();
+ function rendered() { promise.resolve(); }
element.addEventListener('render', rendered);
element.baseImage = mockFile1;
element.diff = mockDiff;
+ await promise;
+ element.removeEventListener('render', rendered);
+ // Recognizes that it should be an image diff.
+ assert.isTrue(element.isImageDiff);
+ assert.instanceOf(
+ element.$.diffBuilder._builder, GrDiffBuilderImage);
+ const leftImage = element.$.diffTable.querySelector('td.left img');
+ assert.isNotOk(leftImage);
});
});
- test('_handleTap lineNum', done => {
+ test('_handleTap lineNum', async () => {
const addDraftStub = sinon.stub(element, 'addDraftAtLine');
const el = document.createElement('div');
el.className = 'lineNum';
+ const promise = mockPromise();
el.addEventListener('click', e => {
element._handleTap(e);
assert.isTrue(addDraftStub.called);
assert.equal(addDraftStub.lastCall.args[0], el);
- done();
+ promise.resolve();
});
el.click();
+ await promise;
});
- test('_handleTap context', done => {
+ test('_handleTap context', async () => {
const showContextStub =
sinon.stub(element.$.diffBuilder, 'showContext');
const el = document.createElement('div');
el.className = 'showContext';
+ const promise = mockPromise();
el.addEventListener('click', e => {
element._handleDiffContextExpanded(e);
assert.isTrue(showContextStub.called);
- done();
+ promise.resolve();
});
el.click();
+ await promise;
});
- test('_handleTap content', done => {
+ test('_handleTap content', async () => {
const content = document.createElement('div');
const lineEl = document.createElement('div');
lineEl.className = 'lineNum';
@@ -534,13 +522,15 @@
const selectStub = sinon.stub(element, '_selectLine');
content.className = 'content';
+ const promise = mockPromise();
content.addEventListener('click', e => {
element._handleTap(e);
assert.isTrue(selectStub.called);
assert.equal(selectStub.lastCall.args[0], lineEl);
- done();
+ promise.resolve();
});
content.click();
+ await promise;
});
suite('getCursorStops', () => {
@@ -816,41 +806,47 @@
element.noRenderOnPrefsChange = true;
});
- test('large render w/ context = 10', done => {
+ test('large render w/ context = 10', async () => {
element.prefs = {...MINIMAL_PREFS, context: 10};
+ const promise = mockPromise();
function rendered() {
assert.isTrue(renderStub.called);
assert.isFalse(element._showWarning);
- done();
+ promise.resolve();
element.removeEventListener('render', rendered);
}
element.addEventListener('render', rendered);
element._renderDiffTable();
+ await promise;
});
- test('large render w/ whole file and bypass', done => {
+ test('large render w/ whole file and bypass', async () => {
element.prefs = {...MINIMAL_PREFS, context: -1};
element._safetyBypass = 10;
+ const promise = mockPromise();
function rendered() {
assert.isTrue(renderStub.called);
assert.isFalse(element._showWarning);
- done();
+ promise.resolve();
element.removeEventListener('render', rendered);
}
element.addEventListener('render', rendered);
element._renderDiffTable();
+ await promise;
});
- test('large render w/ whole file and no bypass', done => {
+ test('large render w/ whole file and no bypass', async () => {
element.prefs = {...MINIMAL_PREFS, context: -1};
+ const promise = mockPromise();
function rendered() {
assert.isFalse(renderStub.called);
assert.isTrue(element._showWarning);
- done();
+ promise.resolve();
element.removeEventListener('render', rendered);
}
element.addEventListener('render', rendered);
element._renderDiffTable();
+ await promise;
});
test('toggles expand context using bypass', async () => {
@@ -1219,16 +1215,18 @@
assert.equal(element.getDiffLength(diff), 52);
});
- test('`render` event has contentRendered field in detail', done => {
+ test('`render` event has contentRendered field in detail', async () => {
element = basicFixture.instantiate();
element.prefs = {};
sinon.stub(element.$.diffBuilder, 'render')
.returns(Promise.resolve());
+ const promise = mockPromise();
element.addEventListener('render', event => {
assert.isTrue(event.detail.contentRendered);
- done();
+ promise.resolve();
});
element._renderDiffTable();
+ await promise;
});
test('_prefsEqual', () => {
diff --git a/polygerrit-ui/app/elements/diff/gr-patch-range-select/gr-patch-range-select_test.js b/polygerrit-ui/app/elements/diff/gr-patch-range-select/gr-patch-range-select_test.js
index 89b8b4a..0fe1fe2 100644
--- a/polygerrit-ui/app/elements/diff/gr-patch-range-select/gr-patch-range-select_test.js
+++ b/polygerrit-ui/app/elements/diff/gr-patch-range-select/gr-patch-range-select_test.js
@@ -196,7 +196,7 @@
});
test('_computeBaseDropdownContent called when changeComments update',
- done => {
+ async () => {
element.revisions = [
{commit: {parents: []}},
{commit: {parents: []}},
@@ -212,15 +212,14 @@
];
element.patchNum = 2;
element.basePatchNum = 'PARENT';
- flush();
+ await flush();
// Should be recomputed for each available patch
sinon.stub(element, '_computeBaseDropdownContent');
assert.equal(element._computeBaseDropdownContent.callCount, 0);
element.changeComments = new ChangeComments();
- flush();
+ await flush();
assert.equal(element._computeBaseDropdownContent.callCount, 1);
- done();
});
test('_computePatchDropdownContent called when basePatchNum updates', () => {
diff --git a/polygerrit-ui/app/elements/diff/gr-syntax-layer/gr-syntax-layer_test.js b/polygerrit-ui/app/elements/diff/gr-syntax-layer/gr-syntax-layer_test.js
index b8c3c16..c907a80 100644
--- a/polygerrit-ui/app/elements/diff/gr-syntax-layer/gr-syntax-layer_test.js
+++ b/polygerrit-ui/app/elements/diff/gr-syntax-layer/gr-syntax-layer_test.js
@@ -120,7 +120,7 @@
assert.isFalse(annotationSpy.called);
});
- test('process on empty diff does nothing', done => {
+ test('process on empty diff does nothing', async () => {
element.diff = {
meta_a: {content_type: 'application/json'},
meta_b: {content_type: 'application/json'},
@@ -128,17 +128,14 @@
};
const processNextSpy = sinon.spy(element, '_processNextLine');
- const processPromise = element.process();
+ await element.process();
- processPromise.then(() => {
- assert.isFalse(processNextSpy.called);
- assert.equal(element.baseRanges.length, 0);
- assert.equal(element.revisionRanges.length, 0);
- done();
- });
+ assert.isFalse(processNextSpy.called);
+ assert.equal(element.baseRanges.length, 0);
+ assert.equal(element.revisionRanges.length, 0);
});
- test('process for unsupported languages does nothing', done => {
+ test('process for unsupported languages does nothing', async () => {
element.diff = {
meta_a: {content_type: 'text/x+objective-cobol-plus-plus'},
meta_b: {content_type: 'application/not-a-real-language'},
@@ -146,33 +143,27 @@
};
const processNextSpy = sinon.spy(element, '_processNextLine');
- const processPromise = element.process();
+ await element.process();
- processPromise.then(() => {
- assert.isFalse(processNextSpy.called);
- assert.equal(element.baseRanges.length, 0);
- assert.equal(element.revisionRanges.length, 0);
- done();
- });
+ assert.isFalse(processNextSpy.called);
+ assert.equal(element.baseRanges.length, 0);
+ assert.equal(element.revisionRanges.length, 0);
});
- test('process while disabled does nothing', done => {
+ test('process while disabled does nothing', async () => {
const processNextSpy = sinon.spy(element, '_processNextLine');
element.enabled = false;
const loadHLJSSpy = sinon.spy(element, '_loadHLJS');
- const processPromise = element.process();
+ await element.process();
- processPromise.then(() => {
- assert.isFalse(processNextSpy.called);
- assert.equal(element.baseRanges.length, 0);
- assert.equal(element.revisionRanges.length, 0);
- assert.isFalse(loadHLJSSpy.called);
- done();
- });
+ assert.isFalse(processNextSpy.called);
+ assert.equal(element.baseRanges.length, 0);
+ assert.equal(element.revisionRanges.length, 0);
+ assert.isFalse(loadHLJSSpy.called);
});
- test('process highlight ipsum', done => {
+ test('process highlight ipsum', async () => {
element.diff.meta_a.content_type = 'application/json';
element.diff.meta_b.content_type = 'application/json';
@@ -180,65 +171,61 @@
window.hljs = mockHLJS;
const highlightSpy = sinon.spy(mockHLJS, 'highlight');
const processNextSpy = sinon.spy(element, '_processNextLine');
- const processPromise = element.process();
+ await element.process();
- processPromise.then(() => {
- const linesA = diff.meta_a.lines;
- const linesB = diff.meta_b.lines;
+ const linesA = diff.meta_a.lines;
+ const linesB = diff.meta_b.lines;
- assert.isTrue(processNextSpy.called);
- assert.equal(element.baseRanges.length, linesA);
- assert.equal(element.revisionRanges.length, linesB);
+ assert.isTrue(processNextSpy.called);
+ assert.equal(element.baseRanges.length, linesA);
+ assert.equal(element.revisionRanges.length, linesB);
- assert.equal(highlightSpy.callCount, linesA + linesB);
+ assert.equal(highlightSpy.callCount, linesA + linesB);
- // The first line of both sides have a range.
- let ranges = [element.baseRanges[0], element.revisionRanges[0]];
- for (const range of ranges) {
- assert.equal(range.length, 1);
- assert.equal(range[0].className,
- 'gr-diff gr-syntax gr-syntax-string');
- assert.equal(range[0].start, 'lorem '.length);
- assert.equal(range[0].length, 'ipsum'.length);
- }
-
- // There are no ranges from ll.1-12 on the left and ll.1-11 on the
- // right.
- ranges = element.baseRanges.slice(1, 12)
- .concat(element.revisionRanges.slice(1, 11));
-
- for (const range of ranges) {
- assert.equal(range.length, 0);
- }
-
- // There should be another pair of ranges on l.13 for the left and
- // l.12 for the right.
- ranges = [element.baseRanges[13], element.revisionRanges[12]];
-
- for (const range of ranges) {
- assert.equal(range.length, 1);
- assert.equal(range[0].className,
- 'gr-diff gr-syntax gr-syntax-string');
- assert.equal(range[0].start, 32);
- assert.equal(range[0].length, 'ipsum'.length);
- }
-
- // The next group should have a similar instance on either side.
-
- let range = element.baseRanges[15];
+ // The first line of both sides have a range.
+ let ranges = [element.baseRanges[0], element.revisionRanges[0]];
+ for (const range of ranges) {
assert.equal(range.length, 1);
- assert.equal(range[0].className, 'gr-diff gr-syntax gr-syntax-string');
- assert.equal(range[0].start, 34);
+ assert.equal(range[0].className,
+ 'gr-diff gr-syntax gr-syntax-string');
+ assert.equal(range[0].start, 'lorem '.length);
assert.equal(range[0].length, 'ipsum'.length);
+ }
- range = element.revisionRanges[14];
+ // There are no ranges from ll.1-12 on the left and ll.1-11 on the
+ // right.
+ ranges = element.baseRanges.slice(1, 12)
+ .concat(element.revisionRanges.slice(1, 11));
+
+ for (const range of ranges) {
+ assert.equal(range.length, 0);
+ }
+
+ // There should be another pair of ranges on l.13 for the left and
+ // l.12 for the right.
+ ranges = [element.baseRanges[13], element.revisionRanges[12]];
+
+ for (const range of ranges) {
assert.equal(range.length, 1);
- assert.equal(range[0].className, 'gr-diff gr-syntax gr-syntax-string');
- assert.equal(range[0].start, 35);
+ assert.equal(range[0].className,
+ 'gr-diff gr-syntax gr-syntax-string');
+ assert.equal(range[0].start, 32);
assert.equal(range[0].length, 'ipsum'.length);
+ }
- done();
- });
+ // The next group should have a similar instance on either side.
+
+ let range = element.baseRanges[15];
+ assert.equal(range.length, 1);
+ assert.equal(range[0].className, 'gr-diff gr-syntax gr-syntax-string');
+ assert.equal(range[0].start, 34);
+ assert.equal(range[0].length, 'ipsum'.length);
+
+ range = element.revisionRanges[14];
+ assert.equal(range.length, 1);
+ assert.equal(range[0].className, 'gr-diff gr-syntax gr-syntax-string');
+ assert.equal(range[0].start, 35);
+ assert.equal(range[0].length, 'ipsum'.length);
});
test('init calls cancel', () => {