@webex/plugin-meetings 3.0.0-beta.34 → 3.0.0-beta.340

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 (392) 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 -10
  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 +62 -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/mediaQualityMetrics/config.js +1 -204
  67. package/dist/mediaQualityMetrics/config.js.map +1 -1
  68. package/dist/meeting/in-meeting-actions.js +86 -2
  69. package/dist/meeting/in-meeting-actions.js.map +1 -1
  70. package/dist/meeting/index.js +3927 -2960
  71. package/dist/meeting/index.js.map +1 -1
  72. package/dist/meeting/locusMediaRequest.js +292 -0
  73. package/dist/meeting/locusMediaRequest.js.map +1 -0
  74. package/dist/meeting/muteState.js +224 -131
  75. package/dist/meeting/muteState.js.map +1 -1
  76. package/dist/meeting/request.js +260 -196
  77. package/dist/meeting/request.js.map +1 -1
  78. package/dist/meeting/util.js +601 -417
  79. package/dist/meeting/util.js.map +1 -1
  80. package/dist/meeting-info/index.js +73 -7
  81. package/dist/meeting-info/index.js.map +1 -1
  82. package/dist/meeting-info/meeting-info-v2.js +192 -51
  83. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  84. package/dist/meeting-info/util.js +1 -1
  85. package/dist/meeting-info/util.js.map +1 -1
  86. package/dist/meeting-info/utilv2.js +36 -36
  87. package/dist/meeting-info/utilv2.js.map +1 -1
  88. package/dist/meetings/collection.js +39 -0
  89. package/dist/meetings/collection.js.map +1 -1
  90. package/dist/meetings/index.js +424 -116
  91. package/dist/meetings/index.js.map +1 -1
  92. package/dist/meetings/meetings.types.js +7 -0
  93. package/dist/meetings/meetings.types.js.map +1 -0
  94. package/dist/meetings/request.js +2 -0
  95. package/dist/meetings/request.js.map +1 -1
  96. package/dist/meetings/util.js +72 -6
  97. package/dist/meetings/util.js.map +1 -1
  98. package/dist/member/index.js +58 -0
  99. package/dist/member/index.js.map +1 -1
  100. package/dist/member/types.js +25 -0
  101. package/dist/member/types.js.map +1 -0
  102. package/dist/member/util.js +132 -25
  103. package/dist/member/util.js.map +1 -1
  104. package/dist/members/collection.js +10 -0
  105. package/dist/members/collection.js.map +1 -1
  106. package/dist/members/index.js +102 -6
  107. package/dist/members/index.js.map +1 -1
  108. package/dist/members/request.js +106 -38
  109. package/dist/members/request.js.map +1 -1
  110. package/dist/members/types.js +15 -0
  111. package/dist/members/types.js.map +1 -0
  112. package/dist/members/util.js +326 -232
  113. package/dist/members/util.js.map +1 -1
  114. package/dist/metrics/constants.js +16 -5
  115. package/dist/metrics/constants.js.map +1 -1
  116. package/dist/metrics/index.js +1 -446
  117. package/dist/metrics/index.js.map +1 -1
  118. package/dist/multistream/mediaRequestManager.js +228 -58
  119. package/dist/multistream/mediaRequestManager.js.map +1 -1
  120. package/dist/multistream/receiveSlot.js +29 -16
  121. package/dist/multistream/receiveSlot.js.map +1 -1
  122. package/dist/multistream/receiveSlotManager.js +39 -36
  123. package/dist/multistream/receiveSlotManager.js.map +1 -1
  124. package/dist/multistream/remoteMedia.js +44 -18
  125. package/dist/multistream/remoteMedia.js.map +1 -1
  126. package/dist/multistream/remoteMediaGroup.js +60 -3
  127. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  128. package/dist/multistream/remoteMediaManager.js +209 -59
  129. package/dist/multistream/remoteMediaManager.js.map +1 -1
  130. package/dist/multistream/sendSlotManager.js +233 -0
  131. package/dist/multistream/sendSlotManager.js.map +1 -0
  132. package/dist/reachability/clusterReachability.js +356 -0
  133. package/dist/reachability/clusterReachability.js.map +1 -0
  134. package/dist/reachability/index.js +273 -391
  135. package/dist/reachability/index.js.map +1 -1
  136. package/dist/reachability/request.js +17 -8
  137. package/dist/reachability/request.js.map +1 -1
  138. package/dist/reachability/util.js +29 -0
  139. package/dist/reachability/util.js.map +1 -0
  140. package/dist/reconnection-manager/index.js +214 -170
  141. package/dist/reconnection-manager/index.js.map +1 -1
  142. package/dist/recording-controller/index.js +21 -2
  143. package/dist/recording-controller/index.js.map +1 -1
  144. package/dist/recording-controller/util.js +9 -8
  145. package/dist/recording-controller/util.js.map +1 -1
  146. package/dist/roap/index.js +62 -35
  147. package/dist/roap/index.js.map +1 -1
  148. package/dist/roap/request.js +112 -97
  149. package/dist/roap/request.js.map +1 -1
  150. package/dist/roap/turnDiscovery.js +95 -38
  151. package/dist/roap/turnDiscovery.js.map +1 -1
  152. package/dist/rtcMetrics/constants.js +12 -0
  153. package/dist/rtcMetrics/constants.js.map +1 -0
  154. package/dist/rtcMetrics/index.js +142 -0
  155. package/dist/rtcMetrics/index.js.map +1 -0
  156. package/dist/statsAnalyzer/index.js +181 -214
  157. package/dist/statsAnalyzer/index.js.map +1 -1
  158. package/dist/statsAnalyzer/mqaUtil.js +22 -18
  159. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  160. package/dist/types/annotation/annotation.types.d.ts +42 -0
  161. package/dist/types/annotation/constants.d.ts +31 -0
  162. package/dist/types/annotation/index.d.ts +117 -0
  163. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  164. package/dist/types/breakouts/events.d.ts +8 -0
  165. package/dist/types/breakouts/utils.d.ts +14 -0
  166. package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
  167. package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
  168. package/dist/types/common/errors/webex-errors.d.ts +25 -1
  169. package/dist/types/common/logs/request.d.ts +2 -0
  170. package/dist/types/common/queue.d.ts +9 -7
  171. package/dist/types/config.d.ts +2 -7
  172. package/dist/types/constants.d.ts +201 -30
  173. package/dist/types/controls-options-manager/enums.d.ts +11 -1
  174. package/dist/types/controls-options-manager/index.d.ts +17 -1
  175. package/dist/types/controls-options-manager/types.d.ts +43 -0
  176. package/dist/types/controls-options-manager/util.d.ts +1 -7
  177. package/dist/types/index.d.ts +6 -4
  178. package/dist/types/interpretation/collection.d.ts +5 -0
  179. package/dist/types/interpretation/index.d.ts +5 -0
  180. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  181. package/dist/types/locus-info/index.d.ts +57 -4
  182. package/dist/types/locus-info/parser.d.ts +66 -6
  183. package/dist/types/media/index.d.ts +2 -0
  184. package/dist/types/media/properties.d.ts +34 -48
  185. package/dist/types/mediaQualityMetrics/config.d.ts +0 -128
  186. package/dist/types/meeting/in-meeting-actions.d.ts +86 -2
  187. package/dist/types/meeting/index.d.ts +506 -512
  188. package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
  189. package/dist/types/meeting/muteState.d.ts +93 -25
  190. package/dist/types/meeting/request.d.ts +72 -43
  191. package/dist/types/meeting/util.d.ts +101 -1
  192. package/dist/types/meeting-info/index.d.ts +13 -1
  193. package/dist/types/meeting-info/meeting-info-v2.d.ts +31 -1
  194. package/dist/types/meetings/collection.d.ts +17 -0
  195. package/dist/types/meetings/index.d.ts +91 -21
  196. package/dist/types/meetings/meetings.types.d.ts +4 -0
  197. package/dist/types/member/index.d.ts +14 -0
  198. package/dist/types/member/types.d.ts +32 -0
  199. package/dist/types/members/collection.d.ts +5 -0
  200. package/dist/types/members/index.d.ts +35 -2
  201. package/dist/types/members/request.d.ts +73 -9
  202. package/dist/types/members/types.d.ts +25 -0
  203. package/dist/types/members/util.d.ts +214 -1
  204. package/dist/types/metrics/constants.d.ts +15 -4
  205. package/dist/types/metrics/index.d.ts +4 -111
  206. package/dist/types/multistream/mediaRequestManager.d.ts +72 -5
  207. package/dist/types/multistream/receiveSlot.d.ts +13 -11
  208. package/dist/types/multistream/receiveSlotManager.d.ts +14 -4
  209. package/dist/types/multistream/remoteMedia.d.ts +8 -29
  210. package/dist/types/multistream/remoteMediaGroup.d.ts +0 -9
  211. package/dist/types/multistream/remoteMediaManager.d.ts +46 -2
  212. package/dist/types/multistream/sendSlotManager.d.ts +61 -0
  213. package/dist/types/reachability/clusterReachability.d.ts +109 -0
  214. package/dist/types/reachability/index.d.ts +60 -95
  215. package/dist/types/reachability/request.d.ts +7 -3
  216. package/dist/types/reachability/util.d.ts +8 -0
  217. package/dist/types/reconnection-manager/index.d.ts +19 -0
  218. package/dist/types/recording-controller/index.d.ts +15 -1
  219. package/dist/types/recording-controller/util.d.ts +5 -4
  220. package/dist/types/roap/index.d.ts +2 -1
  221. package/dist/types/roap/request.d.ts +15 -11
  222. package/dist/types/roap/turnDiscovery.d.ts +21 -3
  223. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  224. package/dist/types/rtcMetrics/index.d.ts +54 -0
  225. package/dist/types/statsAnalyzer/index.d.ts +29 -11
  226. package/dist/types/webinar/collection.d.ts +16 -0
  227. package/dist/types/webinar/index.d.ts +5 -0
  228. package/dist/webinar/collection.js +44 -0
  229. package/dist/webinar/collection.js.map +1 -0
  230. package/dist/webinar/index.js +69 -0
  231. package/dist/webinar/index.js.map +1 -0
  232. package/package.json +22 -19
  233. package/src/annotation/annotation.types.ts +50 -0
  234. package/src/annotation/constants.ts +36 -0
  235. package/src/annotation/index.ts +328 -0
  236. package/src/breakouts/README.md +42 -12
  237. package/src/breakouts/breakout.ts +67 -9
  238. package/src/breakouts/edit-lock-error.ts +25 -0
  239. package/src/breakouts/events.ts +56 -0
  240. package/src/breakouts/index.ts +592 -20
  241. package/src/breakouts/utils.ts +42 -0
  242. package/src/common/errors/no-meeting-info.ts +24 -0
  243. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  244. package/src/common/errors/webex-errors.ts +44 -2
  245. package/src/common/logs/logger-proxy.ts +1 -1
  246. package/src/common/logs/request.ts +5 -1
  247. package/src/common/queue.ts +22 -8
  248. package/src/config.ts +4 -9
  249. package/src/constants.ts +224 -20
  250. package/src/controls-options-manager/enums.ts +12 -0
  251. package/src/controls-options-manager/index.ts +116 -21
  252. package/src/controls-options-manager/types.ts +59 -0
  253. package/src/controls-options-manager/util.ts +294 -14
  254. package/src/index.ts +40 -0
  255. package/src/interpretation/README.md +60 -0
  256. package/src/interpretation/collection.ts +19 -0
  257. package/src/interpretation/index.ts +332 -0
  258. package/src/interpretation/siLanguage.ts +18 -0
  259. package/src/locus-info/controlsUtils.ts +108 -0
  260. package/src/locus-info/index.ts +413 -59
  261. package/src/locus-info/infoUtils.ts +10 -2
  262. package/src/locus-info/mediaSharesUtils.ts +64 -0
  263. package/src/locus-info/parser.ts +258 -47
  264. package/src/locus-info/selfUtils.ts +81 -5
  265. package/src/media/index.ts +102 -122
  266. package/src/media/properties.ts +87 -110
  267. package/src/mediaQualityMetrics/config.ts +0 -135
  268. package/src/meeting/in-meeting-actions.ts +171 -3
  269. package/src/meeting/index.ts +3276 -2555
  270. package/src/meeting/locusMediaRequest.ts +313 -0
  271. package/src/meeting/muteState.ts +223 -136
  272. package/src/meeting/request.ts +177 -121
  273. package/src/meeting/util.ts +588 -394
  274. package/src/meeting-info/index.ts +81 -8
  275. package/src/meeting-info/meeting-info-v2.ts +170 -14
  276. package/src/meeting-info/util.ts +1 -1
  277. package/src/meeting-info/utilv2.ts +23 -23
  278. package/src/meetings/collection.ts +33 -0
  279. package/src/meetings/index.ts +454 -125
  280. package/src/meetings/meetings.types.ts +12 -0
  281. package/src/meetings/request.ts +2 -0
  282. package/src/meetings/util.ts +80 -11
  283. package/src/member/index.ts +58 -0
  284. package/src/member/types.ts +38 -0
  285. package/src/member/util.ts +141 -25
  286. package/src/members/collection.ts +8 -0
  287. package/src/members/index.ts +134 -8
  288. package/src/members/request.ts +97 -17
  289. package/src/members/types.ts +29 -0
  290. package/src/members/util.ts +333 -240
  291. package/src/metrics/constants.ts +15 -4
  292. package/src/metrics/index.ts +1 -469
  293. package/src/multistream/mediaRequestManager.ts +277 -82
  294. package/src/multistream/receiveSlot.ts +31 -17
  295. package/src/multistream/receiveSlotManager.ts +34 -24
  296. package/src/multistream/remoteMedia.ts +27 -2
  297. package/src/multistream/remoteMediaGroup.ts +59 -0
  298. package/src/multistream/remoteMediaManager.ts +148 -30
  299. package/src/multistream/sendSlotManager.ts +170 -0
  300. package/src/reachability/clusterReachability.ts +320 -0
  301. package/src/reachability/index.ts +236 -342
  302. package/src/reachability/request.ts +17 -8
  303. package/src/reachability/util.ts +24 -0
  304. package/src/reconnection-manager/index.ts +128 -106
  305. package/src/recording-controller/index.ts +20 -3
  306. package/src/recording-controller/util.ts +26 -9
  307. package/src/roap/index.ts +63 -32
  308. package/src/roap/request.ts +100 -104
  309. package/src/roap/turnDiscovery.ts +48 -26
  310. package/src/rtcMetrics/constants.ts +3 -0
  311. package/src/rtcMetrics/index.ts +124 -0
  312. package/src/statsAnalyzer/index.ts +218 -289
  313. package/src/statsAnalyzer/mqaUtil.ts +28 -30
  314. package/src/webinar/collection.ts +31 -0
  315. package/src/webinar/index.ts +62 -0
  316. package/test/integration/spec/converged-space-meetings.js +60 -3
  317. package/test/integration/spec/journey.js +320 -261
  318. package/test/integration/spec/space-meeting.js +76 -3
  319. package/test/unit/spec/annotation/index.ts +418 -0
  320. package/test/unit/spec/breakouts/breakout.ts +118 -28
  321. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  322. package/test/unit/spec/breakouts/events.ts +89 -0
  323. package/test/unit/spec/breakouts/index.ts +1395 -69
  324. package/test/unit/spec/breakouts/utils.js +52 -1
  325. package/test/unit/spec/common/queue.js +31 -2
  326. package/test/unit/spec/controls-options-manager/index.js +163 -0
  327. package/test/unit/spec/controls-options-manager/util.js +576 -60
  328. package/test/unit/spec/fixture/locus.js +1 -0
  329. package/test/unit/spec/interpretation/collection.ts +15 -0
  330. package/test/unit/spec/interpretation/index.ts +589 -0
  331. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  332. package/test/unit/spec/locus-info/controlsUtils.js +316 -43
  333. package/test/unit/spec/locus-info/index.js +1304 -33
  334. package/test/unit/spec/locus-info/infoUtils.js +37 -15
  335. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  336. package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
  337. package/test/unit/spec/locus-info/parser.js +116 -35
  338. package/test/unit/spec/locus-info/selfConstant.js +27 -4
  339. package/test/unit/spec/locus-info/selfUtils.js +208 -17
  340. package/test/unit/spec/media/index.ts +120 -37
  341. package/test/unit/spec/media/properties.ts +2 -2
  342. package/test/unit/spec/meeting/in-meeting-actions.ts +85 -3
  343. package/test/unit/spec/meeting/index.js +5849 -2014
  344. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  345. package/test/unit/spec/meeting/muteState.js +402 -213
  346. package/test/unit/spec/meeting/request.js +483 -49
  347. package/test/unit/spec/meeting/utils.js +679 -64
  348. package/test/unit/spec/meeting-info/index.js +300 -0
  349. package/test/unit/spec/meeting-info/meetinginfov2.js +526 -5
  350. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  351. package/test/unit/spec/meetings/collection.js +26 -0
  352. package/test/unit/spec/meetings/index.js +1231 -212
  353. package/test/unit/spec/meetings/utils.js +202 -2
  354. package/test/unit/spec/member/index.js +61 -6
  355. package/test/unit/spec/member/util.js +510 -34
  356. package/test/unit/spec/members/index.js +432 -1
  357. package/test/unit/spec/members/request.js +206 -27
  358. package/test/unit/spec/members/utils.js +210 -0
  359. package/test/unit/spec/metrics/index.js +1 -50
  360. package/test/unit/spec/multistream/mediaRequestManager.ts +776 -162
  361. package/test/unit/spec/multistream/receiveSlot.ts +28 -20
  362. package/test/unit/spec/multistream/receiveSlotManager.ts +32 -30
  363. package/test/unit/spec/multistream/remoteMedia.ts +30 -0
  364. package/test/unit/spec/multistream/remoteMediaGroup.ts +266 -0
  365. package/test/unit/spec/multistream/remoteMediaManager.ts +326 -0
  366. package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
  367. package/test/unit/spec/reachability/clusterReachability.ts +279 -0
  368. package/test/unit/spec/reachability/index.ts +486 -13
  369. package/test/unit/spec/reachability/request.js +68 -0
  370. package/test/unit/spec/reachability/util.ts +40 -0
  371. package/test/unit/spec/reconnection-manager/index.js +117 -11
  372. package/test/unit/spec/recording-controller/index.js +294 -218
  373. package/test/unit/spec/recording-controller/util.js +223 -96
  374. package/test/unit/spec/roap/index.ts +174 -63
  375. package/test/unit/spec/roap/request.ts +226 -85
  376. package/test/unit/spec/roap/turnDiscovery.ts +76 -34
  377. package/test/unit/spec/rtcMetrics/index.ts +93 -0
  378. package/test/unit/spec/stats-analyzer/index.js +231 -7
  379. package/test/unit/spec/webinar/collection.ts +13 -0
  380. package/test/unit/spec/webinar/index.ts +60 -0
  381. package/test/utils/integrationTestUtils.js +46 -0
  382. package/test/utils/testUtils.js +0 -52
  383. package/dist/meeting/effectsState.js +0 -262
  384. package/dist/meeting/effectsState.js.map +0 -1
  385. package/dist/metrics/config.js +0 -289
  386. package/dist/metrics/config.js.map +0 -1
  387. package/dist/types/meeting/effectsState.d.ts +0 -42
  388. package/dist/types/metrics/config.d.ts +0 -169
  389. package/src/index.js +0 -16
  390. package/src/meeting/effectsState.ts +0 -211
  391. package/src/metrics/config.ts +0 -485
  392. 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,46 @@ 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
