Edit button in diff-view must be visible only for open changes Issue: 12690 Change-Id: Icd26fb6450a23427fcf6114d8527d1579dd7a145 (cherry picked from commit 4022a64ce3c97e4d7f8d2f8ca43d0c72fa5e63a8)
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.html b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.html index b617379..034acbb 100644 --- a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.html +++ b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.html
@@ -78,16 +78,36 @@ sandbox = sinon.sandbox.create(); stub('gr-rest-api-interface', { - getConfig() { return Promise.resolve({change: {}}); }, - getLoggedIn() { return Promise.resolve(false); }, - getProjectConfig() { return Promise.resolve({}); }, - getDiffChangeDetail() { return Promise.resolve({}); }, - getChangeFiles() { return Promise.resolve({}); }, - saveFileReviewed() { return Promise.resolve(); }, - getDiffComments() { return Promise.resolve({}); }, - getDiffRobotComments() { return Promise.resolve({}); }, - getDiffDrafts() { return Promise.resolve({}); }, - getReviewedFiles() { return Promise.resolve([]); }, + getConfig() { + return Promise.resolve({change: {}}); + }, + getLoggedIn() { + return Promise.resolve(false); + }, + getProjectConfig() { + return Promise.resolve({}); + }, + getDiffChangeDetail() { + return Promise.resolve({}); + }, + getChangeFiles() { + return Promise.resolve({}); + }, + saveFileReviewed() { + return Promise.resolve(); + }, + getDiffComments() { + return Promise.resolve({}); + }, + getDiffRobotComments() { + return Promise.resolve({}); + }, + getDiffDrafts() { + return Promise.resolve({}); + }, + getReviewedFiles() { + return Promise.resolve([]); + }, }); element = fixture('basic'); return element._loadComments(); @@ -353,6 +373,7 @@ }; element._change = { _number: 42, + status: 'NEW', revisions: { a: {_number: 1, commit: {parents: []}}, b: {_number: 2, commit: {parents: []}}, @@ -369,26 +390,61 @@ }); }); - test('edit hidden when not logged in', done => { - element._loggedIn = false; - element._path = 't.txt'; - element._patchRange = { - basePatchNum: PARENT, - patchNum: '1', - }; - element._change = { - _number: 42, - revisions: { - a: {_number: 1, commit: {parents: []}}, - b: {_number: 2, commit: {parents: []}}, - }, - }; - flush(() => { - const editBtn = Polymer.dom(element.root) - .querySelector('.editButton gr-button'); - assert.isFalse(!!editBtn); - done(); + function isEditVisibile({loggedIn, changeStatus}) { + return new Promise(resolve => { + element._loggedIn = loggedIn; + element._path = 't.txt'; + element._patchRange = { + basePatchNum: PARENT, + patchNum: '1', + }; + element._change = { + _number: 42, + status: changeStatus, + revisions: { + a: {_number: 1, commit: {parents: []}}, + b: {_number: 2, commit: {parents: []}}, + }, + }; + flush(() => { + const editBtn = Polymer.dom(element.root) + .querySelector('.editButton gr-button'); + resolve(!!editBtn); + }); }); + } + + test('edit visible only when logged and status NEW', async () => { + for (const changeStatus in element.ChangeStatus) { + if (!element.ChangeStatus.hasOwnProperty(changeStatus)) { + continue; + } + assert.isFalse(await isEditVisibile({loggedIn: false, changeStatus}), + `loggedIn: false, changeStatus: ${changeStatus}`); + + if (changeStatus !== element.ChangeStatus.NEW) { + assert.isFalse(await isEditVisibile({loggedIn: true, changeStatus}), + `loggedIn: true, changeStatus: ${changeStatus}`); + } else { + assert.isTrue(await isEditVisibile({loggedIn: true, changeStatus}), + `loggedIn: true, changeStatus: ${changeStatus}`); + } + } + }); + + test('edit visible when logged and status NEW', async () => { + assert.isTrue(await isEditVisibile( + {loggedIn: true, changeStatus: element.ChangeStatus.NEW})); + }); + + test('edit hidden when logged and status ABANDONED', async () => { + assert.isFalse(await isEditVisibile( + {loggedIn: true, changeStatus: element.ChangeStatus.ABANDONED})); + }); + + test('edit hidden when logged and status MERGED', async () => { + assert.isFalse(await isEditVisibile( + {loggedIn: true, changeStatus: element.ChangeStatus.MERGED})); }); test('Diff preferences hidden when no prefs or logged out', () => {