Files
ECS-FullStack/backend/tests/pg.reactionroles.test.js
2025-10-10 18:51:23 -04:00

63 lines
1.8 KiB
JavaScript

const pg = require('../pg');
// These tests are optional: they run only if TEST_DATABASE_URL is set in env.
// They are intentionally lightweight and will skip when not configured.
const TEST_DB = process.env.TEST_DATABASE_URL;
describe('pg reaction_roles helpers (integration)', () => {
if (!TEST_DB) {
test('skipped - no TEST_DATABASE_URL', () => {
expect(true).toBe(true);
});
return;
}
beforeAll(async () => {
process.env.DATABASE_URL = TEST_DB;
await pg.initPool();
await pg.ensureSchema();
});
let created;
test('createReactionRole -> returns created record', async () => {
const rr = {
guildId: 'test-guild',
channelId: 'test-channel',
name: 'Test RR',
embed: { title: 'Hello' },
buttons: [{ label: 'One', roleId: 'role1' }]
};
created = await pg.createReactionRole(rr);
expect(created).toBeTruthy();
expect(created.id).toBeGreaterThan(0);
expect(created.guild_id).toBe('test-guild');
});
test('listReactionRoles -> includes created', async () => {
const list = await pg.listReactionRoles('test-guild');
expect(Array.isArray(list)).toBe(true);
const found = list.find(r => r.id === created.id);
expect(found).toBeTruthy();
});
test('getReactionRole -> returns record by id', async () => {
const got = await pg.getReactionRole(created.id);
expect(got).toBeTruthy();
expect(got.id).toBe(created.id);
});
test('updateReactionRole -> updates and returns', async () => {
const updated = await pg.updateReactionRole(created.id, { name: 'Updated' });
expect(updated).toBeTruthy();
expect(updated.name).toBe('Updated');
});
test('deleteReactionRole -> removes record', async () => {
await pg.deleteReactionRole(created.id);
const after = await pg.getReactionRole(created.id);
expect(after).toBeNull();
});
});