@simplux/testing
Version:
The testing package for simplux. Contains various testing utilities (e.g. for mocking module states and mutations).
36 lines (35 loc) • 3.6 kB
JavaScript
const mockCleanupFunctions = [];
/**
* Register a function to be called when all mocks are cleared.
*
* @param cleanupFunction - the cleanup function to call
*
* @returns a function that can be called to unregister the function
*
* @public
*/
export function registerMockCleanupFunction(cleanupFunction) {
function wrappedCleanupFunction() {
cleanupFunction();
unregisterCleanupFunction();
}
function unregisterCleanupFunction() {
const idx = mockCleanupFunctions.indexOf(wrappedCleanupFunction);
if (idx >= 0) {
mockCleanupFunctions.splice(idx, 1);
}
}
mockCleanupFunctions.push(wrappedCleanupFunction);
return unregisterCleanupFunction;
}
/**
* Clear all mocks on any simplux functionality.
*
* @public
*/
export function clearAllSimpluxMocks() {
// the map is required to make a copy of the source array
// since we are modifying it when calling the cleanup functions
mockCleanupFunctions.map((fn) => fn).forEach((fn) => fn());
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYW51cC5qcyIsInNvdXJjZXMiOlsiQHNpbXBsdXgvdGVzdGluZy9zcmMvY2xlYW51cC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBtb2NrQ2xlYW51cEZ1bmN0aW9uczogKCgpID0+IHZvaWQpW10gPSBbXVxyXG5cclxuLyoqXHJcbiAqIFJlZ2lzdGVyIGEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gYWxsIG1vY2tzIGFyZSBjbGVhcmVkLlxyXG4gKlxyXG4gKiBAcGFyYW0gY2xlYW51cEZ1bmN0aW9uIC0gdGhlIGNsZWFudXAgZnVuY3Rpb24gdG8gY2FsbFxyXG4gKlxyXG4gKiBAcmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIGNhbGxlZCB0byB1bnJlZ2lzdGVyIHRoZSBmdW5jdGlvblxyXG4gKlxyXG4gKiBAcHVibGljXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJNb2NrQ2xlYW51cEZ1bmN0aW9uKGNsZWFudXBGdW5jdGlvbjogKCkgPT4gdm9pZCkge1xyXG4gIGZ1bmN0aW9uIHdyYXBwZWRDbGVhbnVwRnVuY3Rpb24oKSB7XHJcbiAgICBjbGVhbnVwRnVuY3Rpb24oKVxyXG4gICAgdW5yZWdpc3RlckNsZWFudXBGdW5jdGlvbigpXHJcbiAgfVxyXG5cclxuICBmdW5jdGlvbiB1bnJlZ2lzdGVyQ2xlYW51cEZ1bmN0aW9uKCkge1xyXG4gICAgY29uc3QgaWR4ID0gbW9ja0NsZWFudXBGdW5jdGlvbnMuaW5kZXhPZih3cmFwcGVkQ2xlYW51cEZ1bmN0aW9uKVxyXG4gICAgaWYgKGlkeCA+PSAwKSB7XHJcbiAgICAgIG1vY2tDbGVhbnVwRnVuY3Rpb25zLnNwbGljZShpZHgsIDEpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBtb2NrQ2xlYW51cEZ1bmN0aW9ucy5wdXNoKHdyYXBwZWRDbGVhbnVwRnVuY3Rpb24pXHJcblxyXG4gIHJldHVybiB1bnJlZ2lzdGVyQ2xlYW51cEZ1bmN0aW9uXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDbGVhciBhbGwgbW9ja3Mgb24gYW55IHNpbXBsdXggZnVuY3Rpb25hbGl0eS5cclxuICpcclxuICogQHB1YmxpY1xyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyQWxsU2ltcGx1eE1vY2tzKCkge1xyXG4gIC8vIHRoZSBtYXAgaXMgcmVxdWlyZWQgdG8gbWFrZSBhIGNvcHkgb2YgdGhlIHNvdXJjZSBhcnJheVxyXG4gIC8vIHNpbmNlIHdlIGFyZSBtb2RpZnlpbmcgaXQgd2hlbiBjYWxsaW5nIHRoZSBjbGVhbnVwIGZ1bmN0aW9uc1xyXG4gIG1vY2tDbGVhbnVwRnVuY3Rpb25zLm1hcCgoZm4pID0+IGZuKS5mb3JFYWNoKChmbikgPT4gZm4oKSlcclxufVxyXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxvQkFBb0IsR0FBbUIsRUFBRSxDQUFBO0FBRS9DOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLDJCQUEyQixDQUFDLGVBQTJCO0lBQ3JFLFNBQVMsc0JBQXNCO1FBQzdCLGVBQWUsRUFBRSxDQUFBO1FBQ2pCLHlCQUF5QixFQUFFLENBQUE7SUFDN0IsQ0FBQztJQUVELFNBQVMseUJBQXlCO1FBQ2hDLE1BQU0sR0FBRyxHQUFHLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO1FBQ2hFLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRTtZQUNaLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUE7U0FDcEM7SUFDSCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUE7SUFFakQsT0FBTyx5QkFBeUIsQ0FBQTtBQUNsQyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxvQkFBb0I7SUFDbEMseURBQXlEO0lBQ3pELCtEQUErRDtJQUMvRCxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUM1RCxDQUFDIn0=