You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
244 lines
5.8 KiB
244 lines
5.8 KiB
import QUnit from 'qunit';
|
|
import TimelineChangeController from '../src/timeline-change-controller';
|
|
|
|
QUnit.module('Timeline Change Controller', {
|
|
beforeEach(assert) {
|
|
this.timelineChangeController = new TimelineChangeController();
|
|
}
|
|
});
|
|
|
|
QUnit.test('saves last timeline changes from different types', function(assert) {
|
|
assert.notOk(
|
|
this.timelineChangeController.lastTimelineChange({ type: 'main' }),
|
|
'starts without any main timeline change'
|
|
);
|
|
assert.notOk(
|
|
this.timelineChangeController.lastTimelineChange({ type: 'audio' }),
|
|
'starts without any audio timeline change'
|
|
);
|
|
|
|
this.timelineChangeController.lastTimelineChange({
|
|
type: 'main',
|
|
from: 1,
|
|
to: 2
|
|
});
|
|
|
|
assert.deepEqual(
|
|
this.timelineChangeController.lastTimelineChange({ type: 'main' }),
|
|
{
|
|
type: 'main',
|
|
from: 1,
|
|
to: 2
|
|
},
|
|
'records main timeline change'
|
|
);
|
|
assert.notOk(
|
|
this.timelineChangeController.lastTimelineChange({ type: 'audio' }),
|
|
'no audio timeline change'
|
|
);
|
|
|
|
this.timelineChangeController.lastTimelineChange({
|
|
type: 'audio',
|
|
from: 2,
|
|
to: 3
|
|
});
|
|
|
|
assert.deepEqual(
|
|
this.timelineChangeController.lastTimelineChange({ type: 'main' }),
|
|
{
|
|
type: 'main',
|
|
from: 1,
|
|
to: 2
|
|
},
|
|
'still has main timeline change'
|
|
);
|
|
assert.deepEqual(
|
|
this.timelineChangeController.lastTimelineChange({ type: 'audio' }),
|
|
{
|
|
type: 'audio',
|
|
from: 2,
|
|
to: 3
|
|
},
|
|
'records audio timeline change'
|
|
);
|
|
});
|
|
|
|
QUnit.test('saves pending timeline changes from different types', function(assert) {
|
|
assert.notOk(
|
|
this.timelineChangeController.pendingTimelineChange({ type: 'main' }),
|
|
'starts without any main pending timeline change'
|
|
);
|
|
assert.notOk(
|
|
this.timelineChangeController.pendingTimelineChange({ type: 'audio' }),
|
|
'starts without any audio pending timeline change'
|
|
);
|
|
|
|
this.timelineChangeController.pendingTimelineChange({
|
|
type: 'main',
|
|
from: 1,
|
|
to: 2
|
|
});
|
|
|
|
assert.deepEqual(
|
|
this.timelineChangeController.pendingTimelineChange({ type: 'main' }),
|
|
{
|
|
type: 'main',
|
|
from: 1,
|
|
to: 2
|
|
},
|
|
'records main pending timeline change'
|
|
);
|
|
assert.notOk(
|
|
this.timelineChangeController.pendingTimelineChange({ type: 'audio' }),
|
|
'no audio pending timeline change'
|
|
);
|
|
|
|
this.timelineChangeController.pendingTimelineChange({
|
|
type: 'audio',
|
|
from: 2,
|
|
to: 3
|
|
});
|
|
|
|
assert.deepEqual(
|
|
this.timelineChangeController.pendingTimelineChange({ type: 'main' }),
|
|
{
|
|
type: 'main',
|
|
from: 1,
|
|
to: 2
|
|
},
|
|
'still has main pending timeline change'
|
|
);
|
|
assert.deepEqual(
|
|
this.timelineChangeController.pendingTimelineChange({ type: 'audio' }),
|
|
{
|
|
type: 'audio',
|
|
from: 2,
|
|
to: 3
|
|
},
|
|
'records audio pending timeline change'
|
|
);
|
|
});
|
|
|
|
QUnit.test('triggers timelinechange event on timeline changes', function(assert) {
|
|
let timelineChanges = 0;
|
|
|
|
this.timelineChangeController.on('timelinechange', () => timelineChanges++);
|
|
this.timelineChangeController.lastTimelineChange({
|
|
type: 'main',
|
|
from: 1,
|
|
to: 2
|
|
});
|
|
|
|
assert.equal(timelineChanges, 1, 'triggered timelinechange event');
|
|
|
|
this.timelineChangeController.lastTimelineChange({
|
|
type: 'audio',
|
|
from: 2,
|
|
to: 3
|
|
});
|
|
|
|
assert.equal(timelineChanges, 2, 'triggered timelinechange event');
|
|
|
|
this.timelineChangeController.lastTimelineChange({
|
|
type: 'audio',
|
|
from: 3,
|
|
to: 4
|
|
});
|
|
|
|
assert.equal(timelineChanges, 3, 'triggered timelinechange event');
|
|
});
|
|
|
|
QUnit.test('triggers pendingtimelinechange event on pending timeline changes', function(assert) {
|
|
let pendingTimelineChanges = 0;
|
|
|
|
this.timelineChangeController.on(
|
|
'pendingtimelinechange',
|
|
() => pendingTimelineChanges++
|
|
);
|
|
this.timelineChangeController.pendingTimelineChange({
|
|
type: 'main',
|
|
from: 1,
|
|
to: 2
|
|
});
|
|
|
|
assert.equal(pendingTimelineChanges, 1, 'triggered pendingtimelinechange event');
|
|
|
|
this.timelineChangeController.pendingTimelineChange({
|
|
type: 'audio',
|
|
from: 2,
|
|
to: 3
|
|
});
|
|
|
|
assert.equal(pendingTimelineChanges, 2, 'triggered pendingtimelinechange event');
|
|
|
|
this.timelineChangeController.pendingTimelineChange({
|
|
type: 'audio',
|
|
from: 3,
|
|
to: 4
|
|
});
|
|
|
|
assert.equal(pendingTimelineChanges, 3, 'triggered pendingtimelinechange event');
|
|
});
|
|
|
|
QUnit.test('timeline change deletes pending timeline change', function(assert) {
|
|
this.timelineChangeController.pendingTimelineChange({
|
|
type: 'main',
|
|
from: 1,
|
|
to: 2
|
|
});
|
|
|
|
assert.deepEqual(
|
|
this.timelineChangeController.pendingTimelineChange({ type: 'main' }),
|
|
{
|
|
type: 'main',
|
|
from: 1,
|
|
to: 2
|
|
},
|
|
'saved pending timeline change'
|
|
);
|
|
|
|
this.timelineChangeController.lastTimelineChange({
|
|
type: 'main',
|
|
from: 2,
|
|
to: 3
|
|
});
|
|
|
|
assert.notOk(
|
|
this.timelineChangeController.pendingTimelineChange({ type: 'main' }),
|
|
'deleted pending timeline change'
|
|
);
|
|
});
|
|
|
|
QUnit.test('clear pending deletes and triggers pendingtimelinechange', function(assert) {
|
|
let pendingTimelineChanges = 0;
|
|
|
|
this.timelineChangeController.on(
|
|
'pendingtimelinechange',
|
|
() => pendingTimelineChanges++
|
|
);
|
|
|
|
this.timelineChangeController.pendingTimelineChange({
|
|
type: 'main',
|
|
from: 1,
|
|
to: 2
|
|
});
|
|
|
|
assert.equal(pendingTimelineChanges, 1, 'triggered pendingtimelinechange event');
|
|
assert.deepEqual(
|
|
this.timelineChangeController.pendingTimelineChange({ type: 'main' }),
|
|
{
|
|
type: 'main',
|
|
from: 1,
|
|
to: 2
|
|
},
|
|
'saved pending timeline change'
|
|
);
|
|
|
|
this.timelineChangeController.clearPendingTimelineChange('main');
|
|
|
|
assert.equal(pendingTimelineChanges, 2, 'triggered pendingtimelinechange event');
|
|
assert.notOk(
|
|
this.timelineChangeController.pendingTimelineChange({ type: 'main' }),
|
|
'deleted pending timeline change'
|
|
);
|
|
});
|