contensis-management-api
Version:
Client for managing content using the Contensis Management API
113 lines (85 loc) • 3.62 kB
text/typescript
import * as Contensis from '../index';
import { getDefaultAuthenticateUrl, getDefaultConfig, getDefaultFetchRequest, setDefaultSpy } from '../specs-utils.spec';
import fetch from 'cross-fetch';
import { Component } from 'contensis-core-api';
const Zengenti = { Contensis };
const global = window || this;
global.fetch = fetch;
describe('Component Operations', () => {
describe('Get component', () => {
beforeEach(() => {
setDefaultSpy(global, {
name: { 'en-GB': 'component1' }
} as Partial<Component>);
Zengenti.Contensis.Client.defaultClientConfig = null;
Zengenti.Contensis.Client.configure({
fetchFn: global.fetch
});
});
it('by id', async () => {
let client = Zengenti.Contensis.Client.create(getDefaultConfig());
let component = await client.components.get('movie');
expect(global.fetch).toHaveBeenCalledTimes(2);
expect((global.fetch as any).calls.first().args[0]).toEqual(getDefaultAuthenticateUrl());
expect((global.fetch as any).calls.mostRecent().args).toEqual([
'http://my-website.com/api/management/projects/myProject/components/movie?versionStatus=published',
getDefaultFetchRequest()
]);
expect(component).not.toBeNull();
expect(component.name['en-GB']).toEqual('component1');
});
it('with specific options', async () => {
let client = Zengenti.Contensis.Client.create(getDefaultConfig());
let component = await client.components.get({
id: 'movie',
versionStatus: 'latest',
version: '0.1'
});
expect(global.fetch).toHaveBeenCalledTimes(2);
expect((global.fetch as any).calls.first().args[0]).toEqual(getDefaultAuthenticateUrl());
expect((global.fetch as any).calls.mostRecent().args).toEqual([
'http://my-website.com/api/management/projects/myProject/components/movie?version=0.1',
getDefaultFetchRequest()
]);
expect(component).not.toBeNull();
expect(component.name['en-GB']).toEqual('component1');
});
});
describe('List components', () => {
beforeEach(() => {
setDefaultSpy(global, [{
name: { 'en-GB': 'component1' }
}, {
name: { 'en-GB': 'component2' }
}] as Partial<Component>[]);
Zengenti.Contensis.Client.defaultClientConfig = null;
Zengenti.Contensis.Client.configure({
fetchFn: global.fetch
});
});
it('With default options', async () => {
let client = Zengenti.Contensis.Client.create(getDefaultConfig());
let components = await client.components.list();
expect((global.fetch as any).calls.first().args[0]).toEqual(getDefaultAuthenticateUrl());
expect((global.fetch as any).calls.mostRecent().args).toEqual([
'http://my-website.com/api/management/projects/myProject/components?versionStatus=published',
getDefaultFetchRequest()
]);
expect(components).not.toBeNull();
expect(components.length).toEqual(2);
expect(components[1].name['en-GB']).toEqual('component2');
});
it('With specific options', async () => {
let client = Zengenti.Contensis.Client.create(getDefaultConfig());
let components = await client.components.list('latest');
expect((global.fetch as any).calls.first().args[0]).toEqual(getDefaultAuthenticateUrl());
expect((global.fetch as any).calls.mostRecent().args).toEqual([
'http://my-website.com/api/management/projects/myProject/components',
getDefaultFetchRequest()
]);
expect(components).not.toBeNull();
expect(components.length).toEqual(2);
expect(components[1].name['en-GB']).toEqual('component2');
});
});
});