UNPKG

contensis-management-api

Version:

Client for managing content using the Contensis Management API

113 lines (85 loc) 3.62 kB
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'); }); }); });