- 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.
36 lines
1.2 KiB
JavaScript
36 lines
1.2 KiB
JavaScript
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
|
|
const { hostRef } = vi.hoisted(() => ({ hostRef: { value: '' } }));
|
|
|
|
vi.mock('next/headers', () => ({
|
|
headers: async () => ({ get: (k) => (k === 'host' ? hostRef.value : null) }),
|
|
}));
|
|
|
|
import { getStateInfo } from '@/lib/getStateInfo';
|
|
|
|
beforeEach(() => {
|
|
hostRef.value = '';
|
|
});
|
|
|
|
describe('getStateInfo (server)', () => {
|
|
it('subdomain شناختهشده → شهر و استان درست', async () => {
|
|
hostRef.value = 'arak-nobat.ir';
|
|
const { matchedCity, matchedState } = await getStateInfo();
|
|
expect(matchedCity?.name).toBe('اراک');
|
|
expect(matchedState?.name).toBe('مرکزی');
|
|
});
|
|
|
|
it('host ناشناخته → بدون تطبیق', async () => {
|
|
hostRef.value = 'unknown-city.ir';
|
|
const { matchedCity, matchedState } = await getStateInfo();
|
|
expect(matchedCity).toBeUndefined();
|
|
expect(matchedState).toBeFalsy();
|
|
});
|
|
|
|
it('host خالی → بدون تطبیق', async () => {
|
|
hostRef.value = '';
|
|
const { matchedCity } = await getStateInfo();
|
|
expect(matchedCity).toBeUndefined();
|
|
});
|
|
});
|