mirror of https://github.com/Squidex/squidex.git
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
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({});
|
|
}));
|
|
});
|