mirror of
https://github.com/zoriya/v10.git
synced 2026-08-16 02:45:09 +00:00
59 lines
2.1 KiB
TypeScript
59 lines
2.1 KiB
TypeScript
import { render, waitFor } from '@testing-library/react';
|
|
import { popup } from '@videojs/skins/default/tailwind/video.tailwind';
|
|
import type { ReactNode } from 'react';
|
|
import { describe, expect, it, vi } from 'vitest';
|
|
|
|
import { PlayerContextProvider, type PlayerContextValue } from '../../../player/context';
|
|
import { createMockStore } from '../../../testing/mocks';
|
|
import { Hotkey } from '../../hotkey/hotkey';
|
|
import { Tooltip } from '../../tooltip';
|
|
import { PlaybackRateButton } from '../playback-rate-button';
|
|
|
|
function createContextValue(container: HTMLElement): PlayerContextValue {
|
|
return {
|
|
store: createMockStore({
|
|
playbackRates: [0.5, 1, 1.5, 2],
|
|
playbackRate: 1,
|
|
setPlaybackRate: vi.fn(),
|
|
}) as any,
|
|
media: null,
|
|
setMedia: vi.fn(),
|
|
container,
|
|
setContainer: vi.fn(),
|
|
};
|
|
}
|
|
|
|
function Wrapper({ children, value }: { children: ReactNode; value: PlayerContextValue }) {
|
|
return <PlayerContextProvider value={value}>{children}</PlayerContextProvider>;
|
|
}
|
|
|
|
describe('PlaybackRateButton', () => {
|
|
it('uses the core label and the speed-up shortcut', async () => {
|
|
const container = document.createElement('div');
|
|
const value = createContextValue(container);
|
|
|
|
render(
|
|
<Wrapper value={value}>
|
|
<Tooltip.Root defaultOpen>
|
|
<Tooltip.Trigger render={<PlaybackRateButton data-testid="button" />} />
|
|
<Tooltip.Popup data-testid="popup">
|
|
<Tooltip.Label />
|
|
<Tooltip.Shortcut className={popup.tooltipShortcut} />
|
|
</Tooltip.Popup>
|
|
</Tooltip.Root>
|
|
<Hotkey keys=">" action="speedUp" />
|
|
<Hotkey keys="<" action="speedDown" />
|
|
</Wrapper>
|
|
);
|
|
|
|
const button = document.querySelector('[data-testid="button"]');
|
|
|
|
await waitFor(() => {
|
|
expect(document.querySelector('[data-testid="popup"] span')?.textContent).toBe('Playback rate 1');
|
|
expect(document.querySelector('[data-testid="popup"] kbd')?.textContent).toBe('>');
|
|
});
|
|
expect(button?.getAttribute('aria-label')).toBe('Playback rate 1');
|
|
expect(button?.getAttribute('aria-keyshortcuts')).toBe('>');
|
|
});
|
|
});
|