-
Notifications
You must be signed in to change notification settings - Fork 23
/
PdfViewer.spec.jsx
96 lines (84 loc) · 2.9 KB
/
PdfViewer.spec.jsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import React from 'react';
import { shallow } from 'enzyme';
import thunk from 'redux-thunk';
import configureMockStore from 'redux-mock-store';
import ConnectedPdfViewer, { PdfViewer }
from '../../../components/Dashboard/PdfViewer';
import { mockStoreData } from '../../__mocks__/mockData';
jest.mock('react-pdf-js');
window.BOOK_FALLBACK = 'some-url';
const props = {
bookUrl: 'some-book-url',
isLoggedIn: true,
};
const middleware = [thunk];
const mockStore = configureMockStore(middleware);
const store = mockStore({ ...mockStoreData });
const setUp = () => shallow(<PdfViewer { ...props } />);
describe('PdfViewer Component', () => {
it('renders without crashing', () => {
const wrapper = setUp();
expect(wrapper).toBeDefined();
expect(wrapper.getElement().type).toBe('div');
});
it('should render the connected component', () => {
const connectedComponent = shallow(
<ConnectedPdfViewer { ...props } store={store} />
);
expect(connectedComponent.length).toBe(1);
});
it('should call onDocumentComplete when file is loaded', () => {
const wrapper = setUp();
const onDocumentCompleteSpy = jest.spyOn(
wrapper.instance(), 'onDocumentComplete'
);
wrapper.instance().onDocumentComplete(44);
expect(onDocumentCompleteSpy).toHaveBeenCalledTimes(1);
expect(wrapper.state().pages).toBe(44);
});
it('should call onPageComplete when file is loaded', () => {
const wrapper = setUp();
const onPageCompleteSpy = jest.spyOn(
wrapper.instance(), 'onPageComplete'
);
wrapper.instance().onPageComplete(1);
expect(onPageCompleteSpy).toHaveBeenCalledTimes(1);
expect(wrapper.state().page).toBe(1);
});
it('should call onDocumentError if file load encounters an error', () => {
const wrapper = setUp();
const onPageCompleteSpy = jest.spyOn(
wrapper.instance(), 'onDocumentError'
);
wrapper.instance().onDocumentError(new Error('failed to load pdf'));
expect(onPageCompleteSpy).toHaveBeenCalledTimes(1);
expect(wrapper.state().fileError).toBe(true);
});
it('should call setPage when page is manually inserted', () => {
const wrapper = setUp();
const setPageSpy = jest.spyOn(
wrapper.instance(), 'setPage'
);
const event = {
nextentDefault: jest.fn(),
target: {
value: '55'
}
};
wrapper.instance().setPage(event);
expect(setPageSpy).toHaveBeenCalledTimes(1);
expect(wrapper.state().page).toBe(55);
});
it('should decrement page by one when handlePrevious is called', () => {
const wrapper = setUp();
wrapper.setState({ page: 2 });
wrapper.instance().handlePrevious();
expect(wrapper.state().page).toBe(1);
});
it('should increment page by one when handlePrevious is called', () => {
const wrapper = setUp();
wrapper.setState({ page: 4 });
wrapper.instance().handleNext();
expect(wrapper.state().page).toBe(5);
});
});