mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-31 17:38:48 +00:00
#46 Fixed unit test
This commit is contained in:
@@ -35,6 +35,10 @@ export class TranslationMock {
|
|||||||
console.log('mock');
|
console.log('mock');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
addComponent() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public get(key: string|Array<string>, interpolateParams?: Object): Observable<string|any> {
|
public get(key: string|Array<string>, interpolateParams?: Object): Observable<string|any> {
|
||||||
if (!key) {
|
if (!key) {
|
||||||
throw new Error('Parameter "key" required');
|
throw new Error('Parameter "key" required');
|
||||||
|
@@ -0,0 +1,28 @@
|
|||||||
|
/*!
|
||||||
|
* @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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
export class UploadServiceMock {
|
||||||
|
private _baseUrlPath: string = 'fakebaseurlpath';
|
||||||
|
private _url: string = 'fakeurl';
|
||||||
|
private _formFields: Object = {};
|
||||||
|
|
||||||
|
public setOptions(options: any): void {
|
||||||
|
this._url = options._url || this._url;
|
||||||
|
this._baseUrlPath = options.baseUrlPath || this._baseUrlPath;
|
||||||
|
this._formFields = options.formFields != null ? options.formFields : this._formFields;
|
||||||
|
}
|
||||||
|
}
|
@@ -15,21 +15,38 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import { TEST_BROWSER_PLATFORM_PROVIDERS, TEST_BROWSER_APPLICATION_PROVIDERS } from 'angular2/platform/testing/browser';
|
||||||
import { it, describe, expect, injectAsync, TestComponentBuilder } from 'angular2/testing';
|
import { it, describe, expect, injectAsync, beforeEachProviders, TestComponentBuilder, setBaseTestProviders } from 'angular2/testing';
|
||||||
|
import { provide } from 'angular2/core';
|
||||||
import { FileUploadingDialogComponent } from './file-uploading-dialog.component';
|
import { FileUploadingDialogComponent } from './file-uploading-dialog.component';
|
||||||
|
import { FileModel } from '../models/file.model';
|
||||||
|
import { AlfrescoTranslationService } from 'ng2-alfresco-core/dist/ng2-alfresco-core';
|
||||||
|
import { TranslationMock } from '../assets/translation.service.mock';
|
||||||
|
|
||||||
describe('FileUploadDialog', () => {
|
describe('FileUploadDialog', () => {
|
||||||
|
|
||||||
|
setBaseTestProviders(TEST_BROWSER_PLATFORM_PROVIDERS, TEST_BROWSER_APPLICATION_PROVIDERS);
|
||||||
|
|
||||||
|
beforeEachProviders(() => {
|
||||||
|
return [
|
||||||
|
provide(AlfrescoTranslationService, {useClass: TranslationMock})
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
it('should render dialog box with css class show', injectAsync([TestComponentBuilder], (tcb: TestComponentBuilder) => {
|
it('should render dialog box with css class show', injectAsync([TestComponentBuilder], (tcb: TestComponentBuilder) => {
|
||||||
return tcb
|
return tcb
|
||||||
.createAsync(FileUploadingDialogComponent)
|
.createAsync(FileUploadingDialogComponent)
|
||||||
.then((fixture) => {
|
.then((fixture) => {
|
||||||
|
let fileFake = {
|
||||||
|
id: 'fake-id',
|
||||||
|
name: 'fake-name'
|
||||||
|
};
|
||||||
|
let file = new FileModel(fileFake);
|
||||||
let component = fixture.componentInstance;
|
let component = fixture.componentInstance;
|
||||||
fixture.detectChanges();
|
component.filesUploadingList = [file];
|
||||||
|
|
||||||
let compiled = fixture.debugElement.nativeElement;
|
let compiled = fixture.debugElement.nativeElement;
|
||||||
component._showDialog();
|
component.showDialog();
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
|
|
||||||
expect(compiled.querySelector('.file-dialog').getAttribute('class')).toEqual('file-dialog show');
|
expect(compiled.querySelector('.file-dialog').getAttribute('class')).toEqual('file-dialog show');
|
||||||
|
@@ -15,21 +15,21 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import { it, describe, expect, injectAsync, beforeEachProviders, TestComponentBuilder } from 'angular2/testing';
|
||||||
import { TEST_BROWSER_PLATFORM_PROVIDERS, TEST_BROWSER_APPLICATION_PROVIDERS } from 'angular2/platform/testing/browser';
|
|
||||||
import { it, describe, expect, injectAsync, beforeEachProviders, TestComponentBuilder, setBaseTestProviders } from 'angular2/testing';
|
|
||||||
import { provide } from 'angular2/core';
|
import { provide } from 'angular2/core';
|
||||||
import { UploadButtonComponent } from './upload-button.component';
|
import { UploadButtonComponent } from './upload-button.component';
|
||||||
import { AlfrescoTranslationService } from 'ng2-alfresco-core/dist/ng2-alfresco-core';
|
import { AlfrescoTranslationService } from 'ng2-alfresco-core/dist/ng2-alfresco-core';
|
||||||
import { TranslationMock } from '../assets/translation.service.mock';
|
import { TranslationMock } from '../assets/translation.service.mock';
|
||||||
|
import { UploadServiceMock } from '../assets/upload.service.mock';
|
||||||
|
import { UploadService } from '../services/upload.service';
|
||||||
|
|
||||||
|
|
||||||
describe('AlfrescoUploadButton', () => {
|
describe('AlfrescoUploadButton', () => {
|
||||||
|
|
||||||
setBaseTestProviders(TEST_BROWSER_PLATFORM_PROVIDERS, TEST_BROWSER_APPLICATION_PROVIDERS);
|
|
||||||
|
|
||||||
beforeEachProviders(() => {
|
beforeEachProviders(() => {
|
||||||
return [
|
return [
|
||||||
provide(AlfrescoTranslationService, {useClass: TranslationMock})
|
provide(AlfrescoTranslationService, {useClass: TranslationMock}),
|
||||||
|
provide(UploadService, {useClass: UploadServiceMock})
|
||||||
];
|
];
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -38,6 +38,8 @@ describe('AlfrescoUploadButton', () => {
|
|||||||
return tcb
|
return tcb
|
||||||
.createAsync(UploadButtonComponent)
|
.createAsync(UploadButtonComponent)
|
||||||
.then((fixture) => {
|
.then((fixture) => {
|
||||||
|
let component = fixture.componentInstance;
|
||||||
|
component.multipleFiles = false;
|
||||||
let compiled = fixture.debugElement.nativeElement;
|
let compiled = fixture.debugElement.nativeElement;
|
||||||
fixture.detectChanges();
|
fixture.detectChanges();
|
||||||
expect(compiled.querySelector('#upload-single-file')).toBeDefined();
|
expect(compiled.querySelector('#upload-single-file')).toBeDefined();
|
||||||
|
@@ -68,7 +68,6 @@ export class UploadDragAreaComponent {
|
|||||||
let container = this.getContainerId();
|
let container = this.getContainerId();
|
||||||
|
|
||||||
this._uploaderService.setOptions({
|
this._uploaderService.setOptions({
|
||||||
fieldName: 'filedata',
|
|
||||||
formFields: {
|
formFields: {
|
||||||
siteid: site,
|
siteid: site,
|
||||||
containerid: container
|
containerid: container
|
||||||
|
@@ -44,20 +44,18 @@ describe('AlfrescoUploadService', () => {
|
|||||||
let service: MockUploadService,
|
let service: MockUploadService,
|
||||||
options: any;
|
options: any;
|
||||||
|
|
||||||
|
options = {
|
||||||
|
host: 'fakehost',
|
||||||
|
url: '/some/cool/url',
|
||||||
|
baseUrlPath: 'fakebasepath',
|
||||||
|
formFields: {
|
||||||
|
siteid: 'fakeSite',
|
||||||
|
containerid: 'fakeFolder'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
jasmine.Ajax.install();
|
jasmine.Ajax.install();
|
||||||
|
|
||||||
options = {
|
|
||||||
url: '/some/cool/url',
|
|
||||||
withCredentials: true,
|
|
||||||
authToken: btoa('fakeadmin:fakeadmin'),
|
|
||||||
authTokenPrefix: 'Basic',
|
|
||||||
fieldName: 'fakeFileData',
|
|
||||||
formFields: {
|
|
||||||
siteid: 'fakeSite',
|
|
||||||
containerid: 'fakeFolder'
|
|
||||||
}
|
|
||||||
};
|
|
||||||
service = new MockUploadService(options);
|
service = new MockUploadService(options);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -65,44 +63,56 @@ describe('AlfrescoUploadService', () => {
|
|||||||
jasmine.Ajax.uninstall();
|
jasmine.Ajax.uninstall();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should show the default option if no method setOption is called', () => {
|
||||||
|
let empty = {};
|
||||||
|
service.setOptions(empty);
|
||||||
|
expect(service.getUrl()).toEqual('/alfresco/service/api/upload');
|
||||||
|
expect(service.getBaseUrl()).toEqual('/alfresco/api/-default-/public/alfresco/versions/1');
|
||||||
|
let formFields: Object = {};
|
||||||
|
expect(service.getFormFileds()).toEqual(formFields);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should set the basic option an empty queue if no elements are added', () => {
|
||||||
|
service.setOptions(options);
|
||||||
|
expect(service.getUrl()).toEqual('/some/cool/url');
|
||||||
|
expect(service.getBaseUrl()).toEqual('fakebasepath');
|
||||||
|
expect(service.getFormFileds()).toEqual({
|
||||||
|
siteid: 'fakeSite',
|
||||||
|
containerid: 'fakeFolder'
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
it('should return an empty queue if no elements are added', () => {
|
it('should return an empty queue if no elements are added', () => {
|
||||||
|
service.setOptions(options);
|
||||||
expect(service.getQueue().length).toEqual(0);
|
expect(service.getQueue().length).toEqual(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should add an element in the queue and returns it', () => {
|
it('should add an element in the queue and returns it', () => {
|
||||||
|
service.setOptions(options);
|
||||||
let filesFake = [{name: 'fake-name', size: 10}];
|
let filesFake = [{name: 'fake-name', size: 10}];
|
||||||
service.addToQueue(filesFake);
|
service.addToQueue(filesFake);
|
||||||
expect(service.getQueue().length).toEqual(1);
|
expect(service.getQueue().length).toEqual(1);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should add two elements in the queue and returns them', () => {
|
it('should add two elements in the queue and returns them', () => {
|
||||||
|
service.setOptions(options);
|
||||||
let filesFake = [{name: 'fake-name', size: 10}, {name: 'fake-name2', size: 20}];
|
let filesFake = [{name: 'fake-name', size: 10}, {name: 'fake-name2', size: 20}];
|
||||||
service.addToQueue(filesFake);
|
service.addToQueue(filesFake);
|
||||||
expect(service.getQueue().length).toEqual(2);
|
expect(service.getQueue().length).toEqual(2);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should make XHR done request after the file is added in the queue', () => {
|
it('should make XHR done request after the file is added in the queue', () => {
|
||||||
let mockUploadSuccessResponses = {
|
service.setOptions(options);
|
||||||
upload: {
|
|
||||||
success: {
|
|
||||||
status: 200,
|
|
||||||
responseText: '{"nodeRef":"workspace://SpacesStore/fake","fileName": "fake-name.png","status":' +
|
|
||||||
'{"code": 200,"name": "OK","description": "fake file uploaded successfully"}}'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
let filesFake = [{name: 'fake-name', size: 10}];
|
let filesFake = [{name: 'fake-name', size: 10}];
|
||||||
service.addToQueue(filesFake);
|
service.addToQueue(filesFake);
|
||||||
service.uploadFilesInTheQueue('', null);
|
service.uploadFilesInTheQueue('', null);
|
||||||
|
|
||||||
let request = jasmine.Ajax.requests.mostRecent();
|
let request = jasmine.Ajax.requests.mostRecent();
|
||||||
// request.respondWith(mockUploadSuccessResponses.upload.success);
|
expect(request.url).toBe('fakehost/some/cool/url');
|
||||||
expect(request.url).toBe('/some/cool/url');
|
|
||||||
expect(request.method).toBe('POST');
|
expect(request.method).toBe('POST');
|
||||||
// expect(request.data()).toEqual({fileName: 'fake-name.png'});
|
// expect(request.data()).toEqual({fileName: 'fake-name.png'});
|
||||||
|
|
||||||
expect(doneFn).not.toHaveBeenCalled();
|
expect(doneFn).not.toHaveBeenCalled();
|
||||||
console.log(mockUploadSuccessResponses);
|
|
||||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
jasmine.Ajax.requests.mostRecent().respondWith({
|
||||||
'status': 200,
|
'status': 200,
|
||||||
contentType: 'text/plain',
|
contentType: 'text/plain',
|
||||||
@@ -112,10 +122,11 @@ describe('AlfrescoUploadService', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should make XHR error request after an error occur', () => {
|
it('should make XHR error request after an error occur', () => {
|
||||||
|
service.setOptions(options);
|
||||||
let filesFake = [{name: 'fake-name', size: 10}];
|
let filesFake = [{name: 'fake-name', size: 10}];
|
||||||
service.addToQueue(filesFake);
|
service.addToQueue(filesFake);
|
||||||
service.uploadFilesInTheQueue('', null);
|
service.uploadFilesInTheQueue('', null);
|
||||||
expect(jasmine.Ajax.requests.mostRecent().url).toBe('/some/cool/url');
|
expect(jasmine.Ajax.requests.mostRecent().url).toBe('fakehost/some/cool/url');
|
||||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
jasmine.Ajax.requests.mostRecent().respondWith({
|
||||||
'status': 404,
|
'status': 404,
|
||||||
contentType: 'text/plain',
|
contentType: 'text/plain',
|
||||||
@@ -125,6 +136,7 @@ describe('AlfrescoUploadService', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should make XHR abort request after the xhr abort is called', () => {
|
it('should make XHR abort request after the xhr abort is called', () => {
|
||||||
|
service.setOptions(options);
|
||||||
let filesFake = [{name: 'fake-name', size: 10}];
|
let filesFake = [{name: 'fake-name', size: 10}];
|
||||||
service.addToQueue(filesFake);
|
service.addToQueue(filesFake);
|
||||||
service.uploadFilesInTheQueue('', null);
|
service.uploadFilesInTheQueue('', null);
|
||||||
@@ -134,12 +146,13 @@ describe('AlfrescoUploadService', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should make XHR done request after the file is upload', () => {
|
it('should make XHR done request after the file is upload', () => {
|
||||||
|
service.setOptions(options);
|
||||||
let filesFake = {name: 'fake-name', size: 10};
|
let filesFake = {name: 'fake-name', size: 10};
|
||||||
|
|
||||||
let uploadingFileModel = new FileModel(filesFake);
|
let uploadingFileModel = new FileModel(filesFake);
|
||||||
service.uploadFile(uploadingFileModel, '', null);
|
service.uploadFile(uploadingFileModel, '', null);
|
||||||
|
|
||||||
expect(jasmine.Ajax.requests.mostRecent().url).toBe('/some/cool/url');
|
expect(jasmine.Ajax.requests.mostRecent().url).toBe('fakehost/some/cool/url');
|
||||||
jasmine.Ajax.requests.mostRecent().respondWith({
|
jasmine.Ajax.requests.mostRecent().respondWith({
|
||||||
'status': 200,
|
'status': 200,
|
||||||
contentType: 'text/plain',
|
contentType: 'text/plain',
|
||||||
@@ -147,5 +160,4 @@ describe('AlfrescoUploadService', () => {
|
|||||||
});
|
});
|
||||||
expect(doneFn).toHaveBeenCalledWith('Single File uploaded');
|
expect(doneFn).toHaveBeenCalledWith('Single File uploaded');
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@@ -60,6 +60,7 @@ export class UploadService {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public setOptions(options: any): void {
|
public setOptions(options: any): void {
|
||||||
|
this._url = options.url || this._url;
|
||||||
this._baseUrlPath = options.baseUrlPath || this._baseUrlPath;
|
this._baseUrlPath = options.baseUrlPath || this._baseUrlPath;
|
||||||
this._formFields = options.formFields != null ? options.formFields : this._formFields;
|
this._formFields = options.formFields != null ? options.formFields : this._formFields;
|
||||||
}
|
}
|
||||||
@@ -68,24 +69,32 @@ export class UploadService {
|
|||||||
* Get the host
|
* Get the host
|
||||||
* @returns {string}
|
* @returns {string}
|
||||||
*/
|
*/
|
||||||
public get host(): string {
|
public getHost(): string {
|
||||||
return this._host;
|
return this._host;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the host
|
* Get the url
|
||||||
* @param value
|
* @returns {string}
|
||||||
*/
|
*/
|
||||||
public set host(value: string) {
|
public getUrl(): string {
|
||||||
this._host = value;
|
return this._url;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the base url
|
* Get the base url
|
||||||
* @returns {string}
|
* @returns {string}
|
||||||
*/
|
*/
|
||||||
private getBaseUrl(): string {
|
public getBaseUrl(): string {
|
||||||
return this._host + this._baseUrlPath;
|
return this._baseUrlPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the form fields
|
||||||
|
* @returns {Object}
|
||||||
|
*/
|
||||||
|
public getFormFileds(): Object {
|
||||||
|
return this._formFields;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -102,7 +111,6 @@ export class UploadService {
|
|||||||
*/
|
*/
|
||||||
private getAlfrescoClient() {
|
private getAlfrescoClient() {
|
||||||
let defaultClient = new AlfrescoApi.ApiClient();
|
let defaultClient = new AlfrescoApi.ApiClient();
|
||||||
defaultClient.basePath = this.getBaseUrl();
|
|
||||||
|
|
||||||
// Configure HTTP basic authorization: basicAuth
|
// Configure HTTP basic authorization: basicAuth
|
||||||
let basicAuth = defaultClient.authentications['basicAuth'];
|
let basicAuth = defaultClient.authentications['basicAuth'];
|
||||||
@@ -206,6 +214,7 @@ export class UploadService {
|
|||||||
form.append('uploaddirectory', directory);
|
form.append('uploaddirectory', directory);
|
||||||
|
|
||||||
let xmlHttpRequest = this.createXMLHttpRequestInstance(uploadingFileModel, elementEmit);
|
let xmlHttpRequest = this.createXMLHttpRequestInstance(uploadingFileModel, elementEmit);
|
||||||
|
uploadingFileModel._xmlHttpRequest = xmlHttpRequest;
|
||||||
|
|
||||||
xmlHttpRequest.open(this._method, this._host + this._url, true);
|
xmlHttpRequest.open(this._method, this._host + this._url, true);
|
||||||
let authToken = btoa(basicAuth.username + ':' + basicAuth.password);
|
let authToken = btoa(basicAuth.username + ':' + basicAuth.password);
|
||||||
|
Reference in New Issue
Block a user