// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

/// @assertion DocumentFragment createFragment(String html,
/// {NodeValidator validator, NodeTreeSanitizer treeSanitizer})
/// Create a DocumentFragment from the HTML fragment and ensure that it
/// follows the sanitization rules specified by the validator or treeSanitizer.
/// The returned tree is guaranteed to only contain nodes and attributes which
/// are allowed by the provided validator.
/// @description Checks that if provided validator allows non standard elements
/// and attributes, they are included in created fragment.

import "dart:html";
import "../../../Utils/expect.dart";

main() {
  var x = document.body;
  if (x != null) {
    var f = x.createFragment('<div foo="foo"><bar id="bar"></bar></div>',
        validator: new NodeValidatorBuilder()
        //..allowHtml5()
          ..allowElement('bar', attributes: ["id"])..allowElement(
              'div', attributes: ["foo"]));
    DivElement div = f.firstChild as DivElement;

    Expect.mapEquals({'foo': 'foo'}, div.attributes);

    var bar = f.querySelector('#bar');
    Expect.equals('BAR', bar?.tagName);
  } else {
    Expect.fail("Body is null");
  }
}
