Index: packages/web_components/test/custom_element_test.dart |
diff --git a/packages/web_components/test/custom_element_test.dart b/packages/web_components/test/custom_element_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..641c8c9b3028cebc0decd0a919b80a759d161617 |
--- /dev/null |
+++ b/packages/web_components/test/custom_element_test.dart |
@@ -0,0 +1,92 @@ |
+// 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 web_components.test.custom_element_test; |
+ |
+import 'dart:async'; |
+import 'dart:html'; |
+import 'package:unittest/html_config.dart'; |
+import 'package:unittest/unittest.dart'; |
+import 'package:web_components/web_components.dart'; |
+ |
+@CustomElement('basic-element') |
+class BasicElement extends HtmlElement { |
+ BasicElement.created() : super.created(); |
+ |
+ factory BasicElement() => document.createElement('basic-element'); |
+} |
+ |
+@CustomElement('child-element') |
+class ChildElement extends BasicElement { |
+ ChildElement.created() : super.created(); |
+ |
+ factory ChildElement() => document.createElement('child-element'); |
+} |
+ |
+@CustomElement('extended-element', extendsTag: 'input') |
+class ExtendedElement extends InputElement { |
+ ExtendedElement.created() : super.created(); |
+ |
+ factory ExtendedElement() => |
+ document.createElement('input', 'extended-element'); |
+} |
+ |
+main() { |
+ useHtmlConfiguration(); |
+ initWebComponents().then((_) { |
+ var container = querySelector('#container') as DivElement; |
+ |
+ setUp(() { |
+ return new Future(() {}); |
+ }); |
+ |
+ tearDown(() { |
+ container.children.clear(); |
+ }); |
+ |
+ test('basic custom element', () { |
+ expect(document.querySelector('basic-element') is BasicElement, isTrue); |
+ container.append(new BasicElement()); |
+ container.appendHtml('<basic-element></basic-element>'); |
+ // TODO(jakemac): after appendHtml elements are upgraded asynchronously, |
+ // why? https://github.com/dart-lang/web-components/issues/4 |
+ return new Future(() {}).then((_) { |
+ var elements = container.querySelectorAll('basic-element'); |
+ expect(elements.length, 2); |
+ for (var element in elements) { |
+ expect(element is BasicElement, isTrue); |
+ } |
+ }); |
+ }); |
+ |
+ test('child custom element', () { |
+ expect(document.querySelector('child-element') is ChildElement, isTrue); |
+ container.append(new ChildElement()); |
+ container.appendHtml('<child-element></child-element>'); |
+ // TODO(jakemac): after appendHtml elements are upgraded asynchronously, |
+ // why? https://github.com/dart-lang/web-components/issues/4 |
+ return new Future(() {}).then((_) { |
+ var elements = container.querySelectorAll('child-element'); |
+ expect(elements.length, 2); |
+ for (var element in elements) { |
+ expect(element is ChildElement, isTrue); |
+ } |
+ }); |
+ }); |
+ |
+ test('extends input element', () { |
+ expect(document.querySelector('input') is ExtendedElement, isTrue); |
+ container.append(new ExtendedElement()); |
+ container.appendHtml('<input is="extended-element" />'); |
+ // TODO(jakemac): after appendHtml elements are upgraded asynchronously, |
+ // why? https://github.com/dart-lang/web-components/issues/4 |
+ return new Future(() {}).then((_) { |
+ var elements = container.querySelectorAll('input'); |
+ expect(elements.length, 2); |
+ for (var element in elements) { |
+ expect(element is ExtendedElement, isTrue); |
+ } |
+ }); |
+ }); |
+ }); |
+} |