* Add next suggestions and remove console logs * Add pomodoro timer * Add pomodoro switch in settings * Fix pomodoro setting * Add timezones to settings * Fix an issue with password reset * Cleanup * Sort tags alphabetically * Clean up today's view * Add an indicator for repeatedly added to today * Refactor tags * Add due date today item * Move recurrence to the subtitle area * Fix today layout * Add a badge to Inbox items * Move inbox badge to sidebar * Add quotes and progress bar * Add translations for quotes * Fix test issues * Add helper script for docker local * Set up overdue tasks * Add linux/arm/v7 build to deploy script * Add linux/arm/v7 build to deploy script pt2 * Fix an issue with helmet and SSL * Add volume db persistence * Fix cog icon issues
42 lines
No EOL
1.1 KiB
JavaScript
42 lines
No EOL
1.1 KiB
JavaScript
// Set test environment before importing models
|
|
process.env.NODE_ENV = 'test';
|
|
|
|
const { sequelize } = require('../../models');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
beforeAll(async () => {
|
|
// Ensure test database is clean and created
|
|
await sequelize.sync({ force: true });
|
|
}, 30000);
|
|
|
|
beforeEach(async () => {
|
|
// Clean all tables except Sessions to avoid conflicts
|
|
try {
|
|
const models = Object.values(sequelize.models);
|
|
const nonSessionModels = models.filter(model => model.name !== 'Session');
|
|
await Promise.all(nonSessionModels.map(model => model.destroy({ truncate: true, cascade: true })));
|
|
} catch (error) {
|
|
// Ignore errors during cleanup
|
|
}
|
|
});
|
|
|
|
afterEach(async () => {
|
|
// Clean up sessions after each test
|
|
try {
|
|
const Session = sequelize.models.Session;
|
|
if (Session) {
|
|
await Session.destroy({ truncate: true });
|
|
}
|
|
} catch (error) {
|
|
// Ignore errors during session cleanup
|
|
}
|
|
});
|
|
|
|
afterAll(async () => {
|
|
try {
|
|
await sequelize.close();
|
|
} catch (error) {
|
|
// Database may already be closed
|
|
}
|
|
}, 30000); |