27bb03bbc0
* adding copyright header * fix fmt and a test
60 lines
2.2 KiB
JavaScript
60 lines
2.2 KiB
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: MPL-2.0
|
|
*/
|
|
|
|
import { module, test } from 'qunit';
|
|
import { setupRenderingTest } from 'ember-qunit';
|
|
import { render, click } from '@ember/test-helpers';
|
|
import { hbs } from 'ember-cli-htmlbars';
|
|
import Sinon from 'sinon';
|
|
|
|
module('Integration | Component | checkbox-grid', function (hooks) {
|
|
setupRenderingTest(hooks);
|
|
|
|
hooks.beforeEach(function () {
|
|
this.name = 'fooBar';
|
|
this.label = 'Foo bar';
|
|
this.fields = [
|
|
{ key: 'abc', label: 'All Bears Cry' },
|
|
{ key: 'def', label: 'Dark Eel Feelings' },
|
|
];
|
|
|
|
this.onChange = Sinon.spy();
|
|
});
|
|
|
|
test('it renders with minimum inputs', async function (assert) {
|
|
const changeSpy = Sinon.spy();
|
|
this.set('onChange', changeSpy);
|
|
await render(
|
|
hbs`<CheckboxGrid @name={{this.name}} @label={{this.label}} @fields={{this.fields}} @onChange={{this.onChange}} />`
|
|
);
|
|
|
|
assert.dom('[data-test-checkbox]').exists({ count: 2 }, 'One checkbox is rendered for each field');
|
|
assert.dom('[data-test-checkbox]').isNotChecked('no fields are checked by default');
|
|
await click('[data-test-checkbox="abc"]');
|
|
assert.ok(changeSpy.calledOnceWithExactly('fooBar', ['abc']));
|
|
});
|
|
|
|
test('it renders with values set', async function (assert) {
|
|
const changeSpy = Sinon.spy();
|
|
this.set('onChange', changeSpy);
|
|
this.set('currentValue', ['abc']);
|
|
await render(
|
|
hbs`<CheckboxGrid @name={{this.name}} @label={{this.label}} @fields={{this.fields}} @onChange={{this.onChange}} @value={{this.currentValue}} />`
|
|
);
|
|
|
|
assert.dom('[data-test-checkbox]').exists({ count: 2 }, 'One checkbox is rendered for each field');
|
|
assert.dom('[data-test-checkbox="abc"]').isChecked('abc field is checked on load');
|
|
assert.dom('[data-test-checkbox="def"]').isNotChecked('def field is unchecked on load');
|
|
await click('[data-test-checkbox="abc"]');
|
|
assert.ok(changeSpy.calledOnceWithExactly('fooBar', []), 'Sends correct payload when unchecking');
|
|
await click('[data-test-checkbox="def"]');
|
|
await click('[data-test-checkbox="abc"]');
|
|
assert.ok(
|
|
changeSpy.calledWithExactly('fooBar', ['def', 'abc']),
|
|
'sends correct payload with multiple checked'
|
|
);
|
|
});
|
|
});
|