Files
gerrit/polygerrit-ui/app/elements/edit/gr-edit-file-controls/gr-edit-file-controls_test.html
Kasper Nilsson c64632cb3f Add actions to file controls
Adds a 'MORE' menu to the file list, next to the edit button. As it
exists right now, some of the actions that exist on a file may be
invalid (e.g. allowing "delete" on a file that is already deleted) --
using these actions will result in a server error, but are otherwise a
no-op.

TODO:
- Add tooltip prop to GrEditConstants.Actions
- Disable some actions for some files, based on status

Bug: Issue 4437
Change-Id: I313906ddff03121eb50472433390c15859c059aa
2017-10-23 20:28:51 +00:00

101 lines
3.2 KiB
HTML

<!--
Copyright (C) 2017 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-edit-file-controls</title>
<script src="../../../bower_components/webcomponentsjs/webcomponents-lite.min.js"></script>
<script src="../../../bower_components/web-component-tester/browser.js"></script>
<link rel="import" href="../../../test/common-test-setup.html"/>
<link rel="import" href="../gr-edit-constants.html">
<link rel="import" href="gr-edit-file-controls.html">
<script>void(0);</script>
<test-fixture id="basic">
<template>
<gr-edit-file-controls></gr-edit-file-controls>
</template>
</test-fixture>
<script>
suite('gr-edit-file-controls tests', () => {
let element;
let sandbox;
let fileActionHandler;
setup(() => {
sandbox = sinon.sandbox.create();
element = fixture('basic');
fileActionHandler = sandbox.stub();
element.addEventListener('file-action-tap', fileActionHandler);
});
teardown(() => { sandbox.restore(); });
test('edit tap emits event', () => {
element.filePath = 'foo';
MockInteractions.tap(element.$.edit);
assert.isTrue(fileActionHandler.called);
assert.deepEqual(fileActionHandler.lastCall.args[0].detail,
{action: GrEditConstants.Actions.EDIT.id, path: 'foo'});
});
test('delete tap emits event', () => {
const more = element.$.more;
element.filePath = 'foo';
more._open();
flushAsynchronousOperations();
MockInteractions.tap(more.$$('li [data-id="delete"]'));
assert.isTrue(fileActionHandler.called);
assert.deepEqual(fileActionHandler.lastCall.args[0].detail,
{action: GrEditConstants.Actions.DELETE.id, path: 'foo'});
});
test('restore tap emits event', () => {
const more = element.$.more;
element.filePath = 'foo';
more._open();
flushAsynchronousOperations();
MockInteractions.tap(more.$$('li [data-id="restore"]'));
assert.isTrue(fileActionHandler.called);
assert.deepEqual(fileActionHandler.lastCall.args[0].detail,
{action: GrEditConstants.Actions.RESTORE.id, path: 'foo'});
});
test('rename tap emits event', () => {
const more = element.$.more;
element.filePath = 'foo';
more._open();
flushAsynchronousOperations();
MockInteractions.tap(more.$$('li [data-id="rename"]'));
assert.isTrue(fileActionHandler.called);
assert.deepEqual(fileActionHandler.lastCall.args[0].detail,
{action: GrEditConstants.Actions.RENAME.id, path: 'foo'});
});
test('computed properties', () => {
assert.equal(element._allFileActions.length, 3);
assert.notOk(element._allFileActions
.find(action => action.id === GrEditConstants.Actions.EDIT.id));
});
});
</script>