Spaces:
Running
Running
import React from 'react'; | |
import configureStore from 'redux-mock-store'; | |
import {mountWithIntl} from '../../helpers/intl-helpers.jsx'; | |
import ProjectFetcherHOC from '../../../src/lib/project-fetcher-hoc.jsx'; | |
import storage from '../../../src/lib/storage'; | |
import {LoadingState} from '../../../src/reducers/project-state'; | |
jest.mock('react-ga'); | |
describe('ProjectFetcherHOC', () => { | |
const mockStore = configureStore(); | |
let store; | |
beforeEach(() => { | |
store = mockStore({ | |
scratchGui: { | |
projectState: {}, | |
vm: { | |
clear: () => {}, | |
stop: () => {} | |
} | |
} | |
}); | |
}); | |
test.skip('when there is an id, it tries to update the store with that id', () => { | |
const Component = ({projectId}) => <div>{projectId}</div>; | |
const WrappedComponent = ProjectFetcherHOC(Component); | |
const mockSetProjectIdFunc = jest.fn(); | |
mountWithIntl( | |
<WrappedComponent | |
projectId="100" | |
setProjectId={mockSetProjectIdFunc} | |
store={store} | |
/> | |
); | |
expect(mockSetProjectIdFunc.mock.calls[0][0]).toBe('100'); | |
}); | |
test.skip('when there is a reduxProjectId and isFetchingWithProjectId is true, it loads the project', () => { | |
const mockedOnFetchedProject = jest.fn(); | |
const originalLoad = storage.load; | |
storage.load = jest.fn((type, id) => Promise.resolve({data: id})); | |
const Component = ({projectId}) => <div>{projectId}</div>; | |
const WrappedComponent = ProjectFetcherHOC(Component); | |
const mounted = mountWithIntl( | |
<WrappedComponent | |
store={store} | |
onFetchedProjectData={mockedOnFetchedProject} | |
/> | |
); | |
mounted.setProps({ | |
reduxProjectId: '100', | |
isFetchingWithId: true, | |
loadingState: LoadingState.FETCHING_WITH_ID | |
}); | |
expect(storage.load).toHaveBeenLastCalledWith( | |
storage.AssetType.Project, '100', storage.DataFormat.JSON | |
); | |
storage.load = originalLoad; | |
// nextTick needed since storage.load is async, and onFetchedProject is called in its then() | |
process.nextTick( | |
() => expect(mockedOnFetchedProject) | |
.toHaveBeenLastCalledWith('100', LoadingState.FETCHING_WITH_ID) | |
); | |
}); | |
}); | |