// Test setup file for Jest
import dotenv from 'dotenv';
// Load environment variables for testing
dotenv.config({ path: '.env.test' });
// Set test environment
process.env.NODE_ENV = 'test';
// Global test timeout
jest.setTimeout(30000);
// Mock fetch for Node.js < 18 if needed
if (!global.fetch) {
// eslint-disable-next-line @typescript-eslint/no-var-requires
const { fetch, Headers, Request, Response } = require('cross-fetch');
global.fetch = fetch;
global.Headers = Headers;
global.Request = Request;
global.Response = Response;
}
// Setup global test utilities
beforeAll(async () => {
// Global setup if needed
});
afterAll(async () => {
// Global cleanup if needed
});
// Add custom matchers or utilities here if needed
expect.extend({
toBeValidPocketBaseRecord(received) {
const pass = received &&
typeof received.id === 'string' &&
typeof received.created === 'string' &&
typeof received.updated === 'string' &&
typeof received.collectionId === 'string' &&
typeof received.collectionName === 'string';
if (pass) {
return {
message: () => `expected ${received} not to be a valid PocketBase record`,
pass: true,
};
} else {
return {
message: () => `expected ${received} to be a valid PocketBase record`,
pass: false,
};
}
},
});
// Type declaration for custom matchers
declare global {
namespace jest {
interface Matchers<R> {
toBeValidPocketBaseRecord(): R;
}
}
}