Merge "Fetch more info about edit files"

This commit is contained in:
Kasper Nilsson
2017-12-16 00:43:21 +00:00
committed by Gerrit Code Review
5 changed files with 83 additions and 14 deletions

View File

@@ -97,10 +97,9 @@ limitations under the License.
</gr-fixed-panel>
<div class="textareaWrapper">
<gr-endpoint-decorator name="editor">
<gr-endpoint-param name="fileContent" value="[[_newContent]]">
</gr-endpoint-param>
<gr-endpoint-param name="prefs" value="[[_prefs]]">
</gr-endpoint-param>
<gr-endpoint-param name="fileContent" value="[[_newContent]]"></gr-endpoint-param>
<gr-endpoint-param name="prefs" value="[[_prefs]]"></gr-endpoint-param>
<gr-endpoint-param name="fileType" value="[[_type]]"></gr-endpoint-param>
<textarea value="{{_newContent::input}}" id="file"></textarea>
</gr-endpoint-decorator>
</div>

View File

@@ -36,6 +36,7 @@
_changeEditDetail: Object,
_changeNum: String,
_path: String,
_type: String,
_content: String,
_newContent: String,
_saveDisabled: {
@@ -81,11 +82,7 @@
const promises = [];
promises.push(this._getChangeDetail(this._changeNum));
promises.push(this._getFileContent(this._changeNum, this._path)
.then(fileContent => {
this._content = fileContent;
this._newContent = fileContent;
}));
promises.push(this._getFileData(this._changeNum, this._path));
return Promise.all(promises);
},
@@ -109,8 +106,14 @@
Gerrit.Nav.navigateToChange(this._change, this.EDIT_NAME);
},
_getFileContent(changeNum, path) {
return this.$.restAPI.getFileInChangeEdit(changeNum, path);
_getFileData(changeNum, path) {
return this.$.restAPI.getFileInChangeEdit(changeNum, path).then(res => {
if (!res.ok) { return; }
this._type = res.type;
this._newContent = res.content;
this._content = res.content;
});
},
_saveEdit() {

View File

@@ -67,8 +67,11 @@ suite('gr-editor-view tests', () => {
test('good params proceed', () => {
changeDetailStub.returns(Promise.resolve({}));
const fileStub = sandbox.stub(element, '_getFileContent')
.returns(Promise.resolve('text'));
const fileStub = sandbox.stub(element, '_getFileData', () => {
element._content = 'text';
element._newContent = 'text';
element._type = 'application/octet-stream';
});
const promises = element._paramsChanged(
Object.assign({}, mockParams, {view: Gerrit.Nav.View.EDIT}));
@@ -84,6 +87,7 @@ suite('gr-editor-view tests', () => {
return promises.then(() => {
assert.equal(element._content, 'text');
assert.equal(element._newContent, 'text');
assert.equal(element._type, 'application/octet-stream');
});
});
});
@@ -179,5 +183,41 @@ suite('gr-editor-view tests', () => {
assert.isTrue(navigateStub.called);
});
});
suite('_getFileData', () => {
setup(() => {
element._newContent = 'initial';
element._content = 'initial';
element._type = 'initial';
});
test('res.ok', () => {
sandbox.stub(element.$.restAPI, 'getFileInChangeEdit')
.returns(Promise.resolve({
ok: true,
type: 'text/javascript',
content: 'new content',
}));
// Ensure no data is set with a bad response.
return element._getFileData('1', 'test/path').then(() => {
assert.equal(element._newContent, 'new content');
assert.equal(element._content, 'new content');
assert.equal(element._type, 'text/javascript');
});
});
test('!res.ok', () => {
sandbox.stub(element.$.restAPI, 'getFileInChangeEdit')
.returns(Promise.resolve({}));
// Ensure no data is set with a bad response.
return element._getFileData('1', 'test/path').then(() => {
assert.equal(element._newContent, 'initial');
assert.equal(element._content, 'initial');
assert.equal(element._type, 'initial');
});
});
});
});
</script>

View File

@@ -1339,7 +1339,13 @@
return this.getChangeURLAndSend(changeNum, 'GET', null, e, null, null,
null, null, headers).then(res => {
if (!res.ok) { return res; }
return this.getResponseObject(res);
// The file type (used for syntax highlighting) is identified in the
// X-FYI-Content-Type header of the response.
const type = res.headers.get('X-FYI-Content-Type');
return this.getResponseObject(res).then(content => {
return {content, type};
});
});
},

View File

@@ -1181,5 +1181,26 @@ limitations under the License.
fetchStub.lastCall.args[0],
'/projects/gerrit%2Fproject/dashboards/default%3Amain');
});
test('getFileInChangeEdit', () => {
sandbox.stub(element, 'getChangeURLAndSend')
.returns(Promise.resolve({
ok: 'true',
headers: {
get(header) {
if (header === 'X-FYI-Content-Type') {
return 'text/java';
}
},
},
}));
sandbox.stub(element, 'getResponseObject')
.returns(Promise.resolve('new content'));
return element.getFileInChangeEdit('1', 'test/path').then(res => {
assert.deepEqual(res, {content: 'new content', type: 'text/java'});
});
});
});
</script>