0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-03-11 02:12:21 -05:00

🐛 Fixed page preview

issue #12444
This commit is contained in:
Thibaut Patel 2020-12-03 11:00:35 +00:00
parent a7e17c6b98
commit 7038f381b3
3 changed files with 47 additions and 0 deletions

View file

@ -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');

View file

@ -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';
} }
}; };

View file

@ -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);
});
});