@webex/plugin-meetings 3.0.0-beta.31 → 3.0.0-beta.310

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (378) hide show
  1. package/README.md +46 -8
  2. package/dist/annotation/annotation.types.js +7 -0
  3. package/dist/annotation/annotation.types.js.map +1 -0
  4. package/dist/annotation/constants.js +49 -0
  5. package/dist/annotation/constants.js.map +1 -0
  6. package/dist/annotation/index.js +342 -0
  7. package/dist/annotation/index.js.map +1 -0
  8. package/dist/breakouts/breakout.js +94 -15
  9. package/dist/breakouts/breakout.js.map +1 -1
  10. package/dist/breakouts/edit-lock-error.js +52 -0
  11. package/dist/breakouts/edit-lock-error.js.map +1 -0
  12. package/dist/breakouts/events.js +45 -0
  13. package/dist/breakouts/events.js.map +1 -0
  14. package/dist/breakouts/index.js +709 -35
  15. package/dist/breakouts/index.js.map +1 -1
  16. package/dist/breakouts/utils.js +45 -1
  17. package/dist/breakouts/utils.js.map +1 -1
  18. package/dist/common/errors/no-meeting-info.js +51 -0
  19. package/dist/common/errors/no-meeting-info.js.map +1 -0
  20. package/dist/common/errors/reclaim-host-role-errors.js +158 -0
  21. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  22. package/dist/common/errors/webex-errors.js +48 -7
  23. package/dist/common/errors/webex-errors.js.map +1 -1
  24. package/dist/common/logs/logger-proxy.js +1 -1
  25. package/dist/common/logs/logger-proxy.js.map +1 -1
  26. package/dist/common/logs/request.js +5 -1
  27. package/dist/common/logs/request.js.map +1 -1
  28. package/dist/common/queue.js +24 -9
  29. package/dist/common/queue.js.map +1 -1
  30. package/dist/config.js +5 -11
  31. package/dist/config.js.map +1 -1
  32. package/dist/constants.js +233 -29
  33. package/dist/constants.js.map +1 -1
  34. package/dist/controls-options-manager/enums.js +14 -2
  35. package/dist/controls-options-manager/enums.js.map +1 -1
  36. package/dist/controls-options-manager/index.js +109 -15
  37. package/dist/controls-options-manager/index.js.map +1 -1
  38. package/dist/controls-options-manager/types.js +7 -0
  39. package/dist/controls-options-manager/types.js.map +1 -0
  40. package/dist/controls-options-manager/util.js +309 -18
  41. package/dist/controls-options-manager/util.js.map +1 -1
  42. package/dist/index.js +112 -1
  43. package/dist/index.js.map +1 -1
  44. package/dist/interpretation/collection.js +23 -0
  45. package/dist/interpretation/collection.js.map +1 -0
  46. package/dist/interpretation/index.js +366 -0
  47. package/dist/interpretation/index.js.map +1 -0
  48. package/dist/interpretation/siLanguage.js +25 -0
  49. package/dist/interpretation/siLanguage.js.map +1 -0
  50. package/dist/locus-info/controlsUtils.js +91 -2
  51. package/dist/locus-info/controlsUtils.js.map +1 -1
  52. package/dist/locus-info/index.js +383 -62
  53. package/dist/locus-info/index.js.map +1 -1
  54. package/dist/locus-info/infoUtils.js +7 -1
  55. package/dist/locus-info/infoUtils.js.map +1 -1
  56. package/dist/locus-info/mediaSharesUtils.js +57 -1
  57. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  58. package/dist/locus-info/parser.js +249 -72
  59. package/dist/locus-info/parser.js.map +1 -1
  60. package/dist/locus-info/selfUtils.js +89 -14
  61. package/dist/locus-info/selfUtils.js.map +1 -1
  62. package/dist/media/index.js +61 -116
  63. package/dist/media/index.js.map +1 -1
  64. package/dist/media/properties.js +73 -124
  65. package/dist/media/properties.js.map +1 -1
  66. package/dist/meeting/in-meeting-actions.js +82 -2
  67. package/dist/meeting/in-meeting-actions.js.map +1 -1
  68. package/dist/meeting/index.js +3777 -2929
  69. package/dist/meeting/index.js.map +1 -1
  70. package/dist/meeting/locusMediaRequest.js +292 -0
  71. package/dist/meeting/locusMediaRequest.js.map +1 -0
  72. package/dist/meeting/muteState.js +230 -124
  73. package/dist/meeting/muteState.js.map +1 -1
  74. package/dist/meeting/request.js +260 -196
  75. package/dist/meeting/request.js.map +1 -1
  76. package/dist/meeting/util.js +601 -417
  77. package/dist/meeting/util.js.map +1 -1
  78. package/dist/meeting-info/index.js +73 -7
  79. package/dist/meeting-info/index.js.map +1 -1
  80. package/dist/meeting-info/meeting-info-v2.js +192 -51
  81. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  82. package/dist/meeting-info/util.js +1 -1
  83. package/dist/meeting-info/util.js.map +1 -1
  84. package/dist/meeting-info/utilv2.js +36 -36
  85. package/dist/meeting-info/utilv2.js.map +1 -1
  86. package/dist/meetings/collection.js +39 -0
  87. package/dist/meetings/collection.js.map +1 -1
  88. package/dist/meetings/index.js +415 -115
  89. package/dist/meetings/index.js.map +1 -1
  90. package/dist/meetings/meetings.types.js +7 -0
  91. package/dist/meetings/meetings.types.js.map +1 -0
  92. package/dist/meetings/request.js +2 -0
  93. package/dist/meetings/request.js.map +1 -1
  94. package/dist/meetings/util.js +72 -6
  95. package/dist/meetings/util.js.map +1 -1
  96. package/dist/member/index.js +58 -0
  97. package/dist/member/index.js.map +1 -1
  98. package/dist/member/types.js +25 -0
  99. package/dist/member/types.js.map +1 -0
  100. package/dist/member/util.js +132 -25
  101. package/dist/member/util.js.map +1 -1
  102. package/dist/members/collection.js +10 -0
  103. package/dist/members/collection.js.map +1 -1
  104. package/dist/members/index.js +102 -6
  105. package/dist/members/index.js.map +1 -1
  106. package/dist/members/request.js +106 -38
  107. package/dist/members/request.js.map +1 -1
  108. package/dist/members/types.js +15 -0
  109. package/dist/members/types.js.map +1 -0
  110. package/dist/members/util.js +326 -232
  111. package/dist/members/util.js.map +1 -1
  112. package/dist/metrics/constants.js +13 -5
  113. package/dist/metrics/constants.js.map +1 -1
  114. package/dist/metrics/index.js +1 -468
  115. package/dist/metrics/index.js.map +1 -1
  116. package/dist/multistream/mediaRequestManager.js +238 -49
  117. package/dist/multistream/mediaRequestManager.js.map +1 -1
  118. package/dist/multistream/receiveSlot.js +29 -16
  119. package/dist/multistream/receiveSlot.js.map +1 -1
  120. package/dist/multistream/receiveSlotManager.js +39 -36
  121. package/dist/multistream/receiveSlotManager.js.map +1 -1
  122. package/dist/multistream/remoteMedia.js +44 -18
  123. package/dist/multistream/remoteMedia.js.map +1 -1
  124. package/dist/multistream/remoteMediaGroup.js +60 -3
  125. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  126. package/dist/multistream/remoteMediaManager.js +209 -59
  127. package/dist/multistream/remoteMediaManager.js.map +1 -1
  128. package/dist/multistream/sendSlotManager.js +233 -0
  129. package/dist/multistream/sendSlotManager.js.map +1 -0
  130. package/dist/reachability/index.js +225 -59
  131. package/dist/reachability/index.js.map +1 -1
  132. package/dist/reachability/request.js +17 -8
  133. package/dist/reachability/request.js.map +1 -1
  134. package/dist/reconnection-manager/index.js +201 -156
  135. package/dist/reconnection-manager/index.js.map +1 -1
  136. package/dist/recording-controller/index.js +21 -2
  137. package/dist/recording-controller/index.js.map +1 -1
  138. package/dist/recording-controller/util.js +9 -8
  139. package/dist/recording-controller/util.js.map +1 -1
  140. package/dist/roap/index.js +62 -32
  141. package/dist/roap/index.js.map +1 -1
  142. package/dist/roap/request.js +112 -97
  143. package/dist/roap/request.js.map +1 -1
  144. package/dist/roap/turnDiscovery.js +95 -36
  145. package/dist/roap/turnDiscovery.js.map +1 -1
  146. package/dist/rtcMetrics/constants.js +12 -0
  147. package/dist/rtcMetrics/constants.js.map +1 -0
  148. package/dist/rtcMetrics/index.js +117 -0
  149. package/dist/rtcMetrics/index.js.map +1 -0
  150. package/dist/statsAnalyzer/index.js +86 -78
  151. package/dist/statsAnalyzer/index.js.map +1 -1
  152. package/dist/statsAnalyzer/mqaUtil.js +11 -10
  153. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  154. package/dist/types/annotation/annotation.types.d.ts +42 -0
  155. package/dist/types/annotation/constants.d.ts +31 -0
  156. package/dist/types/annotation/index.d.ts +117 -0
  157. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  158. package/dist/types/breakouts/events.d.ts +8 -0
  159. package/dist/types/breakouts/utils.d.ts +14 -0
  160. package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
  161. package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
  162. package/dist/types/common/errors/webex-errors.d.ts +25 -1
  163. package/dist/types/common/logs/request.d.ts +2 -0
  164. package/dist/types/common/queue.d.ts +9 -7
  165. package/dist/types/config.d.ts +1 -7
  166. package/dist/types/constants.d.ts +194 -24
  167. package/dist/types/controls-options-manager/enums.d.ts +11 -1
  168. package/dist/types/controls-options-manager/index.d.ts +17 -1
  169. package/dist/types/controls-options-manager/types.d.ts +43 -0
  170. package/dist/types/controls-options-manager/util.d.ts +1 -7
  171. package/dist/types/index.d.ts +6 -4
  172. package/dist/types/interpretation/collection.d.ts +5 -0
  173. package/dist/types/interpretation/index.d.ts +5 -0
  174. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  175. package/dist/types/locus-info/index.d.ts +57 -4
  176. package/dist/types/locus-info/parser.d.ts +67 -6
  177. package/dist/types/media/index.d.ts +2 -0
  178. package/dist/types/media/properties.d.ts +34 -48
  179. package/dist/types/meeting/in-meeting-actions.d.ts +82 -2
  180. package/dist/types/meeting/index.d.ts +463 -510
  181. package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
  182. package/dist/types/meeting/muteState.d.ts +99 -23
  183. package/dist/types/meeting/request.d.ts +72 -43
  184. package/dist/types/meeting/util.d.ts +101 -1
  185. package/dist/types/meeting-info/index.d.ts +13 -1
  186. package/dist/types/meeting-info/meeting-info-v2.d.ts +31 -1
  187. package/dist/types/meetings/collection.d.ts +17 -0
  188. package/dist/types/meetings/index.d.ts +98 -20
  189. package/dist/types/meetings/meetings.types.d.ts +4 -0
  190. package/dist/types/member/index.d.ts +14 -0
  191. package/dist/types/member/types.d.ts +32 -0
  192. package/dist/types/members/collection.d.ts +5 -0
  193. package/dist/types/members/index.d.ts +35 -2
  194. package/dist/types/members/request.d.ts +73 -9
  195. package/dist/types/members/types.d.ts +25 -0
  196. package/dist/types/members/util.d.ts +214 -1
  197. package/dist/types/metrics/constants.d.ts +12 -4
  198. package/dist/types/metrics/index.d.ts +4 -119
  199. package/dist/types/multistream/mediaRequestManager.d.ts +73 -5
  200. package/dist/types/multistream/receiveSlot.d.ts +13 -11
  201. package/dist/types/multistream/receiveSlotManager.d.ts +14 -4
  202. package/dist/types/multistream/remoteMedia.d.ts +8 -29
  203. package/dist/types/multistream/remoteMediaGroup.d.ts +0 -9
  204. package/dist/types/multistream/remoteMediaManager.d.ts +46 -2
  205. package/dist/types/multistream/sendSlotManager.d.ts +61 -0
  206. package/dist/types/reachability/index.d.ts +61 -7
  207. package/dist/types/reachability/request.d.ts +7 -3
  208. package/dist/types/reconnection-manager/index.d.ts +9 -0
  209. package/dist/types/recording-controller/index.d.ts +15 -1
  210. package/dist/types/recording-controller/util.d.ts +5 -4
  211. package/dist/types/roap/index.d.ts +2 -1
  212. package/dist/types/roap/request.d.ts +15 -11
  213. package/dist/types/roap/turnDiscovery.d.ts +21 -3
  214. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  215. package/dist/types/rtcMetrics/index.d.ts +47 -0
  216. package/dist/types/statsAnalyzer/index.d.ts +7 -1
  217. package/dist/types/webinar/collection.d.ts +16 -0
  218. package/dist/types/webinar/index.d.ts +5 -0
  219. package/dist/webinar/collection.js +44 -0
  220. package/dist/webinar/collection.js.map +1 -0
  221. package/dist/webinar/index.js +69 -0
  222. package/dist/webinar/index.js.map +1 -0
  223. package/package.json +23 -20
  224. package/src/annotation/annotation.types.ts +50 -0
  225. package/src/annotation/constants.ts +36 -0
  226. package/src/annotation/index.ts +328 -0
  227. package/src/breakouts/README.md +42 -12
  228. package/src/breakouts/breakout.ts +67 -9
  229. package/src/breakouts/edit-lock-error.ts +25 -0
  230. package/src/breakouts/events.ts +56 -0
  231. package/src/breakouts/index.ts +592 -20
  232. package/src/breakouts/utils.ts +42 -0
  233. package/src/common/errors/no-meeting-info.ts +24 -0
  234. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  235. package/src/common/errors/webex-errors.ts +44 -2
  236. package/src/common/logs/logger-proxy.ts +1 -1
  237. package/src/common/logs/request.ts +5 -1
  238. package/src/common/queue.ts +22 -8
  239. package/src/config.ts +4 -10
  240. package/src/constants.ts +221 -19
  241. package/src/controls-options-manager/enums.ts +12 -0
  242. package/src/controls-options-manager/index.ts +116 -21
  243. package/src/controls-options-manager/types.ts +59 -0
  244. package/src/controls-options-manager/util.ts +294 -14
  245. package/src/index.ts +40 -0
  246. package/src/interpretation/README.md +60 -0
  247. package/src/interpretation/collection.ts +19 -0
  248. package/src/interpretation/index.ts +332 -0
  249. package/src/interpretation/siLanguage.ts +18 -0
  250. package/src/locus-info/controlsUtils.ts +108 -0
  251. package/src/locus-info/index.ts +413 -59
  252. package/src/locus-info/infoUtils.ts +10 -2
  253. package/src/locus-info/mediaSharesUtils.ts +64 -0
  254. package/src/locus-info/parser.ts +258 -47
  255. package/src/locus-info/selfUtils.ts +81 -5
  256. package/src/media/index.ts +102 -122
  257. package/src/media/properties.ts +87 -110
  258. package/src/meeting/in-meeting-actions.ts +163 -3
  259. package/src/meeting/index.ts +3132 -2541
  260. package/src/meeting/locusMediaRequest.ts +313 -0
  261. package/src/meeting/muteState.ts +229 -131
  262. package/src/meeting/request.ts +177 -121
  263. package/src/meeting/util.ts +588 -394
  264. package/src/meeting-info/index.ts +81 -8
  265. package/src/meeting-info/meeting-info-v2.ts +170 -14
  266. package/src/meeting-info/util.ts +1 -1
  267. package/src/meeting-info/utilv2.ts +23 -23
  268. package/src/meetings/collection.ts +33 -0
  269. package/src/meetings/index.ts +445 -123
  270. package/src/meetings/meetings.types.ts +12 -0
  271. package/src/meetings/request.ts +2 -0
  272. package/src/meetings/util.ts +80 -11
  273. package/src/member/index.ts +58 -0
  274. package/src/member/types.ts +38 -0
  275. package/src/member/util.ts +141 -25
  276. package/src/members/collection.ts +8 -0
  277. package/src/members/index.ts +134 -8
  278. package/src/members/request.ts +97 -17
  279. package/src/members/types.ts +29 -0
  280. package/src/members/util.ts +333 -240
  281. package/src/metrics/constants.ts +12 -4
  282. package/src/metrics/index.ts +1 -490
  283. package/src/multistream/mediaRequestManager.ts +289 -79
  284. package/src/multistream/receiveSlot.ts +31 -17
  285. package/src/multistream/receiveSlotManager.ts +34 -24
  286. package/src/multistream/remoteMedia.ts +27 -2
  287. package/src/multistream/remoteMediaGroup.ts +59 -0
  288. package/src/multistream/remoteMediaManager.ts +148 -30
  289. package/src/multistream/sendSlotManager.ts +170 -0
  290. package/src/reachability/index.ts +228 -37
  291. package/src/reachability/request.ts +17 -8
  292. package/src/reconnection-manager/index.ts +83 -56
  293. package/src/recording-controller/index.ts +20 -3
  294. package/src/recording-controller/util.ts +26 -9
  295. package/src/roap/index.ts +63 -32
  296. package/src/roap/request.ts +100 -104
  297. package/src/roap/turnDiscovery.ts +48 -26
  298. package/src/rtcMetrics/constants.ts +3 -0
  299. package/src/rtcMetrics/index.ts +100 -0
  300. package/src/statsAnalyzer/index.ts +105 -91
  301. package/src/statsAnalyzer/mqaUtil.ts +13 -14
  302. package/src/webinar/collection.ts +31 -0
  303. package/src/webinar/index.ts +62 -0
  304. package/test/integration/spec/converged-space-meetings.js +60 -3
  305. package/test/integration/spec/journey.js +320 -261
  306. package/test/integration/spec/space-meeting.js +76 -3
  307. package/test/unit/spec/annotation/index.ts +418 -0
  308. package/test/unit/spec/breakouts/breakout.ts +118 -28
  309. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  310. package/test/unit/spec/breakouts/events.ts +89 -0
  311. package/test/unit/spec/breakouts/index.ts +1395 -69
  312. package/test/unit/spec/breakouts/utils.js +52 -1
  313. package/test/unit/spec/common/queue.js +31 -2
  314. package/test/unit/spec/controls-options-manager/index.js +163 -0
  315. package/test/unit/spec/controls-options-manager/util.js +576 -60
  316. package/test/unit/spec/fixture/locus.js +1 -0
  317. package/test/unit/spec/interpretation/collection.ts +15 -0
  318. package/test/unit/spec/interpretation/index.ts +589 -0
  319. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  320. package/test/unit/spec/locus-info/controlsUtils.js +316 -43
  321. package/test/unit/spec/locus-info/index.js +1304 -33
  322. package/test/unit/spec/locus-info/infoUtils.js +37 -15
  323. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  324. package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
  325. package/test/unit/spec/locus-info/parser.js +116 -35
  326. package/test/unit/spec/locus-info/selfConstant.js +27 -4
  327. package/test/unit/spec/locus-info/selfUtils.js +208 -17
  328. package/test/unit/spec/media/index.ts +104 -37
  329. package/test/unit/spec/media/properties.ts +2 -2
  330. package/test/unit/spec/meeting/in-meeting-actions.ts +81 -3
  331. package/test/unit/spec/meeting/index.js +5216 -1956
  332. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  333. package/test/unit/spec/meeting/muteState.js +408 -208
  334. package/test/unit/spec/meeting/request.js +483 -49
  335. package/test/unit/spec/meeting/utils.js +679 -64
  336. package/test/unit/spec/meeting-info/index.js +300 -0
  337. package/test/unit/spec/meeting-info/meetinginfov2.js +526 -5
  338. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  339. package/test/unit/spec/meetings/collection.js +26 -0
  340. package/test/unit/spec/meetings/index.js +1011 -205
  341. package/test/unit/spec/meetings/utils.js +202 -2
  342. package/test/unit/spec/member/index.js +61 -6
  343. package/test/unit/spec/member/util.js +510 -34
  344. package/test/unit/spec/members/index.js +432 -1
  345. package/test/unit/spec/members/request.js +206 -27
  346. package/test/unit/spec/members/utils.js +210 -0
  347. package/test/unit/spec/metrics/index.js +1 -50
  348. package/test/unit/spec/multistream/mediaRequestManager.ts +803 -162
  349. package/test/unit/spec/multistream/receiveSlot.ts +28 -20
  350. package/test/unit/spec/multistream/receiveSlotManager.ts +32 -30
  351. package/test/unit/spec/multistream/remoteMedia.ts +30 -0
  352. package/test/unit/spec/multistream/remoteMediaGroup.ts +266 -0
  353. package/test/unit/spec/multistream/remoteMediaManager.ts +326 -0
  354. package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
  355. package/test/unit/spec/reachability/index.ts +549 -9
  356. package/test/unit/spec/reachability/request.js +68 -0
  357. package/test/unit/spec/reconnection-manager/index.js +85 -9
  358. package/test/unit/spec/recording-controller/index.js +294 -218
  359. package/test/unit/spec/recording-controller/util.js +223 -96
  360. package/test/unit/spec/roap/index.ts +178 -64
  361. package/test/unit/spec/roap/request.ts +203 -85
  362. package/test/unit/spec/roap/turnDiscovery.ts +82 -36
  363. package/test/unit/spec/rtcMetrics/index.ts +73 -0
  364. package/test/unit/spec/stats-analyzer/index.js +136 -2
  365. package/test/unit/spec/webinar/collection.ts +13 -0
  366. package/test/unit/spec/webinar/index.ts +60 -0
  367. package/test/utils/integrationTestUtils.js +46 -0
  368. package/test/utils/testUtils.js +0 -52
  369. package/dist/meeting/effectsState.js +0 -262
  370. package/dist/meeting/effectsState.js.map +0 -1
  371. package/dist/metrics/config.js +0 -299
  372. package/dist/metrics/config.js.map +0 -1
  373. package/dist/types/meeting/effectsState.d.ts +0 -42
  374. package/dist/types/metrics/config.d.ts +0 -178
  375. package/src/index.js +0 -16
  376. package/src/meeting/effectsState.ts +0 -211
  377. package/src/metrics/config.ts +0 -495
  378. package/test/unit/spec/meeting/effectsState.js +0 -285
