mirror of
https://github.com/Shopify/draggable.git
synced 2025-12-08 20:15:56 +00:00
55 lines
1.4 KiB
JavaScript
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,
|
|
});
|