<!DOCTYPE html>
<meta charset="utf-8">
<title>DocumentFragment.prototype.getElementById</title>
<link rel="help" href="https://dom.spec.whatwg.org/#dom-nonelementparentnode-getelementbyid">
<link rel="author" title="Domenic Denicola" href="mailto:d@domenic.me">

<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>

<template>
  <div id="bar">
    <span id="foo" data-yes></span>
  </div>
  <div id="foo">
    <span id="foo"></span>
    <ul id="bar">
      <li id="foo"></li>
    </ul>
  </div>
</template>

<script>
"use strict";

test(() => {
  assert_equals(typeof DocumentFragment.prototype.getElementById, "function", "It must exist on the prototype");
  assert_equals(typeof document.createDocumentFragment().getElementById, "function", "It must exist on an instance");
}, "The method must exist");

test(() => {
  assert_equals(document.createDocumentFragment().getElementById("foo"), null);
  assert_equals(document.createDocumentFragment().getElementById(""), null);
}, "It must return null when there are no matches");

test(() => {
  const frag = document.createDocumentFragment();
  frag.appendChild(document.createElement("div"));
  frag.appendChild(document.createElement("span"));
  frag.childNodes[0].id = "foo";
  frag.childNodes[1].id = "foo";

  assert_equals(frag.getElementById("foo"), frag.childNodes[0]);
}, "It must return the first element when there are matches");

test(() => {
  const frag = document.createDocumentFragment();
  frag.appendChild(document.createElement("div"));
  frag.childNodes[0].setAttribute("id", "");

  assert_equals(
    frag.getElementById(""),
    null,
    "Even if there is an element with an empty-string ID attribute, it must not be returned"
  );
}, "Empty string ID values");

test(() => {
  const frag = document.querySelector("template").content;

  assert_true(frag.getElementById("foo").hasAttribute("data-yes"));
}, "It must return the first element when there are matches, using a template");
</script>
