mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
[ADF-3299] and [ADF-3300] upgrade to Angular and Material 6 (#3579)
* upgrade to HttpClient * upgrade to Renderer2 * upgrade Document reference * remove useless test with deprecated ReflectiveInjector * upgrade to latest typescript * upgrade libs * upgrade package scripts * remove rxjs blacklists and duplicate rules * add rxjs compat to help with migration * fix breaking changes * fix breaking changes in material * fix breaking changes (material 6) * upgrade rxjs, ngx-translate and flex layout * update unit tests * restore providers * upgrade deprecated Observable.error * rebase fix first configuration problems * fix style issues commented * fix core build * fix lib template errors * move lib test execution in angular.json * ignore * karma conf files * fix import statement test * single run option * update packages reporter * restore report * increase timeout * improve karma conf test configuration * fix test issues about lint * fix test analytics * fix process service test * content service fix test * fix logout directive test * fix core test * fix build * update node-sass to latest * update angular cli dependencies * improve build script create directorites and move files only if previous command succeded * upgrade individual libs to 6.0 * remove old webpack files * revert sass change * fix type issues fix style issues * fix tslint demo shell issue * fix peerdependencies * fix test e2e BC * package upate * fix style import issue * extract-text-webpack-plugin beta * fix test dist build command * remove alpha js-api * fix tslint issue add banner tslint rule * upload service fix * change BC script * fix test dist script * increase demo shell timeout test * verbose copy * path absolute * fix script bc * fix copy part * fix path warning fix monaco editor * remove duplicate header * remove unused import * fix align and check ago tests * add missing import * fix notification button selector * [ANGULAR6] fixed core tests * fix CS test * fix cs test step 2 * increase travis_wait for dist * fix attachment PS * fix checklist test * use pdf min
This commit is contained in:
committed by
Eugenio Romano
parent
c510ec864d
commit
6b24bfb1d4
@@ -20,7 +20,7 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
import { setupTestBed } from '@alfresco/adf-core';
|
||||
import { ProcessTestingModule } from '../../testing/process.testing.module';
|
||||
import { TaskListService } from './../services/tasklist.service';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
import { of } from 'rxjs';
|
||||
|
||||
describe('AttachFormComponent', () => {
|
||||
let component: AttachFormComponent;
|
||||
@@ -55,7 +55,7 @@ describe('AttachFormComponent', () => {
|
||||
it('should call attachFormToATask if clicked on Complete Button', async(() => {
|
||||
component.taskId = 1;
|
||||
component.formId = 2;
|
||||
spyOn(taskService, 'attachFormToATask').and.returnValue(Observable.of(true));
|
||||
spyOn(taskService, 'attachFormToATask').and.returnValue(of(true));
|
||||
fixture.detectChanges();
|
||||
fixture.whenStable().then(() => {
|
||||
expect(element.querySelector('#adf-no-form-attach-form-button')).toBeDefined();
|
||||
@@ -90,7 +90,7 @@ describe('AttachFormComponent', () => {
|
||||
component.taskId = 1;
|
||||
component.formId = 10;
|
||||
component.formKey = 12;
|
||||
spyOn(taskService, 'deleteForm').and.returnValue(Observable.of({}));
|
||||
spyOn(taskService, 'deleteForm').and.returnValue(of({}));
|
||||
|
||||
fixture.detectChanges();
|
||||
fixture.whenStable().then(() => {
|
||||
@@ -106,7 +106,7 @@ describe('AttachFormComponent', () => {
|
||||
component.taskId = 1;
|
||||
component.formId = 10;
|
||||
|
||||
spyOn(taskService, 'attachFormToATask').and.returnValue(Observable.of(
|
||||
spyOn(taskService, 'attachFormToATask').and.returnValue(of(
|
||||
{
|
||||
id: 91,
|
||||
name: 'fakeName',
|
||||
|
@@ -1,5 +1,5 @@
|
||||
<div class="adf-checklist-control">
|
||||
<mat-chip-list id="checklist-label">
|
||||
<mat-chip-list data-automation-id="checklist-label">
|
||||
<span class="activiti-label">{{ 'ADF_TASK_LIST.DETAILS.LABELS.CHECKLIST' | translate }}</span>
|
||||
<mat-chip class="adf-process-badge" color="accent" selected="true">{{checklist?.length}}</mat-chip>
|
||||
</mat-chip-list>
|
||||
|
@@ -22,7 +22,7 @@ import { ChecklistComponent } from './checklist.component';
|
||||
import { setupTestBed } from '@alfresco/adf-core';
|
||||
import { ProcessTestingModule } from '../../testing/process.testing.module';
|
||||
import { TaskListService } from './../services/tasklist.service';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
import { of } from 'rxjs';
|
||||
|
||||
describe('ChecklistComponent', () => {
|
||||
|
||||
@@ -38,7 +38,10 @@ describe('ChecklistComponent', () => {
|
||||
|
||||
beforeEach(async(() => {
|
||||
service = TestBed.get(TaskListService);
|
||||
spyOn(service, 'getTaskChecklist').and.returnValue(Observable.of([{ id: 'fake-check-changed-id', name: 'fake-check-changed-name' }] ));
|
||||
spyOn(service, 'getTaskChecklist').and.returnValue(of([{
|
||||
id: 'fake-check-changed-id',
|
||||
name: 'fake-check-changed-name'
|
||||
}]));
|
||||
|
||||
fixture = TestBed.createComponent(ChecklistComponent);
|
||||
checklistComponent = fixture.componentInstance;
|
||||
@@ -48,8 +51,8 @@ describe('ChecklistComponent', () => {
|
||||
}));
|
||||
|
||||
it('should show checklist component title', () => {
|
||||
expect(element.querySelector('#checklist-label')).toBeDefined();
|
||||
expect(element.querySelector('#checklist-label')).not.toBeNull();
|
||||
expect(element.querySelector('[data-automation-id=checklist-label]')).toBeDefined();
|
||||
expect(element.querySelector('[data-automation-id=checklist-label]')).not.toBeNull();
|
||||
});
|
||||
|
||||
it('should show no checklist message', () => {
|
||||
@@ -167,8 +170,8 @@ describe('ChecklistComponent', () => {
|
||||
});
|
||||
|
||||
it('should add checklist', async(() => {
|
||||
spyOn(service, 'addTask').and.returnValue(Observable.of({
|
||||
id: 'fake-check-added-id', name: 'fake-check-added-name'
|
||||
spyOn(service, 'addTask').and.returnValue(of({
|
||||
id: 'fake-check-added-id', name: 'fake-check-added-name'
|
||||
}));
|
||||
|
||||
showChecklistDialog.click();
|
||||
@@ -183,7 +186,7 @@ describe('ChecklistComponent', () => {
|
||||
}));
|
||||
|
||||
it('should remove a checklist element', async(() => {
|
||||
spyOn(service, 'deleteTask').and.returnValue(Observable.of(''));
|
||||
spyOn(service, 'deleteTask').and.returnValue(of(''));
|
||||
|
||||
checklistComponent.taskId = 'new-fake-task-id';
|
||||
checklistComponent.checklist.push(new TaskDetailsModel({
|
||||
@@ -203,7 +206,7 @@ describe('ChecklistComponent', () => {
|
||||
}));
|
||||
|
||||
it('should send an event when the checklist is deleted', (done) => {
|
||||
spyOn(service, 'deleteTask').and.returnValue(Observable.of(''));
|
||||
spyOn(service, 'deleteTask').and.returnValue(of(''));
|
||||
let disposableDelete = checklistComponent.checklistTaskDeleted.subscribe(() => {
|
||||
expect(element.querySelector('#fake-check-id')).toBeNull();
|
||||
disposableDelete.unsubscribe();
|
||||
@@ -262,7 +265,7 @@ describe('ChecklistComponent', () => {
|
||||
}));
|
||||
|
||||
it('should emit checklist task created event when the checklist is successfully added', (done) => {
|
||||
spyOn(service, 'addTask').and.returnValue(Observable.of({ id: 'fake-check-added-id', name: 'fake-check-added-name' }));
|
||||
spyOn(service, 'addTask').and.returnValue(of({ id: 'fake-check-added-id', name: 'fake-check-added-name' }));
|
||||
|
||||
let disposableCreated = checklistComponent.checklistTaskCreated.subscribe((taskAdded: TaskDetailsModel) => {
|
||||
fixture.detectChanges();
|
||||
|
@@ -18,7 +18,7 @@
|
||||
import { NoTaskDetailsTemplateDirective } from './no-task-detail-template.directive';
|
||||
import { TaskDetailsComponent } from './task-details.component';
|
||||
import { FormRenderingService, AuthenticationService } from '@alfresco/adf-core';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
import { of } from 'rxjs';
|
||||
|
||||
describe('NoTaskDetailsTemplateDirective', () => {
|
||||
|
||||
@@ -28,7 +28,7 @@ describe('NoTaskDetailsTemplateDirective', () => {
|
||||
|
||||
beforeEach(() => {
|
||||
authService = new AuthenticationService(null, null, null, null);
|
||||
spyOn(authService, 'getBpmLoggedUser').and.returnValue(Observable.of({ email: 'fake-email'}));
|
||||
spyOn(authService, 'getBpmLoggedUser').and.returnValue(of({ email: 'fake-email'}));
|
||||
detailsComponent = new TaskDetailsComponent(null, authService, null, new FormRenderingService(), null, null, null);
|
||||
component = new NoTaskDetailsTemplateDirective(detailsComponent);
|
||||
});
|
||||
|
@@ -82,7 +82,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
&-start-task-input-container .mat-input-wrapper {
|
||||
&-start-task-input-container .mat-form-field-wrapper {
|
||||
padding-top: 8px;
|
||||
}
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
|
||||
&-invalid {
|
||||
|
||||
.mat-input-underline {
|
||||
.mat-form-field-underline {
|
||||
background-color: #f44336 !important;
|
||||
}
|
||||
|
||||
@@ -127,7 +127,7 @@
|
||||
border-color: mat-color($warn);
|
||||
}
|
||||
|
||||
.mat-input-prefix {
|
||||
.mat-form-field-prefix {
|
||||
color: mat-color($warn);
|
||||
}
|
||||
|
||||
|
@@ -17,7 +17,7 @@
|
||||
|
||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
import { setupTestBed } from '@alfresco/adf-core';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
import { Observable, of, throwError } from 'rxjs';
|
||||
import { startTaskMock } from '../../mock';
|
||||
import { StartTaskModel } from '../models/start-task.model';
|
||||
import { TaskListService } from '../services/tasklist.service';
|
||||
@@ -54,7 +54,7 @@ describe('StartTaskComponent', () => {
|
||||
element = fixture.nativeElement;
|
||||
|
||||
service = TestBed.get(TaskListService);
|
||||
getFormlistSpy = spyOn(service, 'getFormList').and.returnValue(Observable.of(fakeForms));
|
||||
getFormlistSpy = spyOn(service, 'getFormList').and.returnValue(of(fakeForms));
|
||||
|
||||
fixture.detectChanges();
|
||||
}));
|
||||
@@ -75,7 +75,7 @@ describe('StartTaskComponent', () => {
|
||||
describe('create task', () => {
|
||||
|
||||
beforeEach(() => {
|
||||
createNewTaskSpy = spyOn(service, 'createNewTask').and.returnValue(Observable.of(
|
||||
createNewTaskSpy = spyOn(service, 'createNewTask').and.returnValue(of(
|
||||
{
|
||||
id: 91,
|
||||
name: 'fakeName',
|
||||
@@ -133,7 +133,7 @@ describe('StartTaskComponent', () => {
|
||||
|
||||
describe('attach form', () => {
|
||||
beforeEach(() => {
|
||||
spyOn(service, 'createNewTask').and.returnValue(Observable.of(
|
||||
spyOn(service, 'createNewTask').and.returnValue(of(
|
||||
{
|
||||
id: 91,
|
||||
name: 'fakeName',
|
||||
@@ -141,7 +141,7 @@ describe('StartTaskComponent', () => {
|
||||
assignee: null
|
||||
}
|
||||
));
|
||||
spyOn(service, 'attachFormToATask').and.returnValue(Observable.of(
|
||||
spyOn(service, 'attachFormToATask').and.returnValue(of(
|
||||
{
|
||||
id: 91,
|
||||
name: 'fakeName',
|
||||
@@ -186,7 +186,7 @@ describe('StartTaskComponent', () => {
|
||||
|
||||
describe('assign user', () => {
|
||||
beforeEach(() => {
|
||||
spyOn(service, 'createNewTask').and.returnValue(Observable.of(
|
||||
spyOn(service, 'createNewTask').and.returnValue(of(
|
||||
{
|
||||
id: 91,
|
||||
name: 'fakeName',
|
||||
@@ -194,7 +194,7 @@ describe('StartTaskComponent', () => {
|
||||
assignee: null
|
||||
}
|
||||
));
|
||||
spyOn(service, 'attachFormToATask').and.returnValue(Observable.of(
|
||||
spyOn(service, 'attachFormToATask').and.returnValue(of(
|
||||
{
|
||||
id: 91,
|
||||
name: 'fakeName',
|
||||
@@ -202,7 +202,7 @@ describe('StartTaskComponent', () => {
|
||||
assignee: null
|
||||
}
|
||||
));
|
||||
spyOn(service, 'assignTaskByUserId').and.returnValue(Observable.of(
|
||||
spyOn(service, 'assignTaskByUserId').and.returnValue(of(
|
||||
{
|
||||
id: 91,
|
||||
name: 'fakeName',
|
||||
@@ -265,7 +265,7 @@ describe('StartTaskComponent', () => {
|
||||
});
|
||||
|
||||
it('should not attach a form when a form id is not slected', () => {
|
||||
let attachFormToATask = spyOn(service, 'attachFormToATask').and.returnValue(Observable.of());
|
||||
let attachFormToATask = spyOn(service, 'attachFormToATask').and.returnValue(of());
|
||||
spyOn(service, 'createNewTask').and.callFake(
|
||||
function() {
|
||||
return Observable.create(observer => {
|
||||
@@ -343,7 +343,7 @@ describe('StartTaskComponent', () => {
|
||||
|
||||
it('should emit error when there is an error while creating task', () => {
|
||||
let errorSpy = spyOn(component.error, 'emit');
|
||||
spyOn(service, 'createNewTask').and.returnValue(Observable.throw({}));
|
||||
spyOn(service, 'createNewTask').and.returnValue(throwError({}));
|
||||
let createTaskButton = <HTMLElement> element.querySelector('#button-start');
|
||||
component.startTaskmodel.name = 'fake-name';
|
||||
fixture.detectChanges();
|
||||
|
@@ -21,11 +21,12 @@ import { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core';
|
||||
import { MOMENT_DATE_FORMATS, MomentDateAdapter } from '@alfresco/adf-core';
|
||||
import moment from 'moment-es6';
|
||||
import { Moment } from 'moment';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
import { Observable, of } from 'rxjs';
|
||||
import { Form } from '../models/form.model';
|
||||
import { StartTaskModel } from '../models/start-task.model';
|
||||
import { TaskDetailsModel } from '../models/task-details.model';
|
||||
import { TaskListService } from './../services/tasklist.service';
|
||||
import { switchMap, defaultIfEmpty } from 'rxjs/operators';
|
||||
|
||||
@Component({
|
||||
selector: 'adf-start-task',
|
||||
@@ -96,11 +97,17 @@ export class StartTaskComponent implements OnInit {
|
||||
this.startTaskmodel.category = this.appId.toString();
|
||||
}
|
||||
this.taskService.createNewTask(new TaskDetailsModel(this.startTaskmodel))
|
||||
.switchMap((createRes: any) =>
|
||||
this.attachForm(createRes.id, this.formKey).defaultIfEmpty(createRes)
|
||||
.switchMap((attachRes: any) =>
|
||||
this.assignTaskByUserId(createRes.id, this.assigneeId).defaultIfEmpty(attachRes ? attachRes : createRes)
|
||||
.pipe(
|
||||
switchMap((createRes: any) =>
|
||||
this.attachForm(createRes.id, this.formKey).pipe(
|
||||
defaultIfEmpty(createRes),
|
||||
switchMap((attachRes: any) =>
|
||||
this.assignTaskByUserId(createRes.id, this.assigneeId).pipe(
|
||||
defaultIfEmpty(attachRes ? attachRes : createRes)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
.subscribe(
|
||||
(res: any) => {
|
||||
@@ -118,7 +125,7 @@ export class StartTaskComponent implements OnInit {
|
||||
}
|
||||
|
||||
private attachForm(taskId: string, formKey: number): Observable<any> {
|
||||
let response = Observable.of();
|
||||
let response = of();
|
||||
if (taskId && formKey) {
|
||||
response = this.taskService.attachFormToATask(taskId, formKey);
|
||||
}
|
||||
@@ -126,7 +133,7 @@ export class StartTaskComponent implements OnInit {
|
||||
}
|
||||
|
||||
private assignTaskByUserId(taskId: string, userId: any): Observable<any> {
|
||||
let response = Observable.of();
|
||||
let response = of();
|
||||
if (taskId && userId) {
|
||||
response = this.taskService.assignTaskByUserId(taskId, userId);
|
||||
}
|
||||
|
@@ -22,7 +22,7 @@ import {
|
||||
fakeAsync,
|
||||
TestBed
|
||||
} from '@angular/core/testing';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
import { of } from 'rxjs';
|
||||
import { TaskListService } from './../services/tasklist.service';
|
||||
import { setupTestBed, CoreModule } from '@alfresco/adf-core';
|
||||
import { TaskAuditDirective } from './task-audit.directive';
|
||||
@@ -100,7 +100,7 @@ describe('TaskAuditDirective', () => {
|
||||
component.fileName = 'FakeAuditName';
|
||||
component.format = 'pdf';
|
||||
let blob = createFakePdfBlob();
|
||||
spyOn(service, 'fetchTaskAuditPdfById').and.returnValue(Observable.of(blob));
|
||||
spyOn(service, 'fetchTaskAuditPdfById').and.returnValue(of(blob));
|
||||
spyOn(component, 'onAuditClick').and.callThrough();
|
||||
|
||||
fixture.detectChanges();
|
||||
@@ -121,7 +121,7 @@ describe('TaskAuditDirective', () => {
|
||||
component.format = 'json';
|
||||
component.download = true;
|
||||
const auditJson = { taskId: '77', taskName: 'Fake Task Naem', assignee: 'FirstName LastName', formData: [], selectedOutcome: null, comments: [] };
|
||||
spyOn(service, 'fetchTaskAuditJsonById').and.returnValue(Observable.of(auditJson));
|
||||
spyOn(service, 'fetchTaskAuditJsonById').and.returnValue(of(auditJson));
|
||||
spyOn(component, 'onAuditClick').and.callThrough();
|
||||
|
||||
fixture.detectChanges();
|
||||
@@ -141,7 +141,7 @@ describe('TaskAuditDirective', () => {
|
||||
component.fileName = 'FakeAuditName';
|
||||
component.format = 'fakeFormat';
|
||||
let blob = createFakePdfBlob();
|
||||
spyOn(service, 'fetchTaskAuditPdfById').and.returnValue(Observable.of(blob));
|
||||
spyOn(service, 'fetchTaskAuditPdfById').and.returnValue(of(blob));
|
||||
spyOn(component, 'onAuditClick').and.callThrough();
|
||||
|
||||
fixture.detectChanges();
|
||||
|
@@ -18,7 +18,7 @@
|
||||
import { NO_ERRORS_SCHEMA, SimpleChange } from '@angular/core';
|
||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
import { By } from '@angular/platform-browser';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
import { of, throwError } from 'rxjs';
|
||||
|
||||
import { FormModel, FormOutcomeEvent, FormOutcomeModel, FormService, setupTestBed, BpmUserService } from '@alfresco/adf-core';
|
||||
import { CommentProcessService, LogService, AuthenticationService } from '@alfresco/adf-core';
|
||||
@@ -64,27 +64,27 @@ describe('TaskDetailsComponent', () => {
|
||||
logService = TestBed.get(LogService);
|
||||
|
||||
const userService: BpmUserService = TestBed.get(BpmUserService);
|
||||
spyOn(userService, 'getCurrentUserInfo').and.returnValue(Observable.of({}));
|
||||
spyOn(userService, 'getCurrentUserInfo').and.returnValue(of({}));
|
||||
|
||||
service = TestBed.get(TaskListService);
|
||||
spyOn(service, 'getTaskChecklist').and.returnValue(Observable.of(noDataMock));
|
||||
spyOn(service, 'getTaskChecklist').and.returnValue(of(noDataMock));
|
||||
|
||||
formService = TestBed.get(FormService);
|
||||
|
||||
getTaskDetailsSpy = spyOn(service, 'getTaskDetails').and.returnValue(Observable.of(taskDetailsMock));
|
||||
spyOn(formService, 'getTaskForm').and.returnValue(Observable.of(taskFormMock));
|
||||
getTaskDetailsSpy = spyOn(service, 'getTaskDetails').and.returnValue(of(taskDetailsMock));
|
||||
spyOn(formService, 'getTaskForm').and.returnValue(of(taskFormMock));
|
||||
taskDetailsMock.processDefinitionId = null;
|
||||
spyOn(formService, 'getTask').and.returnValue(Observable.of(taskDetailsMock));
|
||||
spyOn(formService, 'getTask').and.returnValue(of(taskDetailsMock));
|
||||
|
||||
getTasksSpy = spyOn(service, 'getTasks').and.returnValue(Observable.of(tasksMock));
|
||||
assignTaskSpy = spyOn(service, 'assignTask').and.returnValue(Observable.of(fakeUser));
|
||||
completeTaskSpy = spyOn(service, 'completeTask').and.returnValue(Observable.of({}));
|
||||
getTasksSpy = spyOn(service, 'getTasks').and.returnValue(of(tasksMock));
|
||||
assignTaskSpy = spyOn(service, 'assignTask').and.returnValue(of(fakeUser));
|
||||
completeTaskSpy = spyOn(service, 'completeTask').and.returnValue(of({}));
|
||||
commentProcessService = TestBed.get(CommentProcessService);
|
||||
|
||||
authService = TestBed.get(AuthenticationService);
|
||||
spyOn(authService, 'getBpmLoggedUser').and.returnValue(Observable.of({ email: 'fake-email'}));
|
||||
spyOn(authService, 'getBpmLoggedUser').and.returnValue(of({ email: 'fake-email'}));
|
||||
|
||||
spyOn(commentProcessService, 'getTaskComments').and.returnValue(Observable.of([
|
||||
spyOn(commentProcessService, 'getTaskComments').and.returnValue(of([
|
||||
{message: 'Test1', created: Date.now(), createdBy: {firstName: 'Admin', lastName: 'User'}},
|
||||
{message: 'Test2', created: Date.now(), createdBy: {firstName: 'Admin', lastName: 'User'}},
|
||||
{message: 'Test3', created: Date.now(), createdBy: {firstName: 'Admin', lastName: 'User'}}
|
||||
@@ -274,7 +274,7 @@ describe('TaskDetailsComponent', () => {
|
||||
});
|
||||
|
||||
it('should show placeholder message if there is no next task', () => {
|
||||
getTasksSpy.and.returnValue(Observable.of([]));
|
||||
getTasksSpy.and.returnValue(of([]));
|
||||
component.onComplete();
|
||||
fixture.detectChanges();
|
||||
expect(fixture.nativeElement.innerText).toBe('ADF_TASK_LIST.DETAILS.MESSAGES.NONE');
|
||||
@@ -282,7 +282,7 @@ describe('TaskDetailsComponent', () => {
|
||||
|
||||
it('should emit an error event if an error occurs fetching the next task', () => {
|
||||
let emitSpy: jasmine.Spy = spyOn(component.error, 'emit');
|
||||
getTasksSpy.and.returnValue(Observable.throw({}));
|
||||
getTasksSpy.and.returnValue(throwError({}));
|
||||
component.onComplete();
|
||||
expect(emitSpy).toHaveBeenCalled();
|
||||
});
|
||||
@@ -421,7 +421,7 @@ describe('TaskDetailsComponent', () => {
|
||||
});
|
||||
|
||||
it('should return an observable with user search results', (done) => {
|
||||
spyOn(peopleProcessService, 'getWorkflowUsers').and.returnValue(Observable.of([{
|
||||
spyOn(peopleProcessService, 'getWorkflowUsers').and.returnValue(of([{
|
||||
id: 1,
|
||||
firstName: 'fake-test-1',
|
||||
lastName: 'fake-last-1',
|
||||
@@ -445,7 +445,7 @@ describe('TaskDetailsComponent', () => {
|
||||
});
|
||||
|
||||
it('should return an empty list for not valid search', (done) => {
|
||||
spyOn(peopleProcessService, 'getWorkflowUsers').and.returnValue(Observable.of([]));
|
||||
spyOn(peopleProcessService, 'getWorkflowUsers').and.returnValue(of([]));
|
||||
|
||||
component.peopleSearch.subscribe((users) => {
|
||||
expect(users.length).toBe(0);
|
||||
@@ -455,7 +455,7 @@ describe('TaskDetailsComponent', () => {
|
||||
});
|
||||
|
||||
it('should log error message when search fails', async(() => {
|
||||
spyOn(peopleProcessService, 'getWorkflowUsers').and.returnValue(Observable.throw(''));
|
||||
spyOn(peopleProcessService, 'getWorkflowUsers').and.returnValue(throwError(''));
|
||||
|
||||
component.peopleSearch.subscribe(() => {
|
||||
expect(logService.error).toHaveBeenCalledWith('Could not load users');
|
||||
|
@@ -37,14 +37,14 @@ import {
|
||||
ViewChild
|
||||
} from '@angular/core';
|
||||
import { MatDialog, MatDialogRef } from '@angular/material';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
import { Observer } from 'rxjs/Observer';
|
||||
import { Observable, Observer } from 'rxjs';
|
||||
import { ContentLinkModel, FormFieldValidator, FormModel, FormOutcomeEvent } from '@alfresco/adf-core';
|
||||
import { TaskQueryRequestRepresentationModel } from '../models/filter.model';
|
||||
import { TaskDetailsModel } from '../models/task-details.model';
|
||||
import { TaskListService } from './../services/tasklist.service';
|
||||
import { AttachFileWidgetComponent, AttachFolderWidgetComponent } from '../../content-widget';
|
||||
import { UserRepresentation } from 'alfresco-js-api';
|
||||
import { share } from 'rxjs/operators';
|
||||
|
||||
@Component({
|
||||
selector: 'adf-task-details',
|
||||
@@ -182,6 +182,7 @@ export class TaskDetailsComponent implements OnInit, OnChanges {
|
||||
peopleSearch: Observable<UserProcessModel[]>;
|
||||
|
||||
currentLoggedUser: UserRepresentation;
|
||||
data: any;
|
||||
|
||||
constructor(private taskListService: TaskListService,
|
||||
private authService: AuthenticationService,
|
||||
@@ -193,7 +194,8 @@ export class TaskDetailsComponent implements OnInit, OnChanges {
|
||||
|
||||
this.formRenderingService.setComponentTypeResolver('select-folder', () => AttachFolderWidgetComponent, true);
|
||||
this.formRenderingService.setComponentTypeResolver('upload', () => AttachFileWidgetComponent, true);
|
||||
this.peopleSearch = new Observable<UserProcessModel[]>(observer => this.peopleSearchObserver = observer).share();
|
||||
this.peopleSearch = new Observable<UserProcessModel[]>(observer => this.peopleSearchObserver = observer)
|
||||
.pipe(share());
|
||||
this.authService.getBpmLoggedUser().subscribe((user: UserRepresentation) => {
|
||||
this.currentLoggedUser = user;
|
||||
});
|
||||
|
@@ -18,7 +18,7 @@
|
||||
import { SimpleChange } from '@angular/core';
|
||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
import { AppConfigService, AppsProcessService, setupTestBed } from '@alfresco/adf-core';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
import { from, of } from 'rxjs';
|
||||
import { FilterParamsModel, FilterRepresentationModel } from '../models/filter.model';
|
||||
import { TaskListService } from '../services/tasklist.service';
|
||||
import { TaskFilterService } from '../services/task-filter.service';
|
||||
@@ -88,7 +88,7 @@ describe('TaskFiltersComponent', () => {
|
||||
});
|
||||
|
||||
it('should emit an error with a bad response', (done) => {
|
||||
spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(Observable.fromPromise(mockErrorFilterPromise));
|
||||
spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(from(mockErrorFilterPromise));
|
||||
|
||||
const appId = '1';
|
||||
let change = new SimpleChange(null, appId, true);
|
||||
@@ -102,7 +102,7 @@ describe('TaskFiltersComponent', () => {
|
||||
});
|
||||
|
||||
it('should return the filter task list', (done) => {
|
||||
spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(Observable.fromPromise(fakeGlobalFilterPromise));
|
||||
spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(from(fakeGlobalFilterPromise));
|
||||
const appId = '1';
|
||||
let change = new SimpleChange(null, appId, true);
|
||||
component.ngOnChanges({ 'appId': change });
|
||||
@@ -126,8 +126,8 @@ describe('TaskFiltersComponent', () => {
|
||||
resolve({});
|
||||
});
|
||||
|
||||
spyOn(appsProcessService, 'getDeployedApplicationsByName').and.returnValue(Observable.fromPromise(fakeDeployedApplicationsPromise));
|
||||
spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(Observable.fromPromise(fakeGlobalFilterPromise));
|
||||
spyOn(appsProcessService, 'getDeployedApplicationsByName').and.returnValue(from(fakeDeployedApplicationsPromise));
|
||||
spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(from(fakeGlobalFilterPromise));
|
||||
|
||||
let change = new SimpleChange(null, 'test', true);
|
||||
component.ngOnChanges({ 'appName': change });
|
||||
@@ -143,7 +143,7 @@ describe('TaskFiltersComponent', () => {
|
||||
});
|
||||
|
||||
it('should select the first filter as default', (done) => {
|
||||
spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(Observable.fromPromise(fakeGlobalFilterPromise));
|
||||
spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(from(fakeGlobalFilterPromise));
|
||||
|
||||
const appId = '1';
|
||||
let change = new SimpleChange(null, appId, true);
|
||||
@@ -161,7 +161,7 @@ describe('TaskFiltersComponent', () => {
|
||||
});
|
||||
|
||||
it('should be able to fetch and select the default if the input filter is not valid', (done) => {
|
||||
spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(Observable.fromPromise(fakeGlobalEmptyFilterPromise));
|
||||
spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(from(fakeGlobalEmptyFilterPromise));
|
||||
spyOn(component, 'createFiltersByAppId').and.stub();
|
||||
|
||||
const appId = '1';
|
||||
@@ -176,7 +176,7 @@ describe('TaskFiltersComponent', () => {
|
||||
});
|
||||
|
||||
it('should select the task filter based on the input by name param', (done) => {
|
||||
spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(Observable.fromPromise(fakeGlobalFilterPromise));
|
||||
spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(from(fakeGlobalFilterPromise));
|
||||
|
||||
component.filterParam = new FilterParamsModel({ name: 'FakeMyTasks1' });
|
||||
const appId = '1';
|
||||
@@ -195,7 +195,7 @@ describe('TaskFiltersComponent', () => {
|
||||
});
|
||||
|
||||
it('should select the default task filter if filter input does not exist', (done) => {
|
||||
spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(Observable.fromPromise(fakeGlobalFilterPromise));
|
||||
spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(from(fakeGlobalFilterPromise));
|
||||
|
||||
component.filterParam = new FilterParamsModel({ name: 'UnexistableFilter' });
|
||||
|
||||
@@ -215,7 +215,7 @@ describe('TaskFiltersComponent', () => {
|
||||
});
|
||||
|
||||
it('should select the task filter based on the input by index param', (done) => {
|
||||
spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(Observable.fromPromise(fakeGlobalFilterPromise));
|
||||
spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(from(fakeGlobalFilterPromise));
|
||||
|
||||
component.filterParam = new FilterParamsModel({ index: 2 });
|
||||
|
||||
@@ -235,7 +235,7 @@ describe('TaskFiltersComponent', () => {
|
||||
});
|
||||
|
||||
it('should select the task filter based on the input by id param', (done) => {
|
||||
spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(Observable.fromPromise(fakeGlobalFilterPromise));
|
||||
spyOn(taskFilterService, 'getTaskListFilters').and.returnValue(from(fakeGlobalFilterPromise));
|
||||
|
||||
component.filterParam = new FilterParamsModel({ id: 10 });
|
||||
|
||||
@@ -345,7 +345,7 @@ describe('TaskFiltersComponent', () => {
|
||||
});
|
||||
component.filters = fakeGlobalFilter;
|
||||
component.currentFilter = filter;
|
||||
spyOn(taskListService, 'isTaskRelatedToFilter').and.returnValue(Observable.of(null));
|
||||
spyOn(taskListService, 'isTaskRelatedToFilter').and.returnValue(of(null));
|
||||
component.selectFilterWithTask('111');
|
||||
|
||||
expect(component.currentFilter).toBe(filter);
|
||||
|
@@ -17,7 +17,7 @@
|
||||
|
||||
import { AppsProcessService } from '@alfresco/adf-core';
|
||||
import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
import { Observable } from 'rxjs';
|
||||
import { FilterParamsModel, FilterRepresentationModel } from '../models/filter.model';
|
||||
import { TaskFilterService } from './../services/task-filter.service';
|
||||
import { TaskListService } from './../services/tasklist.service';
|
||||
|
@@ -19,7 +19,7 @@ import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
import { By } from '@angular/platform-browser';
|
||||
import { AppConfigService, setupTestBed } from '@alfresco/adf-core';
|
||||
import { BpmUserService } from '@alfresco/adf-core';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
import { of } from 'rxjs';
|
||||
import {
|
||||
completedTaskDetailsMock,
|
||||
taskDetailsMock,
|
||||
@@ -67,7 +67,7 @@ describe('TaskHeaderComponent', () => {
|
||||
component = fixture.componentInstance;
|
||||
service = TestBed.get(TaskListService);
|
||||
userBpmService = TestBed.get(BpmUserService);
|
||||
spyOn(userBpmService, 'getCurrentUserInfo').and.returnValue(Observable.of(fakeBpmAssignedUser));
|
||||
spyOn(userBpmService, 'getCurrentUserInfo').and.returnValue(of(fakeBpmAssignedUser));
|
||||
component.taskDetails = new TaskDetailsModel(taskDetailsMock);
|
||||
appConfigService = TestBed.get(AppConfigService);
|
||||
});
|
||||
@@ -241,7 +241,7 @@ describe('TaskHeaderComponent', () => {
|
||||
}));
|
||||
|
||||
it('should call the service\'s unclaim method on unclaiming', async(() => {
|
||||
spyOn(service, 'unclaimTask').and.returnValue(Observable.of(true));
|
||||
spyOn(service, 'unclaimTask').and.returnValue(of(true));
|
||||
component.taskDetails = new TaskDetailsModel(claimedTaskDetailsMock);
|
||||
component.refreshData();
|
||||
fixture.detectChanges();
|
||||
@@ -254,9 +254,9 @@ describe('TaskHeaderComponent', () => {
|
||||
});
|
||||
}));
|
||||
|
||||
it('should trigger the unclaim event on successfull unclaiming', async(() => {
|
||||
it('should trigger the unclaim event on successful unclaiming', async(() => {
|
||||
let unclaimed: boolean = false;
|
||||
spyOn(service, 'unclaimTask').and.returnValue(Observable.of(true));
|
||||
spyOn(service, 'unclaimTask').and.returnValue(of(true));
|
||||
component.taskDetails = new TaskDetailsModel(claimedTaskDetailsMock);
|
||||
component.refreshData();
|
||||
fixture.detectChanges();
|
||||
|
@@ -23,8 +23,7 @@ import {
|
||||
AfterContentInit, Component, ContentChild, EventEmitter,
|
||||
Input, OnChanges, Output, SimpleChanges } from '@angular/core';
|
||||
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
|
||||
import { Observable, BehaviorSubject } from 'rxjs';
|
||||
import { TaskQueryRequestRepresentationModel } from '../models/filter.model';
|
||||
import { TaskListModel } from '../models/task-list.model';
|
||||
import { taskPresetsDefaultModel } from '../models/task-preset.model';
|
||||
|
@@ -17,8 +17,7 @@
|
||||
|
||||
import { AlfrescoApiService, AppConfigService, UploadService } from '@alfresco/adf-core';
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
import 'rxjs/add/observable/throw';
|
||||
import { throwError } from 'rxjs';
|
||||
|
||||
@Injectable()
|
||||
export class ProcessUploadService extends UploadService {
|
||||
@@ -40,7 +39,7 @@ export class ProcessUploadService extends UploadService {
|
||||
}
|
||||
|
||||
private handleError(error: any) {
|
||||
return Observable.throw(error || 'Server error');
|
||||
return throwError(error || 'Server error');
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -17,9 +17,9 @@
|
||||
|
||||
import { AlfrescoApiService, LogService } from '@alfresco/adf-core';
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
import { Observable, forkJoin, from, throwError } from 'rxjs';
|
||||
import { FilterRepresentationModel } from '../models/filter.model';
|
||||
import 'rxjs/add/observable/throw';
|
||||
import { map, catchError } from 'rxjs/operators';
|
||||
|
||||
@Injectable()
|
||||
export class TaskFilterService {
|
||||
@@ -47,7 +47,7 @@ export class TaskFilterService {
|
||||
let completeObservable = this.addFilter(completedTasksFilter);
|
||||
|
||||
return Observable.create(observer => {
|
||||
Observable.forkJoin(
|
||||
forkJoin(
|
||||
involvedObservable,
|
||||
myTaskObservable,
|
||||
queuedObservable,
|
||||
@@ -85,15 +85,18 @@ export class TaskFilterService {
|
||||
* @returns Array of task filter details
|
||||
*/
|
||||
getTaskListFilters(appId?: number): Observable<FilterRepresentationModel[]> {
|
||||
return Observable.fromPromise(this.callApiTaskFilters(appId))
|
||||
.map((response: any) => {
|
||||
let filters: FilterRepresentationModel[] = [];
|
||||
response.data.forEach((filter: FilterRepresentationModel) => {
|
||||
let filterModel = new FilterRepresentationModel(filter);
|
||||
filters.push(filterModel);
|
||||
});
|
||||
return filters;
|
||||
}).catch(err => this.handleError(err));
|
||||
return from(this.callApiTaskFilters(appId))
|
||||
.pipe(
|
||||
map((response: any) => {
|
||||
const filters: FilterRepresentationModel[] = [];
|
||||
response.data.forEach((filter: FilterRepresentationModel) => {
|
||||
const filterModel = new FilterRepresentationModel(filter);
|
||||
filters.push(filterModel);
|
||||
});
|
||||
return filters;
|
||||
}),
|
||||
catchError(err => this.handleError(err))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -103,10 +106,10 @@ export class TaskFilterService {
|
||||
* @returns Details of task filter
|
||||
*/
|
||||
getTaskFilterById(filterId: number, appId?: number): Observable<FilterRepresentationModel> {
|
||||
return Observable.fromPromise(this.callApiTaskFilters(appId))
|
||||
.map((response: any) => {
|
||||
return response.data.find(filter => filter.id === filterId);
|
||||
}).catch(err => this.handleError(err));
|
||||
return from(this.callApiTaskFilters(appId)).pipe(
|
||||
map(response => response.data.find(filter => filter.id === filterId)),
|
||||
catchError(err => this.handleError(err))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -116,10 +119,10 @@ export class TaskFilterService {
|
||||
* @returns Details of task filter
|
||||
*/
|
||||
getTaskFilterByName(taskName: string, appId?: number): Observable<FilterRepresentationModel> {
|
||||
return Observable.fromPromise(this.callApiTaskFilters(appId))
|
||||
.map((response: any) => {
|
||||
return response.data.find(filter => filter.name === taskName);
|
||||
}).catch(err => this.handleError(err));
|
||||
return from(this.callApiTaskFilters(appId)).pipe(
|
||||
map(response => response.data.find(filter => filter.name === taskName)),
|
||||
catchError(err => this.handleError(err))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -128,11 +131,13 @@ export class TaskFilterService {
|
||||
* @returns Details of task filter just added
|
||||
*/
|
||||
addFilter(filter: FilterRepresentationModel): Observable<FilterRepresentationModel> {
|
||||
return Observable.fromPromise(this.apiService.getInstance().activiti.userFiltersApi.createUserTaskFilter(filter))
|
||||
.map(res => res)
|
||||
.map((response: FilterRepresentationModel) => {
|
||||
return response;
|
||||
}).catch(err => this.handleError(err));
|
||||
return from(this.apiService.getInstance().activiti.userFiltersApi.createUserTaskFilter(filter))
|
||||
.pipe(
|
||||
map((response: FilterRepresentationModel) => {
|
||||
return response;
|
||||
}),
|
||||
catchError(err => this.handleError(err))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -140,7 +145,7 @@ export class TaskFilterService {
|
||||
* @param appId ID of the target app
|
||||
* @returns List of task filters
|
||||
*/
|
||||
callApiTaskFilters(appId?: number) {
|
||||
callApiTaskFilters(appId?: number): Promise<any> {
|
||||
if (appId) {
|
||||
return this.apiService.getInstance().activiti.userFiltersApi.getUserTaskFilters({appId: appId});
|
||||
} else {
|
||||
@@ -210,7 +215,7 @@ export class TaskFilterService {
|
||||
|
||||
private handleError(error: any) {
|
||||
this.logService.error(error);
|
||||
return Observable.throw(error || 'Server error');
|
||||
return throwError(error || 'Server error');
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -17,8 +17,7 @@
|
||||
|
||||
import { AlfrescoApiService, AppConfigService, UploadService } from '@alfresco/adf-core';
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
import 'rxjs/add/observable/throw';
|
||||
import { throwError } from 'rxjs';
|
||||
|
||||
@Injectable()
|
||||
export class TaskUploadService extends UploadService {
|
||||
@@ -40,7 +39,7 @@ export class TaskUploadService extends UploadService {
|
||||
}
|
||||
|
||||
private handleError(error: any) {
|
||||
return Observable.throw(error || 'Server error');
|
||||
return throwError(error || 'Server error');
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -17,7 +17,7 @@
|
||||
|
||||
import { async } from '@angular/core/testing';
|
||||
import { UserProcessModel, setupTestBed, CoreModule } from '@alfresco/adf-core';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
import { of } from 'rxjs';
|
||||
import {
|
||||
fakeCompletedTaskList,
|
||||
fakeFilter,
|
||||
@@ -82,8 +82,8 @@ describe('Activiti TaskList Service', () => {
|
||||
});
|
||||
|
||||
it('should return the task list with all tasks filtered by state', (done) => {
|
||||
spyOn(service, 'getTasks').and.returnValue(Observable.of(fakeTaskList));
|
||||
spyOn(service, 'getTotalTasks').and.returnValue(Observable.of(fakeTaskList));
|
||||
spyOn(service, 'getTasks').and.returnValue(of(fakeTaskList));
|
||||
spyOn(service, 'getTotalTasks').and.returnValue(of(fakeTaskList));
|
||||
|
||||
service.findAllTaskByState(<TaskQueryRequestRepresentationModel> fakeFilter, 'open').subscribe(res => {
|
||||
|
||||
@@ -101,8 +101,8 @@ describe('Activiti TaskList Service', () => {
|
||||
});
|
||||
|
||||
it('should return the task list with all tasks filtered', (done) => {
|
||||
spyOn(service, 'getTasks').and.returnValue(Observable.of(fakeTaskList));
|
||||
spyOn(service, 'getTotalTasks').and.returnValue(Observable.of(fakeTaskList));
|
||||
spyOn(service, 'getTasks').and.returnValue(of(fakeTaskList));
|
||||
spyOn(service, 'getTotalTasks').and.returnValue(of(fakeTaskList));
|
||||
|
||||
service.findAllTaskByState(<TaskQueryRequestRepresentationModel> fakeFilter).subscribe(res => {
|
||||
expect(res).toBeDefined();
|
||||
@@ -160,8 +160,8 @@ describe('Activiti TaskList Service', () => {
|
||||
});
|
||||
|
||||
it('should return the task list with all tasks filtered without state', (done) => {
|
||||
spyOn(service, 'getTasks').and.returnValue(Observable.of(fakeTaskList));
|
||||
spyOn(service, 'getTotalTasks').and.returnValue(Observable.of(fakeTaskList));
|
||||
spyOn(service, 'getTasks').and.returnValue(of(fakeTaskList));
|
||||
spyOn(service, 'getTotalTasks').and.returnValue(of(fakeTaskList));
|
||||
|
||||
service.findAllTasksWithoutState(<TaskQueryRequestRepresentationModel> fakeFilter).subscribe(res => {
|
||||
expect(res).toBeDefined();
|
||||
@@ -181,8 +181,8 @@ describe('Activiti TaskList Service', () => {
|
||||
});
|
||||
|
||||
it('Should return both open and completed task', (done) => {
|
||||
spyOn(service, 'findTasksByState').and.returnValue(Observable.of(fakeOpenTaskList));
|
||||
spyOn(service, 'findAllTaskByState').and.returnValue(Observable.of(fakeCompletedTaskList));
|
||||
spyOn(service, 'findTasksByState').and.returnValue(of(fakeOpenTaskList));
|
||||
spyOn(service, 'findAllTaskByState').and.returnValue(of(fakeCompletedTaskList));
|
||||
service.findAllTasksWithoutState(<TaskQueryRequestRepresentationModel> fakeFilter).subscribe(res => {
|
||||
expect(res).toBeDefined();
|
||||
expect(res.data).toBeDefined();
|
||||
@@ -197,8 +197,8 @@ describe('Activiti TaskList Service', () => {
|
||||
});
|
||||
|
||||
it('should add the task list to the tasklistSubject with all tasks filtered without state', (done) => {
|
||||
spyOn(service, 'getTasks').and.returnValue(Observable.of(fakeTaskList));
|
||||
spyOn(service, 'getTotalTasks').and.returnValue(Observable.of(fakeTaskList));
|
||||
spyOn(service, 'getTasks').and.returnValue(of(fakeTaskList));
|
||||
spyOn(service, 'getTotalTasks').and.returnValue(of(fakeTaskList));
|
||||
|
||||
service.findAllTasksWithoutState(<TaskQueryRequestRepresentationModel> fakeFilter).subscribe(res => {
|
||||
expect(res).toBeDefined();
|
||||
|
@@ -17,16 +17,12 @@
|
||||
|
||||
import { AlfrescoApiService, LogService } from '@alfresco/adf-core';
|
||||
import { Injectable } from '@angular/core';
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
import { Observable, from, forkJoin, throwError } from 'rxjs';
|
||||
import { map, catchError, switchMap, flatMap, filter } from 'rxjs/operators';
|
||||
import { FilterRepresentationModel, TaskQueryRequestRepresentationModel } from '../models/filter.model';
|
||||
import { Form } from '../models/form.model';
|
||||
import { TaskDetailsModel } from '../models/task-details.model';
|
||||
import { TaskListModel } from '../models/task-list.model';
|
||||
import 'rxjs/add/observable/throw';
|
||||
import 'rxjs/add/observable/forkJoin';
|
||||
import 'rxjs/add/observable/fromPromise';
|
||||
import 'rxjs/operator/switchMap';
|
||||
import 'rxjs/add/observable/from';
|
||||
|
||||
@Injectable()
|
||||
export class TaskListService {
|
||||
@@ -42,9 +38,11 @@ export class TaskListService {
|
||||
* @returns Filters belonging to the task
|
||||
*/
|
||||
getFilterForTaskById(taskId: string, filterList: FilterRepresentationModel[]): Observable<FilterRepresentationModel> {
|
||||
return Observable.from(filterList)
|
||||
.flatMap((filter: FilterRepresentationModel) => this.isTaskRelatedToFilter(taskId, filter))
|
||||
.filter((filter: FilterRepresentationModel) => filter != null);
|
||||
return from(filterList)
|
||||
.pipe(
|
||||
flatMap((data: FilterRepresentationModel) => this.isTaskRelatedToFilter(taskId, data)),
|
||||
filter((data: FilterRepresentationModel) => data != null)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -52,12 +50,12 @@ export class TaskListService {
|
||||
* @param filter The filter to use
|
||||
* @returns The search query
|
||||
*/
|
||||
private generateTaskRequestNodeFromFilter(filter: FilterRepresentationModel): TaskQueryRequestRepresentationModel {
|
||||
private generateTaskRequestNodeFromFilter(filterModel: FilterRepresentationModel): TaskQueryRequestRepresentationModel {
|
||||
let requestNode = {
|
||||
appDefinitionId: filter.appId,
|
||||
assignment: filter.filter.assignment,
|
||||
state: filter.filter.state,
|
||||
sort: filter.filter.sort
|
||||
appDefinitionId: filterModel.appId,
|
||||
assignment: filterModel.filter.assignment,
|
||||
state: filterModel.filter.state,
|
||||
sort: filterModel.filter.sort
|
||||
};
|
||||
return new TaskQueryRequestRepresentationModel(requestNode);
|
||||
}
|
||||
@@ -68,12 +66,15 @@ export class TaskListService {
|
||||
* @param filter The filter you want to check
|
||||
* @returns The filter if it is related or null otherwise
|
||||
*/
|
||||
isTaskRelatedToFilter(taskId: string, filter: FilterRepresentationModel): Observable<FilterRepresentationModel> {
|
||||
let requestNodeForFilter = this.generateTaskRequestNodeFromFilter(filter);
|
||||
return Observable.fromPromise(this.callApiTasksFiltered(requestNodeForFilter))
|
||||
.map((res: any) => {
|
||||
return res.data.find(element => element.id === taskId) ? filter : null;
|
||||
}).catch(err => this.handleError(err));
|
||||
isTaskRelatedToFilter(taskId: string, filterModel: FilterRepresentationModel): Observable<FilterRepresentationModel> {
|
||||
let requestNodeForFilter = this.generateTaskRequestNodeFromFilter(filterModel);
|
||||
return from(this.callApiTasksFiltered(requestNodeForFilter))
|
||||
.pipe(
|
||||
map((res: any) => {
|
||||
return res.data.find(element => element.id === taskId) ? filterModel : null;
|
||||
}),
|
||||
catchError(err => this.handleError(err))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -82,10 +83,10 @@ export class TaskListService {
|
||||
* @returns List of tasks
|
||||
*/
|
||||
getTasks(requestNode: TaskQueryRequestRepresentationModel): Observable<TaskListModel> {
|
||||
return Observable.fromPromise(this.callApiTasksFiltered(requestNode))
|
||||
.map((res: TaskListModel) => {
|
||||
return res;
|
||||
}).catch(err => this.handleError(err));
|
||||
return from<TaskListModel>(this.callApiTasksFiltered(requestNode))
|
||||
.pipe(
|
||||
catchError(err => this.handleError(err))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -111,10 +112,13 @@ export class TaskListService {
|
||||
if (state) {
|
||||
requestNode.state = state;
|
||||
}
|
||||
return this.getTotalTasks(requestNode).switchMap((res: any) => {
|
||||
requestNode.size = res.total;
|
||||
return this.getTasks(requestNode);
|
||||
});
|
||||
return this.getTotalTasks(requestNode)
|
||||
.pipe(
|
||||
switchMap((res: any) => {
|
||||
requestNode.size = res.total;
|
||||
return this.getTasks(requestNode);
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -123,7 +127,7 @@ export class TaskListService {
|
||||
* @returns List of tasks
|
||||
*/
|
||||
findAllTasksWithoutState(requestNode: TaskQueryRequestRepresentationModel): Observable<TaskListModel> {
|
||||
return Observable.forkJoin(
|
||||
return forkJoin(
|
||||
this.findTasksByState(requestNode, 'open'),
|
||||
this.findAllTaskByState(requestNode, 'completed'),
|
||||
(activeTasks: TaskListModel, completedTasks: TaskListModel) => {
|
||||
@@ -141,11 +145,13 @@ export class TaskListService {
|
||||
* @returns Task details
|
||||
*/
|
||||
getTaskDetails(taskId: string): Observable<TaskDetailsModel> {
|
||||
return Observable.fromPromise(this.callApiTaskDetails(taskId))
|
||||
.map(res => res)
|
||||
.map((details: any) => {
|
||||
return new TaskDetailsModel(details);
|
||||
}).catch(err => this.handleError(err));
|
||||
return from(this.callApiTaskDetails(taskId))
|
||||
.pipe(
|
||||
map((details: any) => {
|
||||
return new TaskDetailsModel(details);
|
||||
}),
|
||||
catchError(err => this.handleError(err))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -154,15 +160,17 @@ export class TaskListService {
|
||||
* @returns Array of checklist task details
|
||||
*/
|
||||
getTaskChecklist(id: string): Observable<TaskDetailsModel[]> {
|
||||
return Observable.fromPromise(this.callApiTaskChecklist(id))
|
||||
.map(res => res)
|
||||
.map((response: any) => {
|
||||
let checklists: TaskDetailsModel[] = [];
|
||||
response.data.forEach((checklist) => {
|
||||
checklists.push(new TaskDetailsModel(checklist));
|
||||
});
|
||||
return checklists;
|
||||
}).catch(err => this.handleError(err));
|
||||
return from(this.callApiTaskChecklist(id))
|
||||
.pipe(
|
||||
map((response: any) => {
|
||||
const checklists: TaskDetailsModel[] = [];
|
||||
response.data.forEach((checklist) => {
|
||||
checklists.push(new TaskDetailsModel(checklist));
|
||||
});
|
||||
return checklists;
|
||||
}),
|
||||
catchError(err => this.handleError(err))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -176,14 +184,17 @@ export class TaskListService {
|
||||
'modelType': 2 // Integer | modelType
|
||||
};
|
||||
|
||||
return Observable.fromPromise(this.apiService.getInstance().activiti.modelsApi.getModels(opts)).map(res => res)
|
||||
.map((response: any) => {
|
||||
let forms: Form[] = [];
|
||||
response.data.forEach((form) => {
|
||||
forms.push(new Form(form.id, form.name));
|
||||
});
|
||||
return forms;
|
||||
}).catch(err => this.handleError(err));
|
||||
return from(this.apiService.getInstance().activiti.modelsApi.getModels(opts))
|
||||
.pipe(
|
||||
map((response: any) => {
|
||||
let forms: Form[] = [];
|
||||
response.data.forEach((form) => {
|
||||
forms.push(new Form(form.id, form.name));
|
||||
});
|
||||
return forms;
|
||||
}),
|
||||
catchError(err => this.handleError(err))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -193,7 +204,10 @@ export class TaskListService {
|
||||
* @returns Null response notifying when the operation is complete
|
||||
*/
|
||||
attachFormToATask(taskId: string, formId: number): Observable<any> {
|
||||
return Observable.fromPromise(this.apiService.taskApi.attachForm(taskId, {'formId': formId})).catch(err => this.handleError(err));
|
||||
return from(this.apiService.taskApi.attachForm(taskId, {'formId': formId}))
|
||||
.pipe(
|
||||
catchError(err => this.handleError(err))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -202,11 +216,13 @@ export class TaskListService {
|
||||
* @returns The subtask that was added
|
||||
*/
|
||||
addTask(task: TaskDetailsModel): Observable<TaskDetailsModel> {
|
||||
return Observable.fromPromise(this.callApiAddTask(task))
|
||||
.map(res => res)
|
||||
.map((response: TaskDetailsModel) => {
|
||||
return new TaskDetailsModel(response);
|
||||
}).catch(err => this.handleError(err));
|
||||
return from(this.callApiAddTask(task))
|
||||
.pipe(
|
||||
map((response: TaskDetailsModel) => {
|
||||
return new TaskDetailsModel(response);
|
||||
}),
|
||||
catchError(err => this.handleError(err))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -215,8 +231,10 @@ export class TaskListService {
|
||||
* @returns Null response notifying when the operation is complete
|
||||
*/
|
||||
deleteTask(taskId: string): Observable<TaskDetailsModel> {
|
||||
return Observable.fromPromise(this.callApiDeleteTask(taskId))
|
||||
.catch(err => this.handleError(err));
|
||||
return from<TaskDetailsModel>(this.callApiDeleteTask(taskId))
|
||||
.pipe(
|
||||
catchError(err => this.handleError(err))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -225,8 +243,10 @@ export class TaskListService {
|
||||
* @returns Null response notifying when the operation is complete
|
||||
*/
|
||||
deleteForm(taskId: string): Observable<TaskDetailsModel> {
|
||||
return Observable.fromPromise(this.callApiDeleteForm(taskId))
|
||||
.catch(err => this.handleError(err));
|
||||
return from<TaskDetailsModel>(this.callApiDeleteForm(taskId))
|
||||
.pipe(
|
||||
catchError(err => this.handleError(err))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -235,9 +255,10 @@ export class TaskListService {
|
||||
* @returns Null response notifying when the operation is complete
|
||||
*/
|
||||
completeTask(taskId: string) {
|
||||
return Observable.fromPromise(this.apiService.taskApi.completeTask(taskId))
|
||||
.map(res => res)
|
||||
.catch(err => this.handleError(err));
|
||||
return from(this.apiService.taskApi.completeTask(taskId))
|
||||
.pipe(
|
||||
catchError(err => this.handleError(err))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -247,10 +268,13 @@ export class TaskListService {
|
||||
*/
|
||||
public getTotalTasks(requestNode: TaskQueryRequestRepresentationModel): Observable<any> {
|
||||
requestNode.size = 0;
|
||||
return Observable.fromPromise(this.callApiTasksFiltered(requestNode))
|
||||
.map((res: any) => {
|
||||
return res;
|
||||
}).catch(err => this.handleError(err));
|
||||
return from(this.callApiTasksFiltered(requestNode))
|
||||
.pipe(
|
||||
map((res: any) => {
|
||||
return res;
|
||||
}),
|
||||
catchError(err => this.handleError(err))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -259,11 +283,13 @@ export class TaskListService {
|
||||
* @returns Details of the newly created task
|
||||
*/
|
||||
createNewTask(task: TaskDetailsModel): Observable<TaskDetailsModel> {
|
||||
return Observable.fromPromise(this.callApiCreateTask(task))
|
||||
.map(res => res)
|
||||
.map((response: TaskDetailsModel) => {
|
||||
return new TaskDetailsModel(response);
|
||||
}).catch(err => this.handleError(err));
|
||||
return from(this.callApiCreateTask(task))
|
||||
.pipe(
|
||||
map((response: TaskDetailsModel) => {
|
||||
return new TaskDetailsModel(response);
|
||||
}),
|
||||
catchError(err => this.handleError(err))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -274,11 +300,13 @@ export class TaskListService {
|
||||
*/
|
||||
assignTask(taskId: string, requestNode: any): Observable<TaskDetailsModel> {
|
||||
let assignee = {assignee: requestNode.id};
|
||||
return Observable.fromPromise(this.callApiAssignTask(taskId, assignee))
|
||||
.map(res => res)
|
||||
.map((response: TaskDetailsModel) => {
|
||||
return new TaskDetailsModel(response);
|
||||
}).catch(err => this.handleError(err));
|
||||
return from(this.callApiAssignTask(taskId, assignee))
|
||||
.pipe(
|
||||
map((response: TaskDetailsModel) => {
|
||||
return new TaskDetailsModel(response);
|
||||
}),
|
||||
catchError(err => this.handleError(err))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -288,12 +316,14 @@ export class TaskListService {
|
||||
* @returns Details of the assigned task
|
||||
*/
|
||||
assignTaskByUserId(taskId: string, userId: number): Observable<TaskDetailsModel> {
|
||||
let assignee = {assignee: userId};
|
||||
return Observable.fromPromise(this.callApiAssignTask(taskId, assignee))
|
||||
.map(res => res)
|
||||
.map((response: TaskDetailsModel) => {
|
||||
return new TaskDetailsModel(response);
|
||||
}).catch(err => this.handleError(err));
|
||||
const assignee = { assignee: userId };
|
||||
return from(this.callApiAssignTask(taskId, assignee))
|
||||
.pipe(
|
||||
map((response: TaskDetailsModel) => {
|
||||
return new TaskDetailsModel(response);
|
||||
}),
|
||||
catchError(err => this.handleError(err))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -302,8 +332,10 @@ export class TaskListService {
|
||||
* @returns Details of the claimed task
|
||||
*/
|
||||
claimTask(taskId: string): Observable<TaskDetailsModel> {
|
||||
return Observable.fromPromise(this.apiService.taskApi.claimTask(taskId))
|
||||
.catch(err => this.handleError(err));
|
||||
return from<TaskDetailsModel>(this.apiService.taskApi.claimTask(taskId))
|
||||
.pipe(
|
||||
catchError(err => this.handleError(err))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -312,8 +344,10 @@ export class TaskListService {
|
||||
* @returns Null response notifying when the operation is complete
|
||||
*/
|
||||
unclaimTask(taskId: string): Observable<TaskDetailsModel> {
|
||||
return Observable.fromPromise(this.apiService.taskApi.unclaimTask(taskId))
|
||||
.catch(err => this.handleError(err));
|
||||
return from<TaskDetailsModel>(this.apiService.taskApi.unclaimTask(taskId))
|
||||
.pipe(
|
||||
catchError(err => this.handleError(err))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -323,8 +357,11 @@ export class TaskListService {
|
||||
* @returns Updated task details
|
||||
*/
|
||||
updateTask(taskId: any, updated): Observable<TaskDetailsModel> {
|
||||
return Observable.fromPromise(this.apiService.taskApi.updateTask(taskId, updated))
|
||||
.catch(err => this.handleError(err));
|
||||
return from(this.apiService.taskApi.updateTask(taskId, updated))
|
||||
.pipe(
|
||||
map(result => <TaskDetailsModel> result),
|
||||
catchError(err => this.handleError(err))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -333,8 +370,11 @@ export class TaskListService {
|
||||
* @returns Binary PDF data
|
||||
*/
|
||||
fetchTaskAuditPdfById(taskId: string): Observable<Blob> {
|
||||
return Observable.fromPromise(this.apiService.taskApi.getTaskAuditPdf(taskId))
|
||||
.catch(err => this.handleError(err));
|
||||
return from(this.apiService.taskApi.getTaskAuditPdf(taskId))
|
||||
.pipe(
|
||||
map(data => <Blob> data),
|
||||
catchError(err => this.handleError(err))
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -343,8 +383,10 @@ export class TaskListService {
|
||||
* @returns JSON data
|
||||
*/
|
||||
fetchTaskAuditJsonById(taskId: string): Observable<any> {
|
||||
return Observable.fromPromise(this.apiService.taskApi.getTaskAuditJson(taskId))
|
||||
.catch(err => this.handleError(err));
|
||||
return from(this.apiService.taskApi.getTaskAuditJson(taskId))
|
||||
.pipe(
|
||||
catchError(err => this.handleError(err))
|
||||
);
|
||||
}
|
||||
|
||||
private callApiTasksFiltered(requestNode: TaskQueryRequestRepresentationModel) {
|
||||
@@ -381,7 +423,7 @@ export class TaskListService {
|
||||
|
||||
private handleError(error: any) {
|
||||
this.logService.error(error);
|
||||
return Observable.throw(error || 'Server error');
|
||||
return throwError(error || 'Server error');
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user