@@ -39,7 +39,7 @@ describe('plugin-meetings', () => {
39
39
  name: 'Breakout session 2',
40
40
  groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
41
41
  sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
42
- sessionType: 'BREAKOUT'
42
+ sessionType: 'BREAKOUT',
43
43
  },
44
44
  ],
45
45
  allowed: [
@@ -47,9 +47,9 @@ describe('plugin-meetings', () => {
47
47
  name: 'Breakout session 2',
48
48
  groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
49
49
  sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
50
- sessionType: 'BREAKOUT'
50
+ sessionType: 'BREAKOUT',
51
51
  },
52
- ]
52
+ ],
53
53
  });
54
54
  });
55
55
 
@@ -76,9 +76,12 @@ describe('plugin-meetings', () => {
76
76
  });
77
77
  });
78
78
 
79
- describe('getBreakouts', () => {
79
+ describe('getBreakoutSessions', () => {
80
80
  it('should return breakout sessions', () => {
81
- assert.deepEqual(SelfUtils.getBreakouts({controls: {breakout: {sessions: 'SESSIONS'}}}), 'SESSIONS');
81
+ assert.deepEqual(
82
+ SelfUtils.getBreakoutSessions({controls: {breakout: {sessions: 'SESSIONS'}}}),
83
+ 'SESSIONS'
84
+ );
82
85
  });
83
86
  });
84
87
 
@@ -91,10 +94,11 @@ describe('plugin-meetings', () => {
91
94
  name: 'Breakout session 2',
92
95
  groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
93
96
  sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
94
- sessionType: 'BREAKOUT'
97
+ sessionType: 'BREAKOUT',
95
98
  },
96
- ]
97
- }
99
+ ],
100
+ },
101
+ breakout: {},
98
102
  };
