feat: aplicar gating en syncMembersForActiveGroups y añadir pruebas
Co-authored-by: aider (openrouter/openai/gpt-5) <aider@aider.chat>pull/1/head
parent
37db7b283d
commit
302ba6daa8
@ -0,0 +1,46 @@
|
||||
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');
|
||||
});
|
||||
});
|
||||
Loading…
Reference in New Issue