"use client";
import { describe, it, expect, vi } from 'vitest';
import { render, screen, fireEvent } from '@testing-library/react';
import React from 'react';
import Tooltip from '../Tooltip';
import { useSettingsStore } from '../../lib/store/settingsStore';
vi.mock('../../lib/store/settingsStore', () => ({
useSettingsStore: vi.fn(),
}));
describe('Tooltip', () => {
it('should render children correctly', () => {
vi.mocked(useSettingsStore).mockReturnValue({});
render(
Mussel Term
);
expect(screen.getByText('Mussel Term')).toBeInTheDocument();
});
it('should display tooltip definition on hover', async () => {
const mockTerms = {
mussel: {
key: 'mussel',
term: 'Green Mussel',
definition: 'Scientific definition of NZ green mussel',
wikiId: 'green-mussel',
},
};
vi.mocked(useSettingsStore).mockReturnValue(mockTerms);
render(
Hover Me
);
const trigger = screen.getByText('Hover Me');
fireEvent.mouseEnter(trigger);
expect(screen.getByText('Green Mussel')).toBeInTheDocument();
expect(screen.getByText('Scientific definition of NZ green mussel')).toBeInTheDocument();
fireEvent.mouseLeave(trigger);
// Tooltip should exit (though animations might delay actual removal, under standard RTL fireEvent it updates state immediately)
});
});