PolyGerrit: Remove support for drafts
Note that this removes drafts for patches, comments as drafts are still supported. Bug: Issue 7210 Change-Id: Idf2069bd38a62996d58ff515b7e27444bbe3b708
This commit is contained in:
@@ -34,7 +34,6 @@ limitations under the License.
|
|||||||
|
|
||||||
ChangeStatus: {
|
ChangeStatus: {
|
||||||
ABANDONED: 'ABANDONED',
|
ABANDONED: 'ABANDONED',
|
||||||
DRAFT: 'DRAFT',
|
|
||||||
MERGED: 'MERGED',
|
MERGED: 'MERGED',
|
||||||
NEW: 'NEW',
|
NEW: 'NEW',
|
||||||
},
|
},
|
||||||
@@ -117,8 +116,7 @@ limitations under the License.
|
|||||||
},
|
},
|
||||||
|
|
||||||
changeIsOpen(status) {
|
changeIsOpen(status) {
|
||||||
return status === this.ChangeStatus.NEW ||
|
return status === this.ChangeStatus.NEW;
|
||||||
status === this.ChangeStatus.DRAFT;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
changeStatusString(change) {
|
changeStatusString(change) {
|
||||||
@@ -133,7 +131,6 @@ limitations under the License.
|
|||||||
}
|
}
|
||||||
if (change.work_in_progress) { states.push('WIP'); }
|
if (change.work_in_progress) { states.push('WIP'); }
|
||||||
if (change.is_private) { states.push('Private'); }
|
if (change.is_private) { states.push('Private'); }
|
||||||
if (change.status === this.ChangeStatus.DRAFT) { states.push('Draft'); }
|
|
||||||
return states.join(', ');
|
return states.join(', ');
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@@ -214,11 +214,6 @@ limitations under the License.
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
_number: 3,
|
_number: 3,
|
||||||
status: 'DRAFT',
|
|
||||||
owner: {_account_id: 42},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
_number: 4,
|
|
||||||
status: 'ABANDONED',
|
status: 'ABANDONED',
|
||||||
owner: {_account_id: 0},
|
owner: {_account_id: 0},
|
||||||
},
|
},
|
||||||
@@ -226,7 +221,7 @@ limitations under the License.
|
|||||||
flushAsynchronousOperations();
|
flushAsynchronousOperations();
|
||||||
let elementItems = Polymer.dom(element.root).querySelectorAll(
|
let elementItems = Polymer.dom(element.root).querySelectorAll(
|
||||||
'gr-change-list-item');
|
'gr-change-list-item');
|
||||||
assert.equal(elementItems.length, 5);
|
assert.equal(elementItems.length, 4);
|
||||||
for (let i = 0; i < elementItems.length; i++) {
|
for (let i = 0; i < elementItems.length; i++) {
|
||||||
assert.isFalse(elementItems[i].hasAttribute('needs-review'));
|
assert.isFalse(elementItems[i].hasAttribute('needs-review'));
|
||||||
}
|
}
|
||||||
@@ -234,22 +229,20 @@ limitations under the License.
|
|||||||
element.showReviewedState = true;
|
element.showReviewedState = true;
|
||||||
elementItems = Polymer.dom(element.root).querySelectorAll(
|
elementItems = Polymer.dom(element.root).querySelectorAll(
|
||||||
'gr-change-list-item');
|
'gr-change-list-item');
|
||||||
assert.equal(elementItems.length, 5);
|
assert.equal(elementItems.length, 4);
|
||||||
assert.isFalse(elementItems[0].hasAttribute('needs-review'));
|
assert.isFalse(elementItems[0].hasAttribute('needs-review'));
|
||||||
assert.isTrue(elementItems[1].hasAttribute('needs-review'));
|
assert.isTrue(elementItems[1].hasAttribute('needs-review'));
|
||||||
assert.isFalse(elementItems[2].hasAttribute('needs-review'));
|
assert.isFalse(elementItems[2].hasAttribute('needs-review'));
|
||||||
assert.isTrue(elementItems[3].hasAttribute('needs-review'));
|
assert.isFalse(elementItems[3].hasAttribute('needs-review'));
|
||||||
assert.isFalse(elementItems[4].hasAttribute('needs-review'));
|
|
||||||
|
element.account = {_account_id: 42};
|
||||||
element.account = {_account_id: 42};
|
elementItems = Polymer.dom(element.root).querySelectorAll(
|
||||||
elementItems = Polymer.dom(element.root).querySelectorAll(
|
'gr-change-list-item');
|
||||||
'gr-change-list-item');
|
assert.equal(elementItems.length, 4);
|
||||||
assert.equal(elementItems.length, 5);
|
|
||||||
assert.isFalse(elementItems[0].hasAttribute('needs-review'));
|
assert.isFalse(elementItems[0].hasAttribute('needs-review'));
|
||||||
assert.isTrue(elementItems[1].hasAttribute('needs-review'));
|
assert.isTrue(elementItems[1].hasAttribute('needs-review'));
|
||||||
assert.isFalse(elementItems[2].hasAttribute('needs-review'));
|
assert.isFalse(elementItems[2].hasAttribute('needs-review'));
|
||||||
assert.isFalse(elementItems[3].hasAttribute('needs-review'));
|
assert.isFalse(elementItems[3].hasAttribute('needs-review'));
|
||||||
assert.isFalse(elementItems[4].hasAttribute('needs-review'));
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('no changes', () => {
|
test('no changes', () => {
|
||||||
@@ -464,11 +457,6 @@ limitations under the License.
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
_number: 1,
|
_number: 1,
|
||||||
status: 'DRAFT',
|
|
||||||
owner: {_account_id: 42},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
_number: 2,
|
|
||||||
status: 'ABANDONED',
|
status: 'ABANDONED',
|
||||||
owner: {_account_id: 0},
|
owner: {_account_id: 0},
|
||||||
},
|
},
|
||||||
@@ -476,7 +464,7 @@ limitations under the License.
|
|||||||
element.account = {_account_id: 42};
|
element.account = {_account_id: 42};
|
||||||
flushAsynchronousOperations();
|
flushAsynchronousOperations();
|
||||||
const items = element._getListItems();
|
const items = element._getListItems();
|
||||||
assert.equal(items.length, 3);
|
assert.equal(items.length, 2);
|
||||||
for (let i = 0; i < items.length; i++) {
|
for (let i = 0; i < items.length; i++) {
|
||||||
assert.equal(items[i].hasAttribute('assigned'),
|
assert.equal(items[i].hasAttribute('assigned'),
|
||||||
items[i]._account_id === element.account._account_id);
|
items[i]._account_id === element.account._account_id);
|
||||||
|
@@ -69,8 +69,6 @@
|
|||||||
// TODO(andybons): Add the rest of the revision actions.
|
// TODO(andybons): Add the rest of the revision actions.
|
||||||
const RevisionActions = {
|
const RevisionActions = {
|
||||||
CHERRYPICK: 'cherrypick',
|
CHERRYPICK: 'cherrypick',
|
||||||
DELETE: '/',
|
|
||||||
PUBLISH: 'publish',
|
|
||||||
REBASE: 'rebase',
|
REBASE: 'rebase',
|
||||||
SUBMIT: 'submit',
|
SUBMIT: 'submit',
|
||||||
DOWNLOAD: 'download',
|
DOWNLOAD: 'download',
|
||||||
@@ -81,7 +79,6 @@
|
|||||||
cherrypick: 'Cherry-Picking...',
|
cherrypick: 'Cherry-Picking...',
|
||||||
delete: 'Deleting...',
|
delete: 'Deleting...',
|
||||||
move: 'Moving..',
|
move: 'Moving..',
|
||||||
publish: 'Publishing...',
|
|
||||||
rebase: 'Rebasing...',
|
rebase: 'Rebasing...',
|
||||||
restore: 'Restoring...',
|
restore: 'Restoring...',
|
||||||
revert: 'Reverting...',
|
revert: 'Reverting...',
|
||||||
@@ -186,7 +183,6 @@
|
|||||||
type: Array,
|
type: Array,
|
||||||
value() {
|
value() {
|
||||||
return [
|
return [
|
||||||
RevisionActions.PUBLISH,
|
|
||||||
RevisionActions.SUBMIT,
|
RevisionActions.SUBMIT,
|
||||||
];
|
];
|
||||||
},
|
},
|
||||||
@@ -249,10 +245,6 @@
|
|||||||
type: ActionType.CHANGE,
|
type: ActionType.CHANGE,
|
||||||
key: ChangeActions.DELETE,
|
key: ChangeActions.DELETE,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
type: ActionType.REVISION,
|
|
||||||
key: RevisionActions.DELETE,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
type: ActionType.REVISION,
|
type: ActionType.REVISION,
|
||||||
key: RevisionActions.CHERRYPICK,
|
key: RevisionActions.CHERRYPICK,
|
||||||
@@ -623,8 +615,6 @@
|
|||||||
// more explicit to the user.
|
// more explicit to the user.
|
||||||
if (type === ActionType.CHANGE) {
|
if (type === ActionType.CHANGE) {
|
||||||
actions[a].label += ' Change';
|
actions[a].label += ' Change';
|
||||||
} else if (type === ActionType.REVISION) {
|
|
||||||
actions[a].label += ' Revision';
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Triggers a re-render by ensuring object inequality.
|
// Triggers a re-render by ensuring object inequality.
|
||||||
@@ -747,9 +737,6 @@
|
|||||||
case RevisionActions.REBASE:
|
case RevisionActions.REBASE:
|
||||||
this._showActionDialog(this.$.confirmRebase);
|
this._showActionDialog(this.$.confirmRebase);
|
||||||
break;
|
break;
|
||||||
case RevisionActions.DELETE:
|
|
||||||
this._handleDeleteConfirm();
|
|
||||||
break;
|
|
||||||
case RevisionActions.CHERRYPICK:
|
case RevisionActions.CHERRYPICK:
|
||||||
this._handleCherrypickTap();
|
this._handleCherrypickTap();
|
||||||
break;
|
break;
|
||||||
@@ -953,11 +940,8 @@
|
|||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case ChangeActions.DELETE:
|
case ChangeActions.DELETE:
|
||||||
case RevisionActions.DELETE:
|
|
||||||
if (action.__type === ActionType.CHANGE) {
|
if (action.__type === ActionType.CHANGE) {
|
||||||
page.show('/');
|
page.show('/');
|
||||||
} else {
|
|
||||||
page.show(this.changePath(this.changeNum));
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ChangeActions.WIP:
|
case ChangeActions.WIP:
|
||||||
|
@@ -42,25 +42,19 @@ limitations under the License.
|
|||||||
stub('gr-rest-api-interface', {
|
stub('gr-rest-api-interface', {
|
||||||
getChangeRevisionActions() {
|
getChangeRevisionActions() {
|
||||||
return Promise.resolve({
|
return Promise.resolve({
|
||||||
'/': {
|
cherrypick: {
|
||||||
method: 'DELETE',
|
|
||||||
label: 'Delete',
|
|
||||||
title: 'Delete draft revision 2',
|
|
||||||
enabled: true,
|
|
||||||
},
|
|
||||||
'cherrypick': {
|
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
label: 'Cherry Pick',
|
label: 'Cherry Pick',
|
||||||
title: 'Cherry pick change to a different branch',
|
title: 'Cherry pick change to a different branch',
|
||||||
enabled: true,
|
enabled: true,
|
||||||
},
|
},
|
||||||
'rebase': {
|
rebase: {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
label: 'Rebase',
|
label: 'Rebase',
|
||||||
title: 'Rebase onto tip of branch or parent change',
|
title: 'Rebase onto tip of branch or parent change',
|
||||||
enabled: true,
|
enabled: true,
|
||||||
},
|
},
|
||||||
'submit': {
|
submit: {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
label: 'Submit',
|
label: 'Submit',
|
||||||
title: 'Submit patch set 2 into master',
|
title: 'Submit patch set 2 into master',
|
||||||
@@ -94,8 +88,8 @@ limitations under the License.
|
|||||||
element.actions = {
|
element.actions = {
|
||||||
'/': {
|
'/': {
|
||||||
method: 'DELETE',
|
method: 'DELETE',
|
||||||
label: 'Delete',
|
label: 'Delete Change',
|
||||||
title: 'Delete draft change 42',
|
title: 'Delete change X_X',
|
||||||
enabled: true,
|
enabled: true,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@@ -141,42 +135,13 @@ limitations under the License.
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
test('hide menu action', done => {
|
|
||||||
flush(() => {
|
|
||||||
const buttonEl =
|
|
||||||
element.$.moreActions.$$('span[data-id="delete-revision"]');
|
|
||||||
assert.isOk(buttonEl);
|
|
||||||
assert.throws(element.setActionHidden.bind(element, 'invalid type'));
|
|
||||||
element.setActionHidden(element.ActionType.CHANGE,
|
|
||||||
element.ChangeActions.DELETE, true);
|
|
||||||
assert.lengthOf(element._hiddenActions, 1);
|
|
||||||
element.setActionHidden(element.ActionType.CHANGE,
|
|
||||||
element.ChangeActions.DELETE, true);
|
|
||||||
assert.lengthOf(element._hiddenActions, 1);
|
|
||||||
flush(() => {
|
|
||||||
const buttonEl =
|
|
||||||
element.$.moreActions.$$('span[data-id="delete-revision"]');
|
|
||||||
assert.isNotOk(buttonEl);
|
|
||||||
|
|
||||||
element.setActionHidden(element.ActionType.CHANGE,
|
|
||||||
element.RevisionActions.DELETE, false);
|
|
||||||
flush(() => {
|
|
||||||
const buttonEl =
|
|
||||||
element.$.moreActions.$$('span[data-id="delete-revision"]');
|
|
||||||
assert.isOk(buttonEl);
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
test('buttons exist', done => {
|
test('buttons exist', done => {
|
||||||
element._loading = false;
|
element._loading = false;
|
||||||
flush(() => {
|
flush(() => {
|
||||||
const buttonEls = Polymer.dom(element.root)
|
const buttonEls = Polymer.dom(element.root)
|
||||||
.querySelectorAll('gr-button');
|
.querySelectorAll('gr-button');
|
||||||
const menuItems = element.$.moreActions.items;
|
const menuItems = element.$.moreActions.items;
|
||||||
assert.equal(buttonEls.length + menuItems.length, 7);
|
assert.equal(buttonEls.length + menuItems.length, 6);
|
||||||
assert.isFalse(element.hidden);
|
assert.isFalse(element.hidden);
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
@@ -187,16 +152,11 @@ limitations under the License.
|
|||||||
const deleteItems = element.$.moreActions.items.filter(item => {
|
const deleteItems = element.$.moreActions.items.filter(item => {
|
||||||
return item.id.startsWith('delete');
|
return item.id.startsWith('delete');
|
||||||
});
|
});
|
||||||
assert.equal(deleteItems.length, 2);
|
assert.equal(deleteItems.length, 1);
|
||||||
assert.notEqual(deleteItems[0].name, deleteItems[1].name);
|
assert.notEqual(deleteItems[0].name);
|
||||||
assert.isTrue(
|
assert.isTrue(
|
||||||
deleteItems[0].name === 'Delete Revision' ||
|
|
||||||
deleteItems[0].name === 'Delete Change'
|
deleteItems[0].name === 'Delete Change'
|
||||||
);
|
);
|
||||||
assert.isTrue(
|
|
||||||
deleteItems[1].name === 'Delete Revision' ||
|
|
||||||
deleteItems[1].name === 'Delete Change'
|
|
||||||
);
|
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -1181,7 +1141,7 @@ limitations under the License.
|
|||||||
flushAsynchronousOperations();
|
flushAsynchronousOperations();
|
||||||
assert.isNotOk(element.$$('[data-action-key="submit"]'));
|
assert.isNotOk(element.$$('[data-action-key="submit"]'));
|
||||||
assert.strictEqual(
|
assert.strictEqual(
|
||||||
element.$.moreActions.items[4].id, 'submit-revision');
|
element.$.moreActions.items[3].id, 'submit-revision');
|
||||||
});
|
});
|
||||||
|
|
||||||
suite('_waitForChangeReachable', () => {
|
suite('_waitForChangeReachable', () => {
|
||||||
|
@@ -52,7 +52,6 @@ limitations under the License.
|
|||||||
|
|
||||||
test('computed fields', () => {
|
test('computed fields', () => {
|
||||||
assert.isFalse(element._computeHideStrategy({status: 'NEW'}));
|
assert.isFalse(element._computeHideStrategy({status: 'NEW'}));
|
||||||
assert.isFalse(element._computeHideStrategy({status: 'DRAFT'}));
|
|
||||||
assert.isTrue(element._computeHideStrategy({status: 'MERGED'}));
|
assert.isTrue(element._computeHideStrategy({status: 'MERGED'}));
|
||||||
assert.isTrue(element._computeHideStrategy({status: 'ABANDONED'}));
|
assert.isTrue(element._computeHideStrategy({status: 'ABANDONED'}));
|
||||||
assert.equal(element._computeStrategy({submit_type: 'CHERRY_PICK'}),
|
assert.equal(element._computeStrategy({submit_type: 'CHERRY_PICK'}),
|
||||||
|
@@ -212,8 +212,6 @@
|
|||||||
return 'Merged';
|
return 'Merged';
|
||||||
case this.ChangeStatus.ABANDONED:
|
case this.ChangeStatus.ABANDONED:
|
||||||
return 'Abandoned';
|
return 'Abandoned';
|
||||||
case this.ChangeStatus.DRAFT:
|
|
||||||
return 'Draft';
|
|
||||||
}
|
}
|
||||||
if (change._revision_number != change._current_revision_number) {
|
if (change._revision_number != change._current_revision_number) {
|
||||||
return 'Not current';
|
return 'Not current';
|
||||||
|
@@ -54,11 +54,9 @@ limitations under the License.
|
|||||||
|
|
||||||
test('fix my menu item', () => {
|
test('fix my menu item', () => {
|
||||||
assert.deepEqual([
|
assert.deepEqual([
|
||||||
{url: '#/q/owner:self+is:draft'},
|
|
||||||
{url: 'https://awesometown.com/#hashyhash'},
|
{url: 'https://awesometown.com/#hashyhash'},
|
||||||
{url: 'url', target: '_blank'},
|
{url: 'url', target: '_blank'},
|
||||||
].map(element._fixMyMenuItem), [
|
].map(element._fixMyMenuItem), [
|
||||||
{url: '/q/owner:self+is:draft', external: true},
|
|
||||||
{url: 'https://awesometown.com/#hashyhash', external: true},
|
{url: 'https://awesometown.com/#hashyhash', external: true},
|
||||||
{url: 'url', external: true},
|
{url: 'url', external: true},
|
||||||
]);
|
]);
|
||||||
@@ -66,12 +64,10 @@ limitations under the License.
|
|||||||
|
|
||||||
test('filter unsupported urls', () => {
|
test('filter unsupported urls', () => {
|
||||||
assert.deepEqual([
|
assert.deepEqual([
|
||||||
{url: '/q/owner:self+is:draft'},
|
|
||||||
{url: '/c/331788/'},
|
{url: '/c/331788/'},
|
||||||
{url: '/groups/self'},
|
{url: '/groups/self'},
|
||||||
{url: 'https://awesometown.com/#hashyhash'},
|
{url: 'https://awesometown.com/#hashyhash'},
|
||||||
].filter(element._isSupportedLink), [
|
].filter(element._isSupportedLink), [
|
||||||
{url: '/q/owner:self+is:draft'},
|
|
||||||
{url: '/c/331788/'},
|
{url: '/c/331788/'},
|
||||||
{url: 'https://awesometown.com/#hashyhash'},
|
{url: 'https://awesometown.com/#hashyhash'},
|
||||||
]);
|
]);
|
||||||
|
@@ -45,7 +45,6 @@
|
|||||||
'is:',
|
'is:',
|
||||||
'is:abandoned',
|
'is:abandoned',
|
||||||
'is:closed',
|
'is:closed',
|
||||||
'is:draft',
|
|
||||||
'is:ignored',
|
'is:ignored',
|
||||||
'is:mergeable',
|
'is:mergeable',
|
||||||
'is:merged',
|
'is:merged',
|
||||||
@@ -75,7 +74,6 @@
|
|||||||
'status:',
|
'status:',
|
||||||
'status:abandoned',
|
'status:abandoned',
|
||||||
'status:closed',
|
'status:closed',
|
||||||
'status:draft',
|
|
||||||
'status:merged',
|
'status:merged',
|
||||||
'status:open',
|
'status:open',
|
||||||
'status:pending',
|
'status:pending',
|
||||||
|
Reference in New Issue
Block a user