Index: packages/web_components/test/custom_element_proxy_test.dart |
diff --git a/packages/web_components/test/custom_element_proxy_test.dart b/packages/web_components/test/custom_element_proxy_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..5fa11e0dbe569ecb5145afde6fc9ac0aaab93c5a |
--- /dev/null |
+++ b/packages/web_components/test/custom_element_proxy_test.dart |
@@ -0,0 +1,73 @@ |
+// 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:async'; |
+import 'dart:html'; |
+import 'dart:js'; |
+import 'package:unittest/html_config.dart'; |
+import 'package:unittest/unittest.dart'; |
+import 'package:web_components/web_components.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(); |
+ initWebComponents().then((_) { |
+ var container = querySelector('#container') as DivElement; |
+ |
+ tearDown(() { |
+ container.children.clear(); |
+ }); |
+ |
+ test('basic custom element', () { |
+ 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 (BasicElement element in elements) { |
+ print(element.outerHtml); |
+ print(element.runtimeType); |
+ expect(element.isBasicElement, isTrue); |
+ } |
+ }); |
+ }); |
+ |
+ test('extends custom element', () { |
+ 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 (ExtendedElement element in elements) { |
+ expect(element.isExtendedElement, isTrue); |
+ } |
+ }); |
+ }); |
+ }); |
+} |