summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/custom-elements/CustomElementRegistry-getName.tentative.html
blob: 9bd43d51080a838d0377f2eda15e09e71fafa5d5 (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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<!DOCTYPE html>
<title>Custom Elements: CustomElementRegistry.getName function</title>
<meta name="author" title="Keith Cirkel" href="mailto:keithamus@github.com">
<meta name="assert" content="CustomElementRegistry.getName function exists">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
test(function () {
  assert_equals(customElements.getName(class extends HTMLElement {}), null);
}, 'customElements.getName must return null when the registry does not contain an entry with the given constructor');

test(function () {
  assert_throws_js(TypeError, function () { customElements.getName(undefined); },
        'customElements.getName must throw a TypeError when the element interface is undefined');
  assert_throws_js(TypeError, function () { customElements.getName(null); },
        'customElements.getName must throw a TypeError when the element interface is null');
  assert_throws_js(TypeError, function () { customElements.getName('foo-bar'); },
        'customElements.getName must throw a TypeError when the element interface is a string');
  assert_throws_js(TypeError, function () { customElements.getName(1); },
        'customElements.getName must throw a TypeError when the element interface is a number');
  assert_throws_js(TypeError, function () { customElements.getName({}); },
        'customElements.getName must throw a TypeError when the element interface is an object');
  assert_throws_js(TypeError, function () { customElements.getName([]) },
        'customElements.getName must throw a TypeError when the element interface is an array');
}, 'customElements.getName must throw when the element interface is not a constructor');

test(function () {
    class OtherExistingCustomElement extends HTMLElement {};
    class SecondExistingCustomElement extends HTMLElement {};
    assert_throws_js(TypeError, function () { customElements.getName(customElements.getName(OtherExistingCustomElement)); },
        'customElements.getName must throw a TypeError when the element interface is undefined');
    customElements.define('other-existing-custom-element', OtherExistingCustomElement);
    customElements.define('second-existing-custom-element', SecondExistingCustomElement);
    assert_equals(customElements.getName(OtherExistingCustomElement), 'other-existing-custom-element');
    assert_equals(customElements.getName(SecondExistingCustomElement), 'second-existing-custom-element');
}, 'customElements.getName returns the name of the entry with the given constructor when there is a matching entry.');

test(function () {
    class ButtonCustomBuiltInElement extends HTMLButtonElement {};
    class InputCustomBuiltInElement extends HTMLInputElement {};
    customElements.define('button-custom-built-in-element', ButtonCustomBuiltInElement, { extends: 'button' });
    customElements.define('input-custom-built-in-element', InputCustomBuiltInElement, { extends: 'input' });
    assert_equals(customElements.getName(ButtonCustomBuiltInElement), 'button-custom-built-in-element');
    assert_equals(customElements.getName(InputCustomBuiltInElement), 'input-custom-built-in-element');
}, 'customElements.getName returns the name of the entry with the given customized built in constructor when there is a matching entry.');
</script>