OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
| 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. |
| 4 import 'dart:html'; |
| 5 import 'dart:async'; |
| 6 import 'package:unittest/unittest.dart'; |
| 7 import 'package:observatory/src/elements/nav/refresh.dart'; |
| 8 |
| 9 main() { |
| 10 NavRefreshElement.tag.ensureRegistration(); |
| 11 group('instantiation', () { |
| 12 test('no parameters', () { |
| 13 final NavRefreshElement e = new NavRefreshElement(); |
| 14 expect(e, isNotNull, reason: 'element correctly created'); |
| 15 expect(e.label, isNotNull, reason: 'label is set to default'); |
| 16 expect(e.disabled, isFalse, reason: 'element correctly created'); |
| 17 }); |
| 18 test('label', () { |
| 19 final label = 'custom-label'; |
| 20 final NavRefreshElement e = new NavRefreshElement(label: label); |
| 21 expect(e, isNotNull, reason: 'element correctly created'); |
| 22 expect(e.label, isNotNull, reason: 'label is set'); |
| 23 expect(e.label, equals(label), reason: 'label is set to value'); |
| 24 }); |
| 25 test('not disabled', () { |
| 26 final NavRefreshElement e = new NavRefreshElement(disabled: false); |
| 27 expect(e, isNotNull, reason: 'element correctly created'); |
| 28 expect(e.disabled, isFalse, reason: 'element correctly created'); |
| 29 }); |
| 30 test('disabled', () { |
| 31 final NavRefreshElement e = new NavRefreshElement(disabled: true); |
| 32 expect(e, isNotNull, reason: 'element correctly created'); |
| 33 expect(e.disabled, isTrue, reason: 'element correctly created'); |
| 34 }); |
| 35 }); |
| 36 group('elements', () { |
| 37 test('created after attachment', () async { |
| 38 final NavRefreshElement e = new NavRefreshElement(); |
| 39 document.body.append(e); |
| 40 await e.onRendered.first; |
| 41 expect(e.children.length, isNonZero, reason: 'has elements'); |
| 42 e.remove(); |
| 43 await e.onRendered.first; |
| 44 expect(e.children.length, isZero, reason: 'is empty'); |
| 45 }); |
| 46 test('contain custom label', () async { |
| 47 final label = 'custom-label'; |
| 48 final NavRefreshElement e = new NavRefreshElement(label: label); |
| 49 document.body.append(e); |
| 50 await e.onRendered.first; |
| 51 expect(e.innerHtml.contains(label), isTrue); |
| 52 e.remove(); |
| 53 await e.onRendered.first; |
| 54 }); |
| 55 test('react to label change', () async { |
| 56 final label1 = 'custom-label-1'; |
| 57 final label2 = 'custom-label-2'; |
| 58 final NavRefreshElement e = new NavRefreshElement(label: label1); |
| 59 document.body.append(e); |
| 60 await e.onRendered.first; |
| 61 expect(e.innerHtml.contains(label1), isTrue); |
| 62 expect(e.innerHtml.contains(label2), isFalse); |
| 63 e.label = label2; |
| 64 await e.onRendered.first; |
| 65 expect(e.innerHtml.contains(label2), isTrue); |
| 66 expect(e.innerHtml.contains(label1), isFalse); |
| 67 e.remove(); |
| 68 await e.onRendered.first; |
| 69 }); |
| 70 test('react to disabled change', () async { |
| 71 final NavRefreshElement e = new NavRefreshElement(disabled: false); |
| 72 document.body.append(e); |
| 73 await e.onRendered.first; |
| 74 expect(e.disabled, isFalse); |
| 75 e.disabled = true; |
| 76 await e.onRendered.first; |
| 77 expect(e.disabled, isTrue); |
| 78 e.remove(); |
| 79 await e.onRendered.first; |
| 80 }); |
| 81 }); |
| 82 group('event', () { |
| 83 NavRefreshElement e; |
| 84 StreamSubscription sub; |
| 85 setUp(() async { |
| 86 e = new NavRefreshElement(); |
| 87 document.body.append(e); |
| 88 await e.onRendered.first; |
| 89 }); |
| 90 tearDown(() async { |
| 91 sub.cancel(); |
| 92 e.remove(); |
| 93 await e.onRendered.first; |
| 94 }); |
| 95 test('fires', () async { |
| 96 sub = e.onRefresh.listen(expectAsync((event) { |
| 97 expect(event, isNotNull, reason: 'event passed'); |
| 98 expect(event is RefreshEvent, isTrue, reason: 'is the right event'); |
| 99 expect(event.element, equals(e), reason: 'is related to the element'); |
| 100 }, count: 1)); |
| 101 e.refresh(); |
| 102 }); |
| 103 test('fires on click', () async { |
| 104 sub = e.onRefresh.listen(expectAsync((event) { |
| 105 expect(event, isNotNull, reason: 'event passed'); |
| 106 expect(event is RefreshEvent, isTrue, reason: 'is the right event'); |
| 107 expect(event.element, equals(e), reason: 'is related to the element'); |
| 108 }, count: 1)); |
| 109 e.querySelector('button').click(); |
| 110 }); |
| 111 test('does not fire if disabled', () async { |
| 112 e.disabled = true; |
| 113 sub = e.onRefresh.listen(expectAsync((_) {}, count: 0)); |
| 114 e.refresh(); |
| 115 }); |
| 116 test('does not fires on click if disabled', () async { |
| 117 e.disabled = true; |
| 118 sub = e.onRefresh.listen(expectAsync((_) {}, count: 0)); |
| 119 e.querySelector('button').click(); |
| 120 }); |
| 121 }); |
| 122 } |
OLD | NEW |