blob: be95c7ac31b894d93d5915fb86022ea7d8aaec1d [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/nav/menu_item.dart';
import 'package:observatory/src/elements/nav/vm_menu.dart';
import '../../mocks.dart';
main() {
NavVMMenuElement.tag.ensureRegistration();
final mTag = '.nav-menu_label > a';
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.children.length, isNonZero, reason: 'has elements');
e.remove();
await e.onRendered.first;
expect(e.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.querySelectorAll(mTag).single.text, equals(vm1.displayName));
expect(e.querySelectorAll(miTag).length, equals(vm1.isolates.length));
events.add(new VMUpdateEventMock(vm: vm2));
await e.onRendered.first;
expect(e.querySelectorAll(mTag).single.text, equals(vm2.displayName));
expect(e.querySelectorAll(miTag).length, equals(vm2.isolates.length));
e.remove();
});
});
}