2020-07-18 13:34:41 +08:00

55 lines
1.4 KiB
JavaScript

function toHaveTriggeredSensorEvent(received, expectedEventName, count) {
let triggered = false;
let callCount = 0;
function callback() {
if (count !== undefined) {
callCount++;
}
triggered = true;
}
document.addEventListener(expectedEventName, callback);
received();
document.removeEventListener(expectedEventName, callback);
const pass = Boolean(triggered) && Boolean(count === undefined || callCount === count);
return {
pass,
message: () => {
const expectation = pass ? 'not to have been' : 'to have been';
const defaultMessage = `Expected sensor event '${expectedEventName}' ${expectation} to be triggered`;
return count ? `${defaultMessage} ${count} time(s)` : defaultMessage;
},
};
}
function toHaveCanceledSensorEvent(received, expectedEventName) {
let canceled = false;
function callback(event) {
canceled = event.detail.canceled();
}
document.addEventListener(expectedEventName, callback);
received();
document.removeEventListener(expectedEventName, callback);
const pass = Boolean(canceled);
return {
pass,
message: () => {
const expectation = pass ? 'not to have been' : 'to have been';
return `Expected sensor event '${expectedEventName}' ${expectation} canceled`;
},
};
}
expect.extend({
toHaveTriggeredSensorEvent,
toHaveCanceledSensorEvent,
});