99
103
  const previous = {
100
104
  breakoutSessions: {
@@ -103,10 +107,11 @@ describe('plugin-meetings', () => {
103
107
  name: 'Breakout session 2',
104
108
  groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
105
109
  sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
106
- sessionType: 'BREAKOUT'
110
+ sessionType: 'BREAKOUT',
107
111
  },
108
- ]
109
- }
112
+ ],
113
+ },
114
+ breakout: {},
110
115
  };
111
116
 
112
117
  assert.isTrue(SelfUtils.breakoutsChanged(previous, current));
@@ -120,10 +125,11 @@ describe('plugin-meetings', () => {
120
125
  name: 'Breakout session 2',
121
126
  groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
122
127
  sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
123
- sessionType: 'BREAKOUT'
128
+ sessionType: 'BREAKOUT',
124
129
  },
125
- ]
126
- }
130
+ ],
131
+ },
132
+ breakout: {},
127
133
  };
128
134
  const previous = {
129
135
  breakoutSessions: {
@@ -132,10 +138,33 @@ describe('plugin-meetings', () => {
132
138
  name: 'Breakout session 2',
133
139
  groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
134
140
  sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
135
- sessionType: 'BREAKOUT'
141
+ sessionType: 'BREAKOUT',
136
142
  },
137
- ]
138
- }
143
+ ],
144
+ },
145
+ breakout: {},
146
+ };
147
+
148
+ assert.isFalse(SelfUtils.breakoutsChanged(previous, current));
149
+ });
150
+
151
+ it('should return false if no breakouts in current', () => {
152
+ const current = {
153
+ breakoutSessions: {
154
+ },
155
+ };
156
+ const previous = {
157
+ breakoutSessions: {
158
+ active: [
159
+ {
160
+ name: 'Breakout session 2',
161
+ groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
162
+ sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
163
+ sessionType: 'BREAKOUT',
164
+ },
165
+ ],
166
+ },
167
+ breakout: {},
139
168
  };
140
169
 
141
170
  assert.isFalse(SelfUtils.breakoutsChanged(previous, current));
@@ -222,6 +251,55 @@ describe('plugin-meetings', () => {
222
251
  assert.equal(updates.canNotViewTheParticipantListChanged, false);
223
252
  });
224
253
  });
