aboutsummaryrefslogtreecommitdiffstats
path: root/web_src/js/utils/dom.test.ts
blob: cb99a85511b060e9f14e70e81f1f261ba2c23f81 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import {createElementFromAttrs, createElementFromHTML, querySingleVisibleElem} from './dom.ts';

test('createElementFromHTML', () => {
  expect(createElementFromHTML('<a>foo<span>bar</span></a>').outerHTML).toEqual('<a>foo<span>bar</span></a>');
  expect(createElementFromHTML('<tr data-x="1"><td>foo</td></tr>').outerHTML).toEqual('<tr data-x="1"><td>foo</td></tr>');
});

test('createElementFromAttrs', () => {
  const el = createElementFromAttrs('button', {
    id: 'the-id',
    class: 'cls-1 cls-2',
    disabled: true,
    checked: false,
    required: null,
    tabindex: 0,
    'data-foo': 'the-data',
  }, 'txt', createElementFromHTML('<span>inner</span>'));
  expect(el.outerHTML).toEqual('<button id="the-id" class="cls-1 cls-2" disabled="" tabindex="0" data-foo="the-data">txt<span>inner</span></button>');
});

test('querySingleVisibleElem', () => {
  let el = createElementFromHTML('<div><span>foo</span></div>');
  expect(querySingleVisibleElem(el, 'span').textContent).toEqual('foo');
  el = createElementFromHTML('<div><span style="display: none;">foo</span><span>bar</span></div>');
  expect(querySingleVisibleElem(el, 'span').textContent).toEqual('bar');
  el = createElementFromHTML('<div><span>foo</span><span>bar</span></div>');
  expect(() => querySingleVisibleElem(el, 'span')).toThrowError('Expected exactly one visible element');
});