You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			47 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
| import { describe, it, expect, beforeEach, afterEach } from 'bun:test';
 | |
| import { makeMemDb } from '../../helpers/db';
 | |
| import { GroupSyncService } from '../../../src/services/group-sync';
 | |
| import { AllowedGroups } from '../../../src/services/allowed-groups';
 | |
| 
 | |
| describe('GroupSyncService - gating en scheduler de miembros (enforce)', () => {
 | |
|   const envBackup = process.env;
 | |
|   const calls: string[] = [];
 | |
| 
 | |
|   beforeEach(() => {
 | |
|     process.env = { ...envBackup, NODE_ENV: 'ci', GROUP_GATING_MODE: 'enforce' };
 | |
| 
 | |
|     const memdb = makeMemDb();
 | |
|     (GroupSyncService as any).dbInstance = memdb;
 | |
|     (AllowedGroups as any).dbInstance = memdb;
 | |
| 
 | |
|     // Preparar caché de grupos activos (2 grupos: uno allowed y otro no)
 | |
|     GroupSyncService.activeGroupsCache.clear();
 | |
|     GroupSyncService.activeGroupsCache.set('ok@g.us', 'OK Group');
 | |
|     GroupSyncService.activeGroupsCache.set('na@g.us', 'NA Group');
 | |
| 
 | |
|     // Sembrar allowed solo para 'ok@g.us'
 | |
|     AllowedGroups.setStatus('ok@g.us', 'allowed', 'OK Group');
 | |
| 
 | |
|     // Stub de fetch para no hacer red y registrar llamadas
 | |
|     (GroupSyncService as any).fetchGroupMembersFromAPI = async (gid: string) => {
 | |
|       calls.push(gid);
 | |
|       // Snapshot vacía para no escribir en DB
 | |
|       return [];
 | |
|     };
 | |
|   });
 | |
| 
 | |
|   afterEach(() => {
 | |
|     process.env = envBackup;
 | |
|     calls.length = 0;
 | |
|   });
 | |
| 
 | |
|   it('salta grupos no allowed y solo procesa los allowed', async () => {
 | |
|     const summary = await GroupSyncService.syncMembersForActiveGroups();
 | |
| 
 | |
|     // Debe haber procesado solo 1 grupo (el allowed)
 | |
|     expect(summary.groups).toBe(1);
 | |
|     expect(calls).toEqual(['ok@g.us']);
 | |
|     expect(calls).not.toContain('na@g.us');
 | |
|   });
 | |
| });
 |