254
+
255
+ describe('localAudioUnmuteRequestedByServer', () => {
256
+ it('should return localAudioUnmuteRequestedByServer = false when requestedToUnmute = false', () => {
257
+ const clonedSelf = cloneDeep(self);
258
+
259
+ const {updates} = SelfUtils.getSelves(self, clonedSelf);
260
+
261
+ assert.equal(updates.localAudioUnmuteRequestedByServer, false);
262
+ });
263
+
264
+ it('should return localAudioUnmuteRequestedByServer = true when first request is made with requestedToUnmute = true', () => {
265
+ const clonedSelf = cloneDeep(self);
266
+
267
+ //request to unmute with timestamp
268
+ clonedSelf.controls.audio.requestedToUnmute = true;
269
+ clonedSelf.controls.audio.lastModifiedRequestedToUnmute = '2023-06-16T18:25:04.369Z';
270
+
271
+ const {updates} = SelfUtils.getSelves(self, clonedSelf);
272
+
273
+ assert.equal(updates.localAudioUnmuteRequestedByServer, true);
274
+ });
275
+
276
+ it('should return localAudioUnmuteRequestedByServer = true when requestedToUnmute = true and new requests lastModifiedRequestedToUnmute timestamp is greater than old one', () => {
277
+ self.controls.audio.requestedToUnmute = true;
278
+ self.controls.audio.lastModifiedRequestedToUnmute = '2023-06-16T18:25:04.369Z';
279
+ const clonedSelf = cloneDeep(self);
280
+
281
+ //request to unmute with timestamp
282
+ clonedSelf.controls.audio.requestedToUnmute = true;
283
+ clonedSelf.controls.audio.lastModifiedRequestedToUnmute = '2023-06-16T19:25:04.369Z';
284
+
285
+ const {updates} = SelfUtils.getSelves(self, clonedSelf);
286
+
287
+ assert.equal(updates.localAudioUnmuteRequestedByServer, true);
288
+ });
289
+
290
+ it('should return localAudioUnmuteRequestedByServer = false when requestedToUnmute but lastModifiedRequestedToUnmute timestamps are same', () => {
291
+ self.controls.audio.requestedToUnmute = true;
292
+ self.controls.audio.lastModifiedRequestedToUnmute = '2023-06-16T18:25:04.369Z';
293
+ const clonedSelf = cloneDeep(self);
294
+
295
+ clonedSelf.controls.audio.requestedToUnmute = true;
296
+ clonedSelf.controls.audio.lastModifiedRequestedToUnmute = '2023-06-16T18:25:04.369Z'
297
+
298
+ const {updates} = SelfUtils.getSelves(self, clonedSelf);
299
+
300
+ assert.equal(updates.localAudioUnmuteRequestedByServer, false);
301
+ });
302
+ });
225
303
  });
