diff --git a/src/Holding/CreateHolding/CreateHolding.test.js b/src/Holding/CreateHolding/CreateHolding.test.js
new file mode 100644
index 000000000..a45633c2a
--- /dev/null
+++ b/src/Holding/CreateHolding/CreateHolding.test.js
@@ -0,0 +1,82 @@
+/* eslint-disable import/no-unresolved */
+import '../../../test/jest/__mock__';
+
+import { MemoryRouter } from 'react-router-dom';
+import { QueryClient, QueryClientProvider } from 'react-query';
+import { render, screen } from '@testing-library/react';
+import { Promise } from 'core-js';
+import { instance } from '../../../test/fixtures/instance';
+import { useHolding, useInstance } from '../../common/hooks';
+import { useHoldingMutation } from '../../hooks';
+import HoldingsForm from '../../edit/holdings/HoldingsForm';
+import CreateHolding from './CreateHolding';
+
+jest.mock('../../edit/holdings/HoldingsForm', () => jest.fn().mockReturnValue('HoldingsForm'));
+jest.mock('../../hooks', () => ({
+ ...jest.requireActual('../../hooks'),
+ useHoldingMutation: jest.fn().mockReturnValue({ mutateHolding: jest.fn() }),
+}));
+jest.mock('../../hooks/useCallout', () => jest.fn().mockReturnValue({ sendCallout: jest.fn() }));
+jest.mock('../../common/hooks', () => ({
+ ...jest.requireActual('../../common/hooks'),
+ useInstance: jest.fn().mockReturnValue({ instance: {}, isLoading: false }),
+ useHolding: jest.fn().mockReturnValue({ holding: {}, isLoading: false }),
+}));
+
+const defaultProps = {
+ goTo: jest.fn(),
+ instanceId: instance.id,
+ holdingId: 'holdingId',
+ referenceData: {},
+ mutator: {
+ GET: jest.fn(() => Promise.resolve({ data: {} })),
+ POST: jest.fn(() => Promise.resolve({ data: {} })),
+ holding: {
+ POST: jest.fn(() => Promise.resolve({ data: {} })),
+ },
+ },
+};
+
+const queryClient = new QueryClient();
+
+const wrapper = ({ children }) => (
+
+ {children}
+
+);
+
+const renderCreateHolding = (props = {}) => render(, { wrapper });
+
+describe('CreateHolding', () => {
+ const mockMutate = jest.fn();
+
+ beforeEach(() => {
+ useInstance.mockClear();
+ useHolding.mockClear();
+ useHoldingMutation
+ .mockClear()
+ .mockReturnValue({ mutateHolding: mockMutate });
+ });
+
+ it('should render HoldingsForm', () => {
+ renderCreateHolding();
+
+ expect(screen.getByText('HoldingsForm')).toBeInTheDocument();
+ });
+
+ it('should render LoadingView if page is loading', () => {
+ useInstance.mockReturnValue({ isLoading: true });
+
+ renderCreateHolding();
+
+ expect(screen.getByText('LoadingView')).toBeInTheDocument();
+ });
+
+ it('should call holding mutation when the holding form is submitted', () => {
+ useInstance.mockReturnValue({ isLoading: false, instance: { id: 0 } });
+
+ renderCreateHolding();
+ HoldingsForm.mock.calls[0][0].onSubmit();
+ expect(defaultProps.mutator.holding.POST).toBeCalled();
+ });
+});