blob: 1a1fb0c20343e5bd8a70221afcda7aedf444f8b9 [file] [log] [blame]
/**
* @license
* Copyright 2021 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import '../../../test/common-test-setup';
import {assert, fixture} from '@open-wc/testing';
import {html} from 'lit';
import './gr-validation-options';
import {GrValidationOptions} from './gr-validation-options';
import {ValidationOptionsInfo} from '../../../api/rest-api';
import {queryAll} from '../../../test/test-utils';
import {MdCheckbox} from '@material/web/checkbox/checkbox';
suite('gr-validation-options tests', () => {
let element: GrValidationOptions;
setup(async () => {
const validationOptions: ValidationOptionsInfo = {
validation_options: [
{name: 'o1', description: 'option 1'},
{name: 'o2', description: 'option 2'},
],
};
element = await fixture<GrValidationOptions>(
html`<gr-validation-options
.validationOptions=${validationOptions}
></gr-validation-options>`
);
});
test('renders', () => {
assert.shadowDom.equal(
element,
/* HTML */ `
<div class="checkbox-container">
<md-checkbox class="selectionLabel" id="o1"> </md-checkbox>
<label for="o1"> Option 1 </label>
</div>
<div class="checkbox-container">
<md-checkbox class="selectionLabel" id="o2"> </md-checkbox>
<label for="o2"> Option 2 </label>
</div>
`
);
});
test('selects and unselects options', async () => {
const checkboxes = queryAll<MdCheckbox>(element, 'md-checkbox');
assert.deepEqual(element.getSelectedOptions(), []);
checkboxes[0].click();
await element.updateComplete;
assert.deepEqual(element.getSelectedOptions(), [
{name: 'o1', description: 'option 1'},
]);
checkboxes[1].click();
await element.updateComplete;
assert.deepEqual(element.getSelectedOptions(), [
{name: 'o1', description: 'option 1'},
{name: 'o2', description: 'option 2'},
]);
checkboxes[0].click();
await element.updateComplete;
assert.deepEqual(element.getSelectedOptions(), [
{name: 'o2', description: 'option 2'},
]);
checkboxes[1].click();
await element.updateComplete;
assert.deepEqual(element.getSelectedOptions(), []);
});
});