Skip to content

Commit cf60ee1

Browse files
committed
fixed add method and added test cases
1 parent 28d3362 commit cf60ee1

File tree

2 files changed

+50
-3
lines changed

2 files changed

+50
-3
lines changed

src/composition/composition.spec.ts

Lines changed: 49 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77

88
import { describe, expect, it, beforeEach, vi, afterEach, afterAll } from 'vitest';
99
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';
1212
import { Timestamp } from '../models';
1313

1414
import type { frame } from '../types';
@@ -266,6 +266,53 @@ describe('The composition', () => {
266266
expect(composition.time({ hours: true })).toBe('00:40:00 / 02:00:00');
267267
});
268268

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+
269316
afterEach(() => {
270317
frameMock.mockClear();
271318
playMock.mockClear();

src/composition/composition.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ export class Composition extends EventEmitterMixin<CompositionEvents, typeof Ser
229229
* aswell as the clip to the composition
230230
*/
231231
public async add<L extends Clip>(clip: L): Promise<L> {
232-
const track = TrackDeserializer.fromType({ type: clip.type });
232+
const track = this.createTrack(clip.type);
233233
await track.add(clip as never);
234234

235235
return clip;

0 commit comments

Comments
 (0)