blob: d2194d57855630d4caaab580ae497a66b1e12140 [file] [log] [blame]
// 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.
import 'dart:html';
import 'package:polymer/polymer.dart';
import 'package:unittest/unittest.dart';
import 'package:unittest/html_config.dart';
@CustomTag('x-html')
class XHtmlElement extends PolymerElement {
XHtmlElement.created() : super.created();
}
@CustomTag('x-html-two')
class XHtml2Element extends XHtmlElement {
XHtml2Element.created() : super.created();
}
@CustomTag('x-div')
class XDivElement extends DivElement with Polymer, Observable {
XDivElement.created() : super.created();
}
@CustomTag('x-div-two')
class XDiv2Element extends XDivElement {
XDiv2Element.created() : super.created();
}
/// Dart-specific test:
/// This element is registered from code without an associated polymer-element.
class XPolymerElement extends PolymerElement {
XPolymerElement.created() : super.created();
}
/// Dart-specific test:
/// This element is registered from code without an associated polymer-element.
class XButtonElement extends ButtonElement with Polymer, Observable {
XButtonElement.created() : super.created();
}
main() => initPolymer().run(() {
useHtmlConfiguration();
setUp(() => Polymer.onReady);
test('elements upgraded', () {
expect(querySelector('x-html') is XHtmlElement, isTrue);
expect(querySelector('x-html-two') is XHtml2Element, isTrue);
expect(querySelector('#x-div') is XDivElement, isTrue);
expect(querySelector('#x-div-two') is XDiv2Element, isTrue);
});
group('register without polymer-element', () {
test('custom element', () {
Polymer.registerSync('x-polymer', XPolymerElement,
template: new Element.html('<template>FOOBAR'));
expect(document.createElement('x-polymer') is XPolymerElement, isTrue,
reason: 'should have been registered');
var e = document.querySelector('x-polymer');
expect(e is XPolymerElement, isTrue,
reason: 'elements on page should be upgraded');
expect(e.shadowRoot, isNotNull,
reason: 'shadowRoot was created from template');
expect(e.shadowRoot.nodes[0].text, 'FOOBAR');
});
test('type extension', () {
Polymer.registerSync('x-button', XButtonElement, extendsTag: 'button');
expect(document.createElement('button', 'x-button') is XButtonElement,
isTrue, reason: 'should have been registered');
expect(document.querySelector('[is=x-button]') is XButtonElement, isTrue,
reason: 'elements on page should be upgraded');
});
});
});