contensis-delivery-api
Version:
Client for retrieving content using the read-only Contensis Delivery API
146 lines (145 loc) • 6.55 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const Contensis = require("../index");
const contensis_core_api_1 = require("contensis-core-api");
const specs_utils_spec_1 = require("../specs-utils.spec");
const cross_fetch_1 = require("cross-fetch");
const Zengenti = { Contensis };
const global = window || this;
global.fetch = cross_fetch_1.default;
describe('Link Resolver', function () {
function getQueryString(language, ...ids) {
let query = {
pageIndex: 0,
pageSize: ids.length,
where: JSON.stringify([{
or: ids.map(id => {
return {
and: [
{ field: 'sys.id', equalTo: id },
{ field: 'sys.language', equalTo: language },
{ field: 'sys.versionStatus', equalTo: 'published' }
]
};
})
}])
};
return (0, contensis_core_api_1.toQuery)(query);
}
beforeEach(() => {
(0, specs_utils_spec_1.setDefaultSpyForAccessToken)(global);
Zengenti.Contensis.Client.defaultClientConfig = null;
Zengenti.Contensis.Client.configure({
fetchFn: global.fetch
});
});
it('should resolve single entry with single entry property', async () => {
let client = Zengenti.Contensis.Client.create({
projectId: 'myProject',
rootUrl: 'http://my-website.com/',
accessToken: 'XXXXXX'
});
let testEntry = {
entry: {
sys: { id: 99, language: 'en-GB' }
}
};
let entry = await client.entries.resolve(testEntry);
let expectedQueryString = getQueryString('en-GB', 99);
expect(global.fetch).toHaveBeenCalled();
expect(global.fetch.calls.mostRecent().args).toEqual([
`http://my-website.com/api/delivery/projects/myProject/entries/search${expectedQueryString}`,
(0, specs_utils_spec_1.getDefaultFetchRequestForAccessToken)('GET', 'application/json; charset=utf-8')
]);
expect(entry).not.toBeNull();
});
it('should resolve single entry with multiple entry property', async () => {
let client = Zengenti.Contensis.Client.create({
projectId: 'myProject',
rootUrl: 'http://my-website.com/',
accessToken: 'XXXXXX'
});
let testEntry = {
entries: [
{ sys: { id: 100, language: 'en-GB' } },
{ sys: { id: 101, language: 'en-GB' } },
{ sys: { id: 102, language: 'en-GB' } }
]
};
let entry = await client.entries.resolve(testEntry);
let expectedQueryString = getQueryString('en-GB', 100, 101, 102);
expect(global.fetch).toHaveBeenCalled();
expect(global.fetch.calls.mostRecent().args).toEqual([
`http://my-website.com/api/delivery/projects/myProject/entries/search${expectedQueryString}`,
(0, specs_utils_spec_1.getDefaultFetchRequestForAccessToken)('GET', 'application/json; charset=utf-8')
]);
expect(entry).not.toBeNull();
});
it('should resolve array of entries', async () => {
let client = Zengenti.Contensis.Client.create({
projectId: 'myProject',
rootUrl: 'http://my-website.com/',
accessToken: 'XXXXXX'
});
let testEntries = [
{ entry: { sys: { id: 100, language: 'en-GB' } } },
{ entry: { sys: { id: 101, language: 'en-GB' } } },
{ entry: { sys: { id: 102, language: 'en-GB' } } }
];
let entries = await client.entries.resolve(testEntries);
let expectedQueryString = getQueryString('en-GB', 100, 101, 102);
expect(global.fetch).toHaveBeenCalled();
expect(global.fetch.calls.mostRecent().args).toEqual([
`http://my-website.com/api/delivery/projects/myProject/entries/search${expectedQueryString}`,
(0, specs_utils_spec_1.getDefaultFetchRequestForAccessToken)('GET', 'application/json; charset=utf-8')
]);
expect(entries).not.toBeNull();
expect(entries.length).toBe(3);
});
it('should resolve paged list of entries', async () => {
let client = Zengenti.Contensis.Client.create({
projectId: 'myProject',
rootUrl: 'http://my-website.com/',
accessToken: 'XXXXXX'
});
let testEntries = {
pageIndex: 99,
pageSize: 10,
totalCount: 1000,
items: [
{ entry: { sys: { id: 100, language: 'en-GB' } } },
{ entry: { sys: { id: 101, language: 'en-GB' } } },
{ entry: { sys: { id: 102, language: 'en-GB' } } }
]
};
let entries = await client.entries.resolve(testEntries);
let expectedQueryString = getQueryString('en-GB', 100, 101, 102);
expect(global.fetch).toHaveBeenCalled();
expect(global.fetch.calls.mostRecent().args).toEqual([
`http://my-website.com/api/delivery/projects/myProject/entries/search${expectedQueryString}`,
(0, specs_utils_spec_1.getDefaultFetchRequestForAccessToken)('GET', 'application/json; charset=utf-8')
]);
expect(entries).not.toBeNull();
expect(entries.items.length).toBe(3);
});
it('should resolve single image', async () => {
let client = Zengenti.Contensis.Client.create({
projectId: 'myProject',
rootUrl: 'http://my-website.com/',
accessToken: 'XXXXXX'
});
let testEntry = {
image: {
asset: { sys: { id: 99, language: 'en-GB' } }
}
};
let entry = await client.entries.resolve(testEntry);
let expectedQueryString = getQueryString('en-GB', 99);
expect(global.fetch).toHaveBeenCalled();
expect(global.fetch.calls.mostRecent().args).toEqual([
`http://my-website.com/api/delivery/projects/myProject/entries/search${expectedQueryString}`,
(0, specs_utils_spec_1.getDefaultFetchRequestForAccessToken)('GET', 'application/json; charset=utf-8')
]);
expect(entry).not.toBeNull();
});
});