Refactor directory structure of components
There is no change in functionality. Only moving things around.
+ Separate html from the js.
+ Place the unit test for a component within the same folder.
+ Organize the components in subfolders.
Change-Id: I51fdc510db75fc1b33f040ca63decbbdfd4d5513
diff --git a/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions_test.html b/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions_test.html
new file mode 100644
index 0000000..a89a7a5
--- /dev/null
+++ b/polygerrit-ui/app/elements/change/gr-change-actions/gr-change-actions_test.html
@@ -0,0 +1,155 @@
+<!DOCTYPE html>
+<!--
+Copyright (C) 2016 The Android Open Source Project
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+
+<meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1.0, user-scalable=yes">
+<title>gr-change-actions</title>
+
+<script src="../../../bower_components/webcomponentsjs/webcomponents-lite.min.js"></script>
+<script src="../../../bower_components/web-component-tester/browser.js"></script>
+<script src="../../../scripts/util.js"></script>
+
+<link rel="import" href="../../../bower_components/iron-test-helpers/iron-test-helpers.html">
+<link rel="import" href="gr-change-actions.html">
+
+<test-fixture id="basic">
+ <template>
+ <gr-change-actions></gr-change-actions>
+ </template>
+</test-fixture>
+
+<script>
+ suite('gr-change-actions tests', function() {
+ var element;
+ var server;
+
+ setup(function() {
+ element = fixture('basic');
+ server = sinon.fakeServer.create();
+
+ server.respondWith(
+ 'GET',
+ '/changes/42/revisions/2/actions',
+ [
+ 200,
+ {'Content-Type': 'application/json'},
+ ')]}\'\n' +
+ JSON.stringify({
+ cherrypick: {
+ method: 'POST',
+ label: 'Cherry Pick',
+ title: 'Cherry pick change to a different branch',
+ enabled: true
+ },
+ rebase: {
+ method: 'POST',
+ label: 'Rebase',
+ title: 'Rebase onto tip of branch or parent change'
+ },
+ submit: {
+ method: 'POST',
+ label: 'Submit',
+ title: 'Submit patch set 1 into master',
+ enabled: true
+ }
+ }),
+ ]
+ );
+
+ server.respondWith(
+ 'POST',
+ '/changes/42/revisions/2/submit',
+ [
+ 200,
+ {'Content-Type': 'application/json'},
+ ')]}\'\n{}', // The response is not used by the element.
+ ]
+ );
+
+ 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('gr-button');
+ assert.equal(buttonEls.length, 2);
+ assert.isFalse(element.hidden);
+ done();
+ }, 1);
+ });
+
+ test('submit change', function(done) {
+ element.async(function() {
+ var submitButton = element.$$('gr-button[data-action-key="submit"]');
+ assert.ok(submitButton);
+ MockInteractions.tap(submitButton);
+ server.respond();
+
+ // Upon success it should fire the reload-change event.
+ element.addEventListener('reload-change', function(e) {
+ done();
+ });
+ }, 1);
+ });
+
+ test('rebase change', function(done) {
+ element.async(function() {
+ var rebaseButton = element.$$('gr-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>