Skip to content

Commit c3a3a58

Browse files
Updated test for channel Action dropdown
1 parent 9b7ad0e commit c3a3a58

File tree

1 file changed

+85
-37
lines changed

1 file changed

+85
-37
lines changed

contentcuration/contentcuration/frontend/administration/pages/Channels/__tests__/channelActionsDropdown.spec.js

Lines changed: 85 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)