Files
nobat724_front/lib/getStateInfo.test.js
T
hamed c316d22160 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.
2026-06-28 23:25:46 +03:30

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();
});
});