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:
Paladox none
2017-09-13 16:30:42 +00:00
parent 6ffb7d9358
commit 003a039c8d
8 changed files with 22 additions and 102 deletions

View File

@@ -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(', ');
}, },
}, },

View File

@@ -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);

View File

@@ -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:

View File

@@ -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', () => {

View File

@@ -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'}),

View File

@@ -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';

View File

@@ -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'},
]); ]);

View File

@@ -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',