0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-01-27 22:49:56 -05:00
ghost/test/unit/services/settings/yaml-parser_spec.js
Hannah Wolfe 7f1d3ebc07
Move tests from core to root (#11700)
- move all test files from core/test to test/
- updated all imports and other references
- all code inside of core/ is then application code
- tests are correctly at the root level
- consistent with other repos/projects

Co-authored-by: Kevin Ansfield <kevin@lookingsideways.co.uk>
2020-03-30 16:26:47 +01:00

45 lines
1.7 KiB
JavaScript

const sinon = require('sinon'),
should = require('should'),
fs = require('fs-extra'),
yaml = require('js-yaml'),
path = require('path'),
yamlParser = require('../../../../core/frontend/services/settings/yaml-parser');
describe('UNIT > Settings Service yaml parser:', function () {
let yamlSpy;
beforeEach(function () {
yamlSpy = sinon.spy(yaml, 'safeLoad');
});
afterEach(function () {
sinon.restore();
});
describe('Yaml Parser', function () {
it('parses correct yaml file', function () {
const file = fs.readFileSync(path.join(__dirname, '../../../utils/fixtures/settings/', 'goodroutes.yaml'), 'utf8');
const result = yamlParser(file, 'goodroutes.yaml');
should.exist(result);
result.should.be.an.Object().with.properties('routes', 'collections', 'taxonomies');
yamlSpy.calledOnce.should.be.true();
});
it('rejects with clear error when parsing fails', function () {
const file = fs.readFileSync(path.join(__dirname, '../../../utils/fixtures/settings/', 'badroutes.yaml'), 'utf8');
try {
const result = yamlParser(file, 'badroutes.yaml');
should.not.exist(result);
} catch (error) {
should.exist(error);
error.message.should.eql('Could not parse badroutes.yaml: bad indentation of a mapping entry.');
error.context.should.containEql('bad indentation of a mapping entry at line 5, column 14');
error.help.should.eql('Check your badroutes.yaml file for typos and fix the named issues.');
yamlSpy.calledOnce.should.be.true();
}
});
});
});