blob: e647e5f1b319cb456c428c8985669d3a60c614d9 [file] [log] [blame]
// Copyright (c) 2016, 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:test/test.dart';
import 'package:observatory/src/elements/curly_block.dart';
main() {
CurlyBlockElement.tag.ensureRegistration();
group('instantiation', () {
test('default', () {
final e = new CurlyBlockElement();
expect(e, isNotNull, reason: 'element correctly created');
expect(e.expanded, isFalse);
expect(e.disabled, isFalse);
});
test('not expanded', () {
final e = new CurlyBlockElement(expanded: false);
expect(e, isNotNull, reason: 'element correctly created');
expect(e.expanded, isFalse);
expect(e.disabled, isFalse);
});
test('not expanded / not disabled', () {
final e = new CurlyBlockElement(expanded: false, disabled: false);
expect(e, isNotNull, reason: 'element correctly created');
expect(e.expanded, isFalse);
expect(e.disabled, isFalse);
});
test('not expanded / disabled', () {
final e = new CurlyBlockElement(expanded: false, disabled: true);
expect(e, isNotNull, reason: 'element correctly created');
expect(e.expanded, isFalse);
expect(e.disabled, isTrue);
});
test('expanded', () {
final e = new CurlyBlockElement(expanded: true);
expect(e, isNotNull, reason: 'element correctly created');
expect(e.expanded, isTrue);
expect(e.disabled, isFalse);
});
test('expanded / not disabled', () {
final e = new CurlyBlockElement(expanded: true, disabled: false);
expect(e, isNotNull, reason: 'element correctly created');
expect(e.expanded, isTrue);
expect(e.disabled, isFalse);
});
test('expanded / disabled', () {
final e = new CurlyBlockElement(expanded: true, disabled: true);
expect(e, isNotNull, reason: 'element correctly created');
expect(e.expanded, isTrue);
expect(e.disabled, isTrue);
});
test('not disabled', () {
final e = new CurlyBlockElement(disabled: false);
expect(e, isNotNull, reason: 'element correctly created');
expect(e.expanded, isFalse);
expect(e.disabled, isFalse);
});
test('disabled', () {
final e = new CurlyBlockElement(disabled: true);
expect(e, isNotNull, reason: 'element correctly created');
expect(e.expanded, isFalse);
expect(e.disabled, isTrue);
});
});
test('elements created', () async {
final e = new CurlyBlockElement();
expect(e.children, isEmpty, reason: 'is empty');
document.body.append(e);
await e.onRendered.first;
expect(e.children, isNotEmpty, reason: 'has elements');
e.remove();
await e.onRendered.first;
expect(e.children, isEmpty, reason: 'is empty');
});
group('content', () {
CurlyBlockElement e;
setUp(() async {
e = new CurlyBlockElement();
e.content = <Element>[document.createElement('content')];
document.body.append(e);
await e.onRendered.first;
});
tearDown(() {
e.remove();
});
test('toggles visibility', () async {
expect(e.querySelector('content'), isNull);
e.toggle();
await e.onRendered.first;
expect(e.querySelector('content'), isNotNull);
e.toggle();
await e.onRendered.first;
expect(e.querySelector('content'), isNull);
e.remove();
});
test('toggles visibility (manually)', () async {
expect(e.querySelector('content'), isNull);
e.expanded = true;
await e.onRendered.first;
expect(e.querySelector('content'), isNotNull);
e.expanded = false;
await e.onRendered.first;
expect(e.querySelector('content'), isNull);
e.remove();
});
test('does not toggle if disabled', () async {
e.disabled = true;
await e.onRendered.first;
expect(e.expanded, isFalse);
expect(e.querySelector('content'), isNull);
e.toggle();
await e.onRendered.first;
expect(e.expanded, isFalse);
expect(e.querySelector('content'), isNull);
e.disabled = false;
e.toggle();
await e.onRendered.first;
expect(e.expanded, isTrue);
expect(e.querySelector('content'), isNotNull);
e.disabled = true;
e.toggle();
await e.onRendered.first;
expect(e.expanded, isTrue);
expect(e.querySelector('content'), isNotNull);
e.remove();
});
test('toggles visibility (manually) if disabled', () async {
e.disabled = true;
await e.onRendered.first;
expect(e.querySelector('content'), isNull);
e.expanded = true;
await e.onRendered.first;
expect(e.querySelector('content'), isNotNull);
e.expanded = false;
await e.onRendered.first;
expect(e.querySelector('content'), isNull);
e.remove();
});
});
group('event', () {
CurlyBlockElement e;
setUp(() async {
e = new CurlyBlockElement();
document.body.append(e);
await e.onRendered.first;
});
tearDown(() async {
e.remove();
await e.onRendered.first;
});
test('fires on toggle', () async {
e.onToggle.listen(expectAsync1((CurlyBlockToggleEvent event) {
expect(event, isNotNull);
expect(event.control, equals(e));
}, count: 1));
e.toggle();
await e.onRendered.first;
});
test('fires on manual toggle', () async {
e.onToggle.listen(expectAsync1((CurlyBlockToggleEvent event) {
expect(event, isNotNull);
expect(event.control, equals(e));
}, count: 1));
e.expanded = !e.expanded;
await e.onRendered.first;
});
test('does not fire if setting same expanded value', () async {
e.onToggle.listen(expectAsync1((_) {}, count: 0));
e.expanded = e.expanded;
await e.onRendered.first;
});
});
}