mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-05-26 17:24:56 +00:00
Merge pull request #683 from Alfresco/dev-mromano-682
add test ecc-model,node and forms
This commit is contained in:
commit
ef21ca19a1
@ -403,7 +403,7 @@ export class ActivitiForm implements OnInit, AfterViewChecked, OnChanges {
|
||||
this.formService.searchFrom(nodeType).subscribe(
|
||||
form => {
|
||||
if (!form) {
|
||||
this.formService.createFormFromNodeType(nodeType).subscribe(formMetadata => {
|
||||
this.formService.createFormFromANode(nodeType).subscribe(formMetadata => {
|
||||
this.loadFormFromFormId(formMetadata.id);
|
||||
});
|
||||
} else {
|
||||
|
@ -0,0 +1,341 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright 2016 Alfresco Software, Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { it, inject, describe, expect, beforeEach, beforeEachProviders, afterEach } from '@angular/core/testing';
|
||||
import { AlfrescoAuthenticationService, AlfrescoSettingsService, AlfrescoApiService } from 'ng2-alfresco-core';
|
||||
import { NodeService } from './node.service';
|
||||
import { EcmModelService } from './ecm-model.service';
|
||||
import { HTTP_PROVIDERS } from '@angular/http';
|
||||
import { FormModel } from '../components/widgets/core/form.model';
|
||||
import { Observable } from 'rxjs/Rx';
|
||||
|
||||
declare let jasmine: any;
|
||||
|
||||
describe('EcmModelService', () => {
|
||||
|
||||
let ecmModelService: EcmModelService;
|
||||
|
||||
beforeEachProviders(() => {
|
||||
return [
|
||||
AlfrescoAuthenticationService,
|
||||
AlfrescoSettingsService,
|
||||
NodeService,
|
||||
EcmModelService,
|
||||
HTTP_PROVIDERS,
|
||||
AlfrescoApiService
|
||||
];
|
||||
});
|
||||
|
||||
beforeEach(inject([EcmModelService], (service: EcmModelService) => {
|
||||
jasmine.Ajax.install();
|
||||
ecmModelService = service;
|
||||
}));
|
||||
|
||||
afterEach(() => {
|
||||
jasmine.Ajax.uninstall();
|
||||
});
|
||||
|
||||
it('Should fetch ECM models', (done) => {
|
||||
ecmModelService.getEcmModels().subscribe(result => {
|
||||
expect(jasmine.Ajax.requests.mostRecent().url.endsWith('alfresco/versions/1/cmm')).toBeTruthy();
|
||||
done();
|
||||
});
|
||||
|
||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
||||
'status': 200,
|
||||
contentType: 'application/json',
|
||||
responseText: JSON.stringify({})
|
||||
});
|
||||
});
|
||||
|
||||
it('Should fetch ECM types', (done) => {
|
||||
|
||||
let modelName = 'modelTest';
|
||||
|
||||
ecmModelService.getEcmType(modelName).subscribe(result => {
|
||||
expect(jasmine.Ajax.requests.mostRecent().url.endsWith('versions/1/cmm/' + modelName + '/types')).toBeTruthy();
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
||||
'status': 200,
|
||||
contentType: 'application/json',
|
||||
responseText: JSON.stringify({})
|
||||
});
|
||||
});
|
||||
|
||||
it('Should create ECM types', (done) => {
|
||||
|
||||
let typeName = 'typeTest';
|
||||
|
||||
ecmModelService.createEcmType(typeName, EcmModelService.MODEL_NAME, EcmModelService.TYPE_MODEL).subscribe(result => {
|
||||
expect(jasmine.Ajax.requests.mostRecent().url.endsWith('versions/1/cmm/' + EcmModelService.MODEL_NAME + '/types')).toBeTruthy();
|
||||
expect(JSON.parse(jasmine.Ajax.requests.mostRecent().params).name).toEqual(typeName);
|
||||
expect(JSON.parse(jasmine.Ajax.requests.mostRecent().params).title).toEqual(typeName);
|
||||
expect(JSON.parse(jasmine.Ajax.requests.mostRecent().params).parentName).toEqual(EcmModelService.TYPE_MODEL);
|
||||
done();
|
||||
});
|
||||
|
||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
||||
'status': 200,
|
||||
contentType: 'application/json',
|
||||
responseText: JSON.stringify({})
|
||||
});
|
||||
});
|
||||
|
||||
it('Should create ECM types with a clean and preserv real name in the title', (done) => {
|
||||
|
||||
let typeName = 'typeTest:testName@#$*!';
|
||||
let cleanName = 'testName';
|
||||
|
||||
ecmModelService.createEcmType(typeName, EcmModelService.MODEL_NAME, EcmModelService.TYPE_MODEL).subscribe(result => {
|
||||
expect(jasmine.Ajax.requests.mostRecent().url.endsWith('versions/1/cmm/' + EcmModelService.MODEL_NAME + '/types')).toBeTruthy();
|
||||
expect(JSON.parse(jasmine.Ajax.requests.mostRecent().params).name).toEqual(cleanName);
|
||||
expect(JSON.parse(jasmine.Ajax.requests.mostRecent().params).title).toEqual(typeName);
|
||||
expect(JSON.parse(jasmine.Ajax.requests.mostRecent().params).parentName).toEqual(EcmModelService.TYPE_MODEL);
|
||||
done();
|
||||
});
|
||||
|
||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
||||
'status': 200,
|
||||
contentType: 'application/json',
|
||||
responseText: JSON.stringify({})
|
||||
});
|
||||
});
|
||||
|
||||
it('Should add propery to a type', (done) => {
|
||||
|
||||
let typeName = 'typeTest';
|
||||
let formFields = {
|
||||
values: {
|
||||
test: 'test',
|
||||
test2: 'test2'
|
||||
}
|
||||
};
|
||||
|
||||
ecmModelService.addPropertyToAType(EcmModelService.MODEL_NAME, typeName, formFields).subscribe(result => {
|
||||
expect(jasmine.Ajax.requests.mostRecent().url.endsWith('1/cmm/' + EcmModelService.MODEL_NAME + '/types/' + typeName + '?select=props')).toBeTruthy();
|
||||
expect(JSON.parse(jasmine.Ajax.requests.mostRecent().params).name).toEqual(typeName);
|
||||
expect(JSON.parse(jasmine.Ajax.requests.mostRecent().params).properties).toEqual([{
|
||||
name: 'test',
|
||||
title: 'test',
|
||||
description: 'test',
|
||||
dataType: 'd:text',
|
||||
multiValued: false,
|
||||
mandatory: false,
|
||||
mandatoryEnforced: false
|
||||
}, {
|
||||
name: 'test2',
|
||||
title: 'test2',
|
||||
description: 'test2',
|
||||
dataType: 'd:text',
|
||||
multiValued: false,
|
||||
mandatory: false,
|
||||
mandatoryEnforced: false
|
||||
}]);
|
||||
done();
|
||||
});
|
||||
|
||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
||||
'status': 200,
|
||||
contentType: 'application/json',
|
||||
responseText: JSON.stringify({})
|
||||
});
|
||||
});
|
||||
|
||||
it('Should add propery to a type and clean name type', (done) => {
|
||||
|
||||
let typeName = 'typeTest:testName@#$*!';
|
||||
let cleanName = 'testName';
|
||||
let formFields = {
|
||||
values: {
|
||||
test: 'test',
|
||||
test2: 'test2'
|
||||
}
|
||||
};
|
||||
|
||||
ecmModelService.addPropertyToAType(EcmModelService.MODEL_NAME, typeName, formFields).subscribe(result => {
|
||||
expect(jasmine.Ajax.requests.mostRecent().url.endsWith('1/cmm/' + EcmModelService.MODEL_NAME + '/types/' + cleanName + '?select=props')).toBeTruthy();
|
||||
expect(JSON.parse(jasmine.Ajax.requests.mostRecent().params).name).toEqual(cleanName);
|
||||
expect(JSON.parse(jasmine.Ajax.requests.mostRecent().params).properties).toEqual([{
|
||||
name: 'test',
|
||||
title: 'test',
|
||||
description: 'test',
|
||||
dataType: 'd:text',
|
||||
multiValued: false,
|
||||
mandatory: false,
|
||||
mandatoryEnforced: false
|
||||
}, {
|
||||
name: 'test2',
|
||||
title: 'test2',
|
||||
description: 'test2',
|
||||
dataType: 'd:text',
|
||||
multiValued: false,
|
||||
mandatory: false,
|
||||
mandatoryEnforced: false
|
||||
}]);
|
||||
done();
|
||||
});
|
||||
|
||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
||||
'status': 200,
|
||||
contentType: 'application/json',
|
||||
responseText: JSON.stringify({})
|
||||
});
|
||||
});
|
||||
|
||||
it('Should create ECM model', (done) => {
|
||||
|
||||
ecmModelService.createEcmModel(EcmModelService.MODEL_NAME, EcmModelService.MODEL_NAMESPACE).subscribe(result => {
|
||||
expect(jasmine.Ajax.requests.mostRecent().url.endsWith('alfresco/versions/1/cmm')).toBeTruthy();
|
||||
expect(JSON.parse(jasmine.Ajax.requests.mostRecent().params).status).toEqual('DRAFT');
|
||||
done();
|
||||
});
|
||||
|
||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
||||
'status': 200,
|
||||
contentType: 'application/json',
|
||||
responseText: JSON.stringify({})
|
||||
});
|
||||
});
|
||||
|
||||
it('Should activate ECM model', (done) => {
|
||||
|
||||
ecmModelService.activeEcmModel(EcmModelService.MODEL_NAME).subscribe(result => {
|
||||
expect(jasmine.Ajax.requests.mostRecent().url.endsWith('alfresco/versions/1/cmm/' + EcmModelService.MODEL_NAME + '?select=status')).toBeTruthy();
|
||||
expect(JSON.parse(jasmine.Ajax.requests.mostRecent().params).status).toEqual('ACTIVE');
|
||||
done();
|
||||
});
|
||||
|
||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
||||
'status': 200,
|
||||
contentType: 'application/json',
|
||||
responseText: JSON.stringify({})
|
||||
});
|
||||
});
|
||||
|
||||
it('Should create an ECM type with properties', (done) => {
|
||||
spyOn(ecmModelService, 'createEcmType').and.callFake(() => {
|
||||
return Observable.create(observer => {
|
||||
observer.next();
|
||||
observer.complete();
|
||||
});
|
||||
});
|
||||
|
||||
spyOn(ecmModelService, 'addPropertyToAType').and.callFake(() => {
|
||||
return Observable.create(observer => {
|
||||
observer.next();
|
||||
observer.complete();
|
||||
});
|
||||
});
|
||||
|
||||
ecmModelService.createEcmTypeWithProperties('nameType', new FormModel()).subscribe(result => {
|
||||
expect(ecmModelService.createEcmType).toHaveBeenCalled();
|
||||
expect(ecmModelService.addPropertyToAType).toHaveBeenCalled();
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('Should return the already existing type', (done) => {
|
||||
spyOn(ecmModelService, 'searchEcmType').and.callFake(() => {
|
||||
return Observable.create(observer => {
|
||||
observer.next({test: 'I-EXIST'});
|
||||
observer.complete();
|
||||
});
|
||||
});
|
||||
|
||||
spyOn(ecmModelService, 'createEcmTypeWithProperties').and.callFake(() => {
|
||||
return Observable.create(observer => {
|
||||
observer.next();
|
||||
observer.complete();
|
||||
});
|
||||
});
|
||||
|
||||
ecmModelService.saveFomType('nameType', new FormModel()).subscribe(result => {
|
||||
expect(ecmModelService.searchEcmType).toHaveBeenCalled();
|
||||
expect(ecmModelService.createEcmTypeWithProperties).not.toHaveBeenCalled();
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('Should create an ECM type with properties if the ecm Type is not defined already', (done) => {
|
||||
spyOn(ecmModelService, 'searchEcmType').and.callFake(() => {
|
||||
return Observable.create(observer => {
|
||||
observer.next();
|
||||
observer.complete();
|
||||
});
|
||||
});
|
||||
|
||||
spyOn(ecmModelService, 'createEcmTypeWithProperties').and.callFake(() => {
|
||||
return Observable.create(observer => {
|
||||
observer.next();
|
||||
observer.complete();
|
||||
});
|
||||
});
|
||||
|
||||
ecmModelService.saveFomType('nameType', new FormModel()).subscribe(result => {
|
||||
expect(ecmModelService.searchEcmType).toHaveBeenCalled();
|
||||
expect(ecmModelService.createEcmTypeWithProperties).toHaveBeenCalled();
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('Should create an ECM model for the activiti if not defined already', (done) => {
|
||||
spyOn(ecmModelService, 'seachActivitiEcmModel').and.callFake(() => {
|
||||
return Observable.create(observer => {
|
||||
observer.next();
|
||||
observer.complete();
|
||||
});
|
||||
});
|
||||
|
||||
spyOn(ecmModelService, 'createActivitiEcmModel').and.callFake(() => {
|
||||
return Observable.create(observer => {
|
||||
observer.next();
|
||||
observer.complete();
|
||||
});
|
||||
});
|
||||
|
||||
ecmModelService.createEcmTypeForActivitiForm('nameType', new FormModel()).subscribe(result => {
|
||||
expect(ecmModelService.seachActivitiEcmModel).toHaveBeenCalled();
|
||||
expect(ecmModelService.createActivitiEcmModel).toHaveBeenCalled();
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('If a model for the activiti is already define has to save the new type', (done) => {
|
||||
spyOn(ecmModelService, 'seachActivitiEcmModel').and.callFake(() => {
|
||||
return Observable.create(observer => {
|
||||
observer.next({test: 'I-EXIST'});
|
||||
observer.complete();
|
||||
});
|
||||
});
|
||||
|
||||
spyOn(ecmModelService, 'saveFomType').and.callFake(() => {
|
||||
return Observable.create(observer => {
|
||||
observer.next();
|
||||
observer.complete();
|
||||
});
|
||||
});
|
||||
|
||||
ecmModelService.createEcmTypeForActivitiForm('nameType', new FormModel()).subscribe(result => {
|
||||
expect(ecmModelService.seachActivitiEcmModel).toHaveBeenCalled();
|
||||
expect(ecmModelService.saveFomType).toHaveBeenCalled();
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
@ -45,7 +45,7 @@ export class EcmModelService {
|
||||
observer.complete();
|
||||
});
|
||||
} else {
|
||||
this.createFomType(formName, form).subscribe(typeForm => {
|
||||
this.saveFomType(formName, form).subscribe(typeForm => {
|
||||
observer.next(typeForm);
|
||||
observer.complete();
|
||||
});
|
||||
@ -57,13 +57,13 @@ export class EcmModelService {
|
||||
|
||||
}
|
||||
|
||||
private seachActivitiEcmModel() {
|
||||
seachActivitiEcmModel() {
|
||||
return this.getEcmModels().map(function (ecmModels: any) {
|
||||
return ecmModels.list.entries.find(model => model.entry.name === EcmModelService.MODEL_NAME);
|
||||
});
|
||||
}
|
||||
|
||||
private createActivitiEcmModel(formName: string, form: FormModel): Observable<any> {
|
||||
createActivitiEcmModel(formName: string, form: FormModel): Observable<any> {
|
||||
return Observable.create(observer => {
|
||||
this.createEcmModel(EcmModelService.MODEL_NAME, EcmModelService.MODEL_NAMESPACE).subscribe(
|
||||
model => {
|
||||
@ -84,7 +84,7 @@ export class EcmModelService {
|
||||
});
|
||||
}
|
||||
|
||||
private createFomType(formName: string, form: FormModel): Observable<any> {
|
||||
saveFomType(formName: string, form: FormModel): Observable<any> {
|
||||
return Observable.create(observer => {
|
||||
this.searchEcmType(formName, EcmModelService.MODEL_NAME).subscribe(
|
||||
ecmType => {
|
||||
|
@ -21,6 +21,7 @@ import { HTTP_PROVIDERS, Response, ResponseOptions } from '@angular/http';
|
||||
import { FormService } from './form.service';
|
||||
import { EcmModelService } from './ecm-model.service';
|
||||
import { NodeService } from './node.service';
|
||||
import { FormDefinitionModel } from '../models/form-definition.model';
|
||||
|
||||
declare let jasmine: any;
|
||||
|
||||
@ -73,8 +74,8 @@ describe('FormService', () => {
|
||||
it('should fetch and parse tasks', (done) => {
|
||||
responseBody = {
|
||||
data: [
|
||||
{ id: '1' },
|
||||
{ id: '2' }
|
||||
{id: '1'},
|
||||
{id: '2'}
|
||||
]
|
||||
};
|
||||
|
||||
@ -158,7 +159,7 @@ describe('FormService', () => {
|
||||
formService.completeTaskForm('1', values, 'custom').subscribe(() => {
|
||||
expect(jasmine.Ajax.requests.mostRecent().url.endsWith('/task-forms/1')).toBeTruthy();
|
||||
expect(JSON.parse(jasmine.Ajax.requests.mostRecent().params).values.field2).toEqual(values.field2);
|
||||
expect(JSON.parse(jasmine.Ajax.requests.mostRecent().params).outcome).toEqual('custom' );
|
||||
expect(JSON.parse(jasmine.Ajax.requests.mostRecent().params).outcome).toEqual('custom');
|
||||
|
||||
done();
|
||||
});
|
||||
@ -171,7 +172,7 @@ describe('FormService', () => {
|
||||
});
|
||||
|
||||
it('should get task form by id', (done) => {
|
||||
responseBody = { id: 1 };
|
||||
responseBody = {id: 1};
|
||||
|
||||
formService.getTaskForm('1').subscribe(result => {
|
||||
expect(jasmine.Ajax.requests.mostRecent().url.endsWith('/task-forms/1')).toBeTruthy();
|
||||
@ -187,7 +188,7 @@ describe('FormService', () => {
|
||||
});
|
||||
|
||||
it('should get form definition by id', (done) => {
|
||||
responseBody = { id: 1 };
|
||||
responseBody = {id: 1};
|
||||
|
||||
formService.getFormDefinitionById('1').subscribe(result => {
|
||||
expect(jasmine.Ajax.requests.mostRecent().url.endsWith('/form-models/1')).toBeTruthy();
|
||||
@ -207,7 +208,7 @@ describe('FormService', () => {
|
||||
const formId = 1;
|
||||
responseBody = {
|
||||
data: [
|
||||
{ id: formId }
|
||||
{id: formId}
|
||||
]
|
||||
};
|
||||
|
||||
@ -225,16 +226,16 @@ describe('FormService', () => {
|
||||
});
|
||||
|
||||
it('should not get form id from response', () => {
|
||||
let response = new Response(new ResponseOptions({ body: null }));
|
||||
let response = new Response(new ResponseOptions({body: null}));
|
||||
expect(formService.getFormId(response)).toBeNull();
|
||||
|
||||
response = new Response(new ResponseOptions({ body: {} }));
|
||||
response = new Response(new ResponseOptions({body: {}}));
|
||||
expect(formService.getFormId(response)).toBeNull();
|
||||
|
||||
response = new Response(new ResponseOptions({ body: { data: null } }));
|
||||
response = new Response(new ResponseOptions({body: {data: null}}));
|
||||
expect(formService.getFormId(response)).toBeNull();
|
||||
|
||||
response = new Response(new ResponseOptions({ body: { data: [] } }));
|
||||
response = new Response(new ResponseOptions({body: {data: []}}));
|
||||
expect(formService.getFormId(response)).toBeNull();
|
||||
|
||||
expect(formService.getFormId(null)).toBeNull();
|
||||
@ -243,10 +244,10 @@ describe('FormService', () => {
|
||||
it('should fallback to empty json array', () => {
|
||||
expect(formService.toJsonArray(null)).toEqual([]);
|
||||
|
||||
let response = new Response(new ResponseOptions({ body: {} }));
|
||||
let response = new Response(new ResponseOptions({body: {}}));
|
||||
expect(formService.toJsonArray(response)).toEqual([]);
|
||||
|
||||
response = new Response(new ResponseOptions({ body: { data: null } }));
|
||||
response = new Response(new ResponseOptions({body: {data: null}}));
|
||||
expect(formService.toJsonArray(response)).toEqual([]);
|
||||
});
|
||||
|
||||
@ -261,7 +262,7 @@ describe('FormService', () => {
|
||||
spyOn(console, 'error').and.stub();
|
||||
|
||||
const message = '<error>';
|
||||
formService.handleError({ message: message });
|
||||
formService.handleError({message: message});
|
||||
|
||||
expect(console.error).toHaveBeenCalledWith(message);
|
||||
});
|
||||
@ -280,4 +281,138 @@ describe('FormService', () => {
|
||||
formService.handleError({});
|
||||
expect(console.error).toHaveBeenCalledWith(FormService.GENERIC_ERROR_MESSAGE);
|
||||
});
|
||||
|
||||
it('should get all the forms with modelType=2', (done) => {
|
||||
responseBody = {};
|
||||
|
||||
formService.getForms().subscribe(result => {
|
||||
expect(jasmine.Ajax.requests.mostRecent().url.endsWith('models?modelType=2')).toBeTruthy();
|
||||
expect(result).toEqual(responseBody);
|
||||
done();
|
||||
});
|
||||
|
||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
||||
'status': 200,
|
||||
contentType: 'application/json',
|
||||
responseText: JSON.stringify(responseBody)
|
||||
});
|
||||
});
|
||||
|
||||
it('should search for Form with modelType=2', (done) => {
|
||||
responseBody = {data: [{id: 1, name: 'findme'}, {id: 2, name: 'testform'}]};
|
||||
|
||||
formService.searchFrom('findme').subscribe(result => {
|
||||
expect(jasmine.Ajax.requests.mostRecent().url.endsWith('models?modelType=2')).toBeTruthy();
|
||||
expect(result.name).toEqual('findme');
|
||||
expect(result.id).toEqual(1);
|
||||
done();
|
||||
});
|
||||
|
||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
||||
'status': 200,
|
||||
contentType: 'application/json',
|
||||
responseText: JSON.stringify(responseBody)
|
||||
});
|
||||
});
|
||||
|
||||
it('should create a Form with modelType=2', (done) => {
|
||||
responseBody = {id: 1, modelType: 'test'};
|
||||
|
||||
formService.createForm('testName').subscribe(result => {
|
||||
expect(jasmine.Ajax.requests.mostRecent().url.endsWith('/models')).toBeTruthy();
|
||||
expect(JSON.parse(jasmine.Ajax.requests.mostRecent().params).modelType).toEqual(2);
|
||||
expect(JSON.parse(jasmine.Ajax.requests.mostRecent().params).name).toEqual('testName');
|
||||
done();
|
||||
});
|
||||
|
||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
||||
'status': 200,
|
||||
contentType: 'application/json',
|
||||
responseText: JSON.stringify(responseBody)
|
||||
});
|
||||
});
|
||||
|
||||
it('should add form fields to a form', (done) => {
|
||||
responseBody = {id: 1, modelType: 'test'};
|
||||
|
||||
let formId = '100';
|
||||
let name = 'testName';
|
||||
let data = [{name: 'name'}, {name: 'email'}];
|
||||
let formDefinitionModel = new FormDefinitionModel(formId, name, 'testUserName', '2016-09-05T14:41:19.049Z', data);
|
||||
|
||||
formService.addFieldsToAForm(formId, formDefinitionModel).subscribe(result => {
|
||||
expect(jasmine.Ajax.requests.mostRecent().url.endsWith('/form-models/' + formId)).toBeTruthy();
|
||||
expect(JSON.parse(jasmine.Ajax.requests.mostRecent().params).formRepresentation.name).toEqual(name);
|
||||
done();
|
||||
});
|
||||
|
||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
||||
'status': 200,
|
||||
contentType: 'application/json',
|
||||
responseText: JSON.stringify(responseBody)
|
||||
});
|
||||
});
|
||||
|
||||
it('should create a Form form a Node', (done) => {
|
||||
|
||||
let nameForm = 'testNode';
|
||||
|
||||
responseBody = {id: 1, modelType: 'test'};
|
||||
|
||||
let formId = 100;
|
||||
|
||||
stubCreateForm();
|
||||
|
||||
stubGetEcmModel();
|
||||
|
||||
stubAddFieldsToAForm();
|
||||
|
||||
formService.createFormFromANode(nameForm).subscribe(result => {
|
||||
expect(result.id).toEqual(formId);
|
||||
done();
|
||||
});
|
||||
|
||||
function stubCreateForm() {
|
||||
jasmine.Ajax.stubRequest(
|
||||
'http://localhost:9999/activiti-app/api/enterprise/models'
|
||||
).andReturn({
|
||||
status: 200,
|
||||
statusText: 'HTTP/1.1 200 OK',
|
||||
contentType: 'text/xml;charset=UTF-8',
|
||||
responseText: {id: formId, name: 'test', lastUpdatedByFullName: 'uset', lastUpdated: '12-12-2016'}
|
||||
});
|
||||
}
|
||||
|
||||
function stubGetEcmModel() {
|
||||
jasmine.Ajax.stubRequest(
|
||||
'http://localhost:8080/alfresco/api/-default-/private/alfresco/versions/1/cmm/activitiFormsModel/types'
|
||||
).andReturn({
|
||||
status: 200,
|
||||
statusText: 'HTTP/1.1 200 OK',
|
||||
contentType: 'text/xml;charset=UTF-8',
|
||||
responseText: {
|
||||
list: {
|
||||
entries: [{
|
||||
entry: {
|
||||
prefixedName: nameForm,
|
||||
title: nameForm,
|
||||
properties: [{name: 'name'}, {name: 'email'}]
|
||||
}
|
||||
}, {entry: {prefixedName: 'notme', title: 'notme'}}]
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function stubAddFieldsToAForm() {
|
||||
jasmine.Ajax.stubRequest(
|
||||
'http://localhost:9999/activiti-app/api/enterprise/editor/form-models/' + formId
|
||||
).andReturn({
|
||||
status: 200,
|
||||
statusText: 'HTTP/1.1 200 OK',
|
||||
contentType: 'text/xml;charset=UTF-8',
|
||||
responseText: {id: formId, name: 'test', lastUpdatedByFullName: 'user', lastUpdated: '12-12-2016'}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
@ -36,14 +36,14 @@ export class FormService {
|
||||
* Create a Form with a fields for each metadata properties
|
||||
* @returns {Observable<any>}
|
||||
*/
|
||||
public createFormFromNodeType(formName: string): Observable<any> {
|
||||
public createFormFromANode(formName: string): Observable<any> {
|
||||
return Observable.create(observer => {
|
||||
this.createForm(formName).subscribe(
|
||||
form => {
|
||||
this.ecmModelService.searchEcmType(formName, EcmModelService.MODEL_NAME).subscribe(
|
||||
customType => {
|
||||
let formDefinitionModel = new FormDefinitionModel(form.id, form.name, form.lastUpdatedByFullName, form.lastUpdated, customType.entry.properties);
|
||||
this.addFieldsNodeTypePropertiesToTheForm(form.id, formDefinitionModel).subscribe(formData => {
|
||||
this.addFieldsToAForm(form.id, formDefinitionModel).subscribe(formData => {
|
||||
observer.next(formData);
|
||||
observer.complete();
|
||||
}, this.handleError);
|
||||
@ -68,14 +68,6 @@ export class FormService {
|
||||
return Observable.fromPromise(this.authService.getAlfrescoApi().activiti.modelsApi.createModel(dataModel));
|
||||
}
|
||||
|
||||
/**
|
||||
* Add Fields to A form from a metadata properties
|
||||
* @returns {Observable<any>}
|
||||
*/
|
||||
public addFieldsNodeTypePropertiesToTheForm(formId: string, formDefinitionModel: FormDefinitionModel): Observable<any> {
|
||||
return this.addFieldsToAForm(formId, formDefinitionModel);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add Fileds to A form
|
||||
* @returns {Observable<any>}
|
||||
|
@ -0,0 +1,171 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright 2016 Alfresco Software, Ltd.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { it, inject, describe, expect, beforeEach, beforeEachProviders, afterEach } from '@angular/core/testing';
|
||||
import { AlfrescoAuthenticationService, AlfrescoSettingsService, AlfrescoApiService } from 'ng2-alfresco-core';
|
||||
import { NodeService } from './node.service';
|
||||
import { NodeMetadata } from '../models/node-metadata.model';
|
||||
import { EcmModelService } from './ecm-model.service';
|
||||
|
||||
declare let jasmine: any;
|
||||
|
||||
describe('NodeService', () => {
|
||||
|
||||
let nodeService: NodeService;
|
||||
|
||||
beforeEachProviders(() => {
|
||||
return [
|
||||
AlfrescoAuthenticationService,
|
||||
AlfrescoSettingsService,
|
||||
NodeService,
|
||||
AlfrescoApiService
|
||||
];
|
||||
});
|
||||
|
||||
beforeEach(inject([NodeService], (service: NodeService) => {
|
||||
jasmine.Ajax.install();
|
||||
nodeService = service;
|
||||
}));
|
||||
|
||||
afterEach(() => {
|
||||
jasmine.Ajax.uninstall();
|
||||
});
|
||||
|
||||
it('Should fetch and node metadata', (done) => {
|
||||
let responseBody = {
|
||||
entry: {
|
||||
id: '111-222-33-44-1123',
|
||||
nodeType: 'typeTest',
|
||||
properties: {
|
||||
test: 'test',
|
||||
testdata: 'testdata'
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
nodeService.getNodeMetadata('-nodeid-').subscribe(result => {
|
||||
expect(jasmine.Ajax.requests.mostRecent().url.endsWith('nodes/-nodeid-')).toBeTruthy();
|
||||
let node = new NodeMetadata({
|
||||
test: 'test',
|
||||
testdata: 'testdata'
|
||||
}, 'typeTest');
|
||||
expect(result).toEqual(node);
|
||||
done();
|
||||
});
|
||||
|
||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
||||
'status': 200,
|
||||
contentType: 'application/json',
|
||||
responseText: JSON.stringify(responseBody)
|
||||
});
|
||||
});
|
||||
|
||||
it('Should clean the metadata from :', (done) => {
|
||||
let responseBody = {
|
||||
entry: {
|
||||
id: '111-222-33-44-1123',
|
||||
nodeType: 'typeTest',
|
||||
properties: {
|
||||
'metadata:test': 'test',
|
||||
'metadata:testdata': 'testdata'
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
nodeService.getNodeMetadata('-nodeid-').subscribe(result => {
|
||||
expect(jasmine.Ajax.requests.mostRecent().url.endsWith('nodes/-nodeid-')).toBeTruthy();
|
||||
let node = new NodeMetadata({
|
||||
test: 'test',
|
||||
testdata: 'testdata'
|
||||
}, 'typeTest');
|
||||
expect(result).toEqual(node);
|
||||
done();
|
||||
});
|
||||
|
||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
||||
'status': 200,
|
||||
contentType: 'application/json',
|
||||
responseText: JSON.stringify(responseBody)
|
||||
});
|
||||
});
|
||||
|
||||
it('Should create a node with metadata', (done) => {
|
||||
let data = {
|
||||
test: 'test',
|
||||
testdata: 'testdata'
|
||||
};
|
||||
|
||||
let responseBody = {
|
||||
id: 'a74d91fb-ea8a-4812-ad98-ad878366b5be',
|
||||
isFile: false,
|
||||
isFolder: true
|
||||
};
|
||||
|
||||
nodeService.createNodeMetadata('typeTest', EcmModelService.MODEL_NAMESPACE, data, '/Sites/swsdp/documentLibrary', 'testNode').subscribe(result => {
|
||||
expect(jasmine.Ajax.requests.mostRecent().url.endsWith('-root-/children')).toBeTruthy();
|
||||
expect(result).toEqual(responseBody);
|
||||
done();
|
||||
});
|
||||
|
||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
||||
'status': 200,
|
||||
contentType: 'application/json',
|
||||
responseText: JSON.stringify(responseBody)
|
||||
});
|
||||
});
|
||||
|
||||
it('Should add activitiForms suffix to the metadata properties', (done) => {
|
||||
let data = {
|
||||
test: 'test',
|
||||
testdata: 'testdata'
|
||||
};
|
||||
|
||||
nodeService.createNodeMetadata('typeTest', EcmModelService.MODEL_NAMESPACE, data, '/Sites/swsdp/documentLibrary').subscribe(result => {
|
||||
expect(jasmine.Ajax.requests.mostRecent().url.endsWith('-root-/children')).toBeTruthy();
|
||||
expect(JSON.parse(jasmine.Ajax.requests.mostRecent().params).properties[EcmModelService.MODEL_NAMESPACE + ':test']).toBeDefined();
|
||||
expect(JSON.parse(jasmine.Ajax.requests.mostRecent().params).properties[EcmModelService.MODEL_NAMESPACE + ':testdata']).toBeDefined();
|
||||
done();
|
||||
});
|
||||
|
||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
||||
'status': 200,
|
||||
contentType: 'application/json',
|
||||
responseText: JSON.stringify({})
|
||||
});
|
||||
});
|
||||
|
||||
it('Should assign an UUID to the name when name not passed', (done) => {
|
||||
let data = {
|
||||
test: 'test',
|
||||
testdata: 'testdata'
|
||||
};
|
||||
|
||||
|
||||
nodeService.createNodeMetadata('typeTest', EcmModelService.MODEL_NAMESPACE, data, '/Sites/swsdp/documentLibrary').subscribe(result => {
|
||||
expect(jasmine.Ajax.requests.mostRecent().url.endsWith('-root-/children')).toBeTruthy();
|
||||
expect(JSON.parse(jasmine.Ajax.requests.mostRecent().params).name).toBeDefined();
|
||||
done();
|
||||
});
|
||||
|
||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
||||
'status': 200,
|
||||
contentType: 'application/json',
|
||||
responseText: JSON.stringify({})
|
||||
});
|
||||
});
|
||||
|
||||
});
|
@ -88,7 +88,11 @@ export class NodeService {
|
||||
if (data && data.properties) {
|
||||
for (let key in data.properties) {
|
||||
if (key) {
|
||||
metadata [key.split(':')[1]] = data.properties[key];
|
||||
if (key.indexOf(':') !== -1) {
|
||||
metadata [key.split(':')[1]] = data.properties[key];
|
||||
} else {
|
||||
metadata [key] = data.properties[key];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3,10 +3,10 @@
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
for PACKAGE in \
|
||||
ng2-alfresco-core \
|
||||
ng2-activiti-form \
|
||||
ng2-activiti-tasklist \
|
||||
ng2-activiti-processlist \
|
||||
ng2-alfresco-core \
|
||||
ng2-alfresco-datatable \
|
||||
ng2-alfresco-documentlist \
|
||||
ng2-alfresco-login \
|
||||
@ -18,6 +18,7 @@ do
|
||||
DESTDIR="$DIR/../ng2-components/${PACKAGE}"
|
||||
echo "====== build components : ${PACKAGE} ====="
|
||||
cd "$DESTDIR"
|
||||
npm update
|
||||
npm install --cache-min 9999999
|
||||
npm run build
|
||||
done
|
||||
|
Loading…
x
Reference in New Issue
Block a user