Remove gr-ajax/gr-request from gr-diff-view
Bug: Issue 3988
Change-Id: Ia34d881e7eb12904971c3cc47cac5aa1dbe08a3f
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.html b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.html
index 7bfa3154..137162f 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.html
+++ b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.html
@@ -17,10 +17,7 @@
<link rel="import" href="../../../bower_components/polymer/polymer.html">
<link rel="import" href="../../../bower_components/iron-dropdown/iron-dropdown.html">
<link rel="import" href="../../../behaviors/keyboard-shortcut-behavior.html">
-<link rel="import" href="../../../behaviors/rest-client-behavior.html">
-<link rel="import" href="../../shared/gr-ajax/gr-ajax.html">
<link rel="import" href="../../shared/gr-button/gr-button.html">
-<link rel="import" href="../../shared/gr-request/gr-request.html">
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
<link rel="import" href="../gr-diff/gr-diff.html">
@@ -108,19 +105,6 @@
}
}
</style>
- <gr-ajax id="changeDetailXHR"
- auto
- url="[[_computeChangeDetailPath(_changeNum)]]"
- params="[[_computeChangeDetailQueryParams()]]"
- last-response="{{_change}}"></gr-ajax>
- <gr-ajax id="filesXHR"
- auto
- url="[[_computeFilesPath(_changeNum, _patchRange.patchNum)]]"
- on-response="_handleFilesResponse"></gr-ajax>
- <gr-ajax id="configXHR"
- auto
- url="[[_computeProjectConfigPath(_change.project)]]"
- last-response="{{_projectConfig}}"></gr-ajax>
<h3>
<a href$="[[_computeChangePath(_changeNum, _patchRange.patchNum, _change.revisions)]]">
[[_changeNum]]</a><span>:</span>
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.js b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.js
index 456e983..c4f2a83 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.js
@@ -59,12 +59,16 @@
type: Boolean,
value: false,
},
- _xhrPromise: Object, // Used for testing.
},
behaviors: [
Gerrit.KeyboardShortcutBehavior,
- Gerrit.RESTClientBehavior,
+ ],
+
+ observers: [
+ '_getChangeDetail(_changeNum)',
+ '_getProjectConfig(_change.project)',
+ '_getFiles(_changeNum, _patchRange.patchNum)',
],
attached: function() {
@@ -90,23 +94,45 @@
return this.$.restAPI.getLoggedIn();
},
+ _getProjectConfig: function(project) {
+ return this.$.restAPI.getProjectConfig(project).then(
+ function(config) {
+ this._projectConfig = config;
+ }.bind(this));
+ },
+
+ _getChangeDetail: function(changeNum) {
+ return this.$.restAPI.getDiffChangeDetail(changeNum).then(
+ function(change) {
+ this._change = change;
+ }.bind(this));
+ },
+
+ _getFiles: function(changeNum, patchNum) {
+ return this.$.restAPI.getChangeFiles(changeNum, patchNum).then(
+ function(files) {
+ this._fileList = Object.keys(files).sort();
+ }.bind(this));
+ },
+
_handleReviewedChange: function(e) {
this._setReviewed(Polymer.dom(e).rootTarget.checked);
},
_setReviewed: function(reviewed) {
this.$.reviewed.checked = reviewed;
- var method = reviewed ? 'PUT' : 'DELETE';
- var url = this.changeBaseURL(this._changeNum,
- this._patchRange.patchNum) + '/files/' +
- encodeURIComponent(this._path) + '/reviewed';
- this._send(method, url).catch(function(err) {
+ this._saveReviewedState(reviewed).catch(function(err) {
alert('Couldn’t change file review status. Check the console ' +
'and contact the PolyGerrit team for assistance.');
throw err;
}.bind(this));
},
+ _saveReviewedState: function(reviewed) {
+ return this.$.restAPI.saveFileReviewed(this._changeNum,
+ this._patchRange.patchNum, this._path, reviewed);
+ },
+
_handleKey: function(e) {
if (this.shouldSupressKeyboardShortcut(e)) { return; }
@@ -253,24 +279,6 @@
return path == COMMIT_MESSAGE_PATH ? 'Commit message' : path;
},
- _computeChangeDetailPath: function(changeNum) {
- return '/changes/' + changeNum + '/detail';
- },
-
- _computeChangeDetailQueryParams: function() {
- return {O: this.listChangesOptionsToHex(
- this.ListChangesOption.ALL_REVISIONS
- )};
- },
-
- _computeFilesPath: function(changeNum, patchNum) {
- return this.changeBaseURL(changeNum, patchNum) + '/files';
- },
-
- _computeProjectConfigPath: function(project) {
- return '/projects/' + encodeURIComponent(project) + '/config';
- },
-
_computeFileSelected: function(path, currentPath) {
return path == currentPath;
},
@@ -296,21 +304,8 @@
this._computeDiffURL(this._changeNum, this._patchRange, path));
},
- _handleFilesResponse: function(e, req) {
- this._fileList = Object.keys(e.detail.response).sort();
- },
-
_showDropdownTapHandler: function(e) {
this.$.dropdown.open();
},
-
- _send: function(method, url) {
- var xhr = document.createElement('gr-request');
- this._xhrPromise = xhr.send({
- method: method,
- url: url,
- });
- return this._xhrPromise;
- },
});
})();
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.html b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.html
index 1b102cc..aaeced2 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.html
+++ b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.html
@@ -35,42 +35,16 @@
<script>
suite('gr-diff-view tests', function() {
var element;
- var server;
setup(function() {
stub('gr-rest-api-interface', {
getLoggedIn: function() { return Promise.resolve(false); },
+ getProjectConfig: function() { return Promise.resolve({}); },
+ getDiffChangeDetail: function() { return Promise.resolve(null); },
+ getChangeFiles: function() { return Promise.resolve({}); },
+ saveFileReviewed: function() { return Promise.resolve(); },
});
element = fixture('basic');
- element.$.changeDetailXHR.auto = false;
- element.$.filesXHR.auto = false;
- element.$.configXHR.auto = false;
- element.$.diff.auto = false;
-
- server = sinon.fakeServer.create();
- server.respondWith(
- 'PUT',
- '/changes/42/revisions/2/files/%2FCOMMIT_MSG/reviewed',
- [
- 201,
- {'Content-Type': 'application/json'},
- ')]}\'\n' +
- '""',
- ]
- );
- server.respondWith(
- 'DELETE',
- '/changes/42/revisions/2/files/%2FCOMMIT_MSG/reviewed',
- [
- 204,
- {'Content-Type': 'application/json'},
- '',
- ]
- );
- });
-
- teardown(function() {
- server.restore();
});
test('keyboard shortcuts', function() {
@@ -362,35 +336,24 @@
};
element._fileList = ['/COMMIT_MSG'];
element._path = '/COMMIT_MSG';
-
- server.respond();
+ var saveReviewedStub = sinon.stub(element, '_saveReviewedState',
+ function() { return Promise.resolve(); });
flush(function() {
var commitMsg = Polymer.dom(element.root).querySelector(
'input[type="checkbox"]');
assert.isTrue(commitMsg.checked);
+ MockInteractions.tap(commitMsg);
+ assert.isFalse(commitMsg.checked);
+ assert.isTrue(saveReviewedStub.lastCall.calledWithExactly(false));
MockInteractions.tap(commitMsg);
- server.respond();
- element._xhrPromise.then(function(req) {
- assert.isFalse(commitMsg.checked);
- assert.equal(req.status, 204);
- assert.equal(req.url,
- '/changes/42/revisions/2/files/%2FCOMMIT_MSG/reviewed');
+ assert.isTrue(commitMsg.checked);
+ assert.isTrue(saveReviewedStub.lastCall.calledWithExactly(true));
- MockInteractions.tap(commitMsg);
- server.respond();
- }).then(function() {
- element._xhrPromise.then(function(req) {
- assert.isTrue(commitMsg.checked);
- assert.equal(req.status, 201);
- assert.equal(req.url,
- '/changes/42/revisions/2/files/%2FCOMMIT_MSG/reviewed');
-
- done();
- });
- });
+ saveReviewedStub.restore();
+ done();
});
});
});