0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-02-03 23:00:14 -05:00
ghost/test/unit/server/services/settings/route-settings.test.js
Naz 42cd78e05e Added coverage for route settings class
refs 3150c87935

- Adds basic coverage for a bug that was fixed in referenced commit.
Next time it should be easier to add more tests to the suite as there's
already an example starter to work your way from.
2021-12-13 12:21:47 +04:00

47 lines
2 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/);
}
});
});
});