Files
jasmine/src/core/deprecatingSpecProxy.js

37 lines
1.0 KiB
JavaScript

// TODO: Remove this in the next major release.
getJasmineRequireObj().deprecatingSpecProxy = function(j$) {
const allowedMembers = ['id', 'description', 'getFullName', 'getPath'];
function isMember(target, prop) {
return (
Object.keys(target).indexOf(prop) !== -1 ||
Object.keys(j$.Spec.prototype).indexOf(prop) !== -1
);
}
function msg(member) {
const memberName = member.toString().replace(/^Symbol\((.+)\)$/, '$1');
return (
'Access to private Spec members (in this case `' +
memberName +
'`) via spec filters is not supported and will break in ' +
'a future release. See <https://jasmine.github.io/api/edge/Spec.html> ' +
'for correct usage.'
);
}
function deprecatingSpecProxy(spec, deprecated) {
return new Proxy(spec, {
get(target, prop, receiver) {
if (isMember(target, prop) && !allowedMembers.includes(prop)) {
deprecated(msg(prop));
}
return target[prop];
}
});
}
return deprecatingSpecProxy;
};