blob: 06035c20df371484dfebfebde59f2d2504eaca41 [file] [log] [blame]
<!DOCTYPE html>
<title>userInput</title>
<meta charset="utf-8">
<link rel="import" href="../chops-user-input.html">
<script src="../../webcomponentsjs/webcomponents-lite.js"></script>
<script src="../../web-component-tester/browser.js"></script>
<script src="../../iron-test-helpers/mock-interactions.js"></script>
<test-fixture id="chops-user-input-test">
<template>
<chops-user-input></chops-user-input>
</template>
</test-fixture>
<script>
'use strict';
suite('chops-user-input', function() {
let element;
setup(function() {
element = fixture('chops-user-input-test');
element.suggestions = ['user1', 'user2', 'user3', 'user4'];
});
test('methods', function(done) {
flush(function() {
// Test _toggleDropdown after focus.
MockInteractions.focus(element);
element._toggleDropdown();
let dropdownDiv = element.$.dropdown.$.dropdown;
assert.isFalse(dropdownDiv.classList.contains('hidden'));
// Test _toggleDropdown after blur.
MockInteractions.blur(element);
element._toggleDropdown();
dropdownDiv = element.$.dropdown.$.dropdown;
assert.isTrue(dropdownDiv.classList.contains('hidden'));
// Test _saveUser
element._saveUser({detail: {selectedUser: 'user1'}});
assert.deepEqual(element.selectedUsers, ['user1']);
element._saveUser({detail: {selectedUser: 'user2'}});
assert.deepEqual(element.selectedUsers, ['user1', 'user2']);
// Test _removeUser
element._removeUser({detail: {removedUser: 'user2'}});
assert.deepEqual(element.selectedUsers, ['user1']);
// Test _updateInputDisabled
element.multiple = false;
element._inputDisabled = false;
element._updateInputDisabled(1);
assert.isTrue(element._inputDisabled);
element.multiple = false;
element._inputDisabled = false;
element._updateInputDisabled(0);
assert.isFalse(element._inputDisabled)
element.multiple = true;
element._inputDisabled = false;
element._updateInputDisabled(1);
assert.isFalse(element._inputDisabled);
done();
});
});
test('_toggleDropdown-called', function(done) {
let toggleStub = sinon.stub(element, '_toggleDropdown');
flush(function() {
MockInteractions.focus(element);
sinon.assert.calledOnce(toggleStub);
MockInteractions.blur(element);
sinon.assert.calledTwice(toggleStub);
done();
});
});
test('_updateInputDisabled-called', function(done) {
let updateStub = sinon.stub(element, '_updateInputDisabled');
flush(function() {
element.selectedUsers = [{userId: 'newlySelectedUser'}]
sinon.assert.calledOnce(updateStub);
done();
});
});
test('_saveUser-called', function(done) {
let saveStub = sinon.stub(element, '_saveUser');
flush(function() {
element.$.dropdown.dispatchEvent(
new CustomEvent('user-selected', {detail: {selectedUser: 'user2'}}));
sinon.assert.calledOnce(saveStub);
done();
});
});
test('_removeUser-called', function(done) {
let removeStub = sinon.stub(element, '_removeUser');
element.selectedUsers = [{userId: 'user1'}]
flush(function() {
element.shadowRoot.querySelector('chops-user-id').dispatchEvent(
new CustomEvent('remove-user', {detail: {removedUser: {userId:'user1'}}}));
sinon.assert.calledOnce(removeStub);
done();
});
});
});
</script>