tests for DataFileServiceImpl
This commit is contained in:
parent
7416534ab8
commit
527e108d2e
3 changed files with 92 additions and 8 deletions
|
@ -1,5 +1,6 @@
|
||||||
import { DataFileServiceImpl } from './datafile.service.impl';
|
import { DataFileServiceImpl } from './datafile.service.impl';
|
||||||
import { Mock } from 'ts-mocks';
|
import { Mock } from 'ts-mocks';
|
||||||
|
import Spy = jasmine.Spy;
|
||||||
|
|
||||||
|
|
||||||
describe("DataFileServiceImpl", () => {
|
describe("DataFileServiceImpl", () => {
|
||||||
|
@ -14,20 +15,101 @@ describe("DataFileServiceImpl", () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("blobToString", () => {
|
describe("blobToString", () => {
|
||||||
|
var data: any;
|
||||||
|
var blob: Blob;
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
|
data = {hello: "world"};
|
||||||
|
blob = new Blob([JSON.stringify(data)]);
|
||||||
|
|
||||||
fileReaderMock.setup(mock => mock.readAsText).is((blob: Blob) => {
|
fileReaderMock.setup(mock => mock.readAsText).is((blob: Blob) => {
|
||||||
fileReaderMock.Object.onload(<any>{target: {result: blob.toString()}});
|
fileReaderMock.Object.onload(<any>{target: {result: data}});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("calls file reader to read given blob", (done) => {
|
||||||
|
dataFileServiceImpl.blobToString(blob, (result) => {
|
||||||
|
expect((<Spy>fileReader.readAsText).calls.argsFor(0)[0]).toEqual(blob);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("calls given callback with null if file reader errors", (done) => {
|
||||||
|
fileReaderMock.setup(mock => mock.readAsText).is((blob: Blob) => {
|
||||||
|
fileReaderMock.Object.onerror(new ErrorEvent("onerror"));
|
||||||
|
});
|
||||||
|
|
||||||
|
dataFileServiceImpl.blobToString(blob, (result) => {
|
||||||
|
expect(result).toBe(null);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("calls given callback with null if file reader aborts", (done) => {
|
||||||
|
fileReaderMock.setup(mock => mock.readAsText).is((blob: Blob) => {
|
||||||
|
fileReaderMock.Object.onabort(new Event("onabort"));
|
||||||
|
});
|
||||||
|
|
||||||
|
dataFileServiceImpl.blobToString(blob, (result) => {
|
||||||
|
expect(result).toBe(null);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("calls given callback with result when file reader successfully loads", (done) => {
|
||||||
|
dataFileServiceImpl.blobToString(blob, (result) => {
|
||||||
|
expect(result).toBe(data);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("arrayToString", () => {
|
describe("arrayToString", () => {
|
||||||
|
var blob: Blob;
|
||||||
|
var data: any;
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
fileReaderMock.setup(mock => mock.readAsArrayBuffer).is((blob: Blob) => {
|
data = JSON.stringify({hello: "world"});
|
||||||
fileReaderMock.Object.onload(<any>{target: {result: blob.toString()}});
|
blob = new Blob([data], {type: 'application/octet-binary'});
|
||||||
|
|
||||||
|
fileReaderMock.setup(mock => mock.readAsText).is((blob: Blob) => {
|
||||||
|
fileReaderMock.Object.onload(<any>{target: {result: data}});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("calls file reader to read blob created from given buffer", (done) => {
|
||||||
|
dataFileServiceImpl.arrayToString(data, (result) => {
|
||||||
|
expect((<Spy>fileReader.readAsText).calls.argsFor(0)[0]).toEqual(blob);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("calls given callback with null if file reader errors", (done) => {
|
||||||
|
fileReaderMock.setup(mock => mock.readAsText).is((blob: Blob) => {
|
||||||
|
fileReaderMock.Object.onerror(new ErrorEvent("onerror"));
|
||||||
|
});
|
||||||
|
|
||||||
|
dataFileServiceImpl.arrayToString(data, (result) => {
|
||||||
|
expect(result).toEqual(null);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("calls given callback with null if file reader aborts", (done) => {
|
||||||
|
fileReaderMock.setup(mock => mock.readAsText).is((blob: Blob) => {
|
||||||
|
fileReaderMock.Object.onabort(new Event("onabort"));
|
||||||
|
});
|
||||||
|
|
||||||
|
dataFileServiceImpl.arrayToString(data, (result) => {
|
||||||
|
expect(result).toEqual(null);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("calls given callback with result when file reader successfully loads", (done) => {
|
||||||
|
dataFileServiceImpl.arrayToString(data, (result) => {
|
||||||
|
expect(result).toEqual(data);
|
||||||
|
done();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -12,15 +12,17 @@ export class DataFileServiceImpl implements DataFileService {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public blobToString(blob: any, callback: (result: string) => void): void {
|
public blobToString(blob: Blob, callback: (result: string) => void): void {
|
||||||
var reader: FileReader = new FileReader();
|
var reader: FileReader = this.fileReaderFactory();
|
||||||
reader.onload = (event: Event) => callback(event.target['result']);
|
reader.onload = (event: Event) => callback(event.target['result']);
|
||||||
|
reader.onerror = (event: Event) => callback(null);
|
||||||
|
reader.onabort = (event: Event) => callback(null);
|
||||||
reader.readAsText(blob);
|
reader.readAsText(blob);
|
||||||
}
|
}
|
||||||
|
|
||||||
public arrayToString(buf: any, callback: (result: string) => void): void {
|
public arrayToString(buf: any, callback: (result: string) => void): void {
|
||||||
var blob: Blob = new Blob([buf], {type: 'application/octet-binary'});
|
const blob: Blob = new Blob([buf], {type: 'application/octet-binary'});
|
||||||
var reader = new FileReader();
|
var reader: FileReader = this.fileReaderFactory();
|
||||||
reader.onload = (event: Event) => callback(event.target['result']);
|
reader.onload = (event: Event) => callback(event.target['result']);
|
||||||
reader.onerror = (event: Event) => callback(null);
|
reader.onerror = (event: Event) => callback(null);
|
||||||
reader.onabort = (event: Event) => callback(null);
|
reader.onabort = (event: Event) => callback(null);
|
||||||
|
|
|
@ -13,7 +13,7 @@ export abstract class DataFileService {
|
||||||
* @param blob The blob to convert.
|
* @param blob The blob to convert.
|
||||||
* @param callback The success callback given converted blob.
|
* @param callback The success callback given converted blob.
|
||||||
*/
|
*/
|
||||||
public abstract blobToString(blob: any, callback: (result: string) => void): void;
|
public abstract blobToString(blob: Blob, callback: (result: string) => void): void;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert array to string.
|
* Convert array to string.
|
||||||
|
|
Reference in a new issue