mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-03-11 02:12:21 -05:00
parent
a7e17c6b98
commit
7038f381b3
3 changed files with 47 additions and 0 deletions
|
@ -59,6 +59,7 @@ function setResponseContext(req, res, data) {
|
||||||
|
|
||||||
// @TODO: remove first if condition when only page key is returned
|
// @TODO: remove first if condition when only page key is returned
|
||||||
// ref.: https://github.com/TryGhost/Ghost/issues/10042
|
// ref.: https://github.com/TryGhost/Ghost/issues/10042
|
||||||
|
// The first if is now used by the preview route
|
||||||
if (data && data.post && data.post.page) {
|
if (data && data.post && data.post.page) {
|
||||||
if (!res.locals.context.includes('page')) {
|
if (!res.locals.context.includes('page')) {
|
||||||
res.locals.context.push('page');
|
res.locals.context.push('page');
|
||||||
|
|
|
@ -5,5 +5,6 @@ module.exports = {
|
||||||
frame.response = {
|
frame.response = {
|
||||||
preview: [mapper.mapPost(model, frame)]
|
preview: [mapper.mapPost(model, frame)]
|
||||||
};
|
};
|
||||||
|
frame.response.preview[0].page = model.get('type') === 'page';
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
const should = require('should');
|
||||||
|
const sinon = require('sinon');
|
||||||
|
const testUtils = require('../../../../../../utils');
|
||||||
|
const mapper = require('../../../../../../../core/server/api/canary/utils/serializers/output/utils/mapper');
|
||||||
|
const serializers = require('../../../../../../../core/server/api/canary/utils/serializers');
|
||||||
|
|
||||||
|
describe('Unit: canary/utils/serializers/output/preview', function () {
|
||||||
|
let pageModel;
|
||||||
|
|
||||||
|
beforeEach(function () {
|
||||||
|
pageModel = (data) => {
|
||||||
|
return Object.assign(data, {toJSON: sinon.stub().returns(data), get: key => (key === 'type' ? 'page' : '')});
|
||||||
|
};
|
||||||
|
|
||||||
|
sinon.stub(mapper, 'mapPost').returns({});
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(function () {
|
||||||
|
sinon.restore();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('calls the mapper', function () {
|
||||||
|
const apiConfig = {};
|
||||||
|
const frame = {
|
||||||
|
options: {
|
||||||
|
withRelated: ['tags', 'authors'],
|
||||||
|
context: {
|
||||||
|
private: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const ctrlResponse = pageModel(testUtils.DataGenerator.forKnex.createPost({
|
||||||
|
id: 'id1',
|
||||||
|
type: 'page'
|
||||||
|
}));
|
||||||
|
|
||||||
|
serializers.output.preview.all(ctrlResponse, apiConfig, frame);
|
||||||
|
|
||||||
|
mapper.mapPost.callCount.should.equal(1);
|
||||||
|
mapper.mapPost.getCall(0).args.should.eql([ctrlResponse, frame]);
|
||||||
|
|
||||||
|
frame.response.preview[0].page.should.equal(true);
|
||||||
|
});
|
||||||
|
});
|
Loading…
Add table
Reference in a new issue