1
0
mirror of https://github.com/videojs/video.js.git synced 2024-12-04 10:34:51 +02:00
video.js/test/unit/utils/create-deprecation-proxy.test.js

46 lines
1.6 KiB
JavaScript

import createDeprecationProxy from '../../../src/js/utils/create-deprecation-proxy.js';
import log from '../../../src/js/utils/log.js';
const proxySupported = typeof Proxy === 'function';
test('should return a Proxy object when supported or the target object by reference', function() {
let target = {foo: 1};
let subject = createDeprecationProxy(target, {
get: 'get message',
set: 'set message'
});
// Testing for a Proxy is really difficult because Proxy objects by their
// nature disguise the fact that they are in fact Proxy objects. So, this
// tests that the log.warn method gets called on property get/set operations
// to detect the Proxy.
if (proxySupported) {
sinon.stub(log, 'warn');
subject.foo; // Triggers a "get"
subject.foo = 2; // Triggers a "set"
equal(log.warn.callCount, 2, 'proxied operations cause deprecation warnings');
ok(log.warn.calledWith('get message'), 'proxied get logs expected message');
ok(log.warn.calledWith('set message'), 'proxied set logs expected message');
log.warn.restore();
} else {
strictEqual(target, subject, 'identical to target');
}
});
// Tests run only in Proxy-supporting environments.
if (proxySupported) {
test('no deprecation warning is logged for operations without a message', function() {
let subject = createDeprecationProxy({}, {
get: 'get message'
});
sinon.stub(log, 'warn');
subject.foo = 'bar'; // Triggers a "set," but not a "get"
equal(log.warn.callCount, 0, 'no deprecation warning expected');
log.warn.restore();
});
}