import React from 'react';
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { fireEvent, render } from '@testing-library/react';
import { useBackNavigation } from './useBackNavigation';
const navigateMock = vi.fn();
vi.mock('react-router-dom', () => ({
useNavigate: () => navigateMock,
}));
function TestComponent({ fallback }: { fallback?: string }) {
const back = useBackNavigation(fallback);
return (
);
}
describe('useBackNavigation', () => {
beforeEach(() => {
navigateMock.mockReset();
});
it('navigates back when history is available', () => {
Object.defineProperty(window.history, 'length', {
configurable: true,
get: () => 3,
});
const { getByText } = render();
fireEvent.click(getByText('Back'));
expect(navigateMock).toHaveBeenCalledWith(-1);
});
it('navigates to fallback when history is empty', () => {
Object.defineProperty(window.history, 'length', {
configurable: true,
get: () => 1,
});
const { getByText } = render();
fireEvent.click(getByText('Back'));
expect(navigateMock).toHaveBeenCalledWith('/event-admin/mobile/dashboard', { replace: true });
});
});