PolyGerrit: Add support for creating annotated tags

Change-Id: I614ba3b3b848a052cb30cb5ac3b184b65de6d4dd
This commit is contained in:
Paladox none
2017-09-05 10:18:47 +00:00
parent f4b0ab03da
commit 9ab73ef9df
3 changed files with 50 additions and 2 deletions

View File

@@ -35,8 +35,10 @@ limitations under the License.
input {
width: 20em;
}
.hideItem {
display: none;
}
</style>
<div class="gr-form-styles">
<div id="form">
<section>
@@ -55,6 +57,14 @@ limitations under the License.
placeholder="Revision (Branch or SHA-1)"
bind-value="{{_itemRevision}}">
</section>
<section class$="[[_computeHideItemClass(itemDetail)]]">
<span class="title">Annotation</span>
<input
is="iron-input"
id="itemAnnotationInput"
placeholder="Annotation (Optional)"
bind-value="{{_itemAnnotation}}">
</section>
</div>
</div>
<gr-rest-api-interface id="restAPI"></gr-rest-api-interface>

View File

@@ -33,6 +33,7 @@
itemDetail: String,
_itemName: String,
_itemRevision: String,
_itemAnnotation: String,
},
behaviors: [
@@ -70,7 +71,8 @@
});
} else if (this.itemDetail === DETAIL_TYPES.tags) {
return this.$.restAPI.createProjectTag(this.projectName,
this._itemName, {revision: USE_HEAD})
this._itemName,
{revision: USE_HEAD, message: this._itemAnnotation || null})
.then(itemRegistered => {
if (itemRegistered.status === 201) {
page.show(this._computeItemUrl(this.itemDetail));
@@ -78,5 +80,9 @@
});
}
},
_computeHideItemClass(type) {
return type === DETAIL_TYPES.branches ? 'hideItem' : '';
},
});
})();

View File

@@ -87,5 +87,37 @@ limitations under the License.
assert.equal(element._itemRevision, 'HEAD');
});
test('tag created with annotations', () => {
sandbox.stub(element.$.restAPI, 'createProjectTag', () => {
return Promise.resolve({});
});
assert.isFalse(element.hasNewItemName);
element._itemName = 'test-tag';
element._itemAnnotation = 'test-message';
element.itemDetail = 'tags';
element.$.itemNameInput.bindValue = 'test-tag2';
element.$.itemAnnotationInput.bindValue = 'test-message2';
element.$.itemRevisionInput.bindValue = 'HEAD';
assert.isTrue(element.hasNewItemName);
assert.equal(element._itemName, 'test-tag2');
assert.equal(element._itemAnnotation, 'test-message2');
assert.equal(element._itemRevision, 'HEAD');
});
test('_computeHideItemClass returns hideItem if type is branches', () => {
assert.equal(element._computeHideItemClass('branches'), 'hideItem');
});
test('_computeHideItemClass returns strings if not branches', () => {
assert.equal(element._computeHideItemClass('tags'), '');
});
});
</script>