55 lines
1.7 KiB
JavaScript
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');
|
|
});
|
|
});
|