@@ -213,6 +213,182 @@ describe("Discord actions", function () {
213
213
} ) ;
214
214
} ) ;
215
215
216
+ describe ( "DELETE /discord-actions/groups/:groupId" , function ( ) {
217
+ let groupId ;
218
+ // eslint-disable-next-line mocha/no-setup-in-describe
219
+ const roleData = groupData [ 0 ] ;
220
+
221
+ beforeEach ( async function ( ) {
222
+ const docRef = await discordRoleModel . add ( roleData ) ;
223
+ groupId = docRef . id ;
224
+
225
+ superUserId = await addUser ( superUser ) ;
226
+ superUserAuthToken = authService . generateAuthToken ( { userId : superUserId } ) ;
227
+
228
+ sinon . stub ( discordRolesModel , "deleteGroupRole" ) . resolves ( { isSuccess : true } ) ;
229
+ } ) ;
230
+
231
+ afterEach ( async function ( ) {
232
+ sinon . restore ( ) ;
233
+ await cleanDb ( ) ;
234
+ } ) ;
235
+
236
+ it ( "should return 404 when not in dev mode" , function ( done ) {
237
+ chai
238
+ . request ( app )
239
+ . delete ( `/discord-actions/groups/${ groupId } ` )
240
+ . set ( "cookie" , `${ cookieName } =${ superUserAuthToken } ` )
241
+ . end ( ( err , res ) => {
242
+ expect ( res ) . to . have . status ( 404 ) ;
243
+ expect ( res . body . error ) . to . equal ( "Not Found" ) ;
244
+ done ( err ) ;
245
+ } ) ;
246
+ } ) ;
247
+
248
+ it ( "should return 404 if group role not found" , function ( done ) {
249
+ sinon . stub ( discordRolesModel , "isGroupRoleExists" ) . resolves ( {
250
+ roleExists : false ,
251
+ existingRoles : { data : ( ) => ( { ...roleData , roleid : roleData . roleid } ) } ,
252
+ } ) ;
253
+
254
+ chai
255
+ . request ( app )
256
+ . delete ( `/discord-actions/groups/${ groupId } ?dev=true` )
257
+ . set ( "cookie" , `${ cookieName } =${ superUserAuthToken } ` )
258
+ . end ( ( err , res ) => {
259
+ expect ( res ) . to . have . status ( 404 ) ;
260
+ expect ( res . body . error ) . to . equal ( "Not Found" ) ;
261
+ done ( err ) ;
262
+ } ) ;
263
+ } ) ;
264
+
265
+ it ( "should successfully delete the group role from discord server" , function ( done ) {
266
+ sinon . stub ( discordRolesModel , "isGroupRoleExists" ) . resolves ( {
267
+ roleExists : true ,
268
+ existingRoles : { data : ( ) => ( { ...roleData , roleid : roleData . roleid } ) } ,
269
+ } ) ;
270
+
271
+ sinon . stub ( discordServices , "deleteGroupRoleFromDiscord" ) . resolves ( {
272
+ success : true ,
273
+ message : "Role deleted successfully" ,
274
+ } ) ;
275
+
276
+ chai
277
+ . request ( app )
278
+ . delete ( `/discord-actions/groups/${ groupId } ?dev=true` )
279
+ . set ( "cookie" , `${ cookieName } =${ superUserAuthToken } ` )
280
+ . end ( ( err , res ) => {
281
+ expect ( res ) . to . have . status ( 200 ) ;
282
+ expect ( res . body . message ) . to . equal ( "Group role deleted successfully" ) ;
283
+ done ( err ) ;
284
+ } ) ;
285
+ } ) ;
286
+
287
+ it ( "should return 500 when discord role deletion fails" , function ( done ) {
288
+ sinon . stub ( discordRolesModel , "isGroupRoleExists" ) . resolves ( {
289
+ roleExists : true ,
290
+ existingRoles : { data : ( ) => ( { ...roleData , roleid : roleData . roleid } ) } ,
291
+ } ) ;
292
+
293
+ sinon . stub ( discordServices , "deleteGroupRoleFromDiscord" ) . resolves ( {
294
+ success : false ,
295
+ message : "Failed to delete role from Discord" ,
296
+ } ) ;
297
+
298
+ chai
299
+ . request ( app )
300
+ . delete ( `/discord-actions/groups/${ groupId } ?dev=true` )
301
+ . set ( "cookie" , `${ cookieName } =${ superUserAuthToken } ` )
302
+ . end ( ( err , res ) => {
303
+ expect ( res ) . to . have . status ( 500 ) ;
304
+ expect ( res . body . error ) . to . equal ( "Internal Server Error" ) ;
305
+ done ( err ) ;
306
+ } ) ;
307
+ } ) ;
308
+
309
+ it ( "should return 500 when discord service throws an error" , function ( done ) {
310
+ sinon . stub ( discordRolesModel , "isGroupRoleExists" ) . resolves ( {
311
+ roleExists : true ,
312
+ existingRoles : { data : ( ) => ( { ...roleData , roleid : roleData . roleid } ) } ,
313
+ } ) ;
314
+
315
+ sinon . stub ( discordServices , "deleteGroupRoleFromDiscord" ) . resolves ( {
316
+ success : false ,
317
+ message : "Internal server error" ,
318
+ } ) ;
319
+
320
+ chai
321
+ . request ( app )
322
+ . delete ( `/discord-actions/groups/${ groupId } ?dev=true` )
323
+ . set ( "cookie" , `${ cookieName } =${ superUserAuthToken } ` )
324
+ . end ( ( err , res ) => {
325
+ expect ( res ) . to . have . status ( 500 ) ;
326
+ expect ( res . body . error ) . to . equal ( "Internal Server Error" ) ;
327
+ done ( err ) ;
328
+ } ) ;
329
+ } ) ;
330
+
331
+ it ( "should successfully delete a group role from database" , function ( done ) {
332
+ sinon . stub ( discordRolesModel , "isGroupRoleExists" ) . resolves ( {
333
+ roleExists : true ,
334
+ existingRoles : { data : ( ) => ( { ...roleData , roleid : roleData . roleid } ) } ,
335
+ } ) ;
336
+
337
+ sinon . stub ( discordServices , "deleteGroupRoleFromDiscord" ) . resolves ( {
338
+ success : true ,
339
+ message : "Role deleted successfully" ,
340
+ } ) ;
341
+
342
+ chai
343
+ . request ( app )
344
+ . delete ( `/discord-actions/groups/${ groupId } ?dev=true` )
345
+ . set ( "cookie" , `${ cookieName } =${ superUserAuthToken } ` )
346
+ . end ( ( err , res ) => {
347
+ expect ( res ) . to . have . status ( 200 ) ;
348
+ expect ( res . body . message ) . to . equal ( "Group role deleted successfully" ) ;
349
+ done ( err ) ;
350
+ } ) ;
351
+ } ) ;
352
+
353
+ it ( "should return 500 when deletion fails" , function ( done ) {
354
+ sinon . restore ( ) ;
355
+ sinon . stub ( discordRolesModel , "isGroupRoleExists" ) . resolves ( {
356
+ roleExists : true ,
357
+ existingRoles : { data : ( ) => ( { ...roleData , roleid : roleData . roleid } ) } ,
358
+ } ) ;
359
+
360
+ sinon . stub ( discordServices , "deleteGroupRoleFromDiscord" ) . resolves ( {
361
+ success : true ,
362
+ message : "Role deleted successfully" ,
363
+ } ) ;
364
+
365
+ sinon . stub ( discordRolesModel , "deleteGroupRole" ) . resolves ( { isSuccess : false } ) ;
366
+ chai
367
+ . request ( app )
368
+ . delete ( `/discord-actions/groups/${ groupId } ?dev=true` )
369
+ . set ( "cookie" , `${ cookieName } =${ superUserAuthToken } ` )
370
+ . end ( ( err , res ) => {
371
+ expect ( res ) . to . have . status ( 500 ) ;
372
+ expect ( res . body . error ) . to . equal ( "Internal Server Error" ) ;
373
+ done ( err ) ;
374
+ } ) ;
375
+ } ) ;
376
+
377
+ it ( "should return 500 when an internal error occurs" , function ( done ) {
378
+ sinon . restore ( ) ;
379
+ sinon . stub ( discordRolesModel , "isGroupRoleExists" ) . throws ( new Error ( "Database error" ) ) ;
380
+ chai
381
+ . request ( app )
382
+ . delete ( `/discord-actions/groups/${ groupId } ?dev=true` )
383
+ . set ( "cookie" , `${ cookieName } =${ superUserAuthToken } ` )
384
+ . end ( ( err , res ) => {
385
+ expect ( res ) . to . have . status ( 500 ) ;
386
+ expect ( res . body . error ) . to . equal ( "Internal Server Error" ) ;
387
+ done ( err ) ;
388
+ } ) ;
389
+ } ) ;
390
+ } ) ;
391
+
216
392
describe ( "POST /discord-actions/roles" , function ( ) {
217
393
let roleid ;
218
394
0 commit comments