diff --git a/src/servers/DeleteServerModal.js b/src/servers/DeleteServerModal.js
index 419e6a33..0d69bd52 100644
--- a/src/servers/DeleteServerModal.js
+++ b/src/servers/DeleteServerModal.js
@@ -7,6 +7,12 @@ import { compose } from 'redux';
import { deleteServer } from './reducers/server';
import { serverType } from './prop-types';
+const propTypes = {
+ toggle: PropTypes.func.isRequired,
+ isOpen: PropTypes.bool.isRequired,
+ server: serverType,
+};
+
export const DeleteServerModal = ({ server, toggle, isOpen, deleteServer, history }) => {
const closeModal = () => {
deleteServer(server);
@@ -32,11 +38,7 @@ export const DeleteServerModal = ({ server, toggle, isOpen, deleteServer, histor
);
};
-DeleteServerModal.propTypes = {
- toggle: PropTypes.func.isRequired,
- isOpen: PropTypes.bool.isRequired,
- server: serverType,
-};
+DeleteServerModal.propTypes = propTypes;
export default compose(
withRouter,
diff --git a/test/servers/DeleteServerModal.test.js b/test/servers/DeleteServerModal.test.js
new file mode 100644
index 00000000..23866f64
--- /dev/null
+++ b/test/servers/DeleteServerModal.test.js
@@ -0,0 +1,62 @@
+import React from 'react';
+import { shallow } from 'enzyme';
+import { DeleteServerModal } from '../../src/servers/DeleteServerModal';
+import sinon from 'sinon';
+import { Modal, ModalBody, ModalFooter, ModalHeader } from 'reactstrap';
+
+describe('', () => {
+ let wrapper;
+ const deleteServerMock = sinon.fake();
+ const historyMock = { push: sinon.fake() };
+ const toggleMock = sinon.fake();
+ const serverName = 'the_server_name';
+
+ beforeEach(() => {
+ toggleMock.resetHistory();
+ deleteServerMock.resetHistory();
+ historyMock.push.resetHistory();
+
+ wrapper = shallow(
+
+ );
+ });
+ afterEach(() => wrapper.unmount());
+
+ it('renders a modal window', () => {
+ expect(wrapper.find(Modal)).toHaveLength(1);
+ expect(wrapper.find(ModalHeader)).toHaveLength(1);
+ expect(wrapper.find(ModalBody)).toHaveLength(1);
+ expect(wrapper.find(ModalFooter)).toHaveLength(1);
+ });
+
+ it('displays the name of the server as part of the content', () => {
+ const modalBody = wrapper.find(ModalBody);
+ expect(modalBody.find('p').first().text()).toEqual(
+ `Are you sure you want to delete server ${serverName}?`
+ );
+ });
+
+ it('toggles when clicking cancel button', () => {
+ const cancelBtn = wrapper.find('button').first();
+ cancelBtn.simulate('click');
+
+ expect(toggleMock.callCount).toEqual(1);
+ expect(deleteServerMock.callCount).toEqual(0);
+ expect(historyMock.push.callCount).toEqual(0);
+ });
+
+ it('deletes server when clicking accept button', () => {
+ const acceptBtn = wrapper.find('button').last();
+ acceptBtn.simulate('click');
+
+ expect(toggleMock.callCount).toEqual(1);
+ expect(deleteServerMock.callCount).toEqual(1);
+ expect(historyMock.push.callCount).toEqual(1);
+ });
+});