import { render } from '@testing-library/react'
import * as React from 'react'
import { describe, expect, it } from 'vitest'
import VideoGallery from '../video-gallery'
import VideoBlock from './video-block'
type ChildNode = {
properties?: {
src?: string
}
}
type BlockNode = {
children: ChildNode[]
properties?: {
src?: string
}
}
describe('VideoBlock', () => {
it('renders multiple video sources from node.children', () => {
const node: BlockNode = {
children: [
{ properties: { src: 'a.mp4' } },
{ properties: { src: 'b.mp4' } },
],
}
render()
const video = document.querySelector('video')
expect(video).toBeTruthy()
const sources = document.querySelectorAll('source')
expect(sources).toHaveLength(2)
expect(sources[0]).toHaveAttribute('src', 'a.mp4')
expect(sources[1]).toHaveAttribute('src', 'b.mp4')
})
it('renders single video from node.properties.src when no children srcs', () => {
const node: BlockNode = {
children: [],
properties: { src: 'single.mp4' },
}
render()
const sources = document.querySelectorAll('source')
expect(sources).toHaveLength(1)
expect(sources[0]).toHaveAttribute('src', 'single.mp4')
})
it('returns null when no sources exist', () => {
const node: BlockNode = {
children: [],
properties: {},
}
const { container } = render()
expect(container.innerHTML).toBe('')
})
it('has displayName set', () => {
expect(VideoBlock.displayName).toBe('VideoBlock')
})
})
describe('VideoGallery', () => {
it('returns null when srcs are empty or invalid', () => {
const { container } = render()
expect(container.innerHTML).toBe('')
})
it('renders video when valid srcs provided', () => {
render()
const sources = document.querySelectorAll('source')
expect(sources).toHaveLength(2)
expect(sources[0]).toHaveAttribute('src', 'ok.mp4')
expect(sources[1]).toHaveAttribute('src', 'also.mp4')
})
})