Headless CMS and Content Managment Hub
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

174 lines
5.8 KiB

/*
* Squidex Headless CMS
*
* @license
* Copyright (c) Sebastian Stehle. All rights reserved
*/
import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
import { inject, TestBed } from '@angular/core/testing';
import {
ApiUrlConfig,
AppPatternDto,
AppPatternsDto,
AppPatternsService,
UpdatePatternDto,
Version
} from './../';
describe('ApppatternsDto', () => {
const pattern1 = new AppPatternDto('1', 'Any', '.*', 'Message1');
const pattern2 = new AppPatternDto('2', 'Number', '[0-9]', 'Message2');
const pattern2_new = new AppPatternDto('2', 'Numbers', '[0-9]*', 'Message2_1');
const version = new Version('1');
const newVersion = new Version('2');
it('should update patterns when adding pattern', () => {
const patterns_1 = new AppPatternsDto([pattern1], version);
const patterns_2 = patterns_1.addPattern(pattern2, newVersion);
expect(patterns_2.patterns).toEqual([pattern1, pattern2]);
expect(patterns_2.version).toEqual(newVersion);
});
it('should update patterns when removing pattern', () => {
const patterns_1 = new AppPatternsDto([pattern1, pattern2], version);
const patterns_2 = patterns_1.deletePattern(pattern1, newVersion);
expect(patterns_2.patterns).toEqual([pattern2]);
expect(patterns_2.version).toEqual(newVersion);
});
it('should update patterns when updating pattern', () => {
const patterns_1 = new AppPatternsDto([pattern1, pattern2], version);
const patterns_2 = patterns_1.updatePattern(pattern2_new, newVersion);
expect(patterns_2.patterns).toEqual([pattern1, pattern2_new]);
expect(patterns_2.version).toEqual(newVersion);
});
});
describe('AppPatternDto', () => {
it('should update properties when updating', () => {
const pattern_1 = new AppPatternDto('1', 'Number', '[0-9]', 'Message1');
const pattern_2 = pattern_1.update(new UpdatePatternDto('Numbers', '[0-9]*', 'Message2'));
expect(pattern_2.name).toBe('Numbers');
expect(pattern_2.pattern).toBe('[0-9]*');
expect(pattern_2.message).toBe('Message2');
});
});
describe('AppPatternsService', () => {
const version = new Version('1');
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
HttpClientTestingModule
],
providers: [
AppPatternsService,
{ provide: ApiUrlConfig, useValue: new ApiUrlConfig('http://service/p/') }
]
});
});
afterEach(inject([HttpTestingController], (httpMock: HttpTestingController) => {
httpMock.verify();
}));
it('should make get request to get patterns',
inject([AppPatternsService, HttpTestingController], (patternService: AppPatternsService, httpMock: HttpTestingController) => {
let patterns: AppPatternsDto | null = null;
patternService.getPatterns('my-app').subscribe(result => {
patterns = result;
});
const req = httpMock.expectOne('http://service/p/api/apps/my-app/patterns');
expect(req.request.method).toEqual('GET');
expect(req.request.headers.get('If-Match')).toBeNull();
req.flush([
{
patternId: '1',
pattern: '[0-9]',
name: 'Number',
message: 'Message1'
}, {
patternId: '2',
pattern: '[0-9]*',
name: 'Numbers',
message: 'Message2'
}
], {
headers: {
etag: '2'
}
});
expect(patterns).toEqual(
new AppPatternsDto([
new AppPatternDto('1', 'Number', '[0-9]', 'Message1'),
new AppPatternDto('2', 'Numbers', '[0-9]*', 'Message2')
], new Version('2')));
}));
it('should make post request to add pattern',
inject([AppPatternsService, HttpTestingController], (patternService: AppPatternsService, httpMock: HttpTestingController) => {
const dto = new UpdatePatternDto('Number', '[0-9]', 'Message1');
let pattern: AppPatternDto | null = null;
patternService.postPattern('my-app', dto, version).subscribe(result => {
pattern = result.payload;
});
const req = httpMock.expectOne('http://service/p/api/apps/my-app/patterns');
expect(req.request.method).toEqual('POST');
expect(req.request.headers.get('If-Match')).toEqual(version.value);
req.flush({
patternId: '1',
pattern: '[0-9]',
name: 'Number',
message: 'Message1'
});
expect(pattern).toEqual(new AppPatternDto('1', 'Number', '[0-9]', 'Message1'));
}));
it('should make put request to update pattern',
inject([AppPatternsService, HttpTestingController], (patternService: AppPatternsService, httpMock: HttpTestingController) => {
const dto = new UpdatePatternDto('Number', '[0-9]', 'Message1');
patternService.putPattern('my-app', '1', dto, version).subscribe();
const req = httpMock.expectOne('http://service/p/api/apps/my-app/patterns/1');
expect(req.request.method).toEqual('PUT');
expect(req.request.headers.get('If-Match')).toEqual(version.value);
req.flush({});
}));
it('should make delete request to remove pattern',
inject([AppPatternsService, HttpTestingController], (patternService: AppPatternsService, httpMock: HttpTestingController) => {
patternService.deletePattern('my-app', '1', version).subscribe();
const req = httpMock.expectOne('http://service/p/api/apps/my-app/patterns/1');
expect(req.request.method).toEqual('DELETE');
expect(req.request.headers.get('If-Match')).toEqual(version.value);
req.flush({});
}));
});