From 16eec259c57d08b9eb627f60a031faf94dcc6bea Mon Sep 17 00:00:00 2001 From: mauriziovitale84 Date: Fri, 29 Jul 2016 11:12:28 +0100 Subject: [PATCH] Unit test tasklist --- .../activiti-tasklist.component.spec.ts | 147 ++++++------------ .../components/activiti-tasklist.component.ts | 6 +- 2 files changed, 55 insertions(+), 98 deletions(-) diff --git a/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.spec.ts b/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.spec.ts index e487dc46d8..a03bfce057 100644 --- a/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.spec.ts +++ b/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.spec.ts @@ -26,28 +26,13 @@ import { ActivitiTaskList } from './activiti-tasklist.component'; import { ActivitiTaskListService } from '../services/activiti-tasklist.service'; import { FilterModel } from '../models/filter.model'; import { Observable } from 'rxjs/Rx'; +import { ObjectDataRow, DataRowEvent } from 'ng2-alfresco-datatable'; describe('ActivitiTaskList', () => { let taskList: ActivitiTaskList; - /* - let fakeGlobalFilter = { - size: 2, total: 2, start: 0, - data: [ - { - id: 1, name: 'FakeInvolvedTasks', recent: false, icon: 'glyphicon-align-left', - filter: {sort: 'created-desc', name: '', state: 'open', assignment: 'fake-involved'} - }, - { - id: 2, name: 'FakeMyTasks', recent: false, icon: 'glyphicon-align-left', - filter: {sort: 'created-desc', name: '', state: 'open', assignment: 'fake-assignee'} - } - ] - }; - */ - let fakeGlobalTask = { size: 1, total: 12, start: 0, data: [ @@ -66,39 +51,54 @@ describe('ActivitiTaskList', () => { ] }; - /* - - let fakeErrorTaskList = { - error: 'wrong request' - }; - */ - let fakeGlobalTaskPromise = new Promise(function (resolve, reject) { resolve(fakeGlobalTask); }); - /* - - let fakeGlobalFilterPromise = new Promise(function (resolve, reject) { - resolve(fakeGlobalFilter); - }); + let fakeErrorTaskList = { + error: 'wrong request' + }; let fakeErrorTaskPromise = new Promise(function (resolve, reject) { reject(fakeErrorTaskList); - });*/ + }); beforeEach(() => { let activitiSerevice = new ActivitiTaskListService(null, null); taskList = new ActivitiTaskList(null, null, activitiSerevice); }); - it('should return the task list when the taskFilter is passed', (done) => { + it('should use the default schemaColumn as default', () => { + taskList.ngOnInit(); + expect(taskList.schemaColumn).toBeDefined(); + expect(taskList.schemaColumn.length).toEqual(4); + }); + + it('should use the schemaColumn passed in input', () => { + taskList.schemaColumn = [ + {type: 'text', key: 'fake-id', title: 'Name'} + ]; + + taskList.ngOnInit(); + expect(taskList.schemaColumn).toBeDefined(); + expect(taskList.schemaColumn.length).toEqual(1); + }); + + it('should return an empty task list when the taskFilter is not passed', () => { + taskList.ngOnInit(); + expect(taskList.tasks).toBeUndefined(); + expect(taskList.isTaskListEmpty()).toBeTruthy(); + }); + + it('should return the filtered task list when the taskFilter is passed', (done) => { spyOn(taskList.activiti, 'getTasks').and.returnValue(Observable.fromPromise(fakeGlobalTaskPromise)); - // spyOn(taskList.activiti, 'getTaskListFilters').and.returnValue(Observable.fromPromise(fakeGlobalFilterPromise)); taskList.taskFilter = new FilterModel('name', false, 'icon', '', 'open', 'fake-assignee'); - taskList.onSuccess.subscribe( () => { + taskList.onSuccess.subscribe( (res) => { + expect(res).toBeDefined(); + expect(res).toEqual('Task List loaded'); expect(taskList.tasks).toBeDefined(); + expect(taskList.isTaskListEmpty()).not.toBeTruthy(); expect(taskList.tasks.getRows().length).toEqual(2); expect(taskList.tasks.getRows()[0].getValue('name')).toEqual('fake-long-name-fake-long-name-fake-long-name-fak50...'); expect(taskList.tasks.getRows()[1].getValue('name')).toEqual('Nameless task'); @@ -108,78 +108,31 @@ describe('ActivitiTaskList', () => { taskList.ngOnInit(); }); - /* - it('should return the default filters', (done) => { - spyOn(taskList.activiti, 'getTaskListFilters').and.returnValue(Observable.fromPromise(fakeGlobalFilterPromise)); - taskList.ngOnInit(); - - taskList.filtersList.subscribe((res: any) => { - expect(res).toBeDefined(); - expect(res.length).toEqual(2); - expect(res[0].name).toEqual('FakeInvolvedTasks'); - expect(res[1].name).toEqual('FakeMyTasks'); - done(); - }); - }); - - it('should subscribe to Filter when a filter is selected', (done) => { - let filterModel: FilterModel = new FilterModel('name', false, 'icon', 'open', 'fake-assignee'); - taskList.filter$.subscribe((filter: FilterModel) => { - expect(filter).toBe(filterModel); - done(); - }); - taskList.selectFilter(filterModel); - }); - - it('should return the tasks when a filter is selected', (done) => { - spyOn(taskList.activiti, 'getTasks').and.returnValue(Observable.fromPromise(fakeGlobalTaskPromise)); - spyOn(taskList.activiti, 'getTaskListFilters').and.returnValue(Observable.fromPromise(fakeGlobalFilterPromise)); - taskList.ngOnInit(); - - let filterModel: FilterModel = new FilterModel('name', false, 'icon', 'open', 'fake-assignee'); - taskList.selectFilter(filterModel); - - taskList.activiti.getTasks(filterModel).subscribe( - (res) => { - expect(res).toBeDefined(); - done(); - }); - }); - it('should throw an exception when the response is wrong', (done) => { spyOn(taskList.activiti, 'getTasks').and.returnValue(Observable.fromPromise(fakeErrorTaskPromise)); - spyOn(taskList.activiti, 'getTaskListFilters').and.returnValue(Observable.fromPromise(fakeGlobalFilterPromise)); + taskList.taskFilter = new FilterModel('name', false, 'icon', '', 'open', 'fake-assignee'); + + taskList.onError.subscribe( (err) => { + expect(err).toBeDefined(); + expect(err).toEqual('Error to load a tasks list'); + done(); + }); + taskList.ngOnInit(); - - let filterModel: FilterModel = new FilterModel('name', false, 'icon', 'open', 'fake-assignee'); - taskList.selectFilter(filterModel); - - taskList.activiti.getTasks(filterModel).subscribe( - (res) => { - expect(res).toBeUndefined(); - }, - (err: any) => { - expect(err).toBeDefined(); - expect(err.error).toEqual('wrong request'); - done(); - }); }); - it('should optimize the task name when are empty or exceed 50 characters', (done) => { - spyOn(taskList.activiti, 'getTasks').and.returnValue(Observable.fromPromise(fakeGlobalTaskPromise)); - spyOn(taskList.activiti, 'getTaskListFilters').and.returnValue(Observable.fromPromise(fakeGlobalFilterPromise)); - taskList.ngOnInit(); + it('should emit row click event', (done) => { + let row = new ObjectDataRow({ + id: 999 + }); + let rowEvent = {value: row}; - let filterModel: FilterModel = new FilterModel('name', false, 'icon', 'open', 'fake-assignee'); - taskList.selectFilter(filterModel); + taskList.rowClick.subscribe(taskId => { + expect(taskId).toEqual(999); + done(); + }); - taskList.activiti.getTasks(filterModel).subscribe( - (res) => { - expect(res.data[0].name).toEqual('fake-long-name-fake-long-name-fake-long-name-fak50...'); - expect(res.data[1].name).toEqual('Nameless task'); - done(); - }); + taskList.onRowClick(rowEvent); }); - */ }); diff --git a/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.ts b/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.ts index e7a84dd43f..7e6dc87b7c 100644 --- a/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.ts +++ b/ng2-components/ng2-activiti-tasklist/src/components/activiti-tasklist.component.ts @@ -52,6 +52,9 @@ export class ActivitiTaskList implements OnInit { @Output() onSuccess: EventEmitter = new EventEmitter(); + @Output() + onError: EventEmitter = new EventEmitter(); + data: DataTableAdapter; tasks: ObjectDataTableAdapter; @@ -90,6 +93,7 @@ export class ActivitiTaskList implements OnInit { this.onSuccess.emit('Task List loaded'); }, (err) => { console.error(err); + this.onError.emit('Error to load a tasks list'); }); } @@ -107,7 +111,7 @@ export class ActivitiTaskList implements OnInit { * @returns {ObjectDataTableAdapter|boolean} */ isTaskListEmpty(): boolean { - return this.tasks && this.tasks.getRows().length === 0; + return this.tasks === undefined || (this.tasks && this.tasks.getRows() && this.tasks.getRows().length === 0); } /**