Spaces:
Runtime error
Runtime error
| import React from 'react'; | |
| import configureStore from 'redux-mock-store'; | |
| import {mount} from 'enzyme'; | |
| import HashParserHOC from '../../../src/lib/hash-parser-hoc.jsx'; | |
| jest.mock('react-ga'); | |
| describe('HashParserHOC', () => { | |
| const mockStore = configureStore(); | |
| let store; | |
| beforeEach(() => { | |
| store = mockStore({ | |
| scratchGui: { | |
| projectState: {} | |
| } | |
| }); | |
| }); | |
| test('when there is a hash, it passes the hash as projectId', () => { | |
| const Component = ({projectId}) => <div>{projectId}</div>; | |
| const WrappedComponent = HashParserHOC(Component); | |
| window.location.hash = '#1234567'; | |
| const mockSetProjectIdFunc = jest.fn(); | |
| mount( | |
| <WrappedComponent | |
| setProjectId={mockSetProjectIdFunc} | |
| store={store} | |
| /> | |
| ); | |
| expect(mockSetProjectIdFunc.mock.calls[0][0]).toBe('1234567'); | |
| }); | |
| test('when there is no hash, it passes 0 as the projectId', () => { | |
| const Component = ({projectId}) => <div>{projectId}</div>; | |
| const WrappedComponent = HashParserHOC(Component); | |
| window.location.hash = ''; | |
| const mockSetProjectIdFunc = jest.fn(); | |
| mount( | |
| <WrappedComponent | |
| setProjectId={mockSetProjectIdFunc} | |
| store={store} | |
| /> | |
| ); | |
| expect(mockSetProjectIdFunc.mock.calls[0][0]).toBe('0'); | |
| }); | |
| test('when the hash is not a number, it passes 0 as projectId', () => { | |
| const Component = ({projectId}) => <div>{projectId}</div>; | |
| const WrappedComponent = HashParserHOC(Component); | |
| window.location.hash = '#winning'; | |
| const mockSetProjectIdFunc = jest.fn(); | |
| mount( | |
| <WrappedComponent | |
| setProjectId={mockSetProjectIdFunc} | |
| store={store} | |
| /> | |
| ); | |
| expect(mockSetProjectIdFunc.mock.calls[0][0]).toBe('0'); | |
| }); | |
| test('when hash change happens, the projectId state is changed', () => { | |
| const Component = ({projectId}) => <div>{projectId}</div>; | |
| const WrappedComponent = HashParserHOC(Component); | |
| window.location.hash = ''; | |
| const mockSetProjectIdFunc = jest.fn(); | |
| const mounted = mount( | |
| <WrappedComponent | |
| setProjectId={mockSetProjectIdFunc} | |
| store={store} | |
| /> | |
| ); | |
| window.location.hash = '#1234567'; | |
| mounted | |
| .childAt(0) | |
| .instance() | |
| .handleHashChange(); | |
| expect(mockSetProjectIdFunc.mock.calls.length).toBe(2); | |
| }); | |
| }); | |