widgettdc-api / tests /unit /userModel.test.cjs
Kraft102's picture
fix: sql.js Docker/Alpine compatibility layer for PatternMemory and FailureMemory
5a81b95
const DatabaseTestHelper = require('../helpers/dbHelper.cjs');
describe('User Model', () => {
let dbHelper;
beforeAll(async () => {
dbHelper = new DatabaseTestHelper();
await dbHelper.connect();
});
afterAll(async () => {
await dbHelper.disconnect();
});
beforeEach(async () => {
await dbHelper.clearDatabase();
});
test('should create a user with valid data', async () => {
const user = await dbHelper.createTestUser({
username: 'john_doe',
email: 'john@example.com',
});
expect(user.id).toBeDefined();
expect(user.username).toBe('john_doe');
expect(user.email).toBe('john@example.com');
expect(user.isActive).toBe(true);
});
test('should enforce unique username constraint', async () => {
await dbHelper.createTestUser({ username: 'duplicate' });
await expect(
dbHelper.createTestUser({
username: 'duplicate',
email: 'different@example.com',
})
).rejects.toThrow();
});
test('should enforce unique email constraint', async () => {
await dbHelper.createTestUser({ email: 'same@example.com' });
await expect(
dbHelper.createTestUser({
username: 'different',
email: 'same@example.com',
})
).rejects.toThrow();
});
test('should validate email format', async () => {
await expect(dbHelper.createTestUser({ email: 'invalid-email' })).rejects.toThrow();
});
});