import { act, renderHook } from '@testing-library/react';
import { beforeEach, expect, it, vi } from 'vitest';
import type { AuthUser } from '@alqove/types';
import type { Membership } from '@alqove/api-client';
import { useAuthStore } from '@/stores/auth';
import { useSelectedMembership, useSelectedStoreId } from '../store-context';
vi.mock('@/lib/api', () => ({ api: {} }));
const member: Membership = { id: 'm', store_id: 'chosen', role: 'sales', capabilities: ['team.view'], is_exempt: false };
beforeEach(() => useAuthStore.setState({
  user: { id: 'u', store_id: 'legacy' } as AuthUser, isLoading: false,
  selectedStoreId: 'chosen', memberships: [member],
}));
it('derives both hooks from the selected authoritative membership and ejects on revocation', () => {
  const { result } = renderHook(() => ({ id: useSelectedStoreId(), membership: useSelectedMembership() }));
  expect(result.current).toEqual({ id: 'chosen', membership: member });
  act(() => useAuthStore.setState({ memberships: [] }));
  expect(result.current).toEqual({ id: null, membership: undefined });
  act(() => useAuthStore.setState({ memberships: null }));
  expect(result.current.id).toBeNull();
  act(() => useAuthStore.setState({ memberships: [member], selectedStoreId: 'legacy' }));
  expect(result.current.id).toBeNull();
});
