forked from RealDevSquad/website-status
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTaskStatusEditMode.test.tsx
More file actions
120 lines (102 loc) · 3.8 KB
/
TaskStatusEditMode.test.tsx
File metadata and controls
120 lines (102 loc) · 3.8 KB
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
import React from 'react';
import { fireEvent, screen, waitFor } from '@testing-library/react';
import {
TaskStatusEditMode,
beautifyStatus,
} from '@/components/tasks/card/TaskStatusEditMode';
import { TASK } from '../../../../__mocks__/db/tasks';
import { BACKEND_TASK_STATUS } from '@/constants/task-status';
import { renderWithRouter } from '@/test_utils/createMockRouter';
import { Provider } from 'react-redux';
import { store } from '@/app/store';
import * as tasksApi from '@/app/services/tasksApi';
const BLOCKED_TASK = {
...TASK,
id: '1-BLOCKED',
status: 'BLOCKED',
};
describe('TaskStatusEditMode', () => {
let updateTaskSpy: any;
beforeEach(() => {
updateTaskSpy = jest.spyOn(tasksApi, 'useUpdateTaskMutation');
});
afterEach(() => {
jest.clearAllMocks();
});
it('should correctly set default option', () => {
const setEditedTaskDetails = jest.fn();
renderWithRouter(
<Provider store={store()}>
<TaskStatusEditMode
task={BLOCKED_TASK}
setEditedTaskDetails={setEditedTaskDetails}
setSaveExtensionRequestStatus={jest.fn()}
/>
</Provider>
);
const statusSelect = screen.getByLabelText('Status:');
expect(statusSelect).toHaveValue('BLOCKED');
});
it('change task status from BLOCKED to IN_PROGRESS', async () => {
const setEditedTaskDetails = jest.fn();
const mockUpdateTask = jest
.fn()
.mockReturnValue(Promise.resolve('SUCCESS'));
renderWithRouter(
<Provider store={store()}>
<TaskStatusEditMode
task={BLOCKED_TASK}
setEditedTaskDetails={setEditedTaskDetails}
setSaveExtensionRequestStatus={jest.fn()}
/>
</Provider>
);
const statusSelect = screen.getByLabelText('Status:');
expect(statusSelect).toHaveValue('BLOCKED');
fireEvent.change(statusSelect, { target: { value: 'IN_PROGRESS' } });
expect(statusSelect).toHaveValue('IN_PROGRESS');
mockUpdateTask({
id: '1-BLOCKED',
task: {
status: 'IN_PROGRESS',
},
});
});
it('renders a list of task statuses', () => {
const mockUpdateTask = jest.fn();
const setEditedTaskDetails = jest.fn();
renderWithRouter(
<Provider store={store()}>
<TaskStatusEditMode
task={BLOCKED_TASK}
setEditedTaskDetails={setEditedTaskDetails}
setSaveExtensionRequestStatus={jest.fn()}
/>
</Provider>
);
const statusSelect = screen.getByLabelText('Status:');
const allOptions = Array.from(
statusSelect.querySelectorAll('option')
).map((option) => [option.value, option.textContent]);
const allTaskStatus = Object.entries(BACKEND_TASK_STATUS)
.map(([name, status]) => [status, beautifyStatus(name)])
.filter(
([status]) =>
status !== BACKEND_TASK_STATUS.COMPLETED &&
status !== BACKEND_TASK_STATUS.MERGED &&
status !== BACKEND_TASK_STATUS.UN_ASSIGNED &&
status !== BACKEND_TASK_STATUS.BACKLOG
);
expect(allOptions).toEqual(allTaskStatus);
});
});
describe('test beautifyStatus function', () => {
it('test usage', () => {
const output = beautifyStatus('IN_PROGRESS');
expect(output).toEqual('In Progress');
});
it('returns DONE when completed is passed ', () => {
const res = beautifyStatus(BACKEND_TASK_STATUS.COMPLETED);
expect(res).toEqual('Done');
});
});