226
304
 
227
305
  describe('isSharingBlocked', () => {
@@ -266,4 +344,117 @@ describe('plugin-meetings', () => {
266
344
  assert.deepEqual(SelfUtils.isJoined(customSelf), false);
267
345
  });
268
346
  });
347
+
348
+ describe('videoMutedByOthersChanged', () => {
349
+ it('returns true if changed', () => {
350
+ assert.equal(
351
+ SelfUtils.videoMutedByOthersChanged({remoteVideoMuted: true}, {remoteVideoMuted: false}),
352
+ true
353
+ );
354
+ });
355
+
356
+ it('returns true if changed from undefined', () => {
357
+ assert.equal(SelfUtils.videoMutedByOthersChanged({}, {remoteVideoMuted: false}), true);
358
+ });
359
+
360
+ it('returns false if not changed', () => {
361
+ assert.equal(
362
+ SelfUtils.videoMutedByOthersChanged({remoteVideoMuted: false}, {remoteVideoMuted: false}),
363
+ false
364
+ );
365
+ });
366
+ });
367
+
368
+ describe('getReplacedBreakoutMoveId', () => {
369
+ const deviceId = 'https://wdm-a.wbx2.com/wdm/api/v1/devices/20eabde3-4254-48da-9a24';
370
+ const breakoutMoveId = 'e5caeb2c-ffcc-4e06-a08a-1122e7710398';
371
+ const clonedSelf = cloneDeep(self);
372
+
373
+ it('get breakoutMoveId works', () => {
374
+
375
+ assert.deepEqual(SelfUtils.getReplacedBreakoutMoveId(self, deviceId), breakoutMoveId);
376
+
377
+ });
378
+
379
+ it('replaces is empty', () => {
380
+
381
+ clonedSelf.devices[0].replaces = undefined;
382
+ assert.deepEqual(SelfUtils.getReplacedBreakoutMoveId(clonedSelf, deviceId), null);
383
+
384
+ });
385
+
386
+ it('no self or self.devices is not array', () => {
387
+
388
+ assert.deepEqual(SelfUtils.getReplacedBreakoutMoveId(undefined, deviceId), null);
389
+
390
+ clonedSelf.devices = {
391
+ url: 'https://wdm-a.wbx2.com/wdm/api/v1/devices/20eabde3-4254-48da-9a24',
392
+ deviceType: 'WEB',
393
+ mediaSessionsExternal: false,
394
+ replaces: [
395
+ {
396
+ breakoutMoveId: 'e5caeb2c-ffcc-4e06-a08a-1122e7710398',
397
+ lastActive: '2023-05-04T07:14:32.068Z',
398
+ locusUrl: 'https://locus-alpha-apdx.prod.meetapi.webex.com/locus/api/v1/loci/495061ca-7b3c-3b77-85ff-4e1bd58600d1',
399
+ replacedAt: '2023-05-04T07:16:04.905Z',
400
+ sessionId: 'be3147d4-c318-86d8-7611-8d24beaaca8d',
401
+ }
402
+ ],
403
+ state: 'JOINED',
404
+ };
405
+ assert.deepEqual(SelfUtils.getReplacedBreakoutMoveId(clonedSelf, deviceId), null);
406
+ });
407
+ });
408
+
409
+ describe('isRolesChanged', () => {
410
+ it('should return false if new self is null', () => {
411
+ const parsedSelf = SelfUtils.parse(self);
412
+
413
+ assert.deepEqual(SelfUtils.isRolesChanged(parsedSelf, null), false);
414
+ });
415
+
416
+ it('should return true if self roles has changed', () => {
417
+ const parsedSelf = SelfUtils.parse(self);
418
+ const clonedSelf = cloneDeep(parsedSelf);
419
+
420
+ clonedSelf.roles = ['COHOST'];
421
+
422
+ assert.deepEqual(SelfUtils.isRolesChanged(parsedSelf, clonedSelf), true);
423
+ });
424
+
425
+ it('should return false if self roles has not changed', () => {
426
+ const parsedSelf = SelfUtils.parse(self);
427
+ const clonedSelf = cloneDeep(parsedSelf);
428
+
429
+ clonedSelf.roles = ['PRESENTER'];
430
+
431
+ assert.deepEqual(SelfUtils.isRolesChanged(parsedSelf, clonedSelf), false);
432
+ });
433
+ });
434
+
435
+ describe('interpretationChanged', () => {
436
+ it('should return false if new self is null', () => {
437
+ const parsedSelf = SelfUtils.parse(self);
438
+
439
+ assert.deepEqual(SelfUtils.interpretationChanged(parsedSelf, null), false);
440
+ });
441
+
442
+ it('should return true if interpretation info has changed', () => {
443
+ const parsedSelf = SelfUtils.parse(self);
444
+ const clonedSelf = cloneDeep(parsedSelf);
445
+
446
+ clonedSelf.interpretation.sourceLanguage = 'ja';
447
+
448
+ assert.deepEqual(SelfUtils.interpretationChanged(parsedSelf, clonedSelf), true);
449
+ });
450
+
451
+ it('should return false if interpretation info has not changed', () => {
452
+ const parsedSelf = SelfUtils.parse(self);
453
+ const clonedSelf = cloneDeep(parsedSelf);
454
+
455
+ clonedSelf.interpretation.sourceLanguage = 'en';
456
+
457
+ assert.deepEqual(SelfUtils.interpretationChanged(parsedSelf, clonedSelf), false);
458
+ });
459
+ });
269
460
  });
