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