Add rebase action with confirmation dialog
TODO in follow-up change
+ Autocomplete revisions/change numbers from the input
+ Consolidate button classes (it’s enough repeated code
that it’s becomming a nuisance).
+ Perhaps move confirmation dialog functions into
a behavior.
Change-Id: I382cc63591cd537dbe1d29a0451f392c1e77f287
diff --git a/polygerrit-ui/app/test/gr-change-actions-test.html b/polygerrit-ui/app/test/gr-change-actions-test.html
index 14dd010..3fc5ef1 100644
--- a/polygerrit-ui/app/test/gr-change-actions-test.html
+++ b/polygerrit-ui/app/test/gr-change-actions-test.html
@@ -78,30 +78,34 @@
')]}\'\n{}', // The response is not used by the element.
]
);
- });
- test('submit button shows', function(done) {
+ server.respondWith(
+ 'POST',
+ '/changes/42/revisions/2/rebase',
+ [
+ 200,
+ {'Content-Type': 'application/json'},
+ ')]}\'\n{}', // The response is not used by the element.
+ ]
+ );
+
element.changeNum = '42';
element.patchNum = '2';
element.reload();
server.respond();
+ });
+ test('submit and rebase buttons show', function(done) {
element.async(function() {
var buttonEls = Polymer.dom(element.root).querySelectorAll('button');
- assert.equal(buttonEls.length, 1);
+ assert.equal(buttonEls.length, 2);
assert.isFalse(element.hidden);
done();
}, 1);
});
test('submit change', function(done) {
- element.changeNum = '42';
- element.patchNum = '2';
- element.reload();
-
- server.respond();
-
element.async(function() {
var submitButton = element.$$('button[data-action-key="submit"]');
assert.ok(submitButton);
@@ -114,5 +118,38 @@
});
}, 1);
});
+
+ test('rebase change', function(done) {
+ element.async(function() {
+ var rebaseButton = element.$$('button[data-action-key="rebase"]');
+ MockInteractions.tap(rebaseButton);
+
+ element.$.confirmRebase.base = '1234';
+ element._handleRebaseConfirm();
+ server.respond();
+ var lastRequest = server.requests[server.requests.length - 1];
+ assert.equal(lastRequest.requestBody, '{"base":"1234"}');
+
+ element.$.confirmRebase.base = '';
+ element._handleRebaseConfirm();
+ server.respond();
+ lastRequest = server.requests[server.requests.length - 1];
+ assert.equal(lastRequest.requestBody, '{}');
+
+ element.$.confirmRebase.base = 'does not matter';
+ element.$.confirmRebase.clearParent = true;
+ element._handleRebaseConfirm();
+ server.respond();
+ lastRequest = server.requests[server.requests.length - 1];
+ assert.equal(lastRequest.requestBody, '{"base":""}');
+
+ // Upon each request success it should fire the reload-change event.
+ var numEvents = 0;
+ element.addEventListener('reload-change', function(e) {
+ if (++numEvents == 3) { done(); }
+ });
+ }, 1);
+ });
+
});
</script>