@@ -3,18 +3,30 @@ import Media from '@webex/plugin-meetings/src/media/index';
3
3
  import {assert} from '@webex/test-helper-chai';
4
4
  import sinon from 'sinon';
5
5
  import StaticConfig from '@webex/plugin-meetings/src/common/config';
6
+ import {forEach} from 'lodash';
7
+ import MockWebex from '@webex/test-helper-mock-webex';
6
8
 
7
9
  describe('createMediaConnection', () => {
10
+ const webex = MockWebex();
11
+
8
12
  const fakeRoapMediaConnection = {
9
13
  id: 'roap media connection',
10
14
  };
11
- const fakeAudioTrack = {
12
- id: 'audio track',
15
+ const fakeTrack = {
16
+ id: 'any fake track'
17
+ }
18
+ const fakeAudioStream = {
19
+ outputTrack: fakeTrack,
13
20
  };
14
- const fakeVideoTrack = {
15
- id: 'video track',
21
+ const fakeVideoStream = {
22
+ outputTrack: fakeTrack,
23
+ };
24
+ const fakeShareVideoStream = {
25
+ outputTrack: fakeTrack,
26
+ };
27
+ const fakeShareAudioStream = {
28
+ outputTrack: fakeTrack,
16
29
  };
17
-
18
30
  afterEach(() => {
19
31
  sinon.restore();
20
32
  });
@@ -29,19 +41,20 @@ describe('createMediaConnection', () => {
29
41
  const ENABLE_EXTMAP = false;
30
42
  const ENABLE_RTX = true;
31
43
 
32
- Media.createMediaConnection(false, 'some debug id', {
44
+ Media.createMediaConnection(false, 'some debug id', webex, 'meetingId', 'correlationId', {
33
45
  mediaProperties: {
34
46
  mediaDirection: {
35
- sendAudio: true,
47
+ sendAudio: false,
36
48
  sendVideo: true,
37
49
  sendShare: false,
38
- receiveAudio: true,
50
+ receiveAudio: false,
39
51
  receiveVideo: true,
40
52
  receiveShare: true,
41
53
  },
42
- audioTrack: fakeAudioTrack,
43
- videoTrack: fakeVideoTrack,
44
- shareTrack: null,
54
+ audioStream: fakeAudioStream,
55
+ videoStream: fakeVideoStream,
56
+ shareVideoTrack: null,
57
+ shareAudioTrack: null,
45
58
  },
46
59
  remoteQualityLevel: 'HIGH',
47
60
  enableRtx: ENABLE_RTX,
@@ -79,17 +92,18 @@ describe('createMediaConnection', () => {
79
92
  },
80
93
  },
81
94
  {
82
- send: {
83
- audio: fakeAudioTrack,
84
- video: fakeVideoTrack,
85
- screenShareVideo: null,
95
+ localTracks: {
96
+ audio: fakeTrack,
97
+ video: fakeTrack,
98
+ screenShareVideo: undefined,
99
+ screenShareAudio: undefined,
86
100
  },
87
- receive: {
88
- audio: true,
89
- video: true,
90
- screenShareVideo: true,
91
- remoteQualityLevel: 'HIGH',
101
+ direction: {
102
+ audio: 'inactive',
103
+ video: 'sendrecv',
104
+ screenShareVideo: 'recvonly',
92
105
  },
106
+ remoteQualityLevel: 'HIGH',
93
107
  },
94
108
  'some debug id'
95
109
  );
@@ -100,12 +114,23 @@ describe('createMediaConnection', () => {
100
114
  .stub(internalMediaModule, 'MultistreamRoapMediaConnection')
101
115
  .returns(fakeRoapMediaConnection);
102
116
 
103
- Media.createMediaConnection(true, 'some debug id', {
117
+ Media.createMediaConnection(true, 'some debug id', webex, 'meeting id', 'correlationId', {
118
+ mediaProperties: {
119
+ mediaDirection: {
120
+ sendAudio: true,
121
+ sendVideo: true,
122
+ sendShare: false,
123
+ receiveAudio: true,
124
+ receiveVideo: true,
125
+ receiveShare: true,
126
+ },
127
+ },
104
128
  turnServerInfo: {
105
129
  url: 'turn server url',
106
130
  username: 'turn username',
107
131
  password: 'turn password',
108
132
  },
133
+ bundlePolicy: 'max-bundle',
109
134
  });
110
135
  assert.calledOnce(multistreamRoapMediaConnectionConstructorStub);
111
136
  assert.calledWith(
@@ -118,8 +143,9 @@ describe('createMediaConnection', () => {
118
143
  credential: 'turn password',
119
144
  },
120
145
  ],
146
+ bundlePolicy: 'max-bundle',
121
147
  },
122
- 'some debug id'
148
+ 'meeting id'
123
149
  );
124
150
  });
125
151
 
@@ -128,15 +154,54 @@ describe('createMediaConnection', () => {
128
154
  .stub(internalMediaModule, 'MultistreamRoapMediaConnection')
129
155
  .returns(fakeRoapMediaConnection);
130
156
 
131
- Media.createMediaConnection(true, 'debug string', {});
157
+ Media.createMediaConnection(true, 'debug string', webex, 'meeting id', 'correlationId', {
158
+ mediaProperties: {
159
+ mediaDirection: {
160
+ sendAudio: true,
161
+ sendVideo: true,
162
+ sendShare: false,
163
+ receiveAudio: true,
164
+ receiveVideo: true,
165
+ receiveShare: true,
166
+ },
167
+ },
168
+ });
132
169
  assert.calledOnce(multistreamRoapMediaConnectionConstructorStub);
133
170
  assert.calledWith(
134
171
  multistreamRoapMediaConnectionConstructorStub,
135
172
  {
136
173
  iceServers: [],
137
174
  },
138
- 'debug string'
175
+ 'meeting id'
139
176
  );
177
+
178
+ it('does not pass bundlePolicy to MultistreamRoapMediaConnection if bundlePolicy is undefined', () => {
179
+ const multistreamRoapMediaConnectionConstructorStub = sinon
180
+ .stub(internalMediaModule, 'MultistreamRoapMediaConnection')
181
+ .returns(fakeRoapMediaConnection);
182
+
183
+ Media.createMediaConnection(true, 'debug string', webex, 'meeting id', 'correlationId', {
184
+ mediaProperties: {
185
+ mediaDirection: {
186
+ sendAudio: true,
187
+ sendVideo: true,
188
+ sendShare: false,
189
+ receiveAudio: true,
190
+ receiveVideo: true,
191
+ receiveShare: true,
192
+ },
193
+ },
194
+ bundlePolicy: undefined,
195
+ });
196
+ assert.calledOnce(multistreamRoapMediaConnectionConstructorStub);
197
+ assert.calledWith(
198
+ multistreamRoapMediaConnectionConstructorStub,
199
+ {
200
+ iceServers: [],
201
+ },
202
+ 'meeting id'
203
+ );
204
+ });
140
205
  });
141
206
 
142
207
  it('passes empty ICE servers array to RoapMediaConnection if turnServerInfo is undefined (multistream disabled)', () => {
@@ -149,7 +214,7 @@ describe('createMediaConnection', () => {
149
214
  const ENABLE_EXTMAP = false;
150
215
  const ENABLE_RTX = true;
151
216
 
152
- Media.createMediaConnection(false, 'some debug id', {
217
+ Media.createMediaConnection(false, 'some debug id', webex, 'meeting id', 'correlationId', {
153
218
  mediaProperties: {
154
219
  mediaDirection: {
155
220
  sendAudio: true,
@@ -159,9 +224,10 @@ describe('createMediaConnection', () => {
159
224
  receiveVideo: true,
160
225
  receiveShare: true,
161
226
  },
162
- audioTrack: fakeAudioTrack,
163
- videoTrack: null,
164
- shareTrack: fakeVideoTrack,
227
+ audioStream: fakeAudioStream,
228
+ videoStream: null,
229
+ shareVideoStream: fakeShareVideoStream,
230
+ shareAudioStream: fakeShareAudioStream,
165
231
  },
166
232
  remoteQualityLevel: 'HIGH',
167
233
  enableRtx: ENABLE_RTX,
@@ -189,17 +255,18 @@ describe('createMediaConnection', () => {
189
255
  },
190
256
  },
191
257
  {
192
- send: {
193
- audio: fakeAudioTrack,
194
- video: null,
195
- screenShareVideo: fakeVideoTrack,
258
+ localTracks: {
259
+ audio: fakeTrack,
260
+ video: undefined,
261
+ screenShareVideo: fakeTrack,
262
+ screenShareAudio: fakeTrack,
196
263
  },
197
- receive: {
198
- audio: true,
199
- video: true,
200
- screenShareVideo: true,
201
- remoteQualityLevel: 'HIGH',
264
+ direction: {
265
+ audio: 'sendrecv',
266
+ video: 'sendrecv',
267
+ screenShareVideo: 'sendrecv',
202
268
  },
269
+ remoteQualityLevel: 'HIGH',
203
270
  },
204
271
  'some debug id'
205
272
  );
@@ -4,7 +4,7 @@ import {ConnectionState, Event} from '@webex/internal-media-core';
4
4
  import MediaProperties from '@webex/plugin-meetings/src/media/properties';
5
5
  import MediaUtil from '@webex/plugin-meetings/src/media/util';
6
6
  import testUtils from '../../../utils/testUtils';
7
- import {PC_BAIL_TIMEOUT} from '@webex/plugin-meetings/src/constants';
7
+ import {ICE_AND_DTLS_CONNECTION_TIMEOUT} from '@webex/plugin-meetings/src/constants';
8
8
  import {Defer} from '@webex/common';
9
9
 
10
10
  describe('MediaProperties', () => {
@@ -52,7 +52,7 @@ describe('MediaProperties', () => {
52
52
  assert.equal(promiseResolved, false);
53
53
  assert.equal(promiseRejected, false);
54
54
 
55
- await clock.tickAsync(PC_BAIL_TIMEOUT);
55
+ await clock.tickAsync(ICE_AND_DTLS_CONNECTION_TIMEOUT);
56
56
  await testUtils.flushPromises();
57
57
 
58
58
  assert.equal(promiseResolved, false);
@@ -10,6 +10,8 @@ describe('plugin-meetings', () => {
10
10
  canLock: null,
11
11
  canUnlock: null,
12
12
  canAssignHost: null,
13
+ canSetPresenter: null,
14
+ canUnsetPresenter: null,
13
15
  canStartRecording: null,
14
16
  canPauseRecording: null,
15
17
  canResumeRecording: null,
@@ -17,6 +19,8 @@ describe('plugin-meetings', () => {
17
19
  canUnsetMuteOnEntry: null,
18
20
  canSetDisallowUnmute: null,
19
21
  canUnsetDisallowUnmute: null,
22
+ canSetMuted: null,
23
+ canUnsetMuted: null,
20
24
  canStopRecording: null,
21
25
  canRaiseHand: null,
22
26
  canLowerAllHands: null,
@@ -26,14 +30,50 @@ describe('plugin-meetings', () => {
26
30
  canStartTranscribing: null,
27
31
  canStopTranscribing: null,
28
32
  isClosedCaptionActive: null,
33
+ isSaveTranscriptsEnabled: null,
29
34
  isWebexAssistantActive: null,
30
35
  canViewCaptionPanel: null,
31
36
  isRealTimeTranslationEnabled: null,
32
37
  canSelectSpokenLanguages: null,
33
38
  waitingForOthersToJoin: null,
34
- canEnableReactions: null,
35
39
  canSendReactions: null,
36
- ...expected
40
+ canManageBreakout: null,
41
+ canBroadcastMessageToBreakout: null,
42
+ canAdmitLobbyToBreakout: null,
43
+ canUserAskForHelp: null,
44
+ canUserRenameSelfAndObserved: null,
45
+ canUserRenameOthers: null,
46
+ isBreakoutPreassignmentsEnabled: null,
47
+ canMuteAll: null,
48
+ canUnmuteAll: null,
49
+ canEnableHardMute: null,
50
+ canDisableHardMute: null,
51
+ canEnableMuteOnEntry: null,
52
+ canDisableMuteOnEntry: null,
53
+ canEnableReactions: null,
54
+ canDisableReactions: null,
55
+ canEnableReactionDisplayNames: null,
56
+ canDisableReactionDisplayNames: null,
57
+ canUpdateShareControl: null,
58
+ canEnableViewTheParticipantsList: null,
59
+ canDisableViewTheParticipantsList: null,
60
+ canEnableRaiseHand: null,
61
+ canDisableRaiseHand: null,
62
+ canEnableVideo: null,
63
+ canDisableVideo: null,
64
+ canShareFile: null,
65
+ canShareApplication: null,
66
+ canShareCamera: null,
67
+ canShareDesktop: null,
68
+ canShareContent: null,
69
+ canTransferFile: null,
70
+ canDoVideo: null,
71
+ canAnnotate: null,
72
+ canUseVoip: null,
73
+ supportHQV: null,
74
+ supportHDV: null,
75
+ canShareWhiteBoard: null,
76
+ ...expected,
37
77
  };
38
78
 
39
79
  // Check get retuns all the correct values at once
@@ -51,6 +91,8 @@ describe('plugin-meetings', () => {
51
91
  'canLock',
52
92
  'canUnlock',
53
93
  'canAssignHost',
94
+ 'canSetPresenter',
95
+ 'canUnsetPresenter',
54
96
  'canStartRecording',
55
97
  'canPauseRecording',
56
98
  'canResumeRecording',
@@ -66,13 +108,49 @@ describe('plugin-meetings', () => {
66
108
  'canEnableClosedCaption',
67
109
  'canStopTranscribing',
68
110
  'isClosedCaptionActive',
111
+ 'isSaveTranscriptsEnabled',
69
112
  'isWebexAssistantActive',
70
113
  'canViewCaptionPanel',
71
114
  'isRealTimeTranslationEnabled',
72
115
  'canSelectSpokenLanguages',
73
116
  'waitingForOthersToJoin',
117
+ 'canSendReactions',
118
+ 'canManageBreakout',
119
+ 'canBroadcastMessageToBreakout',
120
+ 'canAdmitLobbyToBreakout',
121
+ 'canUserAskForHelp',
122
+ 'canUserRenameSelfAndObserved',
123
+ 'canUserRenameOthers',
124
+ 'isBreakoutPreassignmentsEnabled',
125
+ 'canMuteAll',
126
+ 'canUnmuteAll',
127
+ 'canEnableHardMute',
128
+ 'canDisableHardMute',
129
+ 'canEnableMuteOnEntry',
130
+ 'canDisableMuteOnEntry',
74
131
  'canEnableReactions',
75
- 'canSendReactions'
132
+ 'canDisableReactions',
133
+ 'canEnableReactionDisplayNames',
134
+ 'canDisableReactionDisplayNames',
135
+ 'canUpdateShareControl',
136
+ 'canEnableViewTheParticipantsList',
137
+ 'canDisableViewTheParticipantsList',
138
+ 'canEnableRaiseHand',
139
+ 'canDisableRaiseHand',
140
+ 'canEnableVideo',
141
+ 'canDisableVideo',
142
+ 'canShareFile',
143
+ 'canShareApplication',
144
+ 'canShareCamera',
145
+ 'canShareDesktop',
146
+ 'canShareContent',
147
+ 'canTransferFile',
148
+ 'canDoVideo',
149
+ 'canAnnotate',
150
+ 'canUseVoip',
151
+ 'supportHQV',
152
+ 'supportHDV',
153
+ 'canShareWhiteBoard',
76
154
  ].forEach((key) => {
77
155
  it(`get and set for ${key} work as expected`, () => {
78
156
  const inMeetingActions = new InMeetingActions();