diff --git a/server/tests/setup.js b/server/tests/setup.js index e038896..449d081 100644 --- a/server/tests/setup.js +++ b/server/tests/setup.js @@ -109,19 +109,22 @@ async function teardownTestEnvironment() { async function cleanDatabase() { if (sequelize) { try { - // Disable foreign key checks temporarily - await sequelize.query('PRAGMA foreign_keys = OFF'); - - // Force sync with drop and recreate + // For SQLite in-memory, completely drop all tables and recreate + await sequelize.drop(); await sequelize.sync({ force: true }); - // Re-enable foreign key checks - await sequelize.query('PRAGMA foreign_keys = ON'); - console.log('✅ Database cleaned successfully'); } catch (error) { console.error('❌ Database cleanup failed:', error.message); - throw error; + // Fallback: try alternative cleanup + try { + const models = sequelize.models; + for (const modelName of Object.keys(models)) { + await models[modelName].destroy({ where: {}, truncate: true }); + } + } catch (fallbackError) { + console.error('❌ Fallback cleanup also failed:', fallbackError.message); + } } } } @@ -180,6 +183,14 @@ async function createTestUser(userData = {}) { // Remove any id field to let Sequelize auto-generate UUID delete defaultUserData.id; + // Additional safety check - remove any UUIDV4 function objects + Object.keys(defaultUserData).forEach(key => { + if (defaultUserData[key] && typeof defaultUserData[key] === 'object' && + defaultUserData[key].constructor && defaultUserData[key].constructor.name === 'UUIDV4') { + delete defaultUserData[key]; + } + }); + return await User.create(defaultUserData); } @@ -274,6 +285,14 @@ async function createTestTenant(tenantData = {}) { // Remove any id field to let Sequelize auto-generate UUID delete defaultTenantData.id; + // Additional safety check - remove any UUIDV4 function objects + Object.keys(defaultTenantData).forEach(key => { + if (defaultTenantData[key] && typeof defaultTenantData[key] === 'object' && + defaultTenantData[key].constructor && defaultTenantData[key].constructor.name === 'UUIDV4') { + delete defaultTenantData[key]; + } + }); + try { return await Tenant.create(defaultTenantData); } catch (error) {