feat: add testing setup with Vitest and Testing Library
- Updated package.json to include Vitest and Testing Library dependencies and scripts for testing. - Created a test suite for the ProvinceProvider context to validate cityId and province detection based on subdomains. - Implemented unit tests for utility functions in helper/index.js, including phone number formatting and validation. - Added tests for state information retrieval in lib/getStateInfo.js, ensuring correct city and state matching based on subdomains. - Developed tests for appointment slot adaptation and availability checks in lib/appointmentSlots.js. - Created tests for token storage functionality in lib/tokenStore.js. - Implemented sanitization and JSON parsing tests in lib/sanitize.js. - Added CASL ability tests in lib/ability.js to verify user access rights. - Created tests for cookie management in lib/refreshCookie.js. - Developed tests for patient user representation in lib/representationAdapters.js. - Implemented client-side state information retrieval tests in lib/getStateInfoClient.js. - Created tests for canonical URL generation in lib/getCanonicalUrl.js. - Developed tests for clinic API service functions in services/clinicApi.js. - Added request wrapper tests in services/response.js to ensure correct API interaction. - Set up Vitest configuration in vitest.config.mjs for JSX support and alias resolution. - Created setup and utility files for testing environment in test/setup.js and test/utils.jsx.
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
import { defineConfig } from 'vitest/config';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
|
||||
// پروژه از .js برای فایلهای حاوی JSX استفاده میکند (الگوی Next).
|
||||
// esbuild را وادار میکنیم .js را با loader=jsx و runtime خودکار پردازش کند،
|
||||
// و همین loader را در dep-optimizer هم ست میکنیم تا import-analysis نشکند.
|
||||
export default defineConfig({
|
||||
resolve: {
|
||||
alias: { '@': fileURLToPath(new URL('.', import.meta.url)) },
|
||||
},
|
||||
esbuild: {
|
||||
loader: 'jsx',
|
||||
include: /\.(jsx?|tsx?)(\?.*)?$/,
|
||||
exclude: [],
|
||||
jsx: 'automatic',
|
||||
},
|
||||
optimizeDeps: {
|
||||
esbuildOptions: { loader: { '.js': 'jsx' } },
|
||||
},
|
||||
test: {
|
||||
environment: 'jsdom',
|
||||
globals: true,
|
||||
setupFiles: ['./test/setup.js'],
|
||||
include: ['**/*.{test,spec}.{js,jsx}'],
|
||||
exclude: ['node_modules', '.next', 'e2e'],
|
||||
css: false,
|
||||
clearMocks: true,
|
||||
restoreMocks: true,
|
||||
env: { NEXT_PUBLIC_API_URL: 'http://api.test.local' },
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user