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.
		
		
		
		
		
			
		
			
				
	
	
		
			43 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			TypeScript
		
	
| import { describe, it, expect } from 'bun:test';
 | |
| import Database from 'bun:sqlite';
 | |
| import { initializeDatabase } from '../../../src/db';
 | |
| 
 | |
| describe('Migración v9 - allowed_groups', () => {
 | |
|   it('crea la tabla allowed_groups', () => {
 | |
|     const memdb = new Database(':memory:');
 | |
|     expect(() => initializeDatabase(memdb)).not.toThrow();
 | |
| 
 | |
|     const row = memdb
 | |
|       .query(`SELECT name FROM sqlite_master WHERE type='table' AND name='allowed_groups'`)
 | |
|       .get() as any;
 | |
| 
 | |
|     expect(row?.name).toBe('allowed_groups');
 | |
|   });
 | |
| 
 | |
|   it('enforce CHECK de status', () => {
 | |
|     const memdb = new Database(':memory:');
 | |
|     initializeDatabase(memdb);
 | |
| 
 | |
|     // En bun:sqlite, exec() puede no lanzar en constraint violation. Validamos no persistencia.
 | |
|     memdb.exec(`
 | |
|       INSERT INTO allowed_groups (group_id, status, discovered_at, updated_at)
 | |
|       VALUES ('123@g.us', 'invalid-status', strftime('%Y-%m-%d %H:%M:%f','now'), strftime('%Y-%m-%d %H:%M:%f','now'));
 | |
|     `);
 | |
| 
 | |
|     const invalidCount = memdb
 | |
|       .query(`SELECT COUNT(*) AS c FROM allowed_groups WHERE group_id = '123@g.us'`)
 | |
|       .get() as any;
 | |
|     expect(Number(invalidCount?.c || 0)).toBe(0);
 | |
| 
 | |
|     // Inserción válida debe persistir
 | |
|     memdb.exec(`
 | |
|       INSERT INTO allowed_groups (group_id, status, discovered_at, updated_at)
 | |
|       VALUES ('ok@g.us', 'allowed', strftime('%Y-%m-%d %H:%M:%f','now'), strftime('%Y-%m-%d %H:%M:%f','now'));
 | |
|     `);
 | |
|     const validCount = memdb
 | |
|       .query(`SELECT COUNT(*) AS c FROM allowed_groups WHERE group_id = 'ok@g.us'`)
 | |
|       .get() as any;
 | |
|     expect(Number(validCount?.c || 0)).toBe(1);
 | |
|   });
 | |
| });
 |