mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-02-03 23:00:14 -05:00
70d15e077b
refs: https://github.com/TryGhost/Toolbox/issues/245 - Ghost's API framework has a mixed up concept of what a serializer is. Mappers are true serializers! What we call serializers are little more than a small formatting step. - This PR splits mappers into individual files and uses the endpoint's docname as the mapper name. This will help us to automate the calling of a mapper for an endpoint later. - This is one tiny step in reworking the framework to need less code to make it work, and to have clearer concepts for how to do things.
57 lines
1.7 KiB
JavaScript
57 lines
1.7 KiB
JavaScript
const should = require('should');
|
|
const sinon = require('sinon');
|
|
const testUtils = require('../../../../../../utils');
|
|
const mappers = require('../../../../../../../core/server/api/canary/utils/serializers/output/mappers');
|
|
const membersService = require('../../../../../../../core/server/services/members');
|
|
const serializers = require('../../../../../../../core/server/api/canary/utils/serializers');
|
|
|
|
describe('Unit: canary/utils/serializers/output/posts', function () {
|
|
let postModel;
|
|
|
|
beforeEach(function () {
|
|
postModel = (data) => {
|
|
return Object.assign(data, {toJSON: sinon.stub().returns(data)});
|
|
};
|
|
|
|
sinon.stub(membersService, 'api').get(() => {
|
|
return {
|
|
productRepository: {
|
|
list: () => {
|
|
return {data: null};
|
|
}
|
|
}
|
|
};
|
|
});
|
|
|
|
sinon.stub(mappers, 'posts').returns({});
|
|
});
|
|
|
|
afterEach(function () {
|
|
sinon.restore();
|
|
});
|
|
|
|
it('calls the mapper', async function () {
|
|
const apiConfig = {};
|
|
const frame = {
|
|
options: {
|
|
withRelated: ['tags', 'authors'],
|
|
context: {
|
|
private: false
|
|
}
|
|
}
|
|
};
|
|
|
|
const ctrlResponse = {
|
|
data: [
|
|
postModel(testUtils.DataGenerator.forKnex.createPost({})),
|
|
postModel(testUtils.DataGenerator.forKnex.createPost({}))
|
|
],
|
|
meta: {}
|
|
};
|
|
|
|
await serializers.output.posts.all(ctrlResponse, apiConfig, frame);
|
|
|
|
mappers.posts.callCount.should.equal(2);
|
|
mappers.posts.getCall(0).args.should.eql([ctrlResponse.data[0], frame, {tiers: []}]);
|
|
});
|
|
});
|