|
7 | 7 |
|
8 | 8 | import { describe, expect, it, beforeEach, vi, afterEach, afterAll } from 'vitest'; |
9 | 9 | import { Composition } from './composition'; |
10 | | -import { Clip } from '../clips'; |
11 | | -import { AudioTrack, ImageTrack, TextTrack, VideoTrack } from '../tracks'; |
| 10 | +import { Clip, TextClip } from '../clips'; |
| 11 | +import { AudioTrack, CaptionTrack, HtmlTrack, ImageTrack, TextTrack, Track, VideoTrack } from '../tracks'; |
12 | 12 | import { Timestamp } from '../models'; |
13 | 13 |
|
14 | 14 | import type { frame } from '../types'; |
@@ -266,6 +266,53 @@ describe('The composition', () => { |
266 | 266 | expect(composition.time({ hours: true })).toBe('00:40:00 / 02:00:00'); |
267 | 267 | }); |
268 | 268 |
|
| 269 | + it('should should create tracks of a given type', async () => { |
| 270 | + expect(composition.tracks.length).toBe(0); |
| 271 | + |
| 272 | + composition.createTrack('base'); |
| 273 | + expect(composition.tracks[0]).toBeInstanceOf(Track); |
| 274 | + |
| 275 | + composition.createTrack('audio'); |
| 276 | + expect(composition.tracks[0]).toBeInstanceOf(AudioTrack); |
| 277 | + |
| 278 | + composition.createTrack('caption'); |
| 279 | + expect(composition.tracks[0]).toBeInstanceOf(CaptionTrack); |
| 280 | + |
| 281 | + composition.createTrack('complex_text'); |
| 282 | + expect(composition.tracks[0]).toBeInstanceOf(TextTrack); |
| 283 | + |
| 284 | + composition.createTrack('text'); |
| 285 | + expect(composition.tracks[0]).toBeInstanceOf(TextTrack); |
| 286 | + |
| 287 | + composition.createTrack('html'); |
| 288 | + expect(composition.tracks[0]).toBeInstanceOf(HtmlTrack); |
| 289 | + |
| 290 | + composition.createTrack('image'); |
| 291 | + expect(composition.tracks[0]).toBeInstanceOf(ImageTrack); |
| 292 | + |
| 293 | + composition.createTrack('video'); |
| 294 | + expect(composition.tracks[0]).toBeInstanceOf(VideoTrack); |
| 295 | + |
| 296 | + expect(composition.tracks.length).toBe(8); |
| 297 | + }); |
| 298 | + |
| 299 | + it('should add a track and clip to the composition using the convenience function', async () => { |
| 300 | + expect(composition.tracks.length).toBe(0); |
| 301 | + |
| 302 | + await composition.add(new Clip()); |
| 303 | + |
| 304 | + expect(composition.tracks.length).toBe(1); |
| 305 | + expect(composition.tracks[0]).toBeInstanceOf(Track); |
| 306 | + expect(composition.tracks[0].clips[0]).toBeInstanceOf(Clip); |
| 307 | + |
| 308 | + await composition.add(new TextClip()); |
| 309 | + |
| 310 | + expect(composition.tracks.length).toBe(2); |
| 311 | + expect(composition.tracks[0]).toBeInstanceOf(TextTrack); |
| 312 | + expect(composition.tracks[0].clips[0]).toBeInstanceOf(TextClip); |
| 313 | + }); |
| 314 | + |
| 315 | + |
269 | 316 | afterEach(() => { |
270 | 317 | frameMock.mockClear(); |
271 | 318 | playMock.mockClear(); |
|
0 commit comments