-
Notifications
You must be signed in to change notification settings - Fork 271
/
Copy pathNotificationRow.test.tsx
125 lines (103 loc) · 3.32 KB
/
NotificationRow.test.tsx
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
import * as React from 'react';
import * as TestRenderer from 'react-test-renderer';
import { fireEvent, render } from '@testing-library/react';
const { shell } = require('electron');
import { AppContext } from '../context/App';
import { mockedSingleNotification } from '../__mocks__/mockedData';
import { NotificationRow } from './NotificationRow';
import { mockAccounts, mockSettings } from '../__mocks__/mock-state';
describe('components/Notification.js', () => {
beforeEach(() => {
jest.spyOn(shell, 'openExternal');
});
afterEach(() => {
jest.clearAllMocks();
});
it('should render itself & its children', async () => {
(global as any).Date.now = jest.fn(() => new Date('2014'));
const props = {
notification: mockedSingleNotification,
hostname: 'github.com',
};
const tree = TestRenderer.create(<NotificationRow {...props} />);
expect(tree).toMatchSnapshot();
});
it('should open a notification in the browser', () => {
const markNotification = jest.fn();
const props = {
notification: mockedSingleNotification,
hostname: 'github.com',
};
const { getByRole } = render(
<AppContext.Provider
value={{
settings: mockSettings,
markNotification,
accounts: mockAccounts,
}}
>
<NotificationRow {...props} />
</AppContext.Provider>,
);
fireEvent.click(getByRole('main'));
expect(shell.openExternal).toHaveBeenCalledTimes(1);
});
it('should mark a notification as read', () => {
const markNotification = jest.fn();
const props = {
notification: mockedSingleNotification,
hostname: 'github.com',
};
const { getByTitle } = render(
<AppContext.Provider
value={{
settings: mockSettings,
accounts: mockAccounts,
}}
>
<AppContext.Provider value={{ markNotification }}>
<NotificationRow {...props} />
</AppContext.Provider>
</AppContext.Provider>,
);
fireEvent.click(getByTitle('Mark as Read'));
expect(markNotification).toHaveBeenCalledTimes(1);
});
it('should mark a notification as done', () => {
const markNotificationDone = jest.fn();
const props = {
notification: mockedSingleNotification,
hostname: 'github.com',
};
const { getByTitle } = render(
<AppContext.Provider
value={{
settings: { ...mockSettings },
accounts: mockAccounts,
}}
>
<AppContext.Provider value={{ markNotificationDone }}>
<NotificationRow {...props} />
</AppContext.Provider>
</AppContext.Provider>,
);
fireEvent.click(getByTitle('Mark as Done'));
expect(markNotificationDone).toHaveBeenCalledTimes(1);
});
it('should unsubscribe from a notification thread', () => {
const unsubscribeNotification = jest.fn();
const props = {
notification: mockedSingleNotification,
hostname: 'github.com',
};
const { getByLabelText } = render(
<AppContext.Provider value={{}}>
<AppContext.Provider value={{ unsubscribeNotification }}>
<NotificationRow {...props} />
</AppContext.Provider>
</AppContext.Provider>,
);
fireEvent.click(getByLabelText('Unsubscribe'));
expect(unsubscribeNotification).toHaveBeenCalledTimes(1);
});
});