mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-01-06 22:40:14 -05:00
Hardened frontend tests checking API engine
refs0f59537b96
refs https://github.com/TryGhost/Team/issues/221 refs303046bc0a
- When the referenced changes were introduced they did not take into account upcoming engine versions and provided little guidance about what other areas might need to be checked and changed - The last referenced commit shows an approximate scale of changes that might be beened when frontend engine defaults are modified in the future
This commit is contained in:
parent
11b2876c33
commit
e63e4bb193
2 changed files with 59 additions and 32 deletions
|
@ -6,18 +6,20 @@ const testUtils = require('../../utils');
|
|||
const configUtils = require('../../utils/configUtils');
|
||||
const models = require('../../../core/server/models');
|
||||
const {events} = require('../../../core/server/lib/common');
|
||||
const themes = require('../../../core/frontend/services/themes');
|
||||
const UrlService = rewire('../../../core/frontend/services/url/UrlService');
|
||||
|
||||
/**
|
||||
* @NOTE
|
||||
*
|
||||
* If this test fails for you, you are probably modifying supported theme engines
|
||||
* and thus should check if the there is a configuration added for the new API version
|
||||
*
|
||||
*/
|
||||
describe('Integration: services/url/UrlService', function () {
|
||||
let urlService;
|
||||
|
||||
before(function () {
|
||||
models.init();
|
||||
|
||||
sinon.stub(themes, 'getActive').returns({
|
||||
engine: () => 'v2'
|
||||
});
|
||||
});
|
||||
|
||||
before(testUtils.teardownDb);
|
||||
|
|
|
@ -2,7 +2,20 @@ const should = require('should');
|
|||
const sinon = require('sinon');
|
||||
const themeEngines = require('../../../../../core/frontend/services/themes/engines');
|
||||
|
||||
/**
|
||||
* @NOTE
|
||||
*
|
||||
* If this test fails for you, you are probably modifying supported theme engines.
|
||||
*
|
||||
* When you make a change, please test that:
|
||||
*
|
||||
* 1. Please check that uploading a theme with newly added/modified engine version works
|
||||
* 2. Check other places that potentially need updates (e.g.: frontends resource cache config, )
|
||||
* 3. Add the a protective test for when next verstion (v6?) is planned it has to be changed again
|
||||
*/
|
||||
describe('Themes: engines', function () {
|
||||
const DEFAULT_ENGINE_VERSION = 'v4';
|
||||
|
||||
afterEach(function () {
|
||||
sinon.restore();
|
||||
});
|
||||
|
@ -10,11 +23,47 @@ describe('Themes: engines', function () {
|
|||
it('no engines', function () {
|
||||
const engines = themeEngines.create();
|
||||
engines.should.eql({
|
||||
'ghost-api': 'v4'
|
||||
'ghost-api': DEFAULT_ENGINE_VERSION
|
||||
});
|
||||
});
|
||||
|
||||
describe('ghost-api', function () {
|
||||
it('unknown version falls back to default version', function () {
|
||||
const engines = themeEngines.create({
|
||||
engines: {
|
||||
'ghost-api': 'v100'
|
||||
}
|
||||
});
|
||||
|
||||
engines.should.eql({
|
||||
'ghost-api': DEFAULT_ENGINE_VERSION
|
||||
});
|
||||
});
|
||||
|
||||
it('deprecated and not supported version falls back to default version', function () {
|
||||
const engines = themeEngines.create({
|
||||
engines: {
|
||||
'ghost-api': '^0.1'
|
||||
}
|
||||
});
|
||||
|
||||
engines.should.eql({
|
||||
'ghost-api': DEFAULT_ENGINE_VERSION
|
||||
});
|
||||
});
|
||||
|
||||
it('not supported upcoming version falls back to default version', function () {
|
||||
const engines = themeEngines.create({
|
||||
engines: {
|
||||
'ghost-api': 'v5'
|
||||
}
|
||||
});
|
||||
|
||||
engines.should.eql({
|
||||
'ghost-api': DEFAULT_ENGINE_VERSION
|
||||
});
|
||||
});
|
||||
|
||||
it('v2', function () {
|
||||
const engines = themeEngines.create({
|
||||
engines: {
|
||||
|
@ -27,30 +76,6 @@ describe('Themes: engines', function () {
|
|||
});
|
||||
});
|
||||
|
||||
it('v10', function () {
|
||||
const engines = themeEngines.create({
|
||||
engines: {
|
||||
'ghost-api': 'v10'
|
||||
}
|
||||
});
|
||||
|
||||
engines.should.eql({
|
||||
'ghost-api': 'v4'
|
||||
});
|
||||
});
|
||||
|
||||
it('^0.1', function () {
|
||||
const engines = themeEngines.create({
|
||||
engines: {
|
||||
'ghost-api': '^0.1'
|
||||
}
|
||||
});
|
||||
|
||||
engines.should.eql({
|
||||
'ghost-api': 'v4'
|
||||
});
|
||||
});
|
||||
|
||||
it('^2', function () {
|
||||
const engines = themeEngines.create({
|
||||
engines: {
|
||||
|
@ -131,7 +156,7 @@ describe('Themes: engines', function () {
|
|||
});
|
||||
|
||||
engines.should.eql({
|
||||
'ghost-api': 'v4'
|
||||
'ghost-api': DEFAULT_ENGINE_VERSION
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -143,7 +168,7 @@ describe('Themes: engines', function () {
|
|||
});
|
||||
|
||||
engines.should.eql({
|
||||
'ghost-api': 'v4'
|
||||
'ghost-api': DEFAULT_ENGINE_VERSION
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue