blob: 73f1df4ae55bba7ef493dc22adae67553576326a [file] [log] [blame]
<!DOCTYPE html>
<meta charset="utf-8">
<title>Toast: Event tests</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<main></main>
<script type="module">
import { testToastElement, EventCollector } from './resources/helpers.js';
testToastElement((toast) => {
const counter = new EventCollector();
toast.addEventListener('show', counter.getCallback());
toast.show();
assert_equals(counter.getCount(), 1);
}, 'calling `show()` on a hidden toast triggers the `show` event');
testToastElement((toast) => {
const counter = new EventCollector();
toast.show();
toast.addEventListener('show', counter.getCallback());
toast.show();
assert_equals(counter.getCount(), 0);
}, 'calling `show()` on a shown toast does not trigger the `show` event');
testToastElement((toast) => {
const counter = new EventCollector();
toast.addEventListener('hide', counter.getCallback());
toast.hide();
assert_equals(counter.getCount(), 0);
}, 'calling `hide()` on a hidden toast does not trigger the `hide` event');
testToastElement((toast) => {
const counter = new EventCollector();
toast.show();
toast.addEventListener('hide', counter.getCallback());
toast.hide();
assert_equals(counter.getCount(), 1);
}, 'calling `hide()` on a shown toast triggers the `hide` event');
testToastElement((toast) => {
const counter = new EventCollector();
toast.addEventListener('show', counter.getCallback());
toast.show();
toast.show();
assert_equals(counter.getCount(), 1);
}, 'calling `show()` twice only triggers the `show` event once');
testToastElement((toast) => {
const counter = new EventCollector();
toast.show();
toast.addEventListener('hide', counter.getCallback());
toast.hide();
toast.hide();
assert_equals(counter.getCount(), 1);
}, 'calling `hide()` twice only triggers the `hide` event once');
testToastElement((toast) => {
const events = new EventCollector();
toast.addEventListener('show', events.getCallback());
toast.show();
toast.hide();
toast.show();
assert_equals(events.getCount(), 2);
assert_not_equals(events.getEvents()[0], events.getEvents()[1]);
}, "separate openings trigger different `show` events");
testToastElement((toast) => {
const events = new EventCollector();
toast.addEventListener('hide', events.getCallback());
toast.show();
toast.hide();
toast.show();
toast.hide();
assert_equals(events.getCount(), 2);
assert_not_equals(events.getEvents()[0], events.getEvents()[1]);
}, "separate closings trigger different `hide` events");
</script>