OLD | NEW |
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 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 | 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 | 4 |
5 import 'dart:html'; | 5 import 'dart:html'; |
6 import 'package:unittest/unittest.dart'; | 6 import 'package:unittest/unittest.dart'; |
7 import 'package:observatory/src/elements/nav/menu.dart'; | |
8 import 'package:observatory/src/elements/nav/menu_item.dart'; | 7 import 'package:observatory/src/elements/nav/menu_item.dart'; |
9 import 'package:observatory/src/elements/nav/vm_menu.dart'; | 8 import 'package:observatory/src/elements/nav/vm_menu.dart'; |
10 import '../../mocks.dart'; | 9 import '../../mocks.dart'; |
11 | 10 |
12 main(){ | 11 main(){ |
13 NavVMMenuElement.tag.ensureRegistration(); | 12 NavVMMenuElement.tag.ensureRegistration(); |
14 | 13 |
15 final mTag = NavMenuElement.tag.name; | 14 final mTag = '.nav-menu_label > a'; |
16 final miTag = NavMenuItemElement.tag.name; | 15 final miTag = NavMenuItemElement.tag.name; |
17 | 16 |
18 EventRepositoryMock events; | 17 EventRepositoryMock events; |
19 final vm1 = const VMMock(name: 'vm-name-1', displayName: 'display-name-1', | 18 final vm1 = const VMMock(name: 'vm-name-1', displayName: 'display-name-1', |
20 isolates: const [const IsolateRefMock(id: 'i-id-1', name: 'i-name-1')]); | 19 isolates: const [const IsolateRefMock(id: 'i-id-1', name: 'i-name-1')]); |
21 final vm2 = const VMMock(name: 'vm-name-2', displayName: 'display-name-2', | 20 final vm2 = const VMMock(name: 'vm-name-2', displayName: 'display-name-2', |
22 isolates: const [const IsolateRefMock(id: 'i-id-1', name: 'i-name-1'), | 21 isolates: const [const IsolateRefMock(id: 'i-id-1', name: 'i-name-1'), |
23 const IsolateRefMock(id: 'i-id-2', name: 'i-name-2')]); | 22 const IsolateRefMock(id: 'i-id-2', name: 'i-name-2')]); |
24 setUp(() { | 23 setUp(() { |
25 events = new EventRepositoryMock(); | 24 events = new EventRepositoryMock(); |
26 }); | 25 }); |
27 test('instantiation', () { | 26 test('instantiation', () { |
28 final e = new NavVMMenuElement(vm1, events); | 27 final e = new NavVMMenuElement(vm1, events); |
29 expect(e, isNotNull, reason: 'element correctly created'); | 28 expect(e, isNotNull, reason: 'element correctly created'); |
30 expect(e.vm, equals(vm1)); | 29 expect(e.vm, equals(vm1)); |
31 }); | 30 }); |
32 test('elements created after attachment', () async { | 31 test('elements created after attachment', () async { |
33 final e = new NavVMMenuElement(vm1, events); | 32 final e = new NavVMMenuElement(vm1, events); |
34 document.body.append(e); | 33 document.body.append(e); |
35 await e.onRendered.first; | 34 await e.onRendered.first; |
36 expect(e.shadowRoot.children.length, isNonZero, reason: 'has elements'); | 35 expect(e.children.length, isNonZero, reason: 'has elements'); |
37 e.remove(); | 36 e.remove(); |
38 await e.onRendered.first; | 37 await e.onRendered.first; |
39 expect(e.shadowRoot.children.length, isZero, reason: 'is empty'); | 38 expect(e.children.length, isZero, reason: 'is empty'); |
40 }); | 39 }); |
41 group('updates', () { | 40 group('updates', () { |
42 test('are correctly listen', () async { | 41 test('are correctly listen', () async { |
43 final e = new NavVMMenuElement(vm1, events); | 42 final e = new NavVMMenuElement(vm1, events); |
44 expect(events.onVMUpdateHasListener, isFalse); | 43 expect(events.onVMUpdateHasListener, isFalse); |
45 document.body.append(e); | 44 document.body.append(e); |
46 await e.onRendered.first; | 45 await e.onRendered.first; |
47 expect(events.onVMUpdateHasListener, isTrue); | 46 expect(events.onVMUpdateHasListener, isTrue); |
48 e.remove(); | 47 e.remove(); |
49 await e.onRendered.first; | 48 await e.onRendered.first; |
50 expect(events.onVMUpdateHasListener, isFalse); | 49 expect(events.onVMUpdateHasListener, isFalse); |
51 }); | 50 }); |
52 test('have effects', () async { | 51 test('have effects', () async { |
53 final e = new NavVMMenuElement(vm1, events); | 52 final e = new NavVMMenuElement(vm1, events); |
54 document.body.append(e); | 53 document.body.append(e); |
55 await e.onRendered.first; | 54 await e.onRendered.first; |
56 expect((e.shadowRoot.querySelector(mTag) as NavMenuElement).label, | 55 expect(e.querySelectorAll(mTag).single.text, equals(vm1.displayName)); |
57 equals(vm1.displayName)); | 56 expect(e.querySelectorAll(miTag).length, |
58 expect(e.shadowRoot.querySelectorAll(miTag).length, | |
59 equals(vm1.isolates.length)); | 57 equals(vm1.isolates.length)); |
60 events.add(new VMUpdateEventMock(vm: vm2)); | 58 events.add(new VMUpdateEventMock(vm: vm2)); |
61 await e.onRendered.first; | 59 await e.onRendered.first; |
62 expect((e.shadowRoot.querySelector(mTag) as NavMenuElement).label, | 60 expect(e.querySelectorAll(mTag).single.text, equals(vm2.displayName)); |
63 equals(vm2.displayName)); | 61 expect(e.querySelectorAll(miTag).length, |
64 expect(e.shadowRoot.querySelectorAll(miTag).length, | |
65 equals(vm2.isolates.length)); | 62 equals(vm2.isolates.length)); |
66 e.remove(); | 63 e.remove(); |
67 }); | 64 }); |
68 }); | 65 }); |
69 } | 66 } |
OLD | NEW |