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.
172 lines
3.5 KiB
172 lines
3.5 KiB
import QUnit from 'qunit';
|
|
import { forEachMediaGroup } from '../src/media-groups';
|
|
|
|
QUnit.module('forEachMediaGroup');
|
|
|
|
QUnit.test('runs callback for each audio media group', function(assert) {
|
|
const master = {
|
|
mediaGroups: {
|
|
AUDIO: {
|
|
au1: {
|
|
en: { en: 'en' },
|
|
es: { es: 'es' }
|
|
},
|
|
au2: {
|
|
de: { de: 'de' },
|
|
fr: { fr: 'fr' }
|
|
}
|
|
},
|
|
OTHER: {
|
|
other1: {
|
|
other11: { other11: 'other11' },
|
|
other12: { other12: 'other12' }
|
|
},
|
|
other2: {
|
|
other21: { other21: 'other21' },
|
|
other22: { other22: 'other22' }
|
|
}
|
|
}
|
|
}
|
|
};
|
|
const iteratedMediaGroups = [];
|
|
|
|
forEachMediaGroup(
|
|
master,
|
|
['AUDIO'],
|
|
(mediaGroup) => iteratedMediaGroups.push(mediaGroup)
|
|
);
|
|
|
|
assert.deepEqual(
|
|
iteratedMediaGroups,
|
|
[
|
|
{ en: 'en' },
|
|
{ es: 'es' },
|
|
{ de: 'de' },
|
|
{ fr: 'fr' }
|
|
],
|
|
'iterated audio media groups'
|
|
);
|
|
});
|
|
|
|
QUnit.test('runs callback for each subtitle media group', function(assert) {
|
|
const master = {
|
|
mediaGroups: {
|
|
SUBTITLES: {
|
|
sub1: {
|
|
en: { en: 'en' },
|
|
es: { es: 'es' }
|
|
},
|
|
sub2: {
|
|
de: { de: 'de' },
|
|
fr: { fr: 'fr' }
|
|
}
|
|
},
|
|
OTHER: {
|
|
other1: {
|
|
other11: { other11: 'other11' },
|
|
other12: { other12: 'other12' }
|
|
},
|
|
other2: {
|
|
other21: { other21: 'other21' },
|
|
other22: { other22: 'other22' }
|
|
}
|
|
}
|
|
}
|
|
};
|
|
const iteratedMediaGroups = [];
|
|
|
|
forEachMediaGroup(
|
|
master,
|
|
['SUBTITLES'],
|
|
(mediaGroup) => iteratedMediaGroups.push(mediaGroup)
|
|
);
|
|
|
|
assert.deepEqual(
|
|
iteratedMediaGroups,
|
|
[
|
|
{ en: 'en' },
|
|
{ es: 'es' },
|
|
{ de: 'de' },
|
|
{ fr: 'fr' }
|
|
],
|
|
'iterated subtitles media groups'
|
|
);
|
|
});
|
|
|
|
QUnit.test('runs callback for each audio and subtitles media group', function(assert) {
|
|
const master = {
|
|
mediaGroups: {
|
|
AUDIO: {
|
|
au1: {
|
|
en: { en: 'en' },
|
|
es: { es: 'es' }
|
|
},
|
|
au2: {
|
|
de: { de: 'de' },
|
|
fr: { fr: 'fr' }
|
|
}
|
|
},
|
|
SUBTITLES: {
|
|
sub1: {
|
|
enS: { enS: 'enS' },
|
|
esS: { esS: 'esS' }
|
|
},
|
|
sub2: {
|
|
deS: { deS: 'deS' },
|
|
frS: { frS: 'frS' }
|
|
}
|
|
},
|
|
OTHER: {
|
|
other1: {
|
|
other11: { other11: 'other11' },
|
|
other12: { other12: 'other12' }
|
|
},
|
|
other2: {
|
|
other21: { other21: 'other21' },
|
|
other22: { other22: 'other22' }
|
|
}
|
|
}
|
|
}
|
|
};
|
|
const iteratedMediaGroups = [];
|
|
|
|
forEachMediaGroup(
|
|
master,
|
|
['AUDIO', 'SUBTITLES'],
|
|
(mediaGroup) => iteratedMediaGroups.push(mediaGroup)
|
|
);
|
|
|
|
assert.deepEqual(
|
|
iteratedMediaGroups,
|
|
[
|
|
{ en: 'en' },
|
|
{ es: 'es' },
|
|
{ de: 'de' },
|
|
{ fr: 'fr' },
|
|
{ enS: 'enS' },
|
|
{ esS: 'esS' },
|
|
{ deS: 'deS' },
|
|
{ frS: 'frS' }
|
|
],
|
|
'iterated audio and subtitles media groups'
|
|
);
|
|
});
|
|
|
|
QUnit.test('does not run callback for non specified media groups', function(assert) {
|
|
const master = {
|
|
mediaGroups: {
|
|
'VIDEO': { v1: { en: { en: 'en' } } },
|
|
'CLOSED-CAPTIONS': { cc1: { en: { en: 'en' } } }
|
|
}
|
|
};
|
|
const iteratedMediaGroups = [];
|
|
|
|
forEachMediaGroup(
|
|
master,
|
|
['AUDIO', 'SUBTITLES'],
|
|
(mediaGroup) => iteratedMediaGroups.push(mediaGroup)
|
|
);
|
|
|
|
assert.deepEqual(iteratedMediaGroups, [], 'did not iterate non specified media groups');
|
|
});
|