-
-
{{ 'ADF_CLOUD_START_TASK.ERROR.MESSAGE' | translate }}
-
warning
+
+
+
+
+
+
+
+
{{user | fullName}}
+
+
+
+
+
+
+
{{ 'ADF_CLOUD_START_TASK.ERROR.MESSAGE' | translate }}
+
warning
+
-
diff --git a/lib/process-services-cloud/src/lib/task/start-task/components/people-cloud/people-cloud.component.spec.ts b/lib/process-services-cloud/src/lib/task/start-task/components/people-cloud/people-cloud.component.spec.ts
index 7ac11b58fe..b7e413416a 100644
--- a/lib/process-services-cloud/src/lib/task/start-task/components/people-cloud/people-cloud.component.spec.ts
+++ b/lib/process-services-cloud/src/lib/task/start-task/components/people-cloud/people-cloud.component.spec.ts
@@ -16,8 +16,9 @@
*/
import { PeopleCloudComponent } from './people-cloud.component';
-import { ComponentFixture, TestBed, async } from '@angular/core/testing';
-import { IdentityUserService, AlfrescoApiService, CoreModule, IdentityUserModel, setupTestBed } from '@alfresco/adf-core';
+import { ComponentFixture, TestBed, async, tick, fakeAsync } from '@angular/core/testing';
+import { IdentityUserService, AlfrescoApiService,
+ CoreModule, IdentityUserModel, setupTestBed } from '@alfresco/adf-core';
import { ProcessServiceCloudTestingModule } from '../../../../testing/process-service-cloud.testing.module';
import { of } from 'rxjs';
import { mockUsers } from '../../mock/user-cloud.mock';
@@ -411,13 +412,13 @@ describe('PeopleCloudComponent', () => {
});
});
- it('should pre-select preSelectUsers[0] when mode=single', async(() => {
+ it('should pre-select preSelectUsers[0] when mode=single', fakeAsync(() => {
component.mode = 'single';
- component.validate = false;
fixture.detectChanges();
- spyOn(component, 'searchUser').and.returnValue(Promise.resolve(mockPreselectedUsers));
+ spyOn(component, 'filterPreselectUsers').and.returnValue(Promise.resolve(mockPreselectedUsers));
component.ngOnChanges({ 'preSelectUsers': change });
fixture.detectChanges();
+ tick();
const selectedUser = component.searchUserCtrl.value;
expect(selectedUser.id).toBe(mockUsers[1].id);
}));
@@ -446,7 +447,7 @@ describe('PeopleCloudComponent', () => {
it('should pre-select all preSelectUsers when mode=multiple validation disabled', (done) => {
component.mode = 'multiple';
- fixture.detectChanges();
+ spyOn(component, 'filterPreselectUsers').and.returnValue(Promise.resolve(mockPreselectedUsers));
component.ngOnChanges({ 'preSelectUsers': change });
fixture.detectChanges();
fixture.whenStable().then(() => {
@@ -652,5 +653,19 @@ describe('PeopleCloudComponent', () => {
fixture.detectChanges();
expect(inputHTMLElement.textContent).toEqual('');
});
+
+ it('should remove duplicated preselcted users when a user is duplicated', () => {
+ spyOn(identityService, 'findUserById').and.returnValue(of(mockUsers[0]));
+ component.mode = 'multiple';
+ component.validate = true;
+ component.preSelectUsers =
[{ id: mockUsers[0].id }, { id: mockUsers[0].id }];
+ component.ngOnChanges({ 'preSelectUsers': change });
+ fixture.detectChanges();
+ fixture.whenStable().then(() => {
+ component.validatePreselectUsers().then((result) => {
+ expect(result.length).toEqual(1);
+ });
+ });
+ });
});
});
diff --git a/lib/process-services-cloud/src/lib/task/start-task/components/people-cloud/people-cloud.component.ts b/lib/process-services-cloud/src/lib/task/start-task/components/people-cloud/people-cloud.component.ts
index fcc3e6c244..79a8dc89c5 100644
--- a/lib/process-services-cloud/src/lib/task/start-task/components/people-cloud/people-cloud.component.ts
+++ b/lib/process-services-cloud/src/lib/task/start-task/components/people-cloud/people-cloud.component.ts
@@ -129,7 +129,7 @@ export class PeopleCloudComponent implements OnInit, OnChanges {
if (this.isValidationEnabled()) {
this.loadPreSelectUsers();
} else {
- this.loadNoValidationPreselctUsers();
+ this.loadNoValidationPreselectUsers();
}
}
@@ -187,9 +187,15 @@ export class PeopleCloudComponent implements OnInit, OnChanges {
this.invalidUsers.push(user);
}
});
+ validUsers = this.removeDuplicatedUsers(validUsers);
return validUsers;
}
+ private removeDuplicatedUsers(users: IdentityUserModel[]): IdentityUserModel[] {
+ return users.filter((user, index, self) =>
+ index === self.findIndex((auxUser) => user.id === auxUser.id));
+ }
+
async filterPreselectUsers() {
const promiseBatch = this.preSelectUsers.map(async (user: IdentityUserModel) => {
let result: any;
@@ -206,7 +212,16 @@ export class PeopleCloudComponent implements OnInit, OnChanges {
}
async searchUser(user: IdentityUserModel) {
- const key: string = Object.keys(user)[0];
+ let key: string = '';
+
+ if (user.id) {
+ key = 'id';
+ } else if (user.email) {
+ key = 'email';
+ } else if (user.username) {
+ key = 'username';
+ }
+
switch (key) {
case 'id': return await this.identityUserService.findUserById(user[key]).toPromise();
case 'username': return (await this.identityUserService.findUserByUsername(user[key]).toPromise())[0];
@@ -318,7 +333,13 @@ export class PeopleCloudComponent implements OnInit, OnChanges {
}
}
- loadNoValidationPreselctUsers() {
+ async loadNoValidationPreselectUsers() {
+ let users: IdentityUserModel[];
+
+ users = this.removeDuplicatedUsers(this.preSelectUsers);
+
+ this.preSelectUsers = [...users];
+
if (this.isMultipleMode()) {
this.selectedUsersSubject.next(this.preSelectUsers);
} else {
diff --git a/lib/process-services-cloud/src/lib/task/start-task/components/start-task-cloud.component.spec.ts b/lib/process-services-cloud/src/lib/task/start-task/components/start-task-cloud.component.spec.ts
index 5c17ed89e8..87bffa0cc4 100644
--- a/lib/process-services-cloud/src/lib/task/start-task/components/start-task-cloud.component.spec.ts
+++ b/lib/process-services-cloud/src/lib/task/start-task/components/start-task-cloud.component.spec.ts
@@ -45,6 +45,8 @@ describe('StartTaskCloudComponent', () => {
let element: HTMLElement;
let createNewTaskSpy: jasmine.Spy;
+ const mockUser = new IdentityUserModel({username: 'currentUser', firstName: 'Test', lastName: 'User', email: 'currentUser@test.com'});
+
setupTestBed({
imports: [ProcessServiceCloudTestingModule, StartTaskCloudTestingModule],
providers: [
@@ -68,7 +70,7 @@ describe('StartTaskCloudComponent', () => {
identityService = TestBed.get(IdentityUserService);
formDefinitionSelectorCloudService = TestBed.get(FormDefinitionSelectorCloudService);
createNewTaskSpy = spyOn(service, 'createNewTask').and.returnValue(of(taskDetailsMock));
- spyOn(identityService, 'getCurrentUserInfo').and.returnValue(new IdentityUserModel({username: 'currentUser', firstName: 'Test', lastName: 'User'}));
+ spyOn(identityService, 'getCurrentUserInfo').and.returnValue(mockUser);
spyOn(formDefinitionSelectorCloudService, 'getForms').and.returnValue(of([]));
fixture.detectChanges();
}));
@@ -158,7 +160,7 @@ describe('StartTaskCloudComponent', () => {
it('should select logged in user as assignee by default', () => {
fixture.detectChanges();
const assignee = fixture.nativeElement.querySelector('[data-automation-id="adf-people-cloud-search-input"]');
- expect(assignee.value).toBe('Test User');
+ expect(assignee).toBeDefined();
});
it('should show start task button', () => {