75 lines
2.5 KiB
JavaScript
75 lines
2.5 KiB
JavaScript
/** @odoo-module **/
|
|
|
|
/**
|
|
* Mock Test Utils
|
|
*
|
|
* This module defines various utility functions to help mocking data.
|
|
*
|
|
* Note that all methods defined in this module are exported in the main
|
|
* testUtils file.
|
|
*/
|
|
|
|
import { patchDate } from "@web/../tests/helpers/utils";
|
|
|
|
//------------------------------------------------------------------------------
|
|
// Public functions
|
|
//------------------------------------------------------------------------------
|
|
|
|
/**
|
|
* intercepts an event bubbling up the widget hierarchy. The event intercepted
|
|
* must be a "custom event", i.e. an event generated by the method 'trigger_up'.
|
|
*
|
|
* Note that this method really intercepts the event if @propagate is not set.
|
|
* It will not be propagated further, and even the handlers on the target will
|
|
* not fire.
|
|
*
|
|
* @param {Widget} widget the target widget (any Odoo widget)
|
|
* @param {string} eventName description of the event
|
|
* @param {function} fn callback executed when the even is intercepted
|
|
* @param {boolean} [propagate=false]
|
|
*/
|
|
function intercept(widget, eventName, fn, propagate) {
|
|
var _trigger_up = widget._trigger_up.bind(widget);
|
|
widget._trigger_up = function (event) {
|
|
if (event.name === eventName) {
|
|
fn(event);
|
|
if (!propagate) { return; }
|
|
}
|
|
_trigger_up(event);
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Patch window.Date so that the time starts its flow from the provided Date.
|
|
*
|
|
* Usage:
|
|
*
|
|
* ```
|
|
* testUtils.mock.patchDate(2018, 0, 10, 17, 59, 30)
|
|
* new window.Date(); // "Wed Jan 10 2018 17:59:30 GMT+0100 (Central European Standard Time)"
|
|
* ... // 5 hours delay
|
|
* new window.Date(); // "Wed Jan 10 2018 22:59:30 GMT+0100 (Central European Standard Time)"
|
|
* ```
|
|
*
|
|
* The returned function is there to preserve the former API. Before it was
|
|
* necessary to call that function to unpatch the date. Now the unpatch is
|
|
* done automatically via a call to registerCleanup.
|
|
*
|
|
* @param {integer} year
|
|
* @param {integer} month index of the month, starting from zero.
|
|
* @param {integer} day the day of the month.
|
|
* @param {integer} hours the digits for hours (24h)
|
|
* @param {integer} minutes
|
|
* @param {integer} seconds
|
|
* @returns {Function} callback function is now useless
|
|
*/
|
|
function legacyPatchDate(year, month, day, hours, minutes, seconds) {
|
|
patchDate(year, month, day, hours, minutes, seconds);
|
|
return function () {}; // all calls to that function are now useless
|
|
}
|
|
|
|
export default {
|
|
intercept: intercept,
|
|
patchDate: legacyPatchDate,
|
|
};
|