1+ import { DISCORD_ROLE_IDS } from "../../../src/constants/discordRoles" ;
12import { INVITE_OPTIONS } from "../../../src/constants/inviteOptions" ;
23import * as response from "../../../src/constants/responses" ;
34import JSONResponse from "../../../src/utils/JsonResponse" ;
45import { generateDiscordLink } from "../../../src/utils/generateDiscordInvite" ;
56import { dummyInviteBody , guildEnv } from "../../fixtures/fixture" ;
67
8+ const defaultRoleIds = [
9+ DISCORD_ROLE_IDS . DEVELOPMENT . DEVELOPER ,
10+ DISCORD_ROLE_IDS . DEVELOPMENT . UNVERIFIED ,
11+ DISCORD_ROLE_IDS . DEVELOPMENT . NEW ,
12+ ] ;
13+
714describe ( "generate invite link" , ( ) => {
815 it ( "should pass the reason to discord as a X-Audit-Log-Reason header if provided" , async ( ) => {
916 jest
@@ -26,6 +33,7 @@ describe("generate invite link", () => {
2633 body : JSON . stringify ( {
2734 max_uses : INVITE_OPTIONS . MAX_USE ,
2835 unique : INVITE_OPTIONS . UNIQUE ,
36+ role_ids : defaultRoleIds ,
2937 } ) ,
3038 }
3139 ) ;
@@ -49,6 +57,7 @@ describe("generate invite link", () => {
4957 body : JSON . stringify ( {
5058 max_uses : INVITE_OPTIONS . MAX_USE ,
5159 unique : INVITE_OPTIONS . UNIQUE ,
60+ role_ids : defaultRoleIds ,
5261 } ) ,
5362 }
5463 ) ;
@@ -75,8 +84,56 @@ describe("generate invite link", () => {
7584 body : JSON . stringify ( {
7685 max_uses : INVITE_OPTIONS . MAX_USE ,
7786 unique : INVITE_OPTIONS . UNIQUE ,
87+ role_ids : defaultRoleIds ,
7888 } ) ,
7989 }
8090 ) ;
8191 } ) ;
92+
93+ test ( "should include three role_ids when role is passed (staging)" , async ( ) => {
94+ jest
95+ . spyOn ( global , "fetch" )
96+ . mockImplementation ( ( ) => Promise . resolve ( new JSONResponse ( { } ) ) ) ;
97+
98+ await generateDiscordLink (
99+ { ...dummyInviteBody , role : "developer" } ,
100+ guildEnv
101+ ) ;
102+
103+ expect ( global . fetch ) . toHaveBeenCalledWith (
104+ `https://discord.com/api/v10/channels/${ dummyInviteBody . channelId } /invites` ,
105+ {
106+ method : "POST" ,
107+ headers : {
108+ "Content-Type" : "application/json" ,
109+ Authorization : `Bot ${ guildEnv . DISCORD_TOKEN } ` ,
110+ } ,
111+ body : JSON . stringify ( {
112+ max_uses : INVITE_OPTIONS . MAX_USE ,
113+ unique : INVITE_OPTIONS . UNIQUE ,
114+ role_ids : [
115+ DISCORD_ROLE_IDS . DEVELOPMENT . DEVELOPER ,
116+ DISCORD_ROLE_IDS . DEVELOPMENT . UNVERIFIED ,
117+ DISCORD_ROLE_IDS . DEVELOPMENT . NEW ,
118+ ] ,
119+ } ) ,
120+ }
121+ ) ;
122+ } ) ;
123+
124+ test ( "should return BAD_REQUEST when role is invalid or unknown" , async ( ) => {
125+ const result = await generateDiscordLink (
126+ { ...dummyInviteBody , role : "unknown_role" } ,
127+ guildEnv
128+ ) ;
129+ expect ( result ) . toEqual ( response . BAD_REQUEST ) ;
130+ } ) ;
131+
132+ test ( "should return BAD_REQUEST when role is empty" , async ( ) => {
133+ const result = await generateDiscordLink (
134+ { ...dummyInviteBody , role : "" } ,
135+ guildEnv
136+ ) ;
137+ expect ( result ) . toEqual ( response . BAD_REQUEST ) ;
138+ } ) ;
82139} ) ;
0 commit comments