Files
mcp-tool/tests/setup/jest.setup.js
nasir@endelospay.com 728ff90ce5 fix
2025-07-12 01:59:18 +05:00

188 lines
4.6 KiB
JavaScript

/**
* @fileoverview Jest setup configuration for Laravel Healthcare MCP Server tests
* Configures global test environment, mocks, and utilities
*/
import { jest } from "@jest/globals";
// Set test environment variables
process.env.NODE_ENV = "test";
process.env.LARAVEL_API_BASE_URL = "https://test-api.example.com";
process.env.LARAVEL_API_TIMEOUT = "5000";
process.env.LARAVEL_API_RETRY_ATTEMPTS = "2";
// Mock console methods to reduce noise in tests
const originalConsole = global.console;
global.console = {
...originalConsole,
log: jest.fn(),
info: jest.fn(),
warn: jest.fn(),
error: jest.fn(),
debug: jest.fn(),
};
// Global test utilities
global.testUtils = {
/**
* Create a mock HTTP response
* @param {number} status - HTTP status code
* @param {Object} data - Response data
* @param {Object} headers - Response headers
* @returns {Object} Mock response object
*/
createMockResponse: (status = 200, data = {}, headers = {}) => ({
status,
data,
headers: {
"content-type": "application/json",
...headers,
},
statusText: status === 200 ? "OK" : "Error",
}),
/**
* Create a mock authentication token
* @param {string} authType - Authentication type
* @returns {string} Mock token
*/
createMockToken: (authType = "provider") =>
`mock_${authType}_token_${Date.now()}`,
/**
* Create mock patient data for HIPAA-compliant testing
* @returns {Object} Mock patient data
*/
createMockPatientData: () => ({
id: "test-patient-123",
firstName: "John",
lastName: "Doe",
email: "john.doe@test.example.com",
dateOfBirth: "1990-01-01",
genderIdentity: "Male",
preferredPhone: "555-0123",
address: "123 Test St",
city: "Test City",
state: "TS",
zipcode: "12345",
status: "active",
isPortalAccess: true,
}),
/**
* Create mock provider data
* @returns {Object} Mock provider data
*/
createMockProviderData: () => ({
id: "test-provider-456",
firstName: "Dr. Jane",
lastName: "Smith",
emailAddress: "dr.smith@test.example.com",
textMessageNumber: "555-0456",
username: "drsmith",
company_name: "Test Medical Center",
accessRights: {
admin: true,
practitioner: true,
patientPortal: false,
},
}),
/**
* Create mock prescription data
* @returns {Object} Mock prescription data
*/
createMockPrescriptionData: () => ({
id: "test-prescription-789",
patientId: "test-patient-123",
providerId: "test-provider-456",
medication: "Test Medication",
dosage: "10mg",
frequency: "Once daily",
duration: "30 days",
status: "active",
}),
/**
* Create mock appointment data
* @returns {Object} Mock appointment data
*/
createMockAppointmentData: () => ({
id: "test-appointment-101",
patientId: "test-patient-123",
providerId: "test-provider-456",
date: "2025-07-15",
time: "10:00",
type: "consultation",
status: "scheduled",
}),
/**
* Wait for a specified amount of time
* @param {number} ms - Milliseconds to wait
* @returns {Promise} Promise that resolves after the specified time
*/
wait: (ms) => new Promise((resolve) => setTimeout(resolve, ms)),
/**
* Generate a random string for testing
* @param {number} length - Length of the string
* @returns {string} Random string
*/
randomString: (length = 10) => {
const chars =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
let result = "";
for (let i = 0; i < length; i++) {
result += chars.charAt(Math.floor(Math.random() * chars.length));
}
return result;
},
};
// Global test constants
global.testConstants = {
AUTH_TYPES: {
PUBLIC: "public",
PROVIDER: "provider",
PATIENT: "patient",
PARTNER: "partner",
AFFILIATE: "affiliate",
NETWORK: "network",
},
HTTP_STATUS: {
OK: 200,
CREATED: 201,
BAD_REQUEST: 400,
UNAUTHORIZED: 401,
FORBIDDEN: 403,
NOT_FOUND: 404,
INTERNAL_SERVER_ERROR: 500,
},
MOCK_ENDPOINTS: {
LOGIN: "/api/login",
PATIENT_LOGIN: "/api/frontend/login",
PROVIDER_REGISTER: "/emr-api/provider-register",
PATIENT_UPDATE: "/api/emr/update-patient",
PRESCRIPTION_CREATE: "/api/emr/prescriptions",
},
};
// Setup global error handling for tests
process.on("unhandledRejection", (reason, promise) => {
console.error("Unhandled Rejection at:", promise, "reason:", reason);
});
// Cleanup after each test
afterEach(() => {
jest.clearAllMocks();
});
// Global teardown
afterAll(() => {
// Restore original console
global.console = originalConsole;
});