Index: pkg/custom_element/test/custom_element_test.dart |
diff --git a/pkg/custom_element/test/custom_element_test.dart b/pkg/custom_element/test/custom_element_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..93fcd1555cc2e63f603c975318a45098bc377977 |
--- /dev/null |
+++ b/pkg/custom_element/test/custom_element_test.dart |
@@ -0,0 +1,80 @@ |
+// 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. |
+ |
+library custom_element.test.custom_element_test; |
+ |
+import 'dart:async'; |
+import 'dart:html'; |
+import 'package:custom_element/custom_element.dart'; |
+import 'package:unittest/html_config.dart'; |
+import 'package:unittest/unittest.dart'; |
+ |
+main() { |
+ useHtmlConfiguration(); |
+ |
+ test('register creates the element and calls lifecycle methods', () { |
+ // Add element to the page. |
+ var element = new Element.html('<fancy-button>foo bar</fancy-button>'); |
+ document.body.nodes.add(element); |
+ |
+ var xtag = null; |
+ registerCustomElement('fancy-button', () => xtag = new FancyButton()); |
+ expect(xtag, isNotNull, reason: 'FancyButton was created'); |
+ expect(element.xtag, xtag, reason: 'xtag pointer should be set'); |
+ expect(xtag.host, element, reason: 'host pointer should be set'); |
+ expect(xtag.lifecycle, ['created']); |
+ return new Future(() { |
+ expect(xtag.lifecycle, ['created', 'inserted']); |
+ element.remove(); |
+ return new Future(() { |
+ expect(xtag.lifecycle, ['created', 'inserted', 'removed']); |
+ }); |
+ }); |
+ }); |
+ |
+ test('create a component in code', () { |
+ var element = createElement('super-button'); |
+ expect(element.xtag, element, reason: 'element not registered'); |
+ |
+ var xtag = null; |
+ registerCustomElement('super-button', () => xtag = new FancyButton()); |
+ |
+ element = createElement('super-button'); |
+ expect(xtag, isNotNull, reason: 'FancyButton was created'); |
+ expect(element.xtag, xtag, reason: 'xtag pointer should be set'); |
+ expect(xtag.host, element, reason: 'host pointer should be set'); |
+ expect(xtag.lifecycle, ['created']); |
+ return new Future(() { |
+ expect(xtag.lifecycle, ['created'], reason: 'not inserted into document'); |
+ |
+ document.body.nodes.add(element); |
+ return new Future(() { |
+ expect(xtag.lifecycle, ['created'], |
+ reason: 'mutation observer not implemented yet'); |
+ |
+ element.remove(); |
+ return new Future(() { |
+ expect(xtag.lifecycle, ['created'], |
+ reason: 'mutation observer not implemented yet'); |
+ }); |
+ }); |
+ }); |
+ }); |
+} |
+ |
+class FancyButton extends CustomElement { |
+ final lifecycle = []; |
+ created() { |
+ super.created(); |
+ lifecycle.add('created'); |
+ } |
+ inserted() { |
+ super.inserted(); |
+ lifecycle.add('inserted'); |
+ } |
+ removed() { |
+ super.removed(); |
+ lifecycle.add('removed'); |
+ } |
+} |