mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-25 03:44:29 +03:00
95faf54e73
- the route settings code was factored out into its own service, but the tests were not moved - this moves them so it's clearer what tests are for what service
48 lines
2.0 KiB
JavaScript
48 lines
2.0 KiB
JavaScript
const sinon = require('sinon');
|
|
const should = require('should');
|
|
const fs = require('fs-extra');
|
|
const path = require('path');
|
|
const bridge = require('../../../../../core/bridge');
|
|
const RouteSettings = require('../../../../../core/server/services/route-settings/route-settings');
|
|
|
|
describe('UNIT > Settings Service DefaultSettingsManager:', function () {
|
|
beforeEach(function () {
|
|
sinon.stub(fs, 'readFile');
|
|
sinon.stub(fs, 'readFileSync');
|
|
sinon.stub(fs, 'copy');
|
|
sinon.stub(bridge, 'reloadFrontend');
|
|
});
|
|
|
|
afterEach(function () {
|
|
sinon.restore();
|
|
});
|
|
|
|
describe('setFromFilePath', function () {
|
|
it('catches parsing error when setFromFilePath', async function () {
|
|
const routesSettingsPath = path.join(__dirname, '../../../../utils/fixtures/settings/routes.yaml');
|
|
const backupFilePath = path.join(__dirname, '../../../../utils/fixtures/settings/routes-backup.yaml');
|
|
const incomingSettingsPath = path.join(__dirname, '../../../../utils/fixtures/settings/routes-incoming.yaml');
|
|
|
|
fs.readFile.withArgs(routesSettingsPath, 'utf8').resolves('content');
|
|
fs.copy.withArgs(backupFilePath, routesSettingsPath).resolves();
|
|
fs.copy.withArgs(incomingSettingsPath, routesSettingsPath).resolves();
|
|
|
|
// simulate a parsing error during frontend reload
|
|
bridge.reloadFrontend.throws(new Error('YAMLException: bad indentation of a mapping entry'));
|
|
|
|
const defaultSettingsManager = new RouteSettings({
|
|
settingsLoader: {},
|
|
settingsPath: routesSettingsPath,
|
|
backupPath: backupFilePath
|
|
});
|
|
|
|
try {
|
|
await defaultSettingsManager.setFromFilePath(incomingSettingsPath);
|
|
should.fail('should.fail');
|
|
} catch (error) {
|
|
error.message.should.match(/YAMLException: bad indentation of a mapping entry/);
|
|
}
|
|
});
|
|
});
|
|
});
|