@@ -213,6 +213,182 @@ describe("Discord actions", function () {
213213 } ) ;
214214 } ) ;
215215
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+
216392 describe ( "POST /discord-actions/roles" , function ( ) {
217393 let roleid ;
218394
0 commit comments