quality-level-list.test.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. import QUnit from 'qunit';
  2. import QualityLevelList from '../src/quality-level-list';
  3. import { representations } from './test-helpers';
  4. QUnit.module('QualityLevelList', {
  5. beforeEach() {
  6. this.qualityLevels = new QualityLevelList();
  7. this.levels = representations;
  8. }
  9. });
  10. QUnit.test('Properly adds QualityLevels to the QualityLevelList', function(assert) {
  11. let addCount = 0;
  12. this.qualityLevels.on('addqualitylevel', (event) => {
  13. addCount++;
  14. });
  15. const expected0 = this.qualityLevels.addQualityLevel(this.levels[0]);
  16. assert.equal(this.qualityLevels.length, 1, 'added quality level');
  17. assert.equal(addCount, 1, 'emmitted addqualitylevel event');
  18. assert.strictEqual(this.qualityLevels[0], expected0, 'can access quality level with index');
  19. const expected1 = this.qualityLevels.addQualityLevel(this.levels[1]);
  20. assert.equal(this.qualityLevels.length, 2, 'added quality level');
  21. assert.equal(addCount, 2, 'emmitted addqualitylevel event');
  22. assert.strictEqual(this.qualityLevels[1], expected1, 'can access quality level with index');
  23. const expectedDuplicate = this.qualityLevels.addQualityLevel(this.levels[0]);
  24. assert.equal(this.qualityLevels.length, 2, 'does not add duplicate quality level');
  25. assert.equal(addCount, 2, 'no event emitted on dulicate');
  26. assert.strictEqual(this.qualityLevels[3], undefined, 'no index property defined');
  27. assert.strictEqual(this.qualityLevels[0], expected0, 'quality level unchanged');
  28. assert.strictEqual(this.qualityLevels[0], expectedDuplicate, 'adding duplicate returns same reference');
  29. assert.strictEqual(this.qualityLevels[1], expected1, 'quality level unchanged');
  30. });
  31. QUnit.test('Properly removes QualityLevels from the QualityLevelList', function(assert) {
  32. let removeCount = 0;
  33. const expected = [];
  34. this.levels.forEach((qualityLevel) => {
  35. expected.push(this.qualityLevels.addQualityLevel(qualityLevel));
  36. });
  37. this.qualityLevels.on('removequalitylevel', (event) => {
  38. removeCount++;
  39. });
  40. // Mock an initial selected quality level
  41. this.qualityLevels.selectedIndex_ = 2;
  42. assert.equal(this.qualityLevels.length, 4, '4 initial quality levels');
  43. let removed = this.qualityLevels.removeQualityLevel(expected[3]);
  44. assert.equal(this.qualityLevels.length, 3, 'removed quality level');
  45. assert.equal(removeCount, 1, 'emitted removequalitylevel event');
  46. assert.strictEqual(removed, expected[3], 'returned removed level');
  47. assert.notStrictEqual(this.qualityLevels[3], expected[3], 'nothing at index');
  48. removed = this.qualityLevels.removeQualityLevel(expected[1]);
  49. assert.equal(this.qualityLevels.length, 2, 'removed quality level');
  50. assert.equal(removeCount, 2, 'emitted removequalitylevel event');
  51. assert.strictEqual(removed, expected[1], 'returned removed level');
  52. assert.notStrictEqual(this.qualityLevels[1], expected[1], 'quality level not at index');
  53. assert.strictEqual(
  54. this.qualityLevels[this.qualityLevels.selectedIndex],
  55. expected[2],
  56. 'selected index properly adjusted on quality level removal'
  57. );
  58. removed = this.qualityLevels.removeQualityLevel(expected[3]);
  59. assert.equal(this.qualityLevels.length, 2, 'no quality level removed if not found');
  60. assert.equal(removed, null, 'returned null when nothing removed');
  61. assert.equal(removeCount, 2, 'no event emitted when quality level not found');
  62. removed = this.qualityLevels.removeQualityLevel(expected[2]);
  63. assert.equal(this.qualityLevels.length, 1, 'quality level removed');
  64. assert.equal(removeCount, 3, 'emitted removequalitylevel event');
  65. assert.strictEqual(removed, expected[2], 'returned removed level');
  66. assert.equal(this.qualityLevels.selectedIndex, -1, 'selectedIndex set to -1 when removing selected quality level');
  67. });
  68. QUnit.test('can get quality level by id', function(assert) {
  69. const expected = [];
  70. this.levels.forEach((qualityLevel) => {
  71. expected.push(this.qualityLevels.addQualityLevel(qualityLevel));
  72. });
  73. assert.strictEqual(
  74. this.qualityLevels.getQualityLevelById('0'),
  75. expected[0],
  76. 'found quality level with id "0"'
  77. );
  78. assert.strictEqual(
  79. this.qualityLevels.getQualityLevelById('1'),
  80. expected[1],
  81. 'found quality level with id "1"'
  82. );
  83. assert.strictEqual(
  84. this.qualityLevels.getQualityLevelById('2'),
  85. expected[2],
  86. 'found quality level with id "2"'
  87. );
  88. assert.strictEqual(
  89. this.qualityLevels.getQualityLevelById('3'),
  90. expected[3],
  91. 'found quality level with id "3"'
  92. );
  93. assert.strictEqual(
  94. this.qualityLevels.getQualityLevelById('4'),
  95. null,
  96. 'no quality level with id "4" found'
  97. );
  98. });