MeshiTrack/packages/web/src/components/layout/__tests__/PageHeaderContext.test.tsx

35 lines
1 KiB
TypeScript
Raw Normal View History

2026-05-19 10:13:40 +09:00
import { describe, it, expect } from 'vitest';
import { render, screen, fireEvent } from '@testing-library/react';
import { PageHeaderProvider, usePageHeader } from '../PageHeaderContext';
function TestComponent() {
const { header, setHeader } = usePageHeader();
return (
<div>
<span data-testid="title">{header.title}</span>
<button onClick={() => setHeader({ title: 'New Title' })}>Change</button>
</div>
);
}
describe('PageHeaderContext', () => {
it('provides and updates header state', () => {
render(
<PageHeaderProvider>
<TestComponent />
</PageHeaderProvider>
);
expect(screen.getByTestId('title').textContent).toBe('MeshiTrack');
fireEvent.click(screen.getByText('Change'));
expect(screen.getByTestId('title').textContent).toBe('New Title');
});
it('returns fallback when used outside provider', () => {
render(<TestComponent />);
// Outside provider title returns '' fallback
expect(screen.getByTestId('title').textContent).toBe('');
});
});