mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-31 17:38:48 +00:00
#46 File uploader unit test
This commit is contained in:
@@ -33,6 +33,7 @@ export class UploadService {
|
||||
private _fieldName: string = 'file';
|
||||
private _formFields: Object = {};
|
||||
private _withCredentials: boolean;
|
||||
private _xmlHttpRequest: XMLHttpRequest;
|
||||
|
||||
private _queue: FileModel[] = [];
|
||||
|
||||
@@ -82,6 +83,43 @@ export class UploadService {
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* The method create a new XMLHttpRequest instance if doesn't exist
|
||||
*/
|
||||
private _configureXMLHttpRequest() {
|
||||
if (this._xmlHttpRequest == undefined) {
|
||||
this._xmlHttpRequest = new XMLHttpRequest();
|
||||
this._xmlHttpRequest.upload.onprogress = (e) => {
|
||||
if (e.lengthComputable) {
|
||||
let percent = Math.round(e.loaded / e.total * 100);
|
||||
uploadingFileModel.setProgres({
|
||||
total: e.total,
|
||||
loaded: e.loaded,
|
||||
percent: percent
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
this._xmlHttpRequest.upload.onabort = (e) => {
|
||||
uploadingFileModel.setAbort();
|
||||
};
|
||||
|
||||
this._xmlHttpRequest.upload.onerror = (e) => {
|
||||
uploadingFileModel.setError();
|
||||
};
|
||||
|
||||
this._xmlHttpRequest.onreadystatechange = () => {
|
||||
if (this._xmlHttpRequest.readyState === XMLHttpRequest.DONE) {
|
||||
uploadingFileModel.onFinished(
|
||||
this._xmlHttpRequest.status,
|
||||
this._xmlHttpRequest.statusText,
|
||||
this._xmlHttpRequest.response
|
||||
);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Upload a file, and enrich it with the xhr.
|
||||
*
|
||||
@@ -95,46 +133,17 @@ export class UploadService {
|
||||
form.append(key, this._formFields[key]);
|
||||
});
|
||||
|
||||
let xmlHttpRequest = new XMLHttpRequest();
|
||||
uploadingFileModel.setXMLHttpRequest(xmlHttpRequest);
|
||||
this._configureXMLHttpRequest();
|
||||
uploadingFileModel.setXMLHttpRequest(this._xmlHttpRequest);
|
||||
|
||||
xmlHttpRequest.upload.onprogress = (e) => {
|
||||
if (e.lengthComputable) {
|
||||
let percent = Math.round(e.loaded / e.total * 100);
|
||||
uploadingFileModel.setProgres({
|
||||
total: e.total,
|
||||
loaded: e.loaded,
|
||||
percent: percent
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
xmlHttpRequest.upload.onabort = (e) => {
|
||||
uploadingFileModel.setAbort();
|
||||
};
|
||||
|
||||
xmlHttpRequest.upload.onerror = (e) => {
|
||||
uploadingFileModel.setError();
|
||||
};
|
||||
|
||||
xmlHttpRequest.onreadystatechange = () => {
|
||||
if (xmlHttpRequest.readyState === XMLHttpRequest.DONE) {
|
||||
uploadingFileModel.onFinished(
|
||||
xmlHttpRequest.status,
|
||||
xmlHttpRequest.statusText,
|
||||
xmlHttpRequest.response
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
xmlHttpRequest.open(this._method, this._url, true);
|
||||
xmlHttpRequest.withCredentials = this._withCredentials;
|
||||
this._xmlHttpRequest.open(this._method, this._url, true);
|
||||
this._xmlHttpRequest.withCredentials = this._withCredentials;
|
||||
|
||||
if (this._authToken) {
|
||||
xmlHttpRequest.setRequestHeader('Authorization', `${this._authTokenPrefix} ${this._authToken}`);
|
||||
this._xmlHttpRequest.setRequestHeader('Authorization', `${this._authTokenPrefix} ${this._authToken}`);
|
||||
}
|
||||
|
||||
xmlHttpRequest.send(form);
|
||||
this._xmlHttpRequest.send(form);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -154,4 +163,12 @@ export class UploadService {
|
||||
private _isFile(file: any): boolean {
|
||||
return file !== null && (file instanceof Blob || (file.name && file.size));
|
||||
}
|
||||
|
||||
/**
|
||||
* Set XMLHttpRequest method
|
||||
* @param xhr
|
||||
*/
|
||||
public setXMLHttpRequest(xhr: XMLHttpRequest) {
|
||||
this._xmlHttpRequest = xhr;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user