diff --git a/package-lock.json b/package-lock.json
index c1a0565e..1fec2639 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -4296,6 +4296,7 @@
"anymatch": "^2.0.0",
"async-each": "^1.0.0",
"braces": "^2.3.0",
+ "fsevents": "^1.2.2",
"glob-parent": "^3.1.0",
"inherits": "^2.0.1",
"is-binary-path": "^1.0.0",
@@ -7042,6 +7043,535 @@
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true
},
+ "fsevents": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.8.tgz",
+ "integrity": "sha512-tPvHgPGB7m40CZ68xqFGkKuzN+RnpGmSV+hgeKxhRpbxdqKXUFJGC3yonBOLzQBcJyGpdZFDfCsdOC2KFsXzeA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "nan": "^2.12.1",
+ "node-pre-gyp": "^0.12.0"
+ },
+ "dependencies": {
+ "abbrev": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "are-we-there-yet": {
+ "version": "1.1.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.6"
+ }
+ },
+ "balanced-match": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "chownr": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "debug": {
+ "version": "4.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "deep-extend": {
+ "version": "0.6.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "detect-libc": {
+ "version": "1.0.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "fs-minipass": {
+ "version": "1.2.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "aproba": "^1.0.3",
+ "console-control-strings": "^1.0.0",
+ "has-unicode": "^2.0.0",
+ "object-assign": "^4.1.0",
+ "signal-exit": "^3.0.0",
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wide-align": "^1.1.0"
+ }
+ },
+ "glob": {
+ "version": "7.1.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "has-unicode": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "ignore-walk": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minimatch": "^3.0.4"
+ }
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "bundled": true,
+ "dev": true
+ },
+ "ini": {
+ "version": "1.3.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "bundled": true,
+ "dev": true
+ },
+ "minipass": {
+ "version": "2.3.5",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.0"
+ }
+ },
+ "minizlib": {
+ "version": "1.2.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "minipass": "^2.2.1"
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "ms": {
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "needle": {
+ "version": "2.3.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "debug": "^4.1.0",
+ "iconv-lite": "^0.4.4",
+ "sax": "^1.2.4"
+ }
+ },
+ "node-pre-gyp": {
+ "version": "0.12.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "detect-libc": "^1.0.2",
+ "mkdirp": "^0.5.1",
+ "needle": "^2.2.1",
+ "nopt": "^4.0.1",
+ "npm-packlist": "^1.1.6",
+ "npmlog": "^4.0.2",
+ "rc": "^1.2.7",
+ "rimraf": "^2.6.1",
+ "semver": "^5.3.0",
+ "tar": "^4"
+ }
+ },
+ "nopt": {
+ "version": "4.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "abbrev": "1",
+ "osenv": "^0.1.4"
+ }
+ },
+ "npm-bundled": {
+ "version": "1.0.6",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "npm-packlist": {
+ "version": "1.4.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ignore-walk": "^3.0.1",
+ "npm-bundled": "^1.0.1"
+ }
+ },
+ "npmlog": {
+ "version": "4.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "are-we-there-yet": "~1.1.2",
+ "console-control-strings": "~1.1.0",
+ "gauge": "~2.7.3",
+ "set-blocking": "~2.0.0"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "osenv": {
+ "version": "0.1.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "process-nextick-args": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "rc": {
+ "version": "1.2.8",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "deep-extend": "^0.6.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.6",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "bundled": true,
+ "dev": true
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "sax": {
+ "version": "1.2.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "semver": {
+ "version": "5.7.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "tar": {
+ "version": "4.4.8",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "chownr": "^1.1.1",
+ "fs-minipass": "^1.2.5",
+ "minipass": "^2.3.4",
+ "minizlib": "^1.1.1",
+ "mkdirp": "^0.5.0",
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.2"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "wide-align": {
+ "version": "1.1.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "string-width": "^1.0.2 || 2"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "yallist": {
+ "version": "3.0.3",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
"fstream": {
"version": "1.0.11",
"resolved": "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz",
@@ -14185,6 +14715,7 @@
"capture-exit": "^1.2.0",
"exec-sh": "^0.2.0",
"fb-watchman": "^2.0.0",
+ "fsevents": "^1.2.3",
"micromatch": "^3.1.4",
"minimist": "^1.1.1",
"walker": "~1.0.5",
diff --git a/test/common/Home.test.js b/test/common/Home.test.js
index 83e01ba2..6fb094a5 100644
--- a/test/common/Home.test.js
+++ b/test/common/Home.test.js
@@ -1,7 +1,6 @@
import { shallow } from 'enzyme';
import { values } from 'ramda';
import React from 'react';
-import * as sinon from 'sinon';
import Home from '../../src/common/Home';
describe('', () => {
@@ -28,11 +27,11 @@ describe('', () => {
});
it('resets selected server when mounted', () => {
- const resetSelectedServer = sinon.spy();
+ const resetSelectedServer = jest.fn();
- expect(resetSelectedServer.called).toEqual(false);
+ expect(resetSelectedServer).not.toHaveBeenCalled();
createComponent({ resetSelectedServer });
- expect(resetSelectedServer.called).toEqual(true);
+ expect(resetSelectedServer).toHaveBeenCalled();
});
it('shows link to create server when no servers exist', () => {
diff --git a/test/common/ScrollToTop.test.js b/test/common/ScrollToTop.test.js
index 77d428e5..b49450db 100644
--- a/test/common/ScrollToTop.test.js
+++ b/test/common/ScrollToTop.test.js
@@ -1,12 +1,11 @@
import React from 'react';
import { shallow } from 'enzyme';
-import * as sinon from 'sinon';
import createScrollToTop from '../../src/common/ScrollToTop';
describe('', () => {
let wrapper;
const window = {
- scrollTo: sinon.spy(),
+ scrollTo: jest.fn(),
};
beforeEach(() => {
@@ -17,13 +16,13 @@ describe('', () => {
afterEach(() => {
wrapper.unmount();
- window.scrollTo.resetHistory();
+ window.scrollTo.mockReset();
});
it('just renders children', () => expect(wrapper.text()).toEqual('Foobar'));
it('scrolls to top when location changes', () => {
wrapper.instance().componentDidUpdate({ location: { href: 'bar' } });
- expect(window.scrollTo.calledOnce).toEqual(true);
+ expect(window.scrollTo).toHaveBeenCalledTimes(1);
});
});
diff --git a/test/servers/CreateServer.test.js b/test/servers/CreateServer.test.js
index ed6aff67..69a7888e 100644
--- a/test/servers/CreateServer.test.js
+++ b/test/servers/CreateServer.test.js
@@ -1,20 +1,18 @@
import React from 'react';
import { shallow } from 'enzyme';
import { identity } from 'ramda';
-import sinon from 'sinon';
import createServerConstruct from '../../src/servers/CreateServer';
describe('', () => {
let wrapper;
const ImportServersBtn = () => '';
- const createServerMock = sinon.fake();
+ const createServerMock = jest.fn();
const historyMock = {
- push: sinon.fake(),
+ push: jest.fn(),
};
beforeEach(() => {
- createServerMock.resetHistory();
- historyMock.push.resetHistory();
+ createServerMock.mockReset();
const CreateServer = createServerConstruct(ImportServersBtn);
@@ -44,8 +42,8 @@ describe('', () => {
return '';
} });
- expect(createServerMock.callCount).toEqual(1);
- expect(historyMock.push.callCount).toEqual(1);
+ expect(createServerMock).toHaveBeenCalledTimes(1);
+ expect(historyMock.push).toHaveBeenCalledTimes(1);
});
it('updates state when inputs are changed', () => {
diff --git a/test/servers/DeleteServerModal.test.js b/test/servers/DeleteServerModal.test.js
index ab06004d..21f938c7 100644
--- a/test/servers/DeleteServerModal.test.js
+++ b/test/servers/DeleteServerModal.test.js
@@ -1,20 +1,19 @@
import React from 'react';
import { shallow } from 'enzyme';
-import sinon from 'sinon';
import { Modal, ModalBody, ModalFooter, ModalHeader } from 'reactstrap';
import DeleteServerModal from '../../src/servers/DeleteServerModal';
describe('', () => {
let wrapper;
- const deleteServerMock = sinon.fake();
- const historyMock = { push: sinon.fake() };
- const toggleMock = sinon.fake();
+ const deleteServerMock = jest.fn();
+ const historyMock = { push: jest.fn() };
+ const toggleMock = jest.fn();
const serverName = 'the_server_name';
beforeEach(() => {
- toggleMock.resetHistory();
- deleteServerMock.resetHistory();
- historyMock.push.resetHistory();
+ deleteServerMock.mockReset();
+ toggleMock.mockReset();
+ historyMock.push.mockReset();
wrapper = shallow(
', () => {
cancelBtn.simulate('click');
- expect(toggleMock.callCount).toEqual(1);
- expect(deleteServerMock.callCount).toEqual(0);
- expect(historyMock.push.callCount).toEqual(0);
+ expect(toggleMock).toHaveBeenCalledTimes(1);
+ expect(deleteServerMock).not.toHaveBeenCalled();
+ expect(historyMock.push).not.toHaveBeenCalled();
});
it('deletes server when clicking accept button', () => {
@@ -58,8 +57,8 @@ describe('', () => {
acceptBtn.simulate('click');
- expect(toggleMock.callCount).toEqual(1);
- expect(deleteServerMock.callCount).toEqual(1);
- expect(historyMock.push.callCount).toEqual(1);
+ expect(toggleMock).toHaveBeenCalledTimes(1);
+ expect(deleteServerMock).toHaveBeenCalledTimes(1);
+ expect(historyMock.push).toHaveBeenCalledTimes(1);
});
});
diff --git a/test/servers/helpers/ImportServersBtn.test.js b/test/servers/helpers/ImportServersBtn.test.js
index 269cd300..d4c68186 100644
--- a/test/servers/helpers/ImportServersBtn.test.js
+++ b/test/servers/helpers/ImportServersBtn.test.js
@@ -1,25 +1,24 @@
import React from 'react';
-import sinon from 'sinon';
import { shallow } from 'enzyme';
import { UncontrolledTooltip } from 'reactstrap';
import importServersBtnConstruct from '../../../src/servers/helpers/ImportServersBtn';
describe('', () => {
let wrapper;
- const onImportMock = sinon.fake();
- const createServersMock = sinon.fake();
+ const onImportMock = jest.fn();
+ const createServersMock = jest.fn();
const serversImporterMock = {
- importServersFromFile: sinon.fake.returns(Promise.resolve([])),
+ importServersFromFile: jest.fn().mockResolvedValue([]),
};
const fileRef = {
- current: { click: sinon.fake() },
+ current: { click: jest.fn() },
};
beforeEach(() => {
- onImportMock.resetHistory();
- createServersMock.resetHistory();
- serversImporterMock.importServersFromFile.resetHistory();
- fileRef.current.click.resetHistory();
+ onImportMock.mockReset();
+ createServersMock.mockReset();
+ serversImporterMock.importServersFromFile.mockClear();
+ fileRef.current.click.mockReset();
const ImportServersBtn = importServersBtnConstruct(serversImporterMock);
@@ -40,7 +39,7 @@ describe('', () => {
btn.simulate('click');
- expect(fileRef.current.click.callCount).toEqual(1);
+ expect(fileRef.current.click).toHaveBeenCalledTimes(1);
});
it('imports servers when file input changes', (done) => {
@@ -49,9 +48,9 @@ describe('', () => {
file.simulate('change', { target: { files: [ '' ] } });
setImmediate(() => {
- expect(serversImporterMock.importServersFromFile.callCount).toEqual(1);
- expect(createServersMock.callCount).toEqual(1);
- expect(onImportMock.callCount).toEqual(1);
+ expect(serversImporterMock.importServersFromFile).toHaveBeenCalledTimes(1);
+ expect(createServersMock).toHaveBeenCalledTimes(1);
+ expect(onImportMock).toHaveBeenCalledTimes(1);
done();
});
});
diff --git a/test/servers/reducers/selectedServer.test.js b/test/servers/reducers/selectedServer.test.js
index 423637d6..3a0bec3c 100644
--- a/test/servers/reducers/selectedServer.test.js
+++ b/test/servers/reducers/selectedServer.test.js
@@ -1,4 +1,3 @@
-import * as sinon from 'sinon';
import reducer, {
selectServer,
resetSelectedServer,
@@ -31,31 +30,35 @@ describe('selectedServerReducer', () => {
id: serverId,
};
const ServersServiceMock = {
- findServerById: sinon.fake.returns(selectedServer),
+ findServerById: jest.fn(() => selectedServer),
};
afterEach(() => {
- ServersServiceMock.findServerById.resetHistory();
+ ServersServiceMock.findServerById.mockClear();
});
it('dispatches proper actions', () => {
- const dispatch = sinon.spy();
+ const dispatch = jest.fn();
const expectedDispatchCalls = 2;
selectServer(ServersServiceMock)(serverId)(dispatch);
- expect(dispatch.callCount).toEqual(expectedDispatchCalls);
- expect(dispatch.firstCall.calledWith({ type: RESET_SHORT_URL_PARAMS })).toEqual(true);
- expect(dispatch.secondCall.calledWith({
- type: SELECT_SERVER,
- selectedServer,
- })).toEqual(true);
+ const [ firstCallArgs, secondCallArgs ] = dispatch.mock.calls;
+
+ expect(dispatch).toHaveBeenCalledTimes(expectedDispatchCalls);
+ expect(firstCallArgs).toEqual([{ type: RESET_SHORT_URL_PARAMS }]);
+ expect(secondCallArgs).toEqual([
+ {
+ type: SELECT_SERVER,
+ selectedServer,
+ },
+ ]);
});
it('invokes dependencies', () => {
selectServer(ServersServiceMock)(serverId)(() => {});
- expect(ServersServiceMock.findServerById.callCount).toEqual(1);
+ expect(ServersServiceMock.findServerById).toHaveBeenCalledTimes(1);
});
});
});
diff --git a/test/servers/reducers/server.test.js b/test/servers/reducers/server.test.js
index cbf81d00..2d68e381 100644
--- a/test/servers/reducers/server.test.js
+++ b/test/servers/reducers/server.test.js
@@ -1,4 +1,3 @@
-import * as sinon from 'sinon';
import { values } from 'ramda';
import reducer, {
createServer,
@@ -15,10 +14,10 @@ describe('serverReducer', () => {
};
const expectedFetchServersResult = { type: FETCH_SERVERS, payload };
const ServersServiceMock = {
- listServers: sinon.fake.returns(payload),
- createServer: sinon.fake(),
- deleteServer: sinon.fake(),
- createServers: sinon.fake(),
+ listServers: jest.fn(() => payload),
+ createServer: jest.fn(),
+ deleteServer: jest.fn(),
+ createServers: jest.fn(),
};
describe('reducer', () => {
@@ -28,10 +27,10 @@ describe('serverReducer', () => {
describe('action creators', () => {
beforeEach(() => {
- ServersServiceMock.listServers.resetHistory();
- ServersServiceMock.createServer.resetHistory();
- ServersServiceMock.deleteServer.resetHistory();
- ServersServiceMock.createServers.resetHistory();
+ ServersServiceMock.listServers.mockClear();
+ ServersServiceMock.createServer.mockReset();
+ ServersServiceMock.deleteServer.mockReset();
+ ServersServiceMock.createServers.mockReset();
});
describe('listServers', () => {
@@ -39,10 +38,10 @@ describe('serverReducer', () => {
const result = listServers(ServersServiceMock)();
expect(result).toEqual(expectedFetchServersResult);
- expect(ServersServiceMock.listServers.calledOnce).toEqual(true);
- expect(ServersServiceMock.createServer.called).toEqual(false);
- expect(ServersServiceMock.deleteServer.called).toEqual(false);
- expect(ServersServiceMock.createServers.called).toEqual(false);
+ expect(ServersServiceMock.listServers).toHaveBeenCalledTimes(1);
+ expect(ServersServiceMock.createServer).not.toHaveBeenCalled();
+ expect(ServersServiceMock.deleteServer).not.toHaveBeenCalled();
+ expect(ServersServiceMock.createServers).not.toHaveBeenCalled();
});
});
@@ -52,11 +51,11 @@ describe('serverReducer', () => {
const result = createServer(ServersServiceMock, () => expectedFetchServersResult)(serverToCreate);
expect(result).toEqual(expectedFetchServersResult);
- expect(ServersServiceMock.createServer.calledOnce).toEqual(true);
- expect(ServersServiceMock.createServer.firstCall.calledWith(serverToCreate)).toEqual(true);
- expect(ServersServiceMock.listServers.called).toEqual(false);
- expect(ServersServiceMock.deleteServer.called).toEqual(false);
- expect(ServersServiceMock.createServers.called).toEqual(false);
+ expect(ServersServiceMock.createServer).toHaveBeenCalledTimes(1);
+ expect(ServersServiceMock.createServer.mock.calls[0]).toEqual([ serverToCreate ]);
+ expect(ServersServiceMock.listServers).not.toHaveBeenCalled();
+ expect(ServersServiceMock.deleteServer).not.toHaveBeenCalled();
+ expect(ServersServiceMock.createServers).not.toHaveBeenCalled();
});
});
@@ -66,11 +65,11 @@ describe('serverReducer', () => {
const result = deleteServer(ServersServiceMock, () => expectedFetchServersResult)(serverToDelete);
expect(result).toEqual(expectedFetchServersResult);
- expect(ServersServiceMock.listServers.called).toEqual(false);
- expect(ServersServiceMock.createServer.called).toEqual(false);
- expect(ServersServiceMock.createServers.called).toEqual(false);
- expect(ServersServiceMock.deleteServer.calledOnce).toEqual(true);
- expect(ServersServiceMock.deleteServer.firstCall.calledWith(serverToDelete)).toEqual(true);
+ expect(ServersServiceMock.listServers).not.toHaveBeenCalled();
+ expect(ServersServiceMock.createServer).not.toHaveBeenCalled();
+ expect(ServersServiceMock.createServers).not.toHaveBeenCalled();
+ expect(ServersServiceMock.deleteServer).toHaveBeenCalledTimes(1);
+ expect(ServersServiceMock.deleteServer.mock.calls[0]).toEqual([ serverToDelete ]);
});
});
@@ -80,11 +79,11 @@ describe('serverReducer', () => {
const result = createServers(ServersServiceMock, () => expectedFetchServersResult)(serversToCreate);
expect(result).toEqual(expectedFetchServersResult);
- expect(ServersServiceMock.listServers.called).toEqual(false);
- expect(ServersServiceMock.createServer.called).toEqual(false);
- expect(ServersServiceMock.createServers.calledOnce).toEqual(true);
- expect(ServersServiceMock.createServers.firstCall.calledWith(serversToCreate)).toEqual(true);
- expect(ServersServiceMock.deleteServer.called).toEqual(false);
+ expect(ServersServiceMock.listServers).not.toHaveBeenCalled();
+ expect(ServersServiceMock.createServer).not.toHaveBeenCalled();
+ expect(ServersServiceMock.createServers).toHaveBeenCalledTimes(1);
+ expect(ServersServiceMock.createServers.mock.calls[0]).toEqual([ serversToCreate ]);
+ expect(ServersServiceMock.deleteServer).not.toHaveBeenCalled();
});
});
});
diff --git a/test/servers/services/ServersExporter.test.js b/test/servers/services/ServersExporter.test.js
index 173292e3..772df918 100644
--- a/test/servers/services/ServersExporter.test.js
+++ b/test/servers/services/ServersExporter.test.js
@@ -1,26 +1,25 @@
-import sinon from 'sinon';
import ServersExporter from '../../../src/servers/services/ServersExporter';
describe('ServersExporter', () => {
const createLinkMock = () => ({
- setAttribute: sinon.fake(),
- click: sinon.fake(),
+ setAttribute: jest.fn(),
+ click: jest.fn(),
style: {},
});
const createWindowMock = (isIe10 = true) => ({
navigator: {
- msSaveBlob: isIe10 ? sinon.fake() : undefined,
+ msSaveBlob: isIe10 ? jest.fn() : undefined,
},
document: {
- createElement: sinon.fake.returns(createLinkMock()),
+ createElement: jest.fn(() => createLinkMock()),
body: {
- appendChild: sinon.fake(),
- removeChild: sinon.fake(),
+ appendChild: jest.fn(),
+ removeChild: jest.fn(),
},
},
});
const serversServiceMock = {
- listServers: sinon.fake.returns({
+ listServers: jest.fn(() => ({
abc123: {
id: 'abc123',
name: 'foo',
@@ -29,10 +28,16 @@ describe('ServersExporter', () => {
id: 'def456',
name: 'bar',
},
- }),
+ })),
};
const createCsvjsonMock = (throwError = false) => ({
- toCSV: throwError ? sinon.fake.throws('') : sinon.fake.returns(''),
+ toCSV: jest.fn(() => {
+ if (throwError) {
+ throw new Error('');
+ }
+
+ return '';
+ }),
});
describe('exportServers', () => {
@@ -40,10 +45,10 @@ describe('ServersExporter', () => {
beforeEach(() => {
originalConsole = global.console;
- global.console = { error: sinon.fake() };
+ global.console = { error: jest.fn() };
global.Blob = class Blob {};
global.URL = { createObjectURL: () => '' };
- serversServiceMock.listServers.resetHistory();
+ serversServiceMock.listServers.mockReset();
});
afterEach(() => {
global.console = originalConsole;
@@ -59,8 +64,8 @@ describe('ServersExporter', () => {
exporter.exportServers();
- expect(global.console.error.callCount).toEqual(1);
- expect(csvjsonMock.toCSV.callCount).toEqual(1);
+ expect(global.console.error).toHaveBeenCalledTimes(1);
+ expect(csvjsonMock.toCSV).toHaveBeenCalledTimes(1);
});
it('makes use of msSaveBlob API when available', () => {
@@ -73,9 +78,9 @@ describe('ServersExporter', () => {
exporter.exportServers();
- expect(serversServiceMock.listServers.callCount).toEqual(1);
- expect(windowMock.navigator.msSaveBlob.callCount).toEqual(1);
- expect(windowMock.document.createElement.callCount).toEqual(0);
+ expect(serversServiceMock.listServers).toHaveBeenCalledTimes(1);
+ expect(windowMock.navigator.msSaveBlob).toHaveBeenCalledTimes(1);
+ expect(windowMock.document.createElement).not.toHaveBeenCalled();
});
it('makes use of download link API when available', () => {
@@ -88,10 +93,10 @@ describe('ServersExporter', () => {
exporter.exportServers();
- expect(serversServiceMock.listServers.callCount).toEqual(1);
- expect(windowMock.document.createElement.callCount).toEqual(1);
- expect(windowMock.document.body.appendChild.callCount).toEqual(1);
- expect(windowMock.document.body.removeChild.callCount).toEqual(1);
+ expect(serversServiceMock.listServers).toHaveBeenCalledTimes(1);
+ expect(windowMock.document.createElement).toHaveBeenCalledTimes(1);
+ expect(windowMock.document.body.appendChild).toHaveBeenCalledTimes(1);
+ expect(windowMock.document.body.removeChild).toHaveBeenCalledTimes(1);
});
});
});
diff --git a/test/servers/services/ServersImporter.test.js b/test/servers/services/ServersImporter.test.js
index ef79d790..217cc0bf 100644
--- a/test/servers/services/ServersImporter.test.js
+++ b/test/servers/services/ServersImporter.test.js
@@ -1,14 +1,13 @@
-import sinon from 'sinon';
import ServersImporter from '../../../src/servers/services/ServersImporter';
describe('ServersImporter', () => {
const servers = [{ name: 'foo' }, { name: 'bar' }];
const csvjsonMock = {
- toObject: sinon.fake.returns(servers),
+ toObject: jest.fn(() => servers),
};
const importer = new ServersImporter(csvjsonMock);
- beforeEach(() => csvjsonMock.toObject.resetHistory());
+ beforeEach(() => csvjsonMock.toObject.mockClear());
describe('importServersFromFile', () => {
it('rejects with error if no file was provided', async () => {
@@ -28,7 +27,7 @@ describe('ServersImporter', () => {
});
it('reads file when a CSV is provided', async () => {
- const readAsText = sinon.fake.returns('');
+ const readAsText = jest.fn(() => '');
global.FileReader = class FileReader {
constructor() {
@@ -40,8 +39,8 @@ describe('ServersImporter', () => {
await importer.importServersFromFile({ type: 'text/csv' });
- expect(readAsText.callCount).toEqual(1);
- expect(csvjsonMock.toObject.callCount).toEqual(1);
+ expect(readAsText).toHaveBeenCalledTimes(1);
+ expect(csvjsonMock.toObject).toHaveBeenCalledTimes(1);
});
});
});
diff --git a/test/servers/services/ServersService.test.js b/test/servers/services/ServersService.test.js
index b8c60d9e..a80046f9 100644
--- a/test/servers/services/ServersService.test.js
+++ b/test/servers/services/ServersService.test.js
@@ -1,4 +1,3 @@
-import sinon from 'sinon';
import { last } from 'ramda';
import ServersService from '../../../src/servers/services/ServersService';
@@ -8,8 +7,8 @@ describe('ServersService', () => {
def456: { id: 'def456' },
};
const createStorageMock = (returnValue) => ({
- set: sinon.fake(),
- get: sinon.fake.returns(returnValue),
+ set: jest.fn(),
+ get: jest.fn(() => returnValue),
});
describe('listServers', () => {
@@ -20,8 +19,8 @@ describe('ServersService', () => {
const result = service.listServers();
expect(result).toEqual({});
- expect(storageMock.get.callCount).toEqual(1);
- expect(storageMock.set.callCount).toEqual(0);
+ expect(storageMock.get).toHaveBeenCalledTimes(1);
+ expect(storageMock.set).not.toHaveBeenCalled();
});
it('returns value from storage when found', () => {
@@ -31,8 +30,8 @@ describe('ServersService', () => {
const result = service.listServers();
expect(result).toEqual(servers);
- expect(storageMock.get.callCount).toEqual(1);
- expect(storageMock.set.callCount).toEqual(0);
+ expect(storageMock.get).toHaveBeenCalledTimes(1);
+ expect(storageMock.set).not.toHaveBeenCalled();
});
});
@@ -44,8 +43,8 @@ describe('ServersService', () => {
const result = service.findServerById('ghi789');
expect(result).toBeUndefined();
- expect(storageMock.get.callCount).toEqual(1);
- expect(storageMock.set.callCount).toEqual(0);
+ expect(storageMock.get).toHaveBeenCalledTimes(1);
+ expect(storageMock.set).not.toHaveBeenCalled();
});
it('returns server from list when found', () => {
@@ -55,8 +54,8 @@ describe('ServersService', () => {
const result = service.findServerById('abc123');
expect(result).toEqual({ id: 'abc123' });
- expect(storageMock.get.callCount).toEqual(1);
- expect(storageMock.set.callCount).toEqual(0);
+ expect(storageMock.get).toHaveBeenCalledTimes(1);
+ expect(storageMock.set).not.toHaveBeenCalled();
});
});
@@ -67,9 +66,12 @@ describe('ServersService', () => {
service.createServer({ id: 'ghi789' });
- expect(storageMock.get.callCount).toEqual(1);
- expect(storageMock.set.callCount).toEqual(1);
- expect(last(storageMock.set.lastCall.args)).toEqual({
+ expect(storageMock.get).toHaveBeenCalledTimes(1);
+ expect(storageMock.set).toHaveBeenCalledTimes(1);
+
+ const setLastCallLastArg = last(last(storageMock.set.mock.calls));
+
+ expect(setLastCallLastArg).toEqual({
abc123: { id: 'abc123' },
def456: { id: 'def456' },
ghi789: { id: 'ghi789' },
@@ -84,9 +86,12 @@ describe('ServersService', () => {
service.createServers([{ id: 'ghi789' }, { id: 'jkl123' }]);
- expect(storageMock.get.callCount).toEqual(1);
- expect(storageMock.set.callCount).toEqual(1);
- expect(last(storageMock.set.lastCall.args)).toEqual({
+ expect(storageMock.get).toHaveBeenCalledTimes(1);
+ expect(storageMock.set).toHaveBeenCalledTimes(1);
+
+ const setLastCallLastArg = last(last(storageMock.set.mock.calls));
+
+ expect(setLastCallLastArg).toEqual({
abc123: { id: 'abc123' },
def456: { id: 'def456' },
ghi789: { id: 'ghi789' },
@@ -102,9 +107,12 @@ describe('ServersService', () => {
service.deleteServer({ id: 'abc123' });
- expect(storageMock.get.callCount).toEqual(1);
- expect(storageMock.set.callCount).toEqual(1);
- expect(last(storageMock.set.lastCall.args)).toEqual({
+ expect(storageMock.get).toHaveBeenCalledTimes(1);
+ expect(storageMock.set).toHaveBeenCalledTimes(1);
+
+ const setLastCallLastArg = last(last(storageMock.set.mock.calls));
+
+ expect(setLastCallLastArg).toEqual({
def456: { id: 'def456' },
});
});