Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(273)

Side by Side Diff: test/custom_element_test.dart

Issue 957883002: add @CustomElement (Closed) Base URL: git@github.com:dart-lang/web-components.git@master
Patch Set: update pubspec/changelog and add some comments Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « pubspec.yaml ('k') | test/custom_element_test.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 library custom_element_proxy_test; 4 library web_components.test.custom_element_test;
5 5
6 import 'dart:async'; 6 import 'dart:async';
7 import 'dart:html'; 7 import 'dart:html';
8 import 'dart:js';
9 import 'package:initialize/initialize.dart' as init; 8 import 'package:initialize/initialize.dart' as init;
10 import 'package:unittest/html_config.dart'; 9 import 'package:unittest/html_config.dart';
11 import 'package:unittest/unittest.dart'; 10 import 'package:unittest/unittest.dart';
12 import 'package:web_components/custom_element_proxy.dart'; 11 import 'package:web_components/web_components.dart';
13 12
14 @CustomElementProxy('basic-element') 13 @CustomElement('basic-element')
15 class BasicElement extends HtmlElement { 14 class BasicElement extends HtmlElement {
16 BasicElement.created() : super.created(); 15 BasicElement.created() : super.created();
17 16
18 factory BasicElement() => document.createElement('basic-element'); 17 factory BasicElement() => document.createElement('basic-element');
19
20 bool get isBasicElement =>
21 new JsObject.fromBrowserObject(this)['isBasicElement'];
22 } 18 }
23 19
24 @CustomElementProxy('extended-element', extendsTag: 'input') 20 @CustomElement('child-element')
21 class ChildElement extends BasicElement {
22 ChildElement.created() : super.created();
23
24 factory ChildElement() => document.createElement('child-element');
25 }
26
27 @CustomElement('extended-element', extendsTag: 'input')
25 class ExtendedElement extends InputElement { 28 class ExtendedElement extends InputElement {
26 ExtendedElement.created() : super.created(); 29 ExtendedElement.created() : super.created();
27 30
28 factory ExtendedElement() => 31 factory ExtendedElement() =>
29 document.createElement('input', 'extended-element'); 32 document.createElement('input', 'extended-element');
30
31 bool get isExtendedElement =>
32 new JsObject.fromBrowserObject(this)['isExtendedElement'];
33 } 33 }
34 34
35 main() { 35 main() {
36 useHtmlConfiguration(); 36 useHtmlConfiguration();
37 init.run().then((_) { 37 init.run().then((_) {
38 var container = querySelector('#container') as DivElement; 38 var container = querySelector('#container') as DivElement;
39 39
40 tearDown(() { 40 tearDown(() {
41 container.children.clear(); 41 container.children.clear();
42 }); 42 });
43 43
44 test('basic custom element', () { 44 test('basic custom element', () {
45 expect(document.querySelector('basic-element') is BasicElement, isTrue);
45 container.append(new BasicElement()); 46 container.append(new BasicElement());
46 container.appendHtml('<basic-element></basic_element>'); 47 container.appendHtml('<basic-element></basic-element>');
47 // TODO(jakemac): after appendHtml elements are upgraded asynchronously, 48 // TODO(jakemac): after appendHtml elements are upgraded asynchronously,
48 // why? https://github.com/dart-lang/web-components/issues/4 49 // why? https://github.com/dart-lang/web-components/issues/4
49 return new Future(() {}).then((_) { 50 return new Future(() {}).then((_) {
50 var elements = container.querySelectorAll('basic-element'); 51 var elements = container.querySelectorAll('basic-element');
51 expect(elements.length, 2); 52 expect(elements.length, 2);
52 for (BasicElement element in elements) { 53 for (var element in elements) {
53 print(element.outerHtml); 54 expect(element is BasicElement, isTrue);
54 print(element.runtimeType);
55 expect(element.isBasicElement, isTrue);
56 } 55 }
57 }); 56 });
58 }); 57 });
59 58
60 test('extends custom element', () { 59 test('child custom element', () {
60 expect(document.querySelector('child-element') is ChildElement, isTrue);
61 container.append(new ChildElement());
62 container.appendHtml('<child-element></child-element>');
63 // TODO(jakemac): after appendHtml elements are upgraded asynchronously,
64 // why? https://github.com/dart-lang/web-components/issues/4
65 return new Future(() {}).then((_) {
66 var elements = container.querySelectorAll('child-element');
67 expect(elements.length, 2);
68 for (var element in elements) {
69 expect(element is ChildElement, isTrue);
70 }
71 });
72 });
73
74
75 test('extends input element', () {
76 expect(document.querySelector('input') is ExtendedElement, isTrue);
61 container.append(new ExtendedElement()); 77 container.append(new ExtendedElement());
62 container.appendHtml('<input is="extended-element" />'); 78 container.appendHtml('<input is="extended-element" />');
63 // TODO(jakemac): after appendHtml elements are upgraded asynchronously, 79 // TODO(jakemac): after appendHtml elements are upgraded asynchronously,
64 // why? https://github.com/dart-lang/web-components/issues/4 80 // why? https://github.com/dart-lang/web-components/issues/4
65 return new Future(() {}).then((_) { 81 return new Future(() {}).then((_) {
66 var elements = container.querySelectorAll('input'); 82 var elements = container.querySelectorAll('input');
67 expect(elements.length, 2); 83 expect(elements.length, 2);
68 for (ExtendedElement element in elements) { 84 for (var element in elements) {
69 expect(element.isExtendedElement, isTrue); 85 expect(element is ExtendedElement, isTrue);
70 } 86 }
71 }); 87 });
72 }); 88 });
73 }); 89 });
74 } 90 }
OLDNEW
« no previous file with comments | « pubspec.yaml ('k') | test/custom_element_test.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698