Files
gerrit/polygerrit-ui/app/elements/change/gr-confirm-rebase-dialog/gr-confirm-rebase-dialog_test.html
Becky Siegel a5056224d1 Change rebase action behavior
Previously, if the server did not return enabled=true for the rebase
change action, the rebase button would be disabled on the UI. Really,
what disabled indicated in this case was that the rebase could not be
performed on the current branch, but could still perform a rebase on
a different parent revision.

This change updates revision actions in the change view always be
enabled, and introduces a new parameter to indicate whether or not
rebasing should be enabled on the current branch based on the initial
status of the enabled flag.

This change also disables the rebase button on the rebase dialog until
an option is explicitly chosen. Previously, if an option was not chosen,
if rebase was clicked, it would submit with a base branch of '', which
is the same thing checking the box accomplishes. Now, either the box
must be checked, or a base change must be entered, so it is more clear
what happens with the rebase and in the new scenario when you cannot
submit on the base branch, there won't be a possibility of a server
error.

Bug: Issue 5126
Change-Id: I47083ad328095aad4e04f2fc1586ad4d34412e4c
2017-01-10 15:35:11 -08:00

85 lines
3.4 KiB
HTML

<!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-confirm-rebase-dialog</title>
<script src="../../../bower_components/webcomponentsjs/webcomponents.min.js"></script>
<script src="../../../bower_components/web-component-tester/browser.js"></script>
<link rel="import" href="../../../bower_components/iron-test-helpers/iron-test-helpers.html">
<link rel="import" href="gr-confirm-rebase-dialog.html">
<test-fixture id="basic">
<template>
<gr-confirm-rebase-dialog></gr-confirm-rebase-dialog>
</template>
</test-fixture>
<script>
suite('gr-confirm-rebase-dialog tests', function() {
var element;
setup(function() {
element = fixture('basic');
});
test('controls with rebase on current available', function() {
element.rebaseOnCurrent = true;
flushAsynchronousOperations();
// The correct content is hidden/displayed regarding the ability to rebase
// on top of the current branch.
assert.isFalse(element.$.clearParentLabel.hasAttribute('hidden'));
assert.isTrue(element.$.rebaseUpToDateInfo.hasAttribute('hidden'));
assert.isFalse(element.$.optionalText.hasAttribute('hidden'));
assert.isFalse(!!element.valueSelected);
assert.isFalse(element.$.parentInput.hasAttribute('disabled'));
assert.isFalse(element.$.clearParent.hasAttribute('disabled'));
assert.isFalse(element.$.clearParent.checked);
element.base = 'something great';
assert.isTrue(!!element.valueSelected);
MockInteractions.tap(element.$.clearParent);
assert.isTrue(!!element.valueSelected);
assert.isTrue(element.$.parentInput.hasAttribute('disabled'));
assert.isTrue(element.$.clearParent.checked);
assert.equal(element.base, '');
MockInteractions.tap(element.$.clearParent);
assert.isFalse(!!element.valueSelected);
});
test('controls without rebase on current available', function() {
element.rebaseOnCurrent = false;
flushAsynchronousOperations();
// The correct content is hidden/displayed regarding the ability to rebase
// on top of the current branch.
assert.isTrue(element.$.clearParentLabel.hasAttribute('hidden'));
assert.isFalse(element.$.rebaseUpToDateInfo.hasAttribute('hidden'));
assert.isTrue(element.$.optionalText.hasAttribute('hidden'));
assert.isFalse(!!element.valueSelected);
assert.isFalse(element.$.parentInput.hasAttribute('disabled'));
assert.isTrue(element.$.clearParent.hasAttribute('disabled'));
assert.isTrue(element.$.clearParentLabel.hasAttribute('hidden'));
assert.isFalse(element.$.rebaseUpToDateInfo.hasAttribute('hidden'));
element.base = 'something great';
assert.isTrue(!!element.valueSelected);
});
});
</script>