@@ -30,11 +30,20 @@ function makeWrapper(channelProps = {}) {
3030 } ;
3131 mocks . downloadPDF = jest . spyOn ( ChannelActionsDropdown . methods , 'downloadPDF' ) . mockResolvedValue ( ) ;
3232 mocks . downloadCSV = jest . spyOn ( ChannelActionsDropdown . methods , 'downloadCSV' ) . mockResolvedValue ( ) ;
33- mocks . deleteChannel = jest
34- . spyOn ( ChannelActionsDropdown . methods , 'deleteChannel ' )
33+ mocks . restoreHandler = jest
34+ . spyOn ( ChannelActionsDropdown . methods , 'restoreHandler ' )
3535 . mockResolvedValue ( ) ;
36- mocks . updateChannel = jest
37- . spyOn ( ChannelActionsDropdown . methods , 'updateChannel' )
36+ mocks . softDeleteHandler = jest
37+ . spyOn ( ChannelActionsDropdown . methods , 'softDeleteHandler' )
38+ . mockResolvedValue ( ) ;
39+ mocks . makePublicHandler = jest
40+ . spyOn ( ChannelActionsDropdown . methods , 'makePublicHandler' )
41+ . mockResolvedValue ( ) ;
42+ mocks . makePrivateHandler = jest
43+ . spyOn ( ChannelActionsDropdown . methods , 'makePrivateHandler' )
44+ . mockResolvedValue ( ) ;
45+ mocks . deleteHandler = jest
46+ . spyOn ( ChannelActionsDropdown . methods , 'deleteHandler' )
3847 . mockResolvedValue ( ) ;
3948
4049 const wrapper = mount ( ChannelActionsDropdown , {
@@ -69,25 +78,25 @@ describe('channelActionsDropdown', () => {
6978 } ) ;
7079
7180 it ( 'restore channel should open restore confirmation' , async ( ) => {
72- await wrapper . findComponent ( '[data-test="restore"]' ) . trigger ( 'click' ) ;
73- expect ( wrapper . vm . restoreDialog ) . toBe ( true ) ;
81+ await wrapper . find ( '[data-test="restore"]' ) . trigger ( 'click' ) ;
82+ expect ( wrapper . vm . activeDialog ) . toBe ( 'restore' ) ;
7483 } ) ;
7584
76- it ( 'confirm restore channel should call updateChannel with deleted = false ' , async ( ) => {
77- await wrapper . findComponent ( '[data-test="restore"]' ) . trigger ( 'click' ) ;
78- wrapper . findComponent ( '[data-test="confirm-restore"]' ) . vm . $emit ( 'submit' ) ;
79- expect ( mocks . updateChannel ) . toHaveBeenCalledWith ( { id : channelId , deleted : false } ) ;
85+ it ( 'confirm restore channel should call restoreHandler ' , async ( ) => {
86+ await wrapper . find ( '[data-test="restore"]' ) . trigger ( 'click' ) ;
87+ wrapper . find ( '[data-test="confirm-restore"]' ) . vm . $emit ( 'submit' ) ;
88+ expect ( mocks . restoreHandler ) . toHaveBeenCalled ( ) ;
8089 } ) ;
8190
8291 it ( 'delete channel should open delete confirmation' , async ( ) => {
83- await wrapper . findComponent ( '[data-test="delete"]' ) . trigger ( 'click' ) ;
84- expect ( wrapper . vm . deleteDialog ) . toBe ( true ) ;
92+ await wrapper . find ( '[data-test="delete"]' ) . trigger ( 'click' ) ;
93+ expect ( wrapper . vm . activeDialog ) . toBe ( 'permanentDelete' ) ;
8594 } ) ;
8695
87- it ( 'confirm delete channel should call deleteChannel ' , async ( ) => {
88- await wrapper . findComponent ( '[data-test="delete"]' ) . trigger ( 'click' ) ;
89- wrapper . findComponent ( '[data-test="confirm-delete"]' ) . vm . $emit ( 'submit' ) ;
90- expect ( mocks . deleteChannel ) . toHaveBeenCalledWith ( channelId ) ;
96+ it ( 'confirm delete channel should call deleteHandler ' , async ( ) => {
97+ await wrapper . find ( '[data-test="delete"]' ) . trigger ( 'click' ) ;
98+ wrapper . find ( '[data-test="confirm-delete"]' ) . vm . $emit ( 'submit' ) ;
99+ expect ( mocks . deleteHandler ) . toHaveBeenCalled ( ) ;
91100 } ) ;
92101 } ) ;
93102
@@ -97,52 +106,91 @@ describe('channelActionsDropdown', () => {
97106 } ) ;
98107
99108 it ( 'download PDF button should call downloadPDF' , async ( ) => {
100- await wrapper . findComponent ( '[data-test="pdf"]' ) . trigger ( 'click' ) ;
109+ await wrapper . find ( '[data-test="pdf"]' ) . trigger ( 'click' ) ;
101110 expect ( mocks . downloadPDF ) . toHaveBeenCalled ( ) ;
102111 } ) ;
103112
104113 it ( 'download CSV button should call downloadCSV' , async ( ) => {
105- await wrapper . findComponent ( '[data-test="csv"]' ) . trigger ( 'click' ) ;
114+ await wrapper . find ( '[data-test="csv"]' ) . trigger ( 'click' ) ;
106115 expect ( mocks . downloadCSV ) . toHaveBeenCalled ( ) ;
107116 } ) ;
108117
109118 it ( 'make public button should open make public confirmation' , async ( ) => {
110- await wrapper . findComponent ( '[data-test="public"]' ) . trigger ( 'click' ) ;
111- expect ( wrapper . vm . makePublicDialog ) . toBe ( true ) ;
119+ await wrapper . find ( '[data-test="public"]' ) . trigger ( 'click' ) ;
120+ expect ( wrapper . vm . activeDialog ) . toBe ( 'makePublic' ) ;
112121 } ) ;
113122
114- it ( 'confirm make public should call updateChannel with isPublic = true ' , async ( ) => {
115- await wrapper . findComponent ( '[data-test="public"]' ) . trigger ( 'click' ) ;
116- wrapper . findComponent ( '[data-test="confirm-public"]' ) . vm . $emit ( 'submit' ) ;
117- expect ( mocks . updateChannel ) . toHaveBeenCalledWith ( { id : channelId , isPublic : true } ) ;
123+ it ( 'confirm make public should call makePublicHandler ' , async ( ) => {
124+ await wrapper . find ( '[data-test="public"]' ) . trigger ( 'click' ) ;
125+ wrapper . find ( '[data-test="confirm-public"]' ) . vm . $emit ( 'submit' ) ;
126+ expect ( mocks . makePublicHandler ) . toHaveBeenCalled ( ) ;
118127 } ) ;
119128
120129 it ( 'soft delete button should open soft delete confirmation' , async ( ) => {
121- await wrapper . findComponent ( '[data-test="softdelete"]' ) . trigger ( 'click' ) ;
122- expect ( wrapper . vm . softDeleteDialog ) . toBe ( true ) ;
130+ await wrapper . find ( '[data-test="softdelete"]' ) . trigger ( 'click' ) ;
131+ expect ( wrapper . vm . activeDialog ) . toBe ( 'softDelete' ) ;
123132 } ) ;
124133
125- it ( 'confirm soft delete button should call updateChannel with deleted = true ' , async ( ) => {
126- await wrapper . findComponent ( '[data-test="softdelete"]' ) . trigger ( 'click' ) ;
127- wrapper . findComponent ( '[data-test="confirm-softdelete"]' ) . vm . $emit ( 'submit' ) ;
128- expect ( mocks . updateChannel ) . toHaveBeenCalledWith ( { id : channelId , deleted : true } ) ;
134+ it ( 'confirm soft delete button should call softDeleteHandler ' , async ( ) => {
135+ await wrapper . find ( '[data-test="softdelete"]' ) . trigger ( 'click' ) ;
136+ wrapper . find ( '[data-test="confirm-softdelete"]' ) . vm . $emit ( 'submit' ) ;
137+ expect ( mocks . softDeleteHandler ) . toHaveBeenCalled ( ) ;
129138 } ) ;
130139 } ) ;
131140
132141 describe ( 'public channel actions' , ( ) => {
133142 beforeEach ( ( ) => {
134- [ wrapper , mocks ] = makeWrapper ( ) ;
143+ [ wrapper , mocks ] = makeWrapper ( { public : true , deleted : false } ) ;
135144 } ) ;
136145
137146 it ( 'make private button should open make private confirmation' , async ( ) => {
138- await wrapper . findComponent ( '[data-test="private"]' ) . trigger ( 'click' ) ;
139- expect ( wrapper . vm . makePrivateDialog ) . toBe ( true ) ;
147+ await wrapper . find ( '[data-test="private"]' ) . trigger ( 'click' ) ;
148+ expect ( wrapper . vm . activeDialog ) . toBe ( 'makePrivate' ) ;
149+ } ) ;
150+
151+ it ( 'confirm make private should call makePrivateHandler' , async ( ) => {
152+ await wrapper . find ( '[data-test="private"]' ) . trigger ( 'click' ) ;
153+ wrapper . find ( '[data-test="confirm-private"]' ) . vm . $emit ( 'submit' ) ;
154+ expect ( mocks . makePrivateHandler ) . toHaveBeenCalled ( ) ;
155+ } ) ;
156+
157+ it ( 'should not show soft delete button for public channels' , ( ) => {
158+ expect ( wrapper . find ( '[data-test="softdelete"]' ) . exists ( ) ) . toBe ( false ) ;
159+ } ) ;
160+ } ) ;
161+
162+ describe ( 'modal configuration' , ( ) => {
163+ beforeEach ( ( ) => {
164+ [ wrapper , mocks ] = makeWrapper ( { public : false , deleted : false } ) ;
165+ } ) ;
166+
167+ it ( 'should set correct dialog config for makePublic' , async ( ) => {
168+ await wrapper . find ( '[data-test="public"]' ) . trigger ( 'click' ) ;
169+ expect ( wrapper . vm . dialogConfig . title ) . toBe ( 'Make channel public' ) ;
170+ expect ( wrapper . vm . dialogConfig . submitText ) . toBe ( 'Make public' ) ;
171+ expect ( wrapper . vm . dialogConfig . testId ) . toBe ( 'confirm-public' ) ;
172+ } ) ;
173+
174+ it ( 'should set correct dialog config for makePrivate' , async ( ) => {
175+ [ wrapper , mocks ] = makeWrapper ( { public : true , deleted : false } ) ;
176+ await wrapper . find ( '[data-test="private"]' ) . trigger ( 'click' ) ;
177+ expect ( wrapper . vm . dialogConfig . title ) . toBe ( 'Make channel private' ) ;
178+ expect ( wrapper . vm . dialogConfig . submitText ) . toBe ( 'Make private' ) ;
179+ expect ( wrapper . vm . dialogConfig . testId ) . toBe ( 'confirm-private' ) ;
180+ } ) ;
181+
182+ it ( 'should close dialog when cancel is emitted' , async ( ) => {
183+ await wrapper . find ( '[data-test="public"]' ) . trigger ( 'click' ) ;
184+ expect ( wrapper . vm . activeDialog ) . toBe ( 'makePublic' ) ;
185+ wrapper . find ( '[data-test="confirm-public"]' ) . vm . $emit ( 'cancel' ) ;
186+ expect ( wrapper . vm . activeDialog ) . toBeNull ( ) ;
140187 } ) ;
141188
142- it ( 'confirm make private should call updateChannel with isPublic = false' , async ( ) => {
143- await wrapper . findComponent ( '[data-test="private"]' ) . trigger ( 'click' ) ;
144- wrapper . findComponent ( '[data-test="confirm-private"]' ) . vm . $emit ( 'submit' ) ;
145- expect ( mocks . updateChannel ) . toHaveBeenCalledWith ( { id : channelId , isPublic : false } ) ;
189+ it ( 'should call handleSubmit when submit is emitted' , async ( ) => {
190+ const handleSubmitSpy = jest . spyOn ( wrapper . vm , 'handleSubmit' ) ;
191+ await wrapper . find ( '[data-test="public"]' ) . trigger ( 'click' ) ;
192+ wrapper . find ( '[data-test="confirm-public"]' ) . vm . $emit ( 'submit' ) ;
193+ expect ( handleSubmitSpy ) . toHaveBeenCalled ( ) ;
146194 } ) ;
147195 } ) ;
148196} ) ;
0 commit comments