easier mocking/spying using ts-mocks
This commit is contained in:
parent
4303f658e8
commit
40e6540074
8 changed files with 73 additions and 22 deletions
|
@ -1,22 +1,22 @@
|
|||
import { DockerfileServiceImpl, DockerfileInfoImpl } from './dockerfile.service.impl';
|
||||
import { DatafileService } from '../datafile/datafile.service';
|
||||
import Spy = jasmine.Spy;
|
||||
import { Mock } from 'ts-mocks';
|
||||
|
||||
|
||||
describe("DockerfileServiceImpl", () => {
|
||||
var dockerfileServiceImpl: DockerfileServiceImpl;
|
||||
var dataFileServiceMock: any;
|
||||
var datafileServiceMock: Mock<DatafileService>;
|
||||
var datafileService: DatafileService;
|
||||
var configMock: any;
|
||||
var fileReaderMock: FileReader;
|
||||
|
||||
beforeEach(() => {
|
||||
dataFileServiceMock = jasmine.createSpyObj('dataFileServiceMock', [
|
||||
'readDataArrayAsPossibleArchive',
|
||||
'arrayToString',
|
||||
'blobToString',
|
||||
]);
|
||||
datafileServiceMock = new Mock<DatafileService>();
|
||||
datafileService = datafileServiceMock.Object;
|
||||
configMock = jasmine.createSpyObj('configMock', ['getDomain']);
|
||||
fileReaderMock = new FileReader();
|
||||
dockerfileServiceImpl = new DockerfileServiceImpl(dataFileServiceMock, configMock, () => fileReaderMock);
|
||||
dockerfileServiceImpl = new DockerfileServiceImpl(datafileService, configMock, () => fileReaderMock);
|
||||
});
|
||||
|
||||
describe("getDockerfile", () => {
|
||||
|
@ -27,16 +27,15 @@ describe("DockerfileServiceImpl", () => {
|
|||
var forDataSpy: Spy;
|
||||
|
||||
beforeEach(() => {
|
||||
dataFileServiceMock.readDataArrayAsPossibleArchive.and.callFake((buf, success, failure) => {
|
||||
datafileServiceMock.setup(mock => mock.readDataArrayAsPossibleArchive).is((buf, success, failure) => {
|
||||
failure([]);
|
||||
});
|
||||
|
||||
dataFileServiceMock.arrayToString.and.callFake((buf, callback) => {
|
||||
var contents: string = "";
|
||||
callback(contents);
|
||||
datafileServiceMock.setup(mock => mock.arrayToString).is((buf, callback) => {
|
||||
callback("");
|
||||
});
|
||||
|
||||
dataFileServiceMock.blobToString.and.callFake((blob, callback) => {
|
||||
datafileServiceMock.setup(mock => mock.blobToString).is((blob, callback) => {
|
||||
callback(blob.toString());
|
||||
});
|
||||
|
||||
|
@ -55,7 +54,7 @@ describe("DockerfileServiceImpl", () => {
|
|||
dockerfileServiceImpl.getDockerfile(file)
|
||||
.then((dockerfile: DockerfileInfoImpl) => {
|
||||
expect(readAsFileBufferSpy.calls.argsFor(0)[0]).toEqual(file);
|
||||
expect(dataFileServiceMock.readDataArrayAsPossibleArchive).toHaveBeenCalled();
|
||||
expect(datafileService.readDataArrayAsPossibleArchive).toHaveBeenCalled();
|
||||
done();
|
||||
})
|
||||
.catch((error: string) => {
|
||||
|
@ -67,7 +66,7 @@ describe("DockerfileServiceImpl", () => {
|
|||
it("calls datafile service to convert file to string if given file is not an archive", (done) => {
|
||||
dockerfileServiceImpl.getDockerfile(file)
|
||||
.then((dockerfile: DockerfileInfoImpl) => {
|
||||
expect(dataFileServiceMock.arrayToString.calls.argsFor(0)[0]).toEqual(file);
|
||||
expect((<Spy>datafileService.arrayToString).calls.argsFor(0)[0]).toEqual(file);
|
||||
done();
|
||||
})
|
||||
.catch((error: string) => {
|
||||
|
@ -102,7 +101,7 @@ describe("DockerfileServiceImpl", () => {
|
|||
});
|
||||
|
||||
it("returns rejected promise if given archive file with no Dockerfile present in root directory", (done) => {
|
||||
dataFileServiceMock.readDataArrayAsPossibleArchive.and.callFake((buf, success, failure) => {
|
||||
datafileServiceMock.setup(mock => mock.readDataArrayAsPossibleArchive).is((buf, success, failure) => {
|
||||
success(invalidArchiveFile);
|
||||
});
|
||||
|
||||
|
@ -118,14 +117,14 @@ describe("DockerfileServiceImpl", () => {
|
|||
});
|
||||
|
||||
it("calls datafile service to convert blob to string if given file is an archive", (done) => {
|
||||
dataFileServiceMock.readDataArrayAsPossibleArchive.and.callFake((buf, success, failure) => {
|
||||
datafileServiceMock.setup(mock => mock.readDataArrayAsPossibleArchive).is((buf, success, failure) => {
|
||||
success(validArchiveFile);
|
||||
});
|
||||
|
||||
dockerfileServiceImpl.getDockerfile(file)
|
||||
.then((dockerfile: DockerfileInfoImpl) => {
|
||||
expect(validArchiveFile[0].toBlob).toHaveBeenCalled();
|
||||
expect(dataFileServiceMock.blobToString.calls.argsFor(0)[0]).toEqual(validArchiveFile[0].toBlob());
|
||||
expect((<Spy>datafileService.blobToString).calls.argsFor(0)[0]).toEqual(validArchiveFile[0].toBlob());
|
||||
done();
|
||||
})
|
||||
.catch((error: string) => {
|
||||
|
@ -137,7 +136,7 @@ describe("DockerfileServiceImpl", () => {
|
|||
it("returns rejected promise if given archive file with invalid Dockerfile", (done) => {
|
||||
forDataSpy.and.returnValue(null);
|
||||
invalidArchiveFile[0].name = 'Dockerfile';
|
||||
dataFileServiceMock.readDataArrayAsPossibleArchive.and.callFake((buf, success, failure) => {
|
||||
datafileServiceMock.setup(mock => mock.readDataArrayAsPossibleArchive).is((buf, success, failure) => {
|
||||
success(invalidArchiveFile);
|
||||
});
|
||||
|
||||
|
@ -153,7 +152,7 @@ describe("DockerfileServiceImpl", () => {
|
|||
});
|
||||
|
||||
it("returns resolved promise of new DockerfileInfoImpl instance if given archive with valid Dockerfile", (done) => {
|
||||
dataFileServiceMock.readDataArrayAsPossibleArchive.and.callFake((buf, success, failure) => {
|
||||
datafileServiceMock.setup(mock => mock.readDataArrayAsPossibleArchive).is((buf, success, failure) => {
|
||||
success(validArchiveFile);
|
||||
});
|
||||
|
||||
|
|
Reference in a new issue