Show Merge Conflict status in change view

Bug: Issue 4057
Change-Id: Ic5abbae2b4f261dc4e182e892a74aff288ba3ce4
This commit is contained in:
Viktar Donich 2016-08-08 12:41:50 -07:00
parent f51492b337
commit 7bb03b8644
6 changed files with 45 additions and 42 deletions

View File

@ -30,10 +30,10 @@ limitations under the License.
},
ChangeStatus: {
NEW: 'NEW',
MERGED: 'MERGED',
ABANDONED: 'ABANDONED',
DRAFT: 'DRAFT',
MERGED: 'MERGED',
NEW: 'NEW',
},
// Must be kept in sync with the ListChangesOption enum and protobuf.
@ -108,6 +108,23 @@ limitations under the License.
return status === this.ChangeStatus.NEW ||
status === this.ChangeStatus.DRAFT;
},
changeStatusString: function(change) {
// "Closed" states should take precedence over "open" ones.
if (change.status === this.ChangeStatus.MERGED) {
return 'Merged';
}
if (change.status === this.ChangeStatus.ABANDONED) {
return 'Abandoned';
}
if (change.mergeable === false) {
return 'Merge Conflict';
}
if (change.status === this.ChangeStatus.DRAFT) {
return 'Draft';
}
return '';
},
};
window.Gerrit = window.Gerrit || {};

View File

@ -75,7 +75,7 @@ limitations under the License.
[[change._number]]
</a>
<a class="cell subject" href$="[[changeURL]]">[[change.subject]]</a>
<span class="cell status">[[_computeChangeStatusString(change)]]</span>
<span class="cell status">[[changeStatusString(change)]]</span>
<span class="cell owner">
<gr-account-link account="[[change.owner]]"></gr-account-link>
</span>

View File

@ -51,25 +51,6 @@
return '/c/' + changeNum + '/';
},
_computeChangeStatusString: function(change) {
// "Closed" states should take precedence over "open" ones.
if (change.status == this.ChangeStatus.MERGED) {
return 'Merged';
}
if (change.status == this.ChangeStatus.ABANDONED) {
return 'Abandoned';
}
if (change.mergeable != null && change.mergeable == false) {
return 'Merge Conflict';
}
if (change.status == this.ChangeStatus.DRAFT) {
return 'Draft';
}
return '';
},
_computeLabelTitle: function(change, labelName) {
var label = change.labels[labelName];
if (!label) { return 'Label not applicable'; }

View File

@ -38,18 +38,21 @@ limitations under the License.
element = fixture('basic');
});
test('computed fields', function() {
assert.equal(element._computeChangeStatusString({mergeable: true}), '');
assert.equal(element._computeChangeStatusString({mergeable: false}),
'Merge Conflict');
assert.equal(element._computeChangeStatusString({status: 'NEW'}), '');
assert.equal(element._computeChangeStatusString({status: 'MERGED'}),
'Merged');
assert.equal(element._computeChangeStatusString({status: 'ABANDONED'}),
'Abandoned');
assert.equal(element._computeChangeStatusString({status: 'DRAFT'}),
'Draft');
test('change status', function() {
var getStatusForChange = function(change) {
element.change = change;
return element.$$('.cell.status').textContent;
};
assert.equal(getStatusForChange({mergeable: true}), '');
assert.equal(getStatusForChange({mergeable: false}), 'Merge Conflict');
assert.equal(getStatusForChange({status: 'NEW'}), '');
assert.equal(getStatusForChange({status: 'MERGED'}), 'Merged');
assert.equal(getStatusForChange({status: 'ABANDONED'}), 'Abandoned');
assert.equal(getStatusForChange({status: 'DRAFT'}), 'Draft');
});
test('computed fields', function() {
assert.equal(element._computeLabelClass({labels: {}}),
'cell label u-gray-background');
assert.equal(element._computeLabelClass(

View File

@ -405,15 +405,17 @@
return '/' + changeNum;
},
_computeChangeStatus: function(change, patchNum) {
var status = change.status;
if (status == this.ChangeStatus.NEW) {
_computeChangeStatus: function(change, patchNum) {
var statusString;
if (change.status === this.ChangeStatus.NEW) {
var rev = this._getRevisionNumber(change, patchNum);
// TODO(davido): Figure out, why sometimes revision is not there
if (rev == undefined || !rev.draft) { return ''; }
status = this.ChangeStatus.DRAFT;
if (rev && rev.draft === true) {
statusString = 'Draft';
}
} else {
statusString = this.changeStatusString(change);
}
return '(' + status.toLowerCase() + ')';
return statusString ? '(' + statusString + ')' : '';
},
_computeLatestPatchNum: function(allPatchSets) {

View File

@ -257,7 +257,7 @@ limitations under the License.
labels: {},
};
var status = element._computeChangeStatus(element._change, '1');
assert.equal(status, '(draft)');
assert.equal(status, '(Draft)');
});
test('revision status draft', function() {
@ -280,7 +280,7 @@ limitations under the License.
labels: {},
};
var status = element._computeChangeStatus(element._change, '2');
assert.equal(status, '(draft)');
assert.equal(status, '(Draft)');
});
test('show commit message edit button', function() {