import React from 'react' import fetchMock from 'fetch-mock' import PropTypes from 'prop-types' import CloneProjectModal from '../js/features/clone-project-modal/components/clone-project-modal' export const Interactive = ({ mockResponse = 200, mockResponseDelay = 500, ...args }) => { fetchMock.restore().post( 'express:/project/:projectId/clone', () => { switch (mockResponse) { case 400: return { status: 400, body: 'The project name is not valid' } default: return mockResponse } }, { delay: mockResponseDelay } ) return } Interactive.propTypes = { mockResponse: PropTypes.number, mockResponseDelay: PropTypes.number } export default { title: 'Modals / Clone Project', component: CloneProjectModal, args: { projectId: 'original-project', projectName: 'Project Title', show: true }, argTypes: { handleHide: { action: 'close modal' }, openProject: { action: 'open project' }, mockResponse: { name: 'Mock Response Status', type: { name: 'number', required: false }, description: 'The status code that should be returned by the mock server', defaultValue: 200, control: { type: 'radio', options: [200, 500, 400] } }, mockResponseDelay: { name: 'Mock Response Delay', type: { name: 'number', required: false }, description: 'The delay before returning a response from the mock server', defaultValue: 500, control: { type: 'range', min: 0, max: 2500, step: 250 } } } }