diff --git a/polygerrit-ui/app/behaviors/rest-client-behavior/rest-client-behavior.html b/polygerrit-ui/app/behaviors/rest-client-behavior/rest-client-behavior.html index 3764628489..05b24a674e 100644 --- a/polygerrit-ui/app/behaviors/rest-client-behavior/rest-client-behavior.html +++ b/polygerrit-ui/app/behaviors/rest-client-behavior/rest-client-behavior.html @@ -116,19 +116,33 @@ limitations under the License. status === this.ChangeStatus.DRAFT; }, + wipOrPrivateStatus(change) { + if (change.work_in_progress && change.is_private) { + return ' (Private) (WIP)'; + } else if (change.work_in_progress) { + return ' (WIP)'; + } else if (change.is_private) { + return ' (Private)'; + } + return ''; + }, + changeStatusString(change) { // "Closed" states should take precedence over "open" ones. if (change.status === this.ChangeStatus.MERGED) { - return 'Merged'; + return 'Merged' + this.wipOrPrivateStatus(change); } if (change.status === this.ChangeStatus.ABANDONED) { - return 'Abandoned'; + return 'Abandoned' + this.wipOrPrivateStatus(change); } if (change.mergeable === false) { - return 'Merge Conflict'; + return 'Merge Conflict' + this.wipOrPrivateStatus(change); } if (change.status === this.ChangeStatus.DRAFT) { - return 'Draft'; + return 'Draft' + this.wipOrPrivateStatus(change); + } + if (change.status === this.ChangeStatus.NEW) { + return this.wipOrPrivateStatus(change); } return ''; }, diff --git a/polygerrit-ui/app/behaviors/rest-client-behavior/rest-client-behavior_test.html b/polygerrit-ui/app/behaviors/rest-client-behavior/rest-client-behavior_test.html index 87fe67b3b5..85964e7a16 100644 --- a/polygerrit-ui/app/behaviors/rest-client-behavior/rest-client-behavior_test.html +++ b/polygerrit-ui/app/behaviors/rest-client-behavior/rest-client-behavior_test.html @@ -75,5 +75,79 @@ limitations under the License. test('changePath', () => { assert.deepEqual(element.changePath('1'), '/r/c/1'); }); + + test('Open status', () => { + const change = { + change_id: 'Iad9dc96274af6946f3632be53b106ef80f7ba6ca', + revisions: { + rev1: {_number: 1}, + }, + current_revision: 'rev1', + status: 'NEW', + labels: {}, + }; + const status = element.changeStatusString(change); + assert.equal(status, ''); + }); + + test('Merged status', () => { + const change = { + change_id: 'Iad9dc96274af6946f3632be53b106ef80f7ba6ca', + revisions: { + rev1: {_number: 1}, + }, + current_revision: 'rev1', + status: 'MERGED', + labels: {}, + }; + const status = element.changeStatusString(change); + assert.equal(status, 'Merged'); + }); + + test('Abandoned status', () => { + const change = { + change_id: 'Iad9dc96274af6946f3632be53b106ef80f7ba6ca', + revisions: { + rev1: {_number: 1}, + }, + current_revision: 'rev1', + status: 'ABANDONED', + labels: {}, + }; + const status = element.changeStatusString(change); + assert.equal(status, 'Abandoned'); + }); + + test('Open status with private and wip', () => { + const change = { + change_id: 'Iad9dc96274af6946f3632be53b106ef80f7ba6ca', + revisions: { + rev1: {_number: 1}, + }, + current_revision: 'rev1', + status: 'NEW', + is_private: true, + work_in_progress: true, + labels: {}, + }; + const status = element.changeStatusString(change); + assert.equal(status, ' (Private) (WIP)'); + }); + + test('Abandoned status with private and wip', () => { + const change = { + change_id: 'Iad9dc96274af6946f3632be53b106ef80f7ba6ca', + revisions: { + rev1: {_number: 1}, + }, + current_revision: 'rev1', + status: 'ABANDONED', + is_private: true, + work_in_progress: true, + labels: {}, + }; + const status = element.changeStatusString(change); + assert.equal(status, 'Abandoned (Private) (WIP)'); + }); });