mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-01-08 20:22:53 +03:00
64e8d0287d
no issue - It's sometimes needed to use the config uitl intance directly in the test. For example, like it's used in the update check tests
66 lines
1.9 KiB
JavaScript
66 lines
1.9 KiB
JavaScript
const _ = require('lodash');
|
|
const sinon = require('sinon');
|
|
const UrlUtils = require('@tryghost/url-utils');
|
|
const config = require('../../core/shared/config');
|
|
const urlUtils = require('../../core/shared/url-utils');
|
|
|
|
const defaultSandbox = sinon.createSandbox();
|
|
|
|
const getInstance = (options) => {
|
|
const opts = {
|
|
url: options.url,
|
|
adminUrl: options.adminUrl,
|
|
apiVersions: options.apiVersions,
|
|
defaultApiVersion: 'v3',
|
|
slugs: options.slugs,
|
|
redirectCacheMaxAge: options.redirectCacheMaxAge,
|
|
baseApiPath: '/ghost/api'
|
|
};
|
|
|
|
return new UrlUtils(opts);
|
|
};
|
|
|
|
const stubUrlUtils = (options, sandbox) => {
|
|
const stubInstance = getInstance(options);
|
|
const classPropNames = Object.getOwnPropertyNames(Object.getPrototypeOf(urlUtils))
|
|
.filter(name => name !== 'constructor');
|
|
|
|
classPropNames.forEach((key) => {
|
|
if (typeof urlUtils[key] === 'function') {
|
|
sandbox.stub(urlUtils, key).callsFake(function () {
|
|
return stubInstance[key](...arguments);
|
|
});
|
|
} else {
|
|
sandbox.stub(urlUtils, key).get(function () {
|
|
return stubInstance[key];
|
|
});
|
|
}
|
|
});
|
|
|
|
return stubInstance;
|
|
};
|
|
|
|
// Method for regressions tests must be used with restore method
|
|
const stubUrlUtilsFromConfig = () => {
|
|
const options = {
|
|
url: config.get('url'),
|
|
adminUrl: config.get('admin:url'),
|
|
apiVersions: config.get('api:versions'),
|
|
defaultApiVersion: 'v3',
|
|
slugs: config.get('slugs').protected,
|
|
redirectCacheMaxAge: config.get('caching:301:maxAge'),
|
|
baseApiPath: '/ghost/api'
|
|
};
|
|
|
|
return stubUrlUtils(options, defaultSandbox);
|
|
};
|
|
|
|
const restore = () => {
|
|
defaultSandbox.restore();
|
|
};
|
|
|
|
module.exports.stubUrlUtils = stubUrlUtils;
|
|
module.exports.stubUrlUtilsFromConfig = stubUrlUtilsFromConfig;
|
|
module.exports.restore = restore;
|
|
module.exports.getInstance = getInstance;
|