import React from "react"
import { vi } from "vitest"
// Mock Timeline component
export const MockTimeline = vi.fn(({ onReady, onTimeUpdate, onSelectionChange, ...props }: any) => {
// Simulate component lifecycle
React.useEffect(() => {
if (onReady) {
onReady({ timeline: "mock-timeline-instance" })
}
}, [onReady])
return (
Timeline Header
Timeline Tracks
Playhead
)
})
// Mock Track component
export const MockTrack = vi.fn(({ track, onClipClick, onTrackClick, ...props }: any) => (
onTrackClick?.(track)}
{...props}
>
{track.name}
{track.clips?.map((clip: any) => (
{
e.stopPropagation()
onClipClick?.(clip)
}}
>
Clip {clip.id}
))}
))
// Mock Clip component
export const MockClip = vi.fn(({ clip, selected, onSelect, onDrag, onResize, ...props }: any) => (
onSelect?.(clip)} {...props}>
Thumbnail
{clip.endTime - clip.startTime}s
{clip.effects?.length > 0 &&
{clip.effects.length} effects
}
))
// Mock TimelineScale component
export const MockTimelineScale = vi.fn(({ duration, scale, onScaleChange, ...props }: any) => (
Scale: {scale}x | Duration: {duration}s
))
// Mock TimelineContent component
export const MockTimelineContent = vi.fn(({ children, onScroll, ...props }: any) => (
onScroll?.(e)} {...props}>
{children}
))
// Export all component mocks
export const timelineComponentMocks = {
Timeline: MockTimeline,
Track: MockTrack,
Clip: MockClip,
TimelineScale: MockTimelineScale,
TimelineContent: MockTimelineContent,
}
// Set up vi.mock calls
vi.mock("../components/timeline", () => ({
Timeline: MockTimeline,
}))
vi.mock("../components/track/track", () => ({
Track: MockTrack,
}))
vi.mock("../components/clip/clip", () => ({
Clip: MockClip,
}))
vi.mock("../components/timeline-scale/timeline-scale", () => ({
TimelineScale: MockTimelineScale,
}))
vi.mock("../components/timeline-content", () => ({
TimelineContent: MockTimelineContent,
}))
vi.mock("../components/timeline-top-panel", () => ({}))