Merge branch 'stable-3.0' into stable-3.1

* stable-3.0:
  Edit button in diff-view must be visible only for open changes
  Update highlight.js to head of master (10.0.2)

Change-Id: I804b8e22f845cc1838dc96492dc671a06ad44f52
This commit is contained in:
David Pursehouse
2020-05-11 19:55:13 +09:00
5 changed files with 677 additions and 482 deletions

View File

@@ -42,7 +42,7 @@ Minify the file using closure-compiler using the command below.
$> mv closure-compiler-*.jar closure-compiler.jar
$> java -jar ./closure-compiler.jar \
--js build/highlight.pack.js \
--js build/highlight.js \
--js_output_file build/highlight.min.js
Copy the header comment that appears on the first line of

File diff suppressed because one or more lines are too long

View File

@@ -289,7 +289,7 @@ limitations under the License.
on-click="_toggleBlame">[[_computeBlameToggleLabel(_isBlameLoaded, _isBlameLoading)]]</gr-button>
<span class="separator"></span>
</span>
<template is="dom-if" if="[[_computeIsLoggedIn(_loggedIn)]]">
<template is="dom-if" if="[[_computeCanEdit(_loggedIn, _change.*)]]">
<span class="separator"></span>
<span class="editButton">
<gr-button

View File

@@ -1182,5 +1182,10 @@
_computeIsLoggedIn(loggedIn) {
return loggedIn ? true : false;
},
_computeCanEdit(loggedIn, changeChangeRecord) {
return this._computeIsLoggedIn(loggedIn) &&
this.changeIsOpen(changeChangeRecord.base.status);
},
});
})();

View File

@@ -91,16 +91,36 @@ limitations under the License.
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();
@@ -374,6 +394,7 @@ limitations under the License.
};
element._change = {
_number: 42,
status: 'NEW',
revisions: {
a: {_number: 1, commit: {parents: []}},
b: {_number: 2, commit: {parents: []}},
@@ -390,26 +411,61 @@ limitations under the License.
});
});
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}));
});
suite('diff prefs hidden', () => {