1
- import { fireEvent , render , screen } from '@testing-library/react'
2
- import { afterEach , beforeEach , describe , expect , it , type Mock , vi , vitest } from 'vitest'
1
+ import { act , fireEvent , render , screen , waitFor } from '@testing-library/react'
2
+ import { beforeEach , describe , expect , it , vi } from 'vitest'
3
3
4
4
import { createTestProvider } from '../../../../../../test/testUtils/TestProvider'
5
+ import { activeASAPRelease } from '../../../__fixtures__/release.fixture'
5
6
import { type ReleaseDocument } from '../../../index'
6
- import { useReleaseOperations } from '../../../store/useReleaseOperations'
7
- import { useReleases } from '../../../store/useReleases'
7
+ import { useReleaseOperationsMockReturn } from '../../../store/__tests__/__mocks/useReleaseOperations.mock'
8
8
import { CreateReleaseDialog } from '../CreateReleaseDialog'
9
9
10
- vi . mock ( '../../../store/useReleases ' , ( ) => ( {
11
- useReleases : vi . fn ( ) ,
10
+ vi . mock ( '../../../store/useReleaseOperations ' , ( ) => ( {
11
+ useReleaseOperations : vi . fn ( ( ) => useReleaseOperationsMockReturn ) ,
12
12
} ) )
13
13
14
- vi . mock ( '../../../../store/release/useReleaseOperations' , ( ) => ( {
15
- useReleaseOperations : vi . fn ( ) . mockReturnValue ( {
16
- createRelease : vi . fn ( ) ,
17
- updateRelease : vi . fn ( ) ,
18
- } ) ,
19
- } ) )
20
-
21
- vi . mock ( '../../../i18n/hooks/useTranslation' , ( ) => ( {
22
- useTranslate : vi . fn ( ) . mockReturnValue ( {
23
- t : vi . fn ( ) ,
24
- } ) ,
25
- } ) )
26
-
27
- const mockUseBundleStore = useReleases as Mock < typeof useReleases >
28
- //const mockUseDateTimeFormat = useDateTimeFormat as Mock
29
-
30
14
describe ( 'CreateReleaseDialog' , ( ) => {
31
- beforeEach ( ( ) => {
32
- vi . clearAllMocks ( )
33
- } )
34
- afterEach ( ( ) => {
35
- vi . clearAllMocks ( )
36
- } )
37
-
38
15
describe ( 'when creating a new release' , ( ) => {
39
16
const onCancelMock = vi . fn ( )
40
17
const onSubmitMock = vi . fn ( )
@@ -43,23 +20,9 @@ describe('CreateReleaseDialog', () => {
43
20
onCancelMock . mockClear ( )
44
21
onSubmitMock . mockClear ( )
45
22
46
- mockUseBundleStore . mockReturnValue ( {
47
- data : [ ] ,
48
- loading : true ,
49
- dispatch : vi . fn ( ) ,
50
- error : undefined ,
51
- releasesIds : [ ] ,
52
- archivedReleases : [ ] ,
53
- } )
54
-
55
- //mockUseDateTimeFormat.mockReturnValue({format: vi.fn().mockReturnValue('Mocked date')})
56
-
57
23
const wrapper = await createTestProvider ( )
58
24
render ( < CreateReleaseDialog onCancel = { onCancelMock } onSubmit = { onSubmitMock } /> , { wrapper} )
59
25
} )
60
- afterEach ( ( ) => {
61
- vitest . resetAllMocks ( )
62
- } )
63
26
64
27
it ( 'should render the dialog' , ( ) => {
65
28
expect ( screen . getByRole ( 'dialog' ) ) . toBeInTheDocument ( )
@@ -71,35 +34,27 @@ describe('CreateReleaseDialog', () => {
71
34
expect ( onCancelMock ) . toHaveBeenCalled ( )
72
35
} )
73
36
74
- // TODO: Fix this test
75
- it . skip ( 'should call createRelease and onCreate when form is submitted' , async ( ) => {
76
- // const wrapper = await createTestProvider()
77
- // render(<CreateReleaseDialog onCancel={onCancelMock} onSubmit={onSubmitMock} />, {wrapper})
78
-
79
- const value : Partial < ReleaseDocument > = {
80
- metadata : {
81
- title : 'Bundle 1' ,
82
- description : undefined ,
83
- intendedPublishAt : undefined ,
84
- releaseType : 'asap' ,
85
- } ,
86
- }
37
+ it ( 'should call createRelease and onCreate when form is submitted' , async ( ) => {
38
+ const value : Partial < ReleaseDocument > = activeASAPRelease
87
39
88
- const titleInput = screen . getByTestId ( 'release-form-title' )
89
- fireEvent . change ( titleInput , { target : { value : value . metadata ?. title } } )
40
+ act ( async ( ) => {
41
+ const titleInput = screen . getByTestId ( 'release-form-title' )
42
+ fireEvent . change ( titleInput , { target : { value : value . metadata ?. title } } )
90
43
91
- const submitButton = screen . getByTestId ( 'submit-release-button' )
92
- fireEvent . click ( submitButton )
44
+ const submitButton = screen . getByTestId ( 'submit-release-button' )
45
+ fireEvent . click ( submitButton )
93
46
94
- expect ( useReleaseOperations ( ) . createRelease ) . toHaveBeenCalledWith (
95
- expect . objectContaining ( {
96
- _id : expect . stringContaining ( 'releases' ) ,
97
- ...value ,
98
- } ) ,
99
- )
100
- await Promise . resolve ( )
47
+ waitFor ( async ( ) => {
48
+ await Promise . resolve ( )
101
49
102
- expect ( onSubmitMock ) . toHaveBeenCalled ( )
50
+ expect ( onSubmitMock ) . toHaveBeenCalledOnce ( )
51
+ expect ( useReleaseOperationsMockReturn . createRelease ) . toHaveBeenCalledWith (
52
+ expect . objectContaining ( {
53
+ _id : expect . stringContaining ( 'releases' ) ,
54
+ } ) ,
55
+ )
56
+ } )
57
+ } )
103
58
} )
104
59
} )
105
60
} )
0 commit comments