blob: 4e3c188dcb4ad699f3e1be4d32b3b64afc1c74ea [file] [log] [blame]
// Copyright (c) 2015, 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.
library custom_element_proxy_test;
import 'dart:html';
import 'dart:js';
import 'package:initialize/initialize.dart' as init;
import 'package:unittest/html_config.dart';
import 'package:unittest/unittest.dart';
import 'package:web_components/custom_element_proxy.dart';
@CustomElementProxy('basic-element')
class BasicElement extends HtmlElement {
BasicElement.created() : super.created();
factory BasicElement() => document.createElement('basic-element');
bool get isBasicElement =>
new JsObject.fromBrowserObject(this)['isBasicElement'];
}
@CustomElementProxy('extended-element', extendsTag: 'input')
class ExtendedElement extends InputElement {
ExtendedElement.created() : super.created();
factory ExtendedElement() =>
document.createElement('input', 'extended-element');
bool get isExtendedElement =>
new JsObject.fromBrowserObject(this)['isExtendedElement'];
}
main() {
useHtmlConfiguration();
init.run();
var container = querySelector('#container') as DivElement;
tearDown(() {
container.children.clear();
});
test('basic custom element', () {
container.append(new BasicElement());
container.appendHtml('<basic-element></basic_element>');
var elements = container.querySelectorAll('basic-element');
for (var element in elements) {
expect(element.runtimeType, BasicElement);
expect(element.isBasicElement, isTrue);
}
});
test('extends custom element', () {
container.append(new ExtendedElement());
container.appendHtml('<input is="extended-element" />');
var elements = container.querySelectorAll('extended-element');
for (var element in elements) {
expect(element.runtimeType, ExtendedElement);
expect(element.isExtendedElement, isTrue);
}
});
}