// Copyright (c) 2013, 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.

import 'dart:html';

import 'package:expect/minitest.dart';

import 'utils.dart';

main() {
  test('create via custom tag', () {
    var element = new Element.tag('x-basic1')..id = 'basic1';
    document.body.nodes.add(element);

    var queryById = querySelector('#basic1');
    expect(queryById, equals(element));

    var queryByTag = querySelectorAll('x-basic1');
    expect(queryByTag.length, equals(1));
    expect(queryByTag[0], equals(element));
  });

  test('custom inner html', () {
    var element = new DivElement();
    element.setInnerHtml("<x-basic2 id='basic2'></x-basic2>",
        treeSanitizer: new NullTreeSanitizer());
    document.body.nodes.add(element);

    var queryById = querySelector('#basic2');
    expect(queryById is Element, isTrue);

    var queryByTag = querySelectorAll('x-basic2');
    expect(queryByTag.length, equals(1));
    expect(queryByTag[0], equals(queryById));
  });

  test('type extension inner html', () {
    var element = new DivElement();
    element.setInnerHtml("<div is='x-basic3' id='basic3'></div>",
        treeSanitizer: new NullTreeSanitizer());
    document.body.nodes.add(element);

    var queryById = querySelector('#basic3');
    expect(queryById is DivElement, isTrue);
  });
}
