@@ -5,14 +5,21 @@ import { AccessDeniedException, HttpException, NotFoundException } from '../../s
55import { batmanAppAdmin , supermanAdmin , greenlanternHead , wonderwomanGuest , member } from '../test-data/users.test-data.js' ;
66import { createTestOrganization , createTestTeam , createTestTeamType , createTestUser , resetUsers } from '../test-utils.js' ;
77import prisma from '../../src/prisma/prisma.js' ;
8- import { sendMessage , editMessage , replyToMessageInThread , getChannelName } from '../../src/integrations/slack.js' ;
8+ import {
9+ sendMessage ,
10+ editMessage ,
11+ replyToMessageInThread ,
12+ getChannelName ,
13+ checkBotInChannel
14+ } from '../../src/integrations/slack.js' ;
915import { Mock } from 'vitest' ;
1016
1117vi . mock ( '../../src/integrations/slack.js' , ( ) => ( {
1218 sendMessage : vi . fn ( ) ,
1319 editMessage : vi . fn ( ) ,
1420 replyToMessageInThread : vi . fn ( ) ,
15- getChannelName : vi . fn ( )
21+ getChannelName : vi . fn ( ) ,
22+ checkBotInChannel : vi . fn ( )
1623} ) ) ;
1724
1825// Creates a second test org with distinct credentials (since createTestOrganization uses a hardcoded empty email)
@@ -531,11 +538,25 @@ describe('Attendance Tests', () => {
531538 expect ( result . channelName ) . toBeUndefined ( ) ;
532539 } ) ;
533540
534- it ( 'returns valid: true with channel name if Slack channel is found' , async ( ) => {
541+ it ( 'returns valid: false if Slack channel is found but bot is not a member ' , async ( ) => {
535542 const head = await createTestUser ( greenlanternHead , orgId ) ;
536543 const team = await createTeamInOrg ( head . userId , orgId ) ;
537544
538545 ( getChannelName as Mock ) . mockResolvedValue ( 'ner-software' ) ;
546+ ( checkBotInChannel as Mock ) . mockResolvedValue ( false ) ;
547+
548+ const result = await AttendanceService . checkTeamChannel ( team . teamId , organization ) ;
549+
550+ expect ( result . valid ) . toBe ( false ) ;
551+ expect ( result . channelName ) . toBe ( 'ner-software' ) ;
552+ } ) ;
553+
554+ it ( 'returns valid: true with channel name if Slack channel is found and bot is a member' , async ( ) => {
555+ const head = await createTestUser ( greenlanternHead , orgId ) ;
556+ const team = await createTeamInOrg ( head . userId , orgId ) ;
557+
558+ ( getChannelName as Mock ) . mockResolvedValue ( 'ner-software' ) ;
559+ ( checkBotInChannel as Mock ) . mockResolvedValue ( true ) ;
539560
540561 const result = await AttendanceService . checkTeamChannel ( team . teamId , organization ) ;
541562
0 commit comments