From 35478f4fd64e15ad4b906726a2a383e1c4957dca Mon Sep 17 00:00:00 2001 From: Denys Vuika Date: Fri, 24 Jun 2016 11:18:07 +0100 Subject: [PATCH] Improved 'upload' tests --- .../file-uploading-dialog.component.spec.ts | 208 ++++++++---------- .../upload-button.component.spec.ts | 174 +++++++-------- 2 files changed, 169 insertions(+), 213 deletions(-) diff --git a/ng2-components/ng2-alfresco-upload/src/components/file-uploading-dialog.component.spec.ts b/ng2-components/ng2-alfresco-upload/src/components/file-uploading-dialog.component.spec.ts index e3977df61d..6d78eb4b97 100644 --- a/ng2-components/ng2-alfresco-upload/src/components/file-uploading-dialog.component.spec.ts +++ b/ng2-components/ng2-alfresco-upload/src/components/file-uploading-dialog.component.spec.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { describe, expect, it, inject, beforeEachProviders } from '@angular/core/testing'; +import { describe, expect, it, inject, beforeEach, beforeEachProviders } from '@angular/core/testing'; import { TestComponentBuilder } from '@angular/compiler/testing'; import { FileUploadingDialogComponent } from './file-uploading-dialog.component'; import { FileModel } from '../models/file.model'; @@ -27,6 +27,9 @@ import { Observable } from 'rxjs/Observable'; describe('FileUploadDialog', () => { + let componentFixture; + let uploadService; + beforeEachProviders(() => { return [ { provide: AlfrescoSettingsService, useClass: AlfrescoSettingsService }, @@ -35,144 +38,117 @@ describe('FileUploadDialog', () => { ]; }); - it('should render completed upload 1 when an element is added to Observer', - inject([TestComponentBuilder, UploadService], - (tcb: TestComponentBuilder, updService: UploadService) => { + beforeEach( + inject( + [TestComponentBuilder, UploadService], + (tcb: TestComponentBuilder, service: UploadService) => { return tcb .createAsync(FileUploadingDialogComponent) - .then((fixture) => { - let fileFake = { - id: 'fake-id', - name: 'fake-name' - }; - let file = new FileModel(fileFake); - file.progress = {'percent': 50}; - - updService.totalCompleted$ = new Observable(observer => { - observer.next(1); - }); - - let component = fixture.componentInstance; - fixture.detectChanges(); - component.filesUploadingList = [file]; - - let compiled = fixture.debugElement.nativeElement; - - fixture.detectChanges(); - - expect(compiled.querySelector('#total-upload-completed').innerText).toEqual('1'); - } - ); + .then(fixture => { + componentFixture = fixture; + uploadService = service; + }); } ) ); - it('should render dialog box with css class show when an element is added to Observer', - inject([TestComponentBuilder, UploadService], - (tcb: TestComponentBuilder, updService: UploadService) => { - return tcb - .createAsync(FileUploadingDialogComponent) - .then((fixture) => { - let fileFake = { - id: 'fake-id', - name: 'fake-name' - }; - let file = new FileModel(fileFake); - file.progress = {'percent': 50}; + it('should render completed upload 1 when an element is added to Observer', () => { + let fileFake = { + id: 'fake-id', + name: 'fake-name' + }; + let file = new FileModel(fileFake); + file.progress = {'percent': 50}; - updService.addToQueue([file]); + uploadService.totalCompleted$ = new Observable(observer => { + observer.next(1); + }); + + let component = componentFixture.componentInstance; + componentFixture.detectChanges(); + component.filesUploadingList = [file]; + + let compiled = componentFixture.debugElement.nativeElement; + + componentFixture.detectChanges(); + + expect(compiled.querySelector('#total-upload-completed').innerText).toEqual('1'); + }); + + it('should render dialog box with css class show when an element is added to Observer', () => { + let fileFake = { + id: 'fake-id', + name: 'fake-name' + }; + let file = new FileModel(fileFake); + file.progress = {'percent': 50}; + + uploadService.addToQueue([file]); - let component = fixture.componentInstance; - fixture.detectChanges(); - component.filesUploadingList = [file]; + let component = componentFixture.componentInstance; + componentFixture.detectChanges(); + component.filesUploadingList = [file]; - let compiled = fixture.debugElement.nativeElement; + let compiled = componentFixture.debugElement.nativeElement; - fixture.detectChanges(); + componentFixture.detectChanges(); - expect(compiled.querySelector('.file-dialog').getAttribute('class')).toEqual('file-dialog show'); - } - ); - } - ) - ); + expect(compiled.querySelector('.file-dialog').getAttribute('class')).toEqual('file-dialog show'); + }); - it('should render dialog box with css class show when the toggleShowDialog is called', - inject([TestComponentBuilder, UploadService], - (tcb: TestComponentBuilder, updService: UploadService) => { - return tcb - .createAsync(FileUploadingDialogComponent) - .then((fixture) => { - let fileFake = { - id: 'fake-id', - name: 'fake-name' - }; - let file = new FileModel(fileFake); + it('should render dialog box with css class show when the toggleShowDialog is called', () => { + let fileFake = { + id: 'fake-id', + name: 'fake-name' + }; + let file = new FileModel(fileFake); - let component = fixture.componentInstance; - fixture.detectChanges(); - component.filesUploadingList = [file]; + let component = componentFixture.componentInstance; + componentFixture.detectChanges(); + component.filesUploadingList = [file]; - let compiled = fixture.debugElement.nativeElement; + let compiled = componentFixture.debugElement.nativeElement; - component.toggleShowDialog(); - fixture.detectChanges(); + component.toggleShowDialog(); + componentFixture.detectChanges(); - expect(compiled.querySelector('.file-dialog').getAttribute('class')).toEqual('file-dialog show'); - } - ); - } - ) - ); + expect(compiled.querySelector('.file-dialog').getAttribute('class')).toEqual('file-dialog show'); + }); - it('should render dialog box with css class hide', - inject([TestComponentBuilder], - (tcb: TestComponentBuilder) => { - return tcb - .createAsync(FileUploadingDialogComponent) - .then((fixture) => { - let fileFake = { - id: 'fake-id', - name: 'fake-name' - }; - let file = new FileModel(fileFake); - let component = fixture.componentInstance; - component.filesUploadingList = [file]; - component.isDialogActive = true; + it('should render dialog box with css class hide', () => { + let fileFake = { + id: 'fake-id', + name: 'fake-name' + }; + let file = new FileModel(fileFake); + let component = componentFixture.componentInstance; + component.filesUploadingList = [file]; + component.isDialogActive = true; - let compiled = fixture.debugElement.nativeElement; + let compiled = componentFixture.debugElement.nativeElement; - component.toggleShowDialog(); - fixture.detectChanges(); + component.toggleShowDialog(); + componentFixture.detectChanges(); - expect(compiled.querySelector('.file-dialog').getAttribute('class')).toEqual('file-dialog'); - } - ); - } - ) - ); + expect(compiled.querySelector('.file-dialog').getAttribute('class')).toEqual('file-dialog'); + }); - it('should render minimize dialog as default', - inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { - return tcb - .createAsync(FileUploadingDialogComponent) - .then((fixture) => { - let fileFake = { - id: 'fake-id', - name: 'fake-name' - }; - let file = new FileModel(fileFake); - let component = fixture.componentInstance; - component.filesUploadingList = [file]; - component.isDialogActive = true; + it('should render minimize dialog as default', () => { + let fileFake = { + id: 'fake-id', + name: 'fake-name' + }; + let file = new FileModel(fileFake); + let component = componentFixture.componentInstance; + component.filesUploadingList = [file]; + component.isDialogActive = true; - let compiled = fixture.debugElement.nativeElement; + let compiled = componentFixture.debugElement.nativeElement; - component.toggleDialogMinimize(); - fixture.detectChanges(); + component.toggleDialogMinimize(); + componentFixture.detectChanges(); - expect(compiled.querySelector('.minimize-button').getAttribute('class')).toEqual('minimize-button active'); - }); - })); + expect(compiled.querySelector('.minimize-button').getAttribute('class')).toEqual('minimize-button active'); + }); }); diff --git a/ng2-components/ng2-alfresco-upload/src/components/upload-button.component.spec.ts b/ng2-components/ng2-alfresco-upload/src/components/upload-button.component.spec.ts index 7eb5d5b765..1a8cb5d43b 100644 --- a/ng2-components/ng2-alfresco-upload/src/components/upload-button.component.spec.ts +++ b/ng2-components/ng2-alfresco-upload/src/components/upload-button.component.spec.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { describe, expect, it, inject, beforeEachProviders } from '@angular/core/testing'; +import { describe, expect, it, inject, beforeEach, beforeEachProviders } from '@angular/core/testing'; import { TestComponentBuilder } from '@angular/compiler/testing'; import { UploadButtonComponent } from './upload-button.component'; import { AlfrescoTranslationService, AlfrescoSettingsService } from 'ng2-alfresco-core'; @@ -29,6 +29,8 @@ declare var AlfrescoApi: any; describe('AlfrescoUploadButton', () => { + let uploadButtonFixture; + beforeEach( () => { window['AlfrescoApi'] = AlfrescoApiMock; window['componentHandler'] = null; @@ -42,114 +44,92 @@ describe('AlfrescoUploadButton', () => { ]; }); - it('should render upload-single-file button as default', - inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { - return tcb - .createAsync(UploadButtonComponent) - .then((fixture) => { - let component = fixture.componentInstance; - component.multipleFiles = false; - let compiled = fixture.debugElement.nativeElement; - fixture.detectChanges(); - expect(compiled.querySelector('#upload-single-file')).toBeDefined(); - }); - })); - - it('should render upload-multiple-file button if multipleFiles is true', - inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { - return tcb - .createAsync(UploadButtonComponent) - .then((fixture) => { - let component = fixture.componentInstance; - component.multipleFiles = true; - let compiled = fixture.debugElement.nativeElement; - fixture.detectChanges(); - expect(compiled.querySelector('#upload-multiple-files')).toBeDefined(); - }); - })); - - it('should render an uploadFolder button if uploadFolder is true', - inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { - return tcb - .createAsync(UploadButtonComponent) - .then((fixture) => { - let component = fixture.componentInstance; - component.uploadFolder = true; - let compiled = fixture.debugElement.nativeElement; - fixture.detectChanges(); - expect(compiled.querySelector('#uploadFolder')).toBeDefined(); - }); - })); - - it('should call uploadFile with the default folder', inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { + beforeEach( inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { return tcb .createAsync(UploadButtonComponent) - .then((fixture) => { - let component = fixture.componentInstance; - component.currentFolderPath = '/root-fake-/sites-fake/folder-fake'; - component.onSuccess = null; - component._uploaderService.uploadFilesInTheQueue = jasmine.createSpy('uploadFilesInTheQueue'); - - fixture.detectChanges(); - let file = {name: 'fake-name-1', size: 10, webkitRelativePath: 'fake-folder1/fake-name-1.json'}; - - let fakeEvent = { - currentTarget: { - files: [file] - }, - target: {value: 'fake-value'} - }; - - component.onFilesAdded(fakeEvent); - expect(component._uploaderService.uploadFilesInTheQueue).toHaveBeenCalledWith('/root-fake-/sites-fake/folder-fake', null); - }); + .then(fixture => uploadButtonFixture = fixture); })); - it('should create a folder and call upload file', inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { - return tcb - .createAsync(UploadButtonComponent) - .then((fixture) => { - let component = fixture.componentInstance; + it('should render upload-single-file button as default', () => { + let component = uploadButtonFixture.componentInstance; + component.multipleFiles = false; + let compiled = uploadButtonFixture.debugElement.nativeElement; + uploadButtonFixture.detectChanges(); + expect(compiled.querySelector('#upload-single-file')).toBeDefined(); + }); - component.uploadFiles = jasmine.createSpy('uploadFiles'); - let doneFn = jasmine.createSpy('success'); + it('should render upload-multiple-file button if multipleFiles is true', () => { + let component = uploadButtonFixture.componentInstance; + component.multipleFiles = true; + let compiled = uploadButtonFixture.debugElement.nativeElement; + uploadButtonFixture.detectChanges(); + expect(compiled.querySelector('#upload-multiple-files')).toBeDefined(); + }); - fixture.detectChanges(); + it('should render an uploadFolder button if uploadFolder is true', () => { + let component = uploadButtonFixture.componentInstance; + component.uploadFolder = true; + let compiled = uploadButtonFixture.debugElement.nativeElement; + uploadButtonFixture.detectChanges(); + expect(compiled.querySelector('#uploadFolder')).toBeDefined(); + }); - let file = {name: 'fake-name-1', size: 10, webkitRelativePath: 'fake-folder1/fake-name-1.json'}; + it('should call uploadFile with the default folder', () => { + let component = uploadButtonFixture.componentInstance; + component.currentFolderPath = '/root-fake-/sites-fake/folder-fake'; + component.onSuccess = null; + component._uploaderService.uploadFilesInTheQueue = jasmine.createSpy('uploadFilesInTheQueue'); - let fakeEvent = { - currentTarget: { - files: [file] - }, - target: {value: 'fake-value'} - }; - component.onDirectoryAdded(fakeEvent); - expect(doneFn).not.toHaveBeenCalledWith(fakeEvent); - }); - })); + uploadButtonFixture.detectChanges(); + let file = {name: 'fake-name-1', size: 10, webkitRelativePath: 'fake-folder1/fake-name-1.json'}; - it('should throws an exception when the folder already exist', inject([TestComponentBuilder], (tcb: TestComponentBuilder) => { - return tcb - .createAsync(UploadButtonComponent) - .then((fixture) => { - let component = fixture.componentInstance; + let fakeEvent = { + currentTarget: { + files: [file] + }, + target: {value: 'fake-value'} + }; - component.uploadFiles = jasmine.createSpy('uploadFiles'); + component.onFilesAdded(fakeEvent); + expect(component._uploaderService.uploadFilesInTheQueue).toHaveBeenCalledWith('/root-fake-/sites-fake/folder-fake', null); + }); - fixture.detectChanges(); + it('should create a folder and call upload file', () => { + let component = uploadButtonFixture.componentInstance; - let file = {name: 'fake-name-1', size: 10, webkitRelativePath: 'folder-duplicate-fake/fake-name-1.json'}; + component.uploadFiles = jasmine.createSpy('uploadFiles'); + let doneFn = jasmine.createSpy('success'); - let fakeEvent = { - currentTarget: { - files: [file] - }, - target: {value: 'fake-value'} - }; - component.onDirectoryAdded(fakeEvent); - expect(component.uploadFiles).not.toHaveBeenCalledWith(fakeEvent); - }); - })); + uploadButtonFixture.detectChanges(); + let file = {name: 'fake-name-1', size: 10, webkitRelativePath: 'fake-folder1/fake-name-1.json'}; + + let fakeEvent = { + currentTarget: { + files: [file] + }, + target: {value: 'fake-value'} + }; + component.onDirectoryAdded(fakeEvent); + expect(doneFn).not.toHaveBeenCalledWith(fakeEvent); + }); + + it('should throws an exception when the folder already exist', () => { + let component = uploadButtonFixture.componentInstance; + + component.uploadFiles = jasmine.createSpy('uploadFiles'); + + uploadButtonFixture.detectChanges(); + + let file = {name: 'fake-name-1', size: 10, webkitRelativePath: 'folder-duplicate-fake/fake-name-1.json'}; + + let fakeEvent = { + currentTarget: { + files: [file] + }, + target: {value: 'fake-value'} + }; + component.onDirectoryAdded(fakeEvent); + expect(component.uploadFiles).not.toHaveBeenCalledWith(fakeEvent); + }); });