mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-06-20 22:01:45 +00:00
3977a5ecba
Add entity/response Zod schemas to @trek/shared (place, trip, assignment, day, budget, packing, reservation), each matched against the producing server service, and re-export them from client types.ts instead of the hand-written duplicates that had drifted (name/title, amount/total_price, owner_id/user_id, cover_url/cover_image, ...). Updates the call sites and test fixtures the corrected types surfaced; type-only, no runtime behaviour change.
42 lines
1.9 KiB
TypeScript
42 lines
1.9 KiB
TypeScript
import { useAuthStore } from '../../src/store/authStore';
|
|
import { useTripStore } from '../../src/store/tripStore';
|
|
import { useSettingsStore } from '../../src/store/settingsStore';
|
|
import { useVacayStore } from '../../src/store/vacayStore';
|
|
import { useAddonStore } from '../../src/store/addonStore';
|
|
import { useInAppNotificationStore } from '../../src/store/inAppNotificationStore';
|
|
import { usePermissionsStore } from '../../src/store/permissionsStore';
|
|
// Journey store is reset individually in journey tests to avoid circular import issues
|
|
|
|
// Capture initial states at import time (before any test modifies them)
|
|
const initialAuthState = useAuthStore.getState();
|
|
const initialTripState = useTripStore.getState();
|
|
const initialSettingsState = useSettingsStore.getState();
|
|
const initialVacayState = useVacayStore.getState();
|
|
const initialAddonState = useAddonStore.getState();
|
|
const initialNotifState = useInAppNotificationStore.getState();
|
|
const initialPermsState = usePermissionsStore.getState();
|
|
export function resetAllStores(): void {
|
|
useAuthStore.setState(initialAuthState, true);
|
|
useTripStore.setState(initialTripState, true);
|
|
useSettingsStore.setState(initialSettingsState, true);
|
|
useVacayStore.setState(initialVacayState, true);
|
|
useAddonStore.setState(initialAddonState, true);
|
|
useInAppNotificationStore.setState(initialNotifState, true);
|
|
usePermissionsStore.setState(initialPermsState, true);
|
|
}
|
|
|
|
/**
|
|
* Tests routinely seed a store with a partially-populated slice of state,
|
|
* including partial nested objects (e.g. only `settings.time_format`). The
|
|
* store's own setState wants the exact field types, so seeding accepts a
|
|
* deep-partial view and casts at the boundary.
|
|
*/
|
|
type DeepPartial<T> = T extends object ? { [P in keyof T]?: DeepPartial<T[P]> } : T;
|
|
|
|
export function seedStore<T extends object>(
|
|
store: { setState: (partial: Partial<T>, replace?: boolean) => void },
|
|
state: DeepPartial<T>,
|
|
): void {
|
|
store.setState(state as Partial<T>);
|
|
}
|