Merge pull request #683 from Alfresco/dev-mromano-682

add test ecc-model,node and forms
This commit is contained in:
Denys Vuika 2016-09-06 13:43:50 +01:00 committed by GitHub
commit ef21ca19a1
8 changed files with 674 additions and 30 deletions

View File

@ -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 {

View File

@ -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();
});
});
});

View File

@ -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 => {

View File

@ -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'}
});
}
});
});

View File

@ -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>}

View File

@ -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({})
});
});
});

View File

@ -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];
}
}
}
}

View File

@ -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