1
1
import React from 'react' ;
2
- import { render , screen } from '@testing-library/react' ;
2
+ import { render as rtlRender , screen } from '@testing-library/react' ;
3
3
import '@testing-library/jest-dom/extend-expect' ;
4
- import { TextEncoder } from 'util' ;
5
- global . TextEncoder = TextEncoder ;
6
4
import MainSlider from '../components/MainSlider' ;
7
- import { useStoreContext } from '../store' ;
5
+ import { mainSlice } from '../slices/mainSlice'
6
+ import { Provider } from 'react-redux' ;
7
+ import { configureStore } from '@reduxjs/toolkit' ;
8
8
9
- jest . mock ( '../store' ) ;
10
- const mockeduseStoreContext = jest . mocked ( useStoreContext ) ;
11
9
12
- describe ( 'Unit testing for MainSlider.jsx' , ( ) => {
13
- const props = {
14
- snapshotsLength : 1 ,
15
- } ;
16
-
17
- const state = {
18
- tabs : {
19
- 100 : {
10
+ const customTabs = {
11
+ 100 : {
20
12
sliderIndex : 1 ,
21
13
} ,
14
+ }
15
+
16
+ const customInitialState = {
17
+ main : {
18
+ port : null ,
19
+ currentTab : 100 ,
20
+ currentTitle : null ,
21
+ tabs : customTabs , // Replace with the actual (testing) tab data
22
+ currentTabInApp : null ,
23
+ connectionStatus : false ,
24
+ connectRequested : true ,
22
25
} ,
23
- currentTab : 100 ,
24
26
} ;
25
27
26
- const dispatch = jest . fn ( ) ;
27
- mockeduseStoreContext . mockImplementation ( ( ) => [ state , dispatch ] ) ;
28
+ const customStore = configureStore ( {
29
+ reducer : {
30
+ main : mainSlice . reducer ,
31
+ } ,
32
+ preloadedState : customInitialState ,
33
+ middleware : ( getDefaultMiddleware ) =>
34
+ getDefaultMiddleware ( { serializableCheck : false } ) ,
35
+ } ) ;
36
+
37
+ const render = component => rtlRender (
38
+ < Provider store = { customStore } >
39
+ { component }
40
+ </ Provider >
41
+ ) ;
42
+
43
+ describe ( 'Unit testing for MainSlider.jsx' , ( ) => {
44
+ const props = {
45
+ snapshotsLength : 1 ,
46
+ } ;
28
47
29
48
describe ( 'When user only has one snapshot to view' , ( ) => {
30
49
test ( 'Component should have min, max, value with correct values to indicate slider position for correct tab' , ( ) => {
31
50
render ( < MainSlider { ...props } /> ) ;
32
- expect ( screen . getByRole ( 'slider' ) ) . toHaveAttribute ( 'aria-valuemin' , '0' ) ;
33
- expect ( screen . getByRole ( 'slider' ) ) . toHaveAttribute ( 'aria-valuemax' , '0' ) ;
34
- expect ( screen . getByRole ( 'slider' ) ) . toHaveAttribute ( 'aria-valuenow' , '0' ) ;
51
+ expect ( screen . getByRole ( 'slider' ) ) . toHaveAttribute ( 'aria-valuemin' , '0' ) ;
52
+ expect ( screen . getByRole ( 'slider' ) ) . toHaveAttribute ( 'aria-valuemax' , '0' ) ;
53
+ expect ( screen . getByRole ( 'slider' ) ) . toHaveAttribute ( 'aria-valuenow' , '0' ) ;
54
+ } ) ;
35
55
} ) ;
36
- } ) ;
37
56
38
57
describe ( 'When there are multiple snapshots and we are looking in between' , ( ) => {
39
- const props = {
40
- snapshotsLength : 3 ,
41
- } ;
42
-
43
- test ( 'Component should have min, max, value with correct values to indicate slider position when there are multiple snapshots' , ( ) => {
44
- render ( < MainSlider { ...props } /> ) ;
45
- expect ( screen . getByRole ( 'slider' ) ) . toHaveAttribute ( 'aria-valuemax' , '2' ) ;
46
- expect ( screen . getByRole ( 'slider' ) ) . toHaveAttribute ( 'aria-valuemin' , '0' ) ;
47
- expect ( screen . getByRole ( 'slider' ) ) . toHaveAttribute ( 'aria-valuenow' , '0' )
58
+ const props = {
59
+ snapshotsLength : 3 ,
60
+ } ;
61
+
62
+ test ( 'Component should have min, max, value with correct values to indicate slider position when there are multiple snapshots' , ( ) => {
63
+ render ( < MainSlider { ...props } /> ) ;
64
+ expect ( screen . getByRole ( 'slider' ) ) . toHaveAttribute ( 'aria-valuemax' , '2' ) ;
65
+ expect ( screen . getByRole ( 'slider' ) ) . toHaveAttribute ( 'aria-valuemin' , '0' ) ;
66
+ expect ( screen . getByRole ( 'slider' ) ) . toHaveAttribute ( 'aria-valuenow' , '0' )
67
+ } ) ;
48
68
} ) ;
49
- } ) ;
50
- } ) ;
69
+
70
+ } ) ;
0 commit comments