123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- import QUnit from 'qunit';
- import QualityLevelList from '../src/quality-level-list';
- import { representations } from './test-helpers';
- QUnit.module('QualityLevelList', {
- beforeEach() {
- this.qualityLevels = new QualityLevelList();
- this.levels = representations;
- }
- });
- QUnit.test('Properly adds QualityLevels to the QualityLevelList', function(assert) {
- let addCount = 0;
- this.qualityLevels.on('addqualitylevel', (event) => {
- addCount++;
- });
- const expected0 = this.qualityLevels.addQualityLevel(this.levels[0]);
- assert.equal(this.qualityLevels.length, 1, 'added quality level');
- assert.equal(addCount, 1, 'emmitted addqualitylevel event');
- assert.strictEqual(this.qualityLevels[0], expected0, 'can access quality level with index');
- const expected1 = this.qualityLevels.addQualityLevel(this.levels[1]);
- assert.equal(this.qualityLevels.length, 2, 'added quality level');
- assert.equal(addCount, 2, 'emmitted addqualitylevel event');
- assert.strictEqual(this.qualityLevels[1], expected1, 'can access quality level with index');
- const expectedDuplicate = this.qualityLevels.addQualityLevel(this.levels[0]);
- assert.equal(this.qualityLevels.length, 2, 'does not add duplicate quality level');
- assert.equal(addCount, 2, 'no event emitted on dulicate');
- assert.strictEqual(this.qualityLevels[3], undefined, 'no index property defined');
- assert.strictEqual(this.qualityLevels[0], expected0, 'quality level unchanged');
- assert.strictEqual(this.qualityLevels[0], expectedDuplicate, 'adding duplicate returns same reference');
- assert.strictEqual(this.qualityLevels[1], expected1, 'quality level unchanged');
- });
- QUnit.test('Properly removes QualityLevels from the QualityLevelList', function(assert) {
- let removeCount = 0;
- const expected = [];
- this.levels.forEach((qualityLevel) => {
- expected.push(this.qualityLevels.addQualityLevel(qualityLevel));
- });
- this.qualityLevels.on('removequalitylevel', (event) => {
- removeCount++;
- });
- // Mock an initial selected quality level
- this.qualityLevels.selectedIndex_ = 2;
- assert.equal(this.qualityLevels.length, 4, '4 initial quality levels');
- let removed = this.qualityLevels.removeQualityLevel(expected[3]);
- assert.equal(this.qualityLevels.length, 3, 'removed quality level');
- assert.equal(removeCount, 1, 'emitted removequalitylevel event');
- assert.strictEqual(removed, expected[3], 'returned removed level');
- assert.notStrictEqual(this.qualityLevels[3], expected[3], 'nothing at index');
- removed = this.qualityLevels.removeQualityLevel(expected[1]);
- assert.equal(this.qualityLevels.length, 2, 'removed quality level');
- assert.equal(removeCount, 2, 'emitted removequalitylevel event');
- assert.strictEqual(removed, expected[1], 'returned removed level');
- assert.notStrictEqual(this.qualityLevels[1], expected[1], 'quality level not at index');
- assert.strictEqual(
- this.qualityLevels[this.qualityLevels.selectedIndex],
- expected[2],
- 'selected index properly adjusted on quality level removal'
- );
- removed = this.qualityLevels.removeQualityLevel(expected[3]);
- assert.equal(this.qualityLevels.length, 2, 'no quality level removed if not found');
- assert.equal(removed, null, 'returned null when nothing removed');
- assert.equal(removeCount, 2, 'no event emitted when quality level not found');
- removed = this.qualityLevels.removeQualityLevel(expected[2]);
- assert.equal(this.qualityLevels.length, 1, 'quality level removed');
- assert.equal(removeCount, 3, 'emitted removequalitylevel event');
- assert.strictEqual(removed, expected[2], 'returned removed level');
- assert.equal(this.qualityLevels.selectedIndex, -1, 'selectedIndex set to -1 when removing selected quality level');
- });
- QUnit.test('can get quality level by id', function(assert) {
- const expected = [];
- this.levels.forEach((qualityLevel) => {
- expected.push(this.qualityLevels.addQualityLevel(qualityLevel));
- });
- assert.strictEqual(
- this.qualityLevels.getQualityLevelById('0'),
- expected[0],
- 'found quality level with id "0"'
- );
- assert.strictEqual(
- this.qualityLevels.getQualityLevelById('1'),
- expected[1],
- 'found quality level with id "1"'
- );
- assert.strictEqual(
- this.qualityLevels.getQualityLevelById('2'),
- expected[2],
- 'found quality level with id "2"'
- );
- assert.strictEqual(
- this.qualityLevels.getQualityLevelById('3'),
- expected[3],
- 'found quality level with id "3"'
- );
- assert.strictEqual(
- this.qualityLevels.getQualityLevelById('4'),
- null,
- 'no quality level with id "4" found'
- );
- });
|