media-groups.test.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. import QUnit from 'qunit';
  2. import { forEachMediaGroup } from '../src/media-groups';
  3. QUnit.module('forEachMediaGroup');
  4. QUnit.test('runs callback for each audio media group', function(assert) {
  5. const master = {
  6. mediaGroups: {
  7. AUDIO: {
  8. au1: {
  9. en: { en: 'en' },
  10. es: { es: 'es' }
  11. },
  12. au2: {
  13. de: { de: 'de' },
  14. fr: { fr: 'fr' }
  15. }
  16. },
  17. OTHER: {
  18. other1: {
  19. other11: { other11: 'other11' },
  20. other12: { other12: 'other12' }
  21. },
  22. other2: {
  23. other21: { other21: 'other21' },
  24. other22: { other22: 'other22' }
  25. }
  26. }
  27. }
  28. };
  29. const iteratedMediaGroups = [];
  30. forEachMediaGroup(
  31. master,
  32. ['AUDIO'],
  33. (mediaGroup) => iteratedMediaGroups.push(mediaGroup)
  34. );
  35. assert.deepEqual(
  36. iteratedMediaGroups,
  37. [
  38. { en: 'en' },
  39. { es: 'es' },
  40. { de: 'de' },
  41. { fr: 'fr' }
  42. ],
  43. 'iterated audio media groups'
  44. );
  45. });
  46. QUnit.test('runs callback for each subtitle media group', function(assert) {
  47. const master = {
  48. mediaGroups: {
  49. SUBTITLES: {
  50. sub1: {
  51. en: { en: 'en' },
  52. es: { es: 'es' }
  53. },
  54. sub2: {
  55. de: { de: 'de' },
  56. fr: { fr: 'fr' }
  57. }
  58. },
  59. OTHER: {
  60. other1: {
  61. other11: { other11: 'other11' },
  62. other12: { other12: 'other12' }
  63. },
  64. other2: {
  65. other21: { other21: 'other21' },
  66. other22: { other22: 'other22' }
  67. }
  68. }
  69. }
  70. };
  71. const iteratedMediaGroups = [];
  72. forEachMediaGroup(
  73. master,
  74. ['SUBTITLES'],
  75. (mediaGroup) => iteratedMediaGroups.push(mediaGroup)
  76. );
  77. assert.deepEqual(
  78. iteratedMediaGroups,
  79. [
  80. { en: 'en' },
  81. { es: 'es' },
  82. { de: 'de' },
  83. { fr: 'fr' }
  84. ],
  85. 'iterated subtitles media groups'
  86. );
  87. });
  88. QUnit.test('runs callback for each audio and subtitles media group', function(assert) {
  89. const master = {
  90. mediaGroups: {
  91. AUDIO: {
  92. au1: {
  93. en: { en: 'en' },
  94. es: { es: 'es' }
  95. },
  96. au2: {
  97. de: { de: 'de' },
  98. fr: { fr: 'fr' }
  99. }
  100. },
  101. SUBTITLES: {
  102. sub1: {
  103. enS: { enS: 'enS' },
  104. esS: { esS: 'esS' }
  105. },
  106. sub2: {
  107. deS: { deS: 'deS' },
  108. frS: { frS: 'frS' }
  109. }
  110. },
  111. OTHER: {
  112. other1: {
  113. other11: { other11: 'other11' },
  114. other12: { other12: 'other12' }
  115. },
  116. other2: {
  117. other21: { other21: 'other21' },
  118. other22: { other22: 'other22' }
  119. }
  120. }
  121. }
  122. };
  123. const iteratedMediaGroups = [];
  124. forEachMediaGroup(
  125. master,
  126. ['AUDIO', 'SUBTITLES'],
  127. (mediaGroup) => iteratedMediaGroups.push(mediaGroup)
  128. );
  129. assert.deepEqual(
  130. iteratedMediaGroups,
  131. [
  132. { en: 'en' },
  133. { es: 'es' },
  134. { de: 'de' },
  135. { fr: 'fr' },
  136. { enS: 'enS' },
  137. { esS: 'esS' },
  138. { deS: 'deS' },
  139. { frS: 'frS' }
  140. ],
  141. 'iterated audio and subtitles media groups'
  142. );
  143. });
  144. QUnit.test('does not run callback for non specified media groups', function(assert) {
  145. const master = {
  146. mediaGroups: {
  147. 'VIDEO': { v1: { en: { en: 'en' } } },
  148. 'CLOSED-CAPTIONS': { cc1: { en: { en: 'en' } } }
  149. }
  150. };
  151. const iteratedMediaGroups = [];
  152. forEachMediaGroup(
  153. master,
  154. ['AUDIO', 'SUBTITLES'],
  155. (mediaGroup) => iteratedMediaGroups.push(mediaGroup)
  156. );
  157. assert.deepEqual(iteratedMediaGroups, [], 'did not iterate non specified media groups');
  158. });