consul/ui-v2/tests/integration/components/phrase-editor-test.js

55 lines
1.7 KiB
JavaScript

import { module, test } from 'qunit';
import { setupRenderingTest } from 'ember-qunit';
import { render, find } from '@ember/test-helpers';
import hbs from 'htmlbars-inline-precompile';
module('Integration | Component | phrase editor', function(hooks) {
setupRenderingTest(hooks);
hooks.beforeEach(function() {
this.actions = {};
this.send = (actionName, ...args) => this.actions[actionName].apply(this, args);
});
test('it renders a phrase', async function(assert) {
this.set('value', ['phrase']);
await render(hbs`{{phrase-editor value=value}}`);
assert.notEqual(
find('*')
.textContent.trim()
.indexOf('phrase'),
-1
);
});
test('it calls onchange when a phrase is removed by clicking the phrase remove button and refocuses', async function(assert) {
assert.expect(3);
this.set('value', ['phrase']);
this.actions.change = function(e) {
assert.equal(e.target.value.length, 0);
};
await render(hbs`{{phrase-editor value=value onchange=(action 'change')}}`);
assert.notEqual(
find('*')
.textContent.trim()
.indexOf('phrase'),
-1
);
const $input = this.$('input');
const $button = this.$('button');
$button.trigger('click');
assert.equal(document.activeElement, $input.get(0));
});
test('it calls onchange when a phrase is added', async function(assert) {
assert.expect(1);
this.actions.change = function(e) {
assert.equal(e.target.value.length, 2);
};
this.set('value', ['phrase']);
await render(hbs`{{phrase-editor value=value onchange=(action 'change')}}`);
const $input = this.$('input');
$input.get(0).value = 'phrase 2';
$input.trigger('input');
$input.trigger('search');
});
});