Files
sdk/tests/lib_2/html/event_customevent_test.dart
T
Srujan Gaddam 6ae9dedc60 Migrate html tests off of unittest.dart
Changed tests either use expect/minitest or async_helper/async_minitest
as a replacement. There are still a few outstanding tests that need to
be migrated off of unittest.dart.

Change-Id: I9231d453f61507110b5a89360dfb9e5647a5b4c7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/135420
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Reviewed-by: Bob Nystrom <rnystrom@google.com>
Commit-Queue: Srujan Gaddam <srujzs@google.com>
2020-02-15 05:01:30 +00:00

84 lines
2.3 KiB
Dart

// Copyright (c) 2012, 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.
library EventCustomEventTest;
import 'package:async_helper/async_minitest.dart';
import 'dart:html';
import 'dart:js' as js;
class DartPayloadData {
final dartValue;
DartPayloadData(this.dartValue);
}
main() {
test('custom events', () {
var provider = new EventStreamProvider<CustomEvent>('foo');
var el = new DivElement();
var fired = false;
provider.forTarget(el).listen((ev) {
fired = true;
expect(ev.detail, {'type': 'detail'});
});
var ev = new CustomEvent('foo',
canBubble: false, cancelable: false, detail: {'type': 'detail'});
el.dispatchEvent(ev);
expect(fired, isTrue);
});
test('custom events from JS', () {
var scriptContents = '''
var event = document.createEvent("CustomEvent");
event.initCustomEvent("js_custom_event", true, true, {type: "detail"});
window.dispatchEvent(event);
''';
var fired = false;
window.on['js_custom_event'].listen((ev) {
fired = true;
expect((ev as CustomEvent).detail, {'type': 'detail'});
});
var script = new ScriptElement();
script.text = scriptContents;
document.body.append(script);
expect(fired, isTrue);
});
test('custom events to JS', () {
expect(js.context['gotDartEvent'], isNull);
var scriptContents = '''
window.addEventListener('dart_custom_event', function(e) {
if (e.detail == 'dart_message') {
e.preventDefault();
window.gotDartEvent = true;
}
window.console.log('here' + e.detail);
}, false);''';
document.body.append(new ScriptElement()..text = scriptContents);
var event = new CustomEvent('dart_custom_event', detail: 'dart_message');
window.dispatchEvent(event);
expect(js.context['gotDartEvent'], isTrue);
});
test('custom data to Dart', () {
var data = new DartPayloadData(666);
var event = new CustomEvent('dart_custom_data_event', detail: data);
var future = window.on['dart_custom_data_event'].first.then((_) {
expect(event.detail.dartValue, 666);
});
document.body.dispatchEvent(event);
return future;
});
}