+ outputStream: {
20
+ getTracks: () => {
21
+ return [fakeTrack];
22
+ }
23
+ }
13
24
  };
14
- const fakeVideoTrack = {
15
- id: 'video track',
25
+ const fakeVideoStream = {
26
+ outputStream: {
27
+ getTracks: () => {
28
+ return [fakeTrack];
29
+ }
30
+ }
31
+ };
32
+ const fakeShareVideoStream = {
33
+ outputStream: {
34
+ getTracks: () => {
35
+ return [fakeTrack];
36
+ }
37
+ }
38
+ };
39
+ const fakeShareAudioStream = {
40
+ outputStream: {
41
+ getTracks: () => {
42
+ return [fakeTrack];
43
+ }
44
+ }
16
45
  };
17
-
18
46
  afterEach(() => {
19
47
  sinon.restore();
20
48
  });
@@ -29,19 +57,20 @@ describe('createMediaConnection', () => {
29
57
  const ENABLE_EXTMAP = false;
30
58
  const ENABLE_RTX = true;
31
59
 
32
- Media.createMediaConnection(false, 'some debug id', {
60
+ Media.createMediaConnection(false, 'some debug id', webex, 'meetingId', 'correlationId', {
33
61
  mediaProperties: {
34
62
  mediaDirection: {
35
- sendAudio: true,
63
+ sendAudio: false,
36
64
  sendVideo: true,
37
65
  sendShare: false,
38
- receiveAudio: true,
66
+ receiveAudio: false,
39
67
  receiveVideo: true,
40
68
  receiveShare: true,
41
69
  },
42
- audioTrack: fakeAudioTrack,
43
- videoTrack: fakeVideoTrack,
44
- shareTrack: null,
70
+ audioStream: fakeAudioStream,
71
+ videoStream: fakeVideoStream,
72
+ shareVideoTrack: null,
73
+ shareAudioTrack: null,
45
74
  },
46
75
  remoteQualityLevel: 'HIGH',
47
76
  enableRtx: ENABLE_RTX,
@@ -79,17 +108,18 @@ describe('createMediaConnection', () => {
79
108
  },
80
109
  },
81
110
  {
82
- send: {
83
- audio: fakeAudioTrack,
84
- video: fakeVideoTrack,
85
- screenShareVideo: null,
111
+ localTracks: {
112
+ audio: fakeTrack,
113
+ video: fakeTrack,
114
+ screenShareVideo: undefined,
115
+ screenShareAudio: undefined,
86
116
  },
87
- receive: {
88
- audio: true,
89
- video: true,
90
- screenShareVideo: true,
91
- remoteQualityLevel: 'HIGH',
117
+ direction: {
118
+ audio: 'inactive',
119
+ video: 'sendrecv',
120
+ screenShareVideo: 'recvonly',
92
121
  },
122
+ remoteQualityLevel: 'HIGH',
93
123
  },
94
124
  'some debug id'
95
125
  );
@@ -100,12 +130,23 @@ describe('createMediaConnection', () => {
100
130
  .stub(internalMediaModule, 'MultistreamRoapMediaConnection')
101
131
  .returns(fakeRoapMediaConnection);
102
132
 
103
- Media.createMediaConnection(true, 'some debug id', {
133
+ Media.createMediaConnection(true, 'some debug id', webex, 'meeting id', 'correlationId', {
134
+ mediaProperties: {
135
+ mediaDirection: {
136
+ sendAudio: true,
137
+ sendVideo: true,
138
+ sendShare: false,
139
+ receiveAudio: true,
140
+ receiveVideo: true,
141
+ receiveShare: true,
142
+ },
143
+ },
104
144
  turnServerInfo: {
105
145
  url: 'turn server url',
106
146
  username: 'turn username',
107
147
  password: 'turn password',
108
148
  },
149
+ bundlePolicy: 'max-bundle',
109
150
  });
110
151
  assert.calledOnce(multistreamRoapMediaConnectionConstructorStub);
111
152
  assert.calledWith(
@@ -118,8 +159,9 @@ describe('createMediaConnection', () => {
118
159
  credential: 'turn password',
119
160
  },
120
161
  ],
162
+ bundlePolicy: 'max-bundle',
121
163
  },
122
- 'some debug id'
164
+ 'meeting id'
123
165
  );
124
166
  });
125
167
 
@@ -128,15 +170,54 @@ describe('createMediaConnection', () => {
128
170
  .stub(internalMediaModule, 'MultistreamRoapMediaConnection')
129
171
  .returns(fakeRoapMediaConnection);
130
172
 
131
- Media.createMediaConnection(true, 'debug string', {});
173
+ Media.createMediaConnection(true, 'debug string', webex, 'meeting id', 'correlationId', {
174
+ mediaProperties: {
175
+ mediaDirection: {
176
+ sendAudio: true,
177
+ sendVideo: true,
178
+ sendShare: false,
179
+ receiveAudio: true,
180
+ receiveVideo: true,
181
+ receiveShare: true,
182
+ },
183
+ },
184
+ });
132
185
  assert.calledOnce(multistreamRoapMediaConnectionConstructorStub);
133
186
  assert.calledWith(
134
187
  multistreamRoapMediaConnectionConstructorStub,
135
188
  {
136
189
  iceServers: [],
137
190
  },
138
- 'debug string'
191
+ 'meeting id'
139
192
  );
193
+
194
+ it('does not pass bundlePolicy to MultistreamRoapMediaConnection if bundlePolicy is undefined', () => {
195
+ const multistreamRoapMediaConnectionConstructorStub = sinon
196
+ .stub(internalMediaModule, 'MultistreamRoapMediaConnection')
197
+ .returns(fakeRoapMediaConnection);
198
+
199
+ Media.createMediaConnection(true, 'debug string', webex, 'meeting id', 'correlationId', {
200
+ mediaProperties: {
201
+ mediaDirection: {
202
+ sendAudio: true,
203
+ sendVideo: true,
204
+ sendShare: false,
205
+ receiveAudio: true,
206
+ receiveVideo: true,
207
+ receiveShare: true,
208
+ },
209
+ },
210
+ bundlePolicy: undefined,
211
+ });
212
+ assert.calledOnce(multistreamRoapMediaConnectionConstructorStub);
213
+ assert.calledWith(
214
+ multistreamRoapMediaConnectionConstructorStub,
215
+ {
216
+ iceServers: [],
217
+ },
218
+ 'meeting id'
219
+ );
220
+ });
140
221
  });
141
222
 
142
223
  it('passes empty ICE servers array to RoapMediaConnection if turnServerInfo is undefined (multistream disabled)', () => {
@@ -149,7 +230,7 @@ describe('createMediaConnection', () => {
149
230
  const ENABLE_EXTMAP = false;
150
231
  const ENABLE_RTX = true;
151
232
 
152
- Media.createMediaConnection(false, 'some debug id', {
233
+ Media.createMediaConnection(false, 'some debug id', webex, 'meeting id', 'correlationId', {
153
234
  mediaProperties: {
154
235
  mediaDirection: {
155
236
  sendAudio: true,
@@ -159,9 +240,10 @@ describe('createMediaConnection', () => {
159
240
  receiveVideo: true,
160
241
  receiveShare: true,
161
242
  },
162
- audioTrack: fakeAudioTrack,
163
- videoTrack: null,
164
- shareTrack: fakeVideoTrack,
243
+ audioStream: fakeAudioStream,
244
+ videoStream: null,
245
+ shareVideoStream: fakeShareVideoStream,
246
+ shareAudioStream: fakeShareAudioStream,
165
247
  },
166
248
  remoteQualityLevel: 'HIGH',
167
249
  enableRtx: ENABLE_RTX,
@@ -189,17 +271,18 @@ describe('createMediaConnection', () => {
189
271
  },
190
272
  },
191
273
  {
192
- send: {
193
- audio: fakeAudioTrack,
194
- video: null,
195
- screenShareVideo: fakeVideoTrack,
274
+ localTracks: {
275
+ audio: fakeTrack,
276
+ video: undefined,
277
+ screenShareVideo: fakeTrack,
278
+ screenShareAudio: fakeTrack,
196
279
  },
197
- receive: {
198
- audio: true,
199
- video: true,
200
- screenShareVideo: true,
201
- remoteQualityLevel: 'HIGH',
280
+ direction: {
281
+ audio: 'sendrecv',
282
+ video: 'sendrecv',
283
+ screenShareVideo: 'sendrecv',
202
284
  },
285
+ remoteQualityLevel: 'HIGH',
203
286
  },
204
287
  'some debug id'
205
288
  );
@@ -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,52 @@ 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
+ canChat: null,
71
+ canDoVideo: null,
72
+ canAnnotate: null,
73
+ canUseVoip: null,
74
+ supportHQV: null,
75
+ supportHDV: null,
76
+ canShareWhiteBoard: null,
77
+ enforceVirtualBackground: null,
78
+ ...expected,
37
79
  };
38
80
 
39
81
  // Check get retuns all the correct values at once
@@ -51,6 +93,8 @@ describe('plugin-meetings', () => {
51
93
  'canLock',
52
94
  'canUnlock',
53
95
  'canAssignHost',
96
+ 'canSetPresenter',
97
+ 'canUnsetPresenter',
54
98
  'canStartRecording',
55
99
  'canPauseRecording',
56
100
  'canResumeRecording',
@@ -66,13 +110,51 @@ describe('plugin-meetings', () => {
66
110
  'canEnableClosedCaption',
67
111
  'canStopTranscribing',
68
112
  'isClosedCaptionActive',
113
+ 'isSaveTranscriptsEnabled',
69
114
  'isWebexAssistantActive',
70
115
  'canViewCaptionPanel',
71
116
  'isRealTimeTranslationEnabled',
72
117
  'canSelectSpokenLanguages',
73
118
  'waitingForOthersToJoin',
119
+ 'canSendReactions',
120
+ 'canManageBreakout',
121
+ 'canBroadcastMessageToBreakout',
122
+ 'canAdmitLobbyToBreakout',
123
+ 'canUserAskForHelp',
124
+ 'canUserRenameSelfAndObserved',
125
+ 'canUserRenameOthers',
126
+ 'isBreakoutPreassignmentsEnabled',
127
+ 'canMuteAll',
128
+ 'canUnmuteAll',
129
+ 'canEnableHardMute',
130
+ 'canDisableHardMute',
131
+ 'canEnableMuteOnEntry',
132
+ 'canDisableMuteOnEntry',
74
133
  'canEnableReactions',
75
- 'canSendReactions'
134
+ 'canDisableReactions',
135
+ 'canEnableReactionDisplayNames',
136
+ 'canDisableReactionDisplayNames',
137
+ 'canUpdateShareControl',
138
+ 'canEnableViewTheParticipantsList',
139
+ 'canDisableViewTheParticipantsList',
140
+ 'canEnableRaiseHand',
141
+ 'canDisableRaiseHand',
142
+ 'canEnableVideo',
143
+ 'canDisableVideo',
144
+ 'canShareFile',
145
+ 'canShareApplication',
146
+ 'canShareCamera',
147
+ 'canShareDesktop',
148
+ 'canShareContent',
149
+ 'canTransferFile',
150
+ 'canChat',
151
+ 'canDoVideo',
152
+ 'canAnnotate',
153
+ 'canUseVoip',
154
+ 'supportHQV',
155
+ 'supportHDV',
156
+ 'canShareWhiteBoard',
157
+ 'enforceVirtualBackground',
76
158
  ].forEach((key) => {
77
159
  it(`get and set for ${key} work as expected`, () => {
78
160
  const inMeetingActions = new InMeetingActions();