blob: 7aba8ede9c56bcb24c0d9924d121b243c4a9caac [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:unittest/unittest.dart';
import 'package:observatory/src/elements/nav/menu.dart';
import 'package:observatory/src/elements/nav/menu_item.dart';
import 'package:observatory/src/elements/nav/vm_menu.dart';
import '../../mocks.dart';
main(){
NavVMMenuElement.tag.ensureRegistration();
final mTag = NavMenuElement.tag.name;
final miTag = NavMenuItemElement.tag.name;
EventRepositoryMock events;
final vm1 = const VMMock(name: 'vm-name-1', displayName: 'display-name-1',
isolates: const [const IsolateRefMock(id: 'i-id-1', name: 'i-name-1')]);
final vm2 = const VMMock(name: 'vm-name-2', displayName: 'display-name-2',
isolates: const [const IsolateRefMock(id: 'i-id-1', name: 'i-name-1'),
const IsolateRefMock(id: 'i-id-2', name: 'i-name-2')]);
setUp(() {
events = new EventRepositoryMock();
});
test('instantiation', () {
final e = new NavVMMenuElement(vm1, events);
expect(e, isNotNull, reason: 'element correctly created');
expect(e.vm, equals(vm1));
});
test('elements created after attachment', () async {
final e = new NavVMMenuElement(vm1, events);
document.body.append(e);
await e.onRendered.first;
expect(e.shadowRoot.children.length, isNonZero, reason: 'has elements');
e.remove();
await e.onRendered.first;
expect(e.shadowRoot.children.length, isZero, reason: 'is empty');
});
group('updates', () {
test('are correctly listen', () async {
final e = new NavVMMenuElement(vm1, events);
expect(events.onVMUpdateHasListener, isFalse);
document.body.append(e);
await e.onRendered.first;
expect(events.onVMUpdateHasListener, isTrue);
e.remove();
await e.onRendered.first;
expect(events.onVMUpdateHasListener, isFalse);
});
test('have effects', () async {
final e = new NavVMMenuElement(vm1, events);
document.body.append(e);
await e.onRendered.first;
expect((e.shadowRoot.querySelector(mTag) as NavMenuElement).label,
equals(vm1.displayName));
expect(e.shadowRoot.querySelectorAll(miTag).length,
equals(vm1.isolates.length));
events.add(new VMUpdateEventMock(vm: vm2));
await e.onRendered.first;
expect((e.shadowRoot.querySelector(mTag) as NavMenuElement).label,
equals(vm2.displayName));
expect(e.shadowRoot.querySelectorAll(miTag).length,
equals(vm2.isolates.length));
e.remove();
});
});
}