@webex/plugin-meetings 3.0.0-beta.2 → 3.0.0-beta.21

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 (365) hide show
  1. package/UPGRADING.md +9 -9
  2. package/browsers.js +19 -24
  3. package/dist/breakouts/breakout.js +116 -0
  4. package/dist/breakouts/breakout.js.map +1 -0
  5. package/dist/breakouts/collection.js +23 -0
  6. package/dist/breakouts/collection.js.map +1 -0
  7. package/dist/breakouts/index.js +226 -0
  8. package/dist/breakouts/index.js.map +1 -0
  9. package/dist/common/browser-detection.js +1 -20
  10. package/dist/common/browser-detection.js.map +1 -1
  11. package/dist/common/collection.js +5 -20
  12. package/dist/common/collection.js.map +1 -1
  13. package/dist/common/config.js +0 -7
  14. package/dist/common/config.js.map +1 -1
  15. package/dist/common/errors/captcha-error.js +10 -24
  16. package/dist/common/errors/captcha-error.js.map +1 -1
  17. package/dist/common/errors/intent-to-join.js +11 -24
  18. package/dist/common/errors/intent-to-join.js.map +1 -1
  19. package/dist/common/errors/join-meeting.js +12 -25
  20. package/dist/common/errors/join-meeting.js.map +1 -1
  21. package/dist/common/errors/media.js +10 -24
  22. package/dist/common/errors/media.js.map +1 -1
  23. package/dist/common/errors/parameter.js +5 -33
  24. package/dist/common/errors/parameter.js.map +1 -1
  25. package/dist/common/errors/password-error.js +10 -24
  26. package/dist/common/errors/password-error.js.map +1 -1
  27. package/dist/common/errors/permission.js +9 -23
  28. package/dist/common/errors/permission.js.map +1 -1
  29. package/dist/common/errors/reconnection-in-progress.js +0 -17
  30. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  31. package/dist/common/errors/reconnection.js +10 -24
  32. package/dist/common/errors/reconnection.js.map +1 -1
  33. package/dist/common/errors/stats.js +10 -24
  34. package/dist/common/errors/stats.js.map +1 -1
  35. package/dist/common/errors/webex-errors.js +6 -41
  36. package/dist/common/errors/webex-errors.js.map +1 -1
  37. package/dist/common/errors/webex-meetings-error.js +5 -25
  38. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  39. package/dist/common/events/events-scope.js +0 -22
  40. package/dist/common/events/events-scope.js.map +1 -1
  41. package/dist/common/events/events.js +0 -23
  42. package/dist/common/events/events.js.map +1 -1
  43. package/dist/common/events/trigger-proxy.js +0 -12
  44. package/dist/common/events/trigger-proxy.js.map +1 -1
  45. package/dist/common/events/util.js +0 -15
  46. package/dist/common/events/util.js.map +1 -1
  47. package/dist/common/logs/logger-config.js +0 -4
  48. package/dist/common/logs/logger-config.js.map +1 -1
  49. package/dist/common/logs/logger-proxy.js +1 -8
  50. package/dist/common/logs/logger-proxy.js.map +1 -1
  51. package/dist/common/logs/request.js +37 -60
  52. package/dist/common/logs/request.js.map +1 -1
  53. package/dist/common/queue.js +4 -14
  54. package/dist/common/queue.js.map +1 -1
  55. package/dist/config.js +6 -6
  56. package/dist/config.js.map +1 -1
  57. package/dist/constants.js +88 -46
  58. package/dist/constants.js.map +1 -1
  59. package/dist/index.js +4 -18
  60. package/dist/index.js.map +1 -1
  61. package/dist/locus-info/controlsUtils.js +12 -29
  62. package/dist/locus-info/controlsUtils.js.map +1 -1
  63. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  64. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  65. package/dist/locus-info/fullState.js +0 -15
  66. package/dist/locus-info/fullState.js.map +1 -1
  67. package/dist/locus-info/hostUtils.js +4 -12
  68. package/dist/locus-info/hostUtils.js.map +1 -1
  69. package/dist/locus-info/index.js +184 -190
  70. package/dist/locus-info/index.js.map +1 -1
  71. package/dist/locus-info/infoUtils.js +3 -37
  72. package/dist/locus-info/infoUtils.js.map +1 -1
  73. package/dist/locus-info/mediaSharesUtils.js +12 -38
  74. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  75. package/dist/locus-info/parser.js +92 -118
  76. package/dist/locus-info/parser.js.map +1 -1
  77. package/dist/locus-info/selfUtils.js +34 -91
  78. package/dist/locus-info/selfUtils.js.map +1 -1
  79. package/dist/media/index.js +67 -111
  80. package/dist/media/index.js.map +1 -1
  81. package/dist/media/properties.js +80 -114
  82. package/dist/media/properties.js.map +1 -1
  83. package/dist/media/util.js +2 -9
  84. package/dist/media/util.js.map +1 -1
  85. package/dist/mediaQualityMetrics/config.js +10 -12
  86. package/dist/mediaQualityMetrics/config.js.map +1 -1
  87. package/dist/meeting/effectsState.js +125 -190
  88. package/dist/meeting/effectsState.js.map +1 -1
  89. package/dist/meeting/in-meeting-actions.js +5 -14
  90. package/dist/meeting/in-meeting-actions.js.map +1 -1
  91. package/dist/meeting/index.js +1692 -1925
  92. package/dist/meeting/index.js.map +1 -1
  93. package/dist/meeting/muteState.js +36 -77
  94. package/dist/meeting/muteState.js.map +1 -1
  95. package/dist/meeting/request.js +224 -230
  96. package/dist/meeting/request.js.map +1 -1
  97. package/dist/meeting/request.type.js +7 -0
  98. package/dist/meeting/request.type.js.map +1 -0
  99. package/dist/meeting/state.js +21 -31
  100. package/dist/meeting/state.js.map +1 -1
  101. package/dist/meeting/util.js +43 -215
  102. package/dist/meeting/util.js.map +1 -1
  103. package/dist/meeting-info/collection.js +6 -25
  104. package/dist/meeting-info/collection.js.map +1 -1
  105. package/dist/meeting-info/index.js +14 -32
  106. package/dist/meeting-info/index.js.map +1 -1
  107. package/dist/meeting-info/meeting-info-v2.js +193 -268
  108. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  109. package/dist/meeting-info/request.js +3 -15
  110. package/dist/meeting-info/request.js.map +1 -1
  111. package/dist/meeting-info/util.js +98 -183
  112. package/dist/meeting-info/util.js.map +1 -1
  113. package/dist/meeting-info/utilv2.js +137 -228
  114. package/dist/meeting-info/utilv2.js.map +1 -1
  115. package/dist/meetings/collection.js +5 -20
  116. package/dist/meetings/collection.js.map +1 -1
  117. package/dist/meetings/index.js +490 -560
  118. package/dist/meetings/index.js.map +1 -1
  119. package/dist/meetings/request.js +24 -41
  120. package/dist/meetings/request.js.map +1 -1
  121. package/dist/meetings/util.js +99 -155
  122. package/dist/meetings/util.js.map +1 -1
  123. package/dist/member/index.js +78 -86
  124. package/dist/member/index.js.map +1 -1
  125. package/dist/member/util.js +31 -68
  126. package/dist/member/util.js.map +1 -1
  127. package/dist/members/collection.js +3 -12
  128. package/dist/members/collection.js.map +1 -1
  129. package/dist/members/index.js +93 -200
  130. package/dist/members/index.js.map +1 -1
  131. package/dist/members/request.js +16 -39
  132. package/dist/members/request.js.map +1 -1
  133. package/dist/members/util.js +9 -38
  134. package/dist/members/util.js.map +1 -1
  135. package/dist/metrics/config.js +0 -2
  136. package/dist/metrics/config.js.map +1 -1
  137. package/dist/metrics/constants.js +1 -2
  138. package/dist/metrics/constants.js.map +1 -1
  139. package/dist/metrics/index.js +55 -135
  140. package/dist/metrics/index.js.map +1 -1
  141. package/dist/multistream/mediaRequestManager.js +57 -32
  142. package/dist/multistream/mediaRequestManager.js.map +1 -1
  143. package/dist/multistream/multistreamMedia.js +15 -21
  144. package/dist/multistream/multistreamMedia.js.map +1 -1
  145. package/dist/multistream/receiveSlot.js +10 -50
  146. package/dist/multistream/receiveSlot.js.map +1 -1
  147. package/dist/multistream/receiveSlotManager.js +45 -82
  148. package/dist/multistream/receiveSlotManager.js.map +1 -1
  149. package/dist/multistream/remoteMedia.js +18 -58
  150. package/dist/multistream/remoteMedia.js.map +1 -1
  151. package/dist/multistream/remoteMediaGroup.js +6 -40
  152. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  153. package/dist/multistream/remoteMediaManager.js +362 -416
  154. package/dist/multistream/remoteMediaManager.js.map +1 -1
  155. package/dist/networkQualityMonitor/index.js +36 -57
  156. package/dist/networkQualityMonitor/index.js.map +1 -1
  157. package/dist/personal-meeting-room/index.js +21 -45
  158. package/dist/personal-meeting-room/index.js.map +1 -1
  159. package/dist/personal-meeting-room/request.js +1 -31
  160. package/dist/personal-meeting-room/request.js.map +1 -1
  161. package/dist/personal-meeting-room/util.js +0 -13
  162. package/dist/personal-meeting-room/util.js.map +1 -1
  163. package/dist/reachability/index.js +138 -182
  164. package/dist/reachability/index.js.map +1 -1
  165. package/dist/reachability/request.js +3 -18
  166. package/dist/reachability/request.js.map +1 -1
  167. package/dist/reactions/constants.js +13 -0
  168. package/dist/reactions/constants.js.map +1 -0
  169. package/dist/reactions/reactions.js +109 -0
  170. package/dist/reactions/reactions.js.map +1 -0
  171. package/dist/reactions/reactions.type.js +36 -0
  172. package/dist/reactions/reactions.type.js.map +1 -0
  173. package/dist/reconnection-manager/index.js +322 -455
  174. package/dist/reconnection-manager/index.js.map +1 -1
  175. package/dist/recording-controller/enums.js +17 -0
  176. package/dist/recording-controller/enums.js.map +1 -0
  177. package/dist/recording-controller/index.js +343 -0
  178. package/dist/recording-controller/index.js.map +1 -0
  179. package/dist/recording-controller/util.js +63 -0
  180. package/dist/recording-controller/util.js.map +1 -0
  181. package/dist/roap/index.js +39 -64
  182. package/dist/roap/index.js.map +1 -1
  183. package/dist/roap/request.js +94 -113
  184. package/dist/roap/request.js.map +1 -1
  185. package/dist/roap/turnDiscovery.js +85 -94
  186. package/dist/roap/turnDiscovery.js.map +1 -1
  187. package/dist/statsAnalyzer/global.js +0 -2
  188. package/dist/statsAnalyzer/global.js.map +1 -1
  189. package/dist/statsAnalyzer/index.js +85 -175
  190. package/dist/statsAnalyzer/index.js.map +1 -1
  191. package/dist/statsAnalyzer/mqaUtil.js +72 -53
  192. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  193. package/dist/transcription/index.js +22 -47
  194. package/dist/transcription/index.js.map +1 -1
  195. package/internal-README.md +7 -6
  196. package/package.json +25 -20
  197. package/src/breakouts/README.md +190 -0
  198. package/src/breakouts/breakout.ts +110 -0
  199. package/src/breakouts/collection.ts +19 -0
  200. package/src/breakouts/index.ts +225 -0
  201. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  202. package/src/common/collection.ts +9 -7
  203. package/src/common/{config.js → config.ts} +1 -1
  204. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  205. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  206. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  207. package/src/common/errors/{media.js → media.ts} +11 -7
  208. package/src/common/errors/parameter.ts +11 -7
  209. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  210. package/src/common/errors/{permission.js → permission.ts} +10 -6
  211. package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
  212. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  213. package/src/common/errors/{stats.js → stats.ts} +11 -7
  214. package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -7
  215. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  216. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  217. package/src/common/events/{events.js → events.ts} +5 -1
  218. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  219. package/src/common/events/{util.js → util.ts} +2 -3
  220. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  221. package/src/common/logs/logger-proxy.ts +44 -0
  222. package/src/common/logs/{request.js → request.ts} +22 -9
  223. package/src/common/queue.ts +1 -2
  224. package/src/{config.js → config.ts} +17 -12
  225. package/src/constants.ts +40 -1
  226. package/src/index.js +2 -1
  227. package/src/locus-info/controlsUtils.ts +114 -0
  228. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  229. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  230. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  231. package/src/locus-info/{index.js → index.ts} +148 -64
  232. package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
  233. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
  234. package/src/locus-info/{parser.js → parser.ts} +67 -79
  235. package/src/locus-info/{selfUtils.js → selfUtils.ts} +123 -68
  236. package/src/media/{index.js → index.ts} +181 -131
  237. package/src/media/{properties.js → properties.ts} +47 -28
  238. package/src/media/{util.js → util.ts} +2 -2
  239. package/src/mediaQualityMetrics/{config.js → config.ts} +46 -46
  240. package/src/meeting/{effectsState.js → effectsState.ts} +47 -41
  241. package/src/meeting/in-meeting-actions.ts +15 -3
  242. package/src/meeting/{index.js → index.ts} +2263 -1427
  243. package/src/meeting/{muteState.js → muteState.ts} +78 -42
  244. package/src/meeting/{request.js → request.ts} +292 -142
  245. package/src/meeting/request.type.ts +13 -0
  246. package/src/meeting/{state.js → state.ts} +50 -35
  247. package/src/meeting/{util.js → util.ts} +112 -115
  248. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  249. package/src/meeting-info/{index.js → index.ts} +42 -36
  250. package/src/meeting-info/meeting-info-v2.ts +273 -0
  251. package/src/meeting-info/{request.js → request.ts} +14 -4
  252. package/src/meeting-info/{util.js → util.ts} +60 -51
  253. package/src/meeting-info/{utilv2.js → utilv2.ts} +65 -58
  254. package/src/meetings/{collection.js → collection.ts} +6 -3
  255. package/src/meetings/index.ts +1159 -0
  256. package/src/meetings/{request.js → request.ts} +32 -25
  257. package/src/meetings/{util.js → util.ts} +34 -32
  258. package/src/member/{index.js → index.ts} +102 -56
  259. package/src/member/{util.js → util.ts} +52 -25
  260. package/src/members/{collection.js → collection.ts} +2 -2
  261. package/src/members/{index.js → index.ts} +219 -142
  262. package/src/members/{request.js → request.ts} +60 -16
  263. package/src/members/{util.js → util.ts} +50 -48
  264. package/src/metrics/{config.js → config.ts} +254 -83
  265. package/src/metrics/{constants.js → constants.ts} +0 -2
  266. package/src/metrics/{index.js → index.ts} +106 -74
  267. package/src/multistream/mediaRequestManager.ts +81 -15
  268. package/src/multistream/multistreamMedia.ts +5 -0
  269. package/src/multistream/receiveSlot.ts +18 -12
  270. package/src/multistream/receiveSlotManager.ts +23 -21
  271. package/src/multistream/remoteMedia.ts +15 -5
  272. package/src/multistream/remoteMediaGroup.ts +4 -3
  273. package/src/multistream/remoteMediaManager.ts +153 -37
  274. package/src/networkQualityMonitor/{index.js → index.ts} +37 -25
  275. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  276. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  277. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  278. package/src/reachability/{index.js → index.ts} +99 -83
  279. package/src/reachability/request.ts +39 -33
  280. package/src/reactions/constants.ts +4 -0
  281. package/src/reactions/reactions.ts +104 -0
  282. package/src/reactions/reactions.type.ts +62 -0
  283. package/src/reconnection-manager/{index.js → index.ts} +195 -102
  284. package/src/recording-controller/enums.ts +8 -0
  285. package/src/recording-controller/index.ts +315 -0
  286. package/src/recording-controller/util.ts +58 -0
  287. package/src/roap/{index.js → index.ts} +73 -56
  288. package/src/roap/request.ts +157 -0
  289. package/src/roap/turnDiscovery.ts +77 -37
  290. package/src/statsAnalyzer/{global.js → global.ts} +30 -33
  291. package/src/statsAnalyzer/{index.js → index.ts} +468 -192
  292. package/src/statsAnalyzer/mqaUtil.ts +290 -0
  293. package/src/transcription/{index.js → index.ts} +46 -39
  294. package/test/integration/spec/journey.js +664 -463
  295. package/test/integration/spec/space-meeting.js +320 -206
  296. package/test/integration/spec/transcription.js +7 -8
  297. package/test/unit/spec/breakouts/breakout.ts +119 -0
  298. package/test/unit/spec/breakouts/collection.ts +15 -0
  299. package/test/unit/spec/breakouts/index.ts +293 -0
  300. package/test/unit/spec/common/browser-detection.js +9 -28
  301. package/test/unit/spec/fixture/locus.js +92 -90
  302. package/test/unit/spec/locus-info/controlsUtils.js +25 -5
  303. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  304. package/test/unit/spec/locus-info/index.js +104 -2
  305. package/test/unit/spec/locus-info/infoUtils.js +41 -32
  306. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  307. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  308. package/test/unit/spec/locus-info/parser.js +3 -9
  309. package/test/unit/spec/locus-info/selfConstant.js +97 -103
  310. package/test/unit/spec/locus-info/selfUtils.js +105 -12
  311. package/test/unit/spec/media/index.ts +31 -47
  312. package/test/unit/spec/media/properties.ts +9 -9
  313. package/test/unit/spec/meeting/effectsState.js +39 -45
  314. package/test/unit/spec/meeting/in-meeting-actions.ts +5 -2
  315. package/test/unit/spec/meeting/index.js +2017 -742
  316. package/test/unit/spec/meeting/muteState.js +42 -33
  317. package/test/unit/spec/meeting/request.js +115 -44
  318. package/test/unit/spec/meeting/utils.js +104 -171
  319. package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
  320. package/test/unit/spec/meeting-info/request.js +7 -9
  321. package/test/unit/spec/meeting-info/util.js +11 -12
  322. package/test/unit/spec/meeting-info/utilv2.js +110 -74
  323. package/test/unit/spec/meetings/collection.js +1 -1
  324. package/test/unit/spec/meetings/index.js +439 -257
  325. package/test/unit/spec/meetings/utils.js +14 -12
  326. package/test/unit/spec/member/index.js +0 -1
  327. package/test/unit/spec/member/util.js +31 -7
  328. package/test/unit/spec/members/index.js +104 -54
  329. package/test/unit/spec/members/request.js +29 -20
  330. package/test/unit/spec/members/utils.js +8 -5
  331. package/test/unit/spec/metrics/index.js +16 -21
  332. package/test/unit/spec/multistream/mediaRequestManager.ts +316 -50
  333. package/test/unit/spec/multistream/receiveSlot.ts +6 -6
  334. package/test/unit/spec/multistream/receiveSlotManager.ts +13 -13
  335. package/test/unit/spec/multistream/remoteMedia.ts +10 -2
  336. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  337. package/test/unit/spec/multistream/remoteMediaManager.ts +412 -65
  338. package/test/unit/spec/networkQualityMonitor/index.js +21 -15
  339. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  340. package/test/unit/spec/reachability/index.ts +58 -26
  341. package/test/unit/spec/reconnection-manager/index.js +102 -9
  342. package/test/unit/spec/recording-controller/index.js +231 -0
  343. package/test/unit/spec/recording-controller/util.js +102 -0
  344. package/test/unit/spec/roap/index.ts +2 -1
  345. package/test/unit/spec/roap/request.ts +114 -0
  346. package/test/unit/spec/roap/turnDiscovery.ts +64 -45
  347. package/test/unit/spec/stats-analyzer/index.js +27 -22
  348. package/test/utils/cmr.js +44 -42
  349. package/test/utils/testUtils.js +83 -74
  350. package/test/utils/webex-config.js +18 -18
  351. package/test/utils/webex-test-users.js +54 -50
  352. package/tsconfig.json +6 -0
  353. package/dist/media/internal-media-core-wrapper.js +0 -22
  354. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  355. package/dist/peer-connection-manager/util.js +0 -124
  356. package/dist/peer-connection-manager/util.js.map +0 -1
  357. package/src/common/logs/logger-proxy.js +0 -33
  358. package/src/locus-info/controlsUtils.js +0 -102
  359. package/src/media/internal-media-core-wrapper.ts +0 -9
  360. package/src/meeting-info/meeting-info-v2.js +0 -255
  361. package/src/meetings/index.js +0 -1015
  362. package/src/peer-connection-manager/util.ts +0 -117
  363. package/src/roap/request.js +0 -127
  364. package/src/statsAnalyzer/mqaUtil.js +0 -173
  365. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
@@ -12,7 +12,8 @@ export default {
12
12
  webExMeetingName: 'ARUN Personal Room',
13
13
  isPmr: true,
14
14
  webexServiceType: 'MEETING_CENTER',
15
- meetingAvatarUrl: 'https://cisco.webex.com/webappng/images/avatars/ag.png?type=initials&initials=ag',
15
+ meetingAvatarUrl:
16
+ 'https://cisco.webex.com/webappng/images/avatars/ag.png?type=initials&initials=ag',
16
17
  owner: '344ea183-9d5d-4e77-aed2-c4f004afd',
17
18
  siteOrgId: '1eb65fdf-9643-417f-9974-ad72ca',
18
19
  callInTollNumber: '+1-408-525-6',
@@ -20,8 +21,8 @@ export default {
20
21
  {
21
22
  number: '+1-408-525-',
22
23
  tollfree: false,
23
- label: 'Call-in toll number (US/Canada)'
24
- }
24
+ label: 'Call-in toll number (US/Canada)',
25
+ },
25
26
  ],
26
27
  isSparkPstnEnabled: true,
27
28
  isCallInEnabled: true,
@@ -47,7 +48,7 @@ export default {
47
48
  'UCF_SUPPRESS_MOBILE_BREAKOUTS_SUPPORT',
48
49
  'DISABLE_ASK_FOR_HELP',
49
50
  'STAGE_VIEW_INACTIVE',
50
- 'IMMERSIVE_PRESENTER_SUPPORTED_FOR_MTG'
51
+ 'IMMERSIVE_PRESENTER_SUPPORTED_FOR_MTG',
51
52
  ],
52
53
  moderator: [
53
54
  'RECORDING_CONTROL_START',
@@ -65,7 +66,7 @@ export default {
65
66
  'ENABLE_HARD_MUTE',
66
67
  'ADD_GUEST',
67
68
  'EXPEL',
68
- 'ENABLE_STAGE_VIEW'
69
+ 'ENABLE_STAGE_VIEW',
69
70
  ],
70
71
  coHost: [
71
72
  'LOCK_CONTROL_LOCK',
@@ -81,22 +82,25 @@ export default {
81
82
  'PRESENTER_CONTROL',
82
83
  'ENABLE_STAGE_VIEW',
83
84
  'EXPEL',
84
- 'ADD_GUEST'
85
- ]
85
+ 'ADD_GUEST',
86
+ ],
86
87
  },
87
88
  venueUrl: 'https://calliope-a.wbx2.com/calliope/api/v1/venues/b84e1830-74f7-11e8-',
88
- datachannelUrl: 'https://board-a.wbx2.com/datachannel/api/v1/locus/aHR0cHM6Ly9sb2N1cy1hsb2NpL2FjYTAwMTViLTQ1ODctMzNiZi05NGRjLTE2NTBmZDMyY2Q4NQ==/registrations',
89
- embeddedAppsListUrl: 'https://hecate-a.wbx2.com/apps/api/v1/locus/aca0015b-4587-33bf-94dc-/embeddedApps/allowed?sessionInfo=eyJhbGci.',
90
- embeddedAppsLaunchUrl: 'https://hecate-a.wbx2.com/apps/api/v1/locus/aca0015b-4587-33bf-94dc/embeddedApps?sessionInfo=eyJhbGciOiJub25lIn0.eyJza.',
89
+ datachannelUrl:
90
+ 'https://board-a.wbx2.com/datachannel/api/v1/locus/aHR0cHM6Ly9sb2N1cy1hsb2NpL2FjYTAwMTViLTQ1ODctMzNiZi05NGRjLTE2NTBmZDMyY2Q4NQ==/registrations',
91
+ embeddedAppsListUrl:
92
+ 'https://hecate-a.wbx2.com/apps/api/v1/locus/aca0015b-4587-33bf-94dc-/embeddedApps/allowed?sessionInfo=eyJhbGci.',
93
+ embeddedAppsLaunchUrl:
94
+ 'https://hecate-a.wbx2.com/apps/api/v1/locus/aca0015b-4587-33bf-94dc/embeddedApps?sessionInfo=eyJhbGciOiJub25lIn0.eyJza.',
91
95
  meetingInstanceId: '632D9CB5908CF13BE053D107FC0ABA26_I_2331',
92
- webexSiteUuid: '4C675B882686B136'
96
+ webexSiteUuid: '4C675B882686B136',
93
97
  },
94
98
  host: {
95
99
  id: '344ea183-9d5d-4e77-aed2-c4f',
96
100
  name: 'Arun Ganeshan',
97
101
  isExternal: false,
98
102
  orgId: '1eb65fdf-9643-417f-997',
99
- incomingCallProtocols: []
103
+ incomingCallProtocols: [],
100
104
  },
101
105
  fullState: {
102
106
  active: true,
@@ -106,63 +110,64 @@ export default {
106
110
  type: 'MEETING',
107
111
  lastActive: '2022-07-26T20:32:22.964Z',
108
112
  sessionIds: [],
109
- sessionId: '3762f03e-598a-29dd-1ae7'
113
+ sessionId: '3762f03e-598a-29dd-1ae7',
110
114
  },
111
115
  meetings: [],
112
116
  controls: {
113
117
  lock: {
114
118
  locked: false,
115
- meta: {}
119
+ meta: {},
116
120
  },
117
121
  record: {
118
122
  recording: false,
119
123
  meta: {
120
- readOnly: false
121
- }
124
+ readOnly: false,
125
+ },
122
126
  },
123
127
  transcribe: {
124
128
  transcribing: false,
125
129
  postMeetingTranscribing: false,
126
130
  caption: false,
127
- meta: {}
131
+ meta: {},
128
132
  },
129
133
  meetingFull: {
130
134
  meetingFull: false,
131
- meta: {}
135
+ meta: {},
132
136
  },
133
137
  muteOnEntry: {
134
138
  enabled: false,
135
- meta: {}
139
+ meta: {},
136
140
  },
137
141
  shareControl: {
138
142
  control: 'ANYONE',
139
- meta: {}
143
+ meta: {},
140
144
  },
141
145
  disallowUnmute: {
142
146
  enabled: false,
143
- meta: {}
147
+ meta: {},
144
148
  },
145
149
  videoLayout: {
146
150
  layoutName: {
147
151
  defaultName: 'Equal',
148
- singleScreenDefaultName: 'ActivePresence'
149
- }
152
+ singleScreenDefaultName: 'ActivePresence',
153
+ },
150
154
  },
151
155
  reactions: {
152
156
  enabled: true,
153
157
  meta: {
154
158
  modifiedBy: '344ea183-9d5d-4e77-aed2',
155
- lastModified: '2022-07-26T20:32:22.964Z'
159
+ lastModified: '2022-07-26T20:32:22.964Z',
156
160
  },
157
- reactionChannelUrl: 'https://media-encryption-a.wbx2.com/reaction/api/v1/channels/e0b7b747-67f0-4b89',
158
- showDisplayNameWithReactions: true
161
+ reactionChannelUrl:
162
+ 'https://media-encryption-a.wbx2.com/reaction/api/v1/channels/e0b7b747-67f0-4b89',
163
+ showDisplayNameWithReactions: true,
159
164
  },
160
165
  viewTheParticipantList: {
161
166
  enabled: true,
162
167
  meta: {
163
- lastModified: '2022-07-26T20:32:22.964Z'
164
- }
165
- }
168
+ lastModified: '2022-07-26T20:32:22.964Z',
169
+ },
170
+ },
166
171
  },
167
172
  participants: [
168
173
  {
@@ -177,37 +182,35 @@ export default {
177
182
  name: 'Arun Ganeshan',
178
183
  isExternal: false,
179
184
  orgId: '1eb65fdf-9643-417f-9974-ad72cae0e10f',
180
- incomingCallProtocols: []
185
+ incomingCallProtocols: [],
181
186
  },
182
187
  devices: [
183
188
  {
184
189
  url: 'https://wdm-a.wbx2.com/wdm/api/v1/devices/85e6e2a0-2514-4fc2-a175',
185
190
  deviceType: 'WEB',
186
191
  state: 'JOINED',
187
- intents: [
188
- null
189
- ],
192
+ intents: [null],
190
193
  correlationId: 'b05b4263-8fe3-427e-9995-e6f0a13302',
191
194
  isVideoCallback: false,
192
195
  csis: [],
193
- replaces: []
194
- }
196
+ replaces: [],
197
+ },
195
198
  ],
196
199
  status: {
197
200
  audioStatus: 'UNKNOWN',
198
201
  videoStatus: 'UNKNOWN',
199
- csis: []
202
+ csis: [],
200
203
  },
201
204
  controls: {
202
205
  audio: {
203
206
  muted: false,
204
207
  requestedToUnmute: false,
205
208
  disallowUnmute: false,
206
- meta: {}
209
+ meta: {},
207
210
  },
208
211
  video: {
209
212
  muted: false,
210
- meta: {}
213
+ meta: {},
211
214
  },
212
215
  role: {
213
216
  roles: [
@@ -215,26 +218,26 @@ export default {
215
218
  type: 'COHOST',
216
219
  hasRole: true,
217
220
  meta: {
218
- lastModified: '2022-07-26T20:32:22.964Z'
219
- }
221
+ lastModified: '2022-07-26T20:32:22.964Z',
222
+ },
220
223
  },
221
224
  {
222
225
  type: 'MODERATOR',
223
226
  hasRole: true,
224
227
  meta: {
225
- lastModified: '2022-07-26T20:32:22.964Z'
226
- }
228
+ lastModified: '2022-07-26T20:32:22.964Z',
229
+ },
227
230
  },
228
231
  {
229
232
  type: 'ATTENDEE',
230
233
  hasRole: true,
231
234
  meta: {
232
235
  lastModified: '2022-07-26T20:32:22.964Z',
233
- readOnly: true
234
- }
235
- }
236
- ]
237
- }
236
+ readOnly: true,
237
+ },
238
+ },
239
+ ],
240
+ },
238
241
  },
239
242
  doesNotSupportBreakouts: true,
240
243
  identityTrustLevel: 'INTERNAL',
@@ -245,24 +248,25 @@ export default {
245
248
  panelist: false,
246
249
  moveToLobbyNotAllowed: true,
247
250
  cmrHost: true,
248
- deviceUrl: 'https://wdm-a.wbx2.com/wdm/api/v1/devices/85e6e2a0-2514-4fc2-a175'
249
- }
251
+ deviceUrl: 'https://wdm-a.wbx2.com/wdm/api/v1/devices/85e6e2a0-2514-4fc2-a175',
252
+ },
250
253
  ],
251
254
  self: {
252
255
  deviceUrl: 'https://wdm-a.wbx2.com/wdm/api/v1/devices/85e6e2a0-2514-4fc2-a175',
253
256
  alertHint: {
254
- action: 'NONE'
257
+ action: 'NONE',
255
258
  },
256
259
  alertType: {
257
- action: 'NONE'
260
+ action: 'NONE',
258
261
  },
259
262
  callbackInfo: {
260
263
  callbackAddress: 'arungane@cisco.webex.com',
261
- callbackType: 'SIPURI'
264
+ callbackType: 'SIPURI',
262
265
  },
263
266
  lookUpInfo: {
264
- lookupLink: 'https://locus-a.wbx2.com/locus/api/v1/loci/meetingInfo/aca0015b-4587-33bf-94dc?type=LOCUS_ID&useUriLookup=false',
265
- type: 'MEETING'
267
+ lookupLink:
268
+ 'https://locus-a.wbx2.com/locus/api/v1/loci/meetingInfo/aca0015b-4587-33bf-94dc?type=LOCUS_ID&useUriLookup=false',
269
+ type: 'MEETING',
266
270
  },
267
271
  isCreator: true,
268
272
  identity: '344ea183-9d5d-4e77-aed2-c4f004afd915',
@@ -274,16 +278,14 @@ export default {
274
278
  name: 'Arun Ganeshan',
275
279
  isExternal: false,
276
280
  orgId: '1eb65fdf-9643-417f-9974',
277
- incomingCallProtocols: []
281
+ incomingCallProtocols: [],
278
282
  },
279
283
  devices: [
280
284
  {
281
285
  url: 'https://wdm-a.wbx2.com/wdm/api/v1/devices/85e6e2a0-2514-4fc2-a175',
282
286
  deviceType: 'WEB',
283
287
  state: 'JOINED',
284
- intents: [
285
- null
286
- ],
288
+ intents: [null],
287
289
  keepAliveUrl: 'https://locus-a.wbx2.com/locus/api/v1/loci/aca0015b-4587-33bf',
288
290
  keepAliveSecs: 300,
289
291
  callLegId: '80f5e939-1149-4f13-9535',
@@ -292,41 +294,41 @@ export default {
292
294
  csis: [],
293
295
  serverTranscoded: false,
294
296
  serverComposed: false,
295
- replaces: []
296
- }
297
+ replaces: [],
298
+ },
297
299
  ],
298
300
  status: {
299
301
  audioStatus: 'UNKNOWN',
300
302
  videoStatus: 'UNKNOWN',
301
- csis: []
303
+ csis: [],
302
304
  },
303
305
  suggestedMedia: [
304
306
  {
305
307
  mediaType: 'audio',
306
308
  mediaContent: 'main',
307
- direction: 'sendrecv'
309
+ direction: 'sendrecv',
308
310
  },
309
311
  {
310
312
  mediaType: 'video',
311
313
  mediaContent: 'main',
312
- direction: 'sendrecv'
314
+ direction: 'sendrecv',
313
315
  },
314
316
  {
315
317
  mediaType: 'video',
316
318
  mediaContent: 'slides',
317
- direction: 'sendrecv'
318
- }
319
+ direction: 'sendrecv',
320
+ },
319
321
  ],
320
322
  controls: {
321
323
  audio: {
322
324
  muted: false,
323
325
  requestedToUnmute: false,
324
326
  disallowUnmute: false,
325
- meta: {}
327
+ meta: {},
326
328
  },
327
329
  video: {
328
330
  muted: false,
329
- meta: {}
331
+ meta: {},
330
332
  },
331
333
  role: {
332
334
  roles: [
@@ -334,26 +336,26 @@ export default {
334
336
  type: 'COHOST',
335
337
  hasRole: true,
336
338
  meta: {
337
- lastModified: '2022-07-26T20:32:22.964Z'
338
- }
339
+ lastModified: '2022-07-26T20:32:22.964Z',
340
+ },
339
341
  },
340
342
  {
341
343
  type: 'MODERATOR',
342
344
  hasRole: true,
343
345
  meta: {
344
- lastModified: '2022-07-26T20:32:22.964Z'
345
- }
346
+ lastModified: '2022-07-26T20:32:22.964Z',
347
+ },
346
348
  },
347
349
  {
348
350
  type: 'ATTENDEE',
349
351
  hasRole: true,
350
352
  meta: {
351
353
  lastModified: '2022-07-26T20:32:22.964Z',
352
- readOnly: true
353
- }
354
- }
355
- ]
356
- }
354
+ readOnly: true,
355
+ },
356
+ },
357
+ ],
358
+ },
357
359
  },
358
360
  enableDTMF: true,
359
361
  id: 'e0d54e94-226c-3290-b75a',
@@ -363,42 +365,42 @@ export default {
363
365
  panelist: false,
364
366
  moveToLobbyNotAllowed: true,
365
367
  cmrHost: true,
366
- mediaBaseUrl: 'https://locus-a.wbx2.com/locus/api/v1/loci/aca0015b-4587-33bf-94dc/participant/e0d54e94-226c-3290-b75a-83cc1dbf1554/media'
368
+ mediaBaseUrl:
369
+ 'https://locus-a.wbx2.com/locus/api/v1/loci/aca0015b-4587-33bf-94dc/participant/e0d54e94-226c-3290-b75a-83cc1dbf1554/media',
367
370
  },
368
371
  mediaShares: [
369
372
  {
370
373
  name: 'content',
371
- url: 'https://locus-a.wbx2.com/locus/api/v1/loci/aca0015b-4587-33bf-94dc/mediashares/337f77f9-2f27-3cb3-ba55'
374
+ url: 'https://locus-a.wbx2.com/locus/api/v1/loci/aca0015b-4587-33bf-94dc/mediashares/337f77f9-2f27-3cb3-ba55',
372
375
  },
373
376
  {
374
377
  name: 'whiteboardview',
375
- url: 'https://locus-a.wbx2.com/locus/api/v1/loci/aca0015b-4587-33bf-94dc/mediashares/98891810-efb6-3aa3-b600-8654539abf46'
378
+ url: 'https://locus-a.wbx2.com/locus/api/v1/loci/aca0015b-4587-33bf-94dc/mediashares/98891810-efb6-3aa3-b600-8654539abf46',
376
379
  },
377
380
  {
378
381
  name: 'whiteboard',
379
- url: 'https://locus-a.wbx2.com/locus/api/v1/loci/aca0015b-4587-33bf-94dc/mediashares/b8f1742b-5dc5-3d7a-b97f-39ae11f8a051'
380
- }
382
+ url: 'https://locus-a.wbx2.com/locus/api/v1/loci/aca0015b-4587-33bf-94dc/mediashares/b8f1742b-5dc5-3d7a-b97f-39ae11f8a051',
383
+ },
381
384
  ],
382
385
  embeddedApps: [],
383
386
  replaces: [],
384
387
  sequence: {
385
- entries: [
386
- 138781603429640000
387
- ],
388
+ entries: [138781603429640000],
388
389
  rangeStart: 0,
389
390
  rangeEnd: 0,
390
391
  since: '138781603429640000',
391
392
  sequenceHash: 42,
392
393
  dataCenter: 'achm3',
393
394
  totalParticipants: 1,
394
- dirtyParticipants: 0
395
+ dirtyParticipants: 0,
395
396
  },
396
- syncUrl: 'https://locus-a.wbx2.com/locus/api/v1/loci/aca0015b-4587-33bf-94dc/sync?since=138781603429640000&sequenceHash=42',
397
+ syncUrl:
398
+ 'https://locus-a.wbx2.com/locus/api/v1/loci/aca0015b-4587-33bf-94dc/sync?since=138781603429640000&sequenceHash=42',
397
399
  links: {
398
400
  services: {
399
401
  breakout: {
400
- url: 'https://breakout-a.wbx2.com/breakout/api/v1'
401
- }
402
- }
403
- }
402
+ url: 'https://breakout-a.wbx2.com/breakout/api/v1',
403
+ },
404
+ },
405
+ },
404
406
  };
@@ -5,7 +5,7 @@ const defaultControls = {
5
5
  entryExitTone: {
6
6
  enabled: true,
7
7
  mode: 'foo',
8
- }
8
+ },
9
9
  };
10
10
 
11
11
  describe('plugin-meetings', () => {
@@ -22,7 +22,7 @@ describe('plugin-meetings', () => {
22
22
  entryExitTone: {
23
23
  enabled: false,
24
24
  mode: 'foo',
25
- }
25
+ },
26
26
  });
27
27
 
28
28
  assert.equal(parsedControls.entryExitTone, null);
@@ -48,7 +48,7 @@ describe('plugin-meetings', () => {
48
48
  entryExitTone: {
49
49
  enabled: true,
50
50
  mode: 'bar',
51
- }
51
+ },
52
52
  };
53
53
  const {updates} = ControlsUtils.getControls(defaultControls, newControls);
54
54
 
@@ -60,7 +60,7 @@ describe('plugin-meetings', () => {
60
60
  entryExitTone: {
61
61
  enabled: false,
62
62
  mode: 'foo',
63
- }
63
+ },
64
64
  };
65
65
  const {updates} = ControlsUtils.getControls(defaultControls, newControls);
66
66
 
@@ -72,11 +72,31 @@ describe('plugin-meetings', () => {
72
72
  entryExitTone: {
73
73
  enabled: true,
74
74
  mode: 'foo',
75
- }
75
+ },
76
76
  };
77
77
  const {updates} = ControlsUtils.getControls(defaultControls, newControls);
78
78
 
79
79
  assert.equal(updates.hasEntryExitToneChanged, false);
80
80
  });
81
+
82
+ it('returns hasBreakoutChanged = true when it has changed', () => {
83
+ const newControls = {
84
+ breakout: 'breakout'
85
+ };
86
+
87
+ const {updates} = ControlsUtils.getControls({breakout: 'old breakout'}, newControls);
88
+
89
+ assert.equal(updates.hasBreakoutChanged, true);
90
+ });
91
+
92
+ it('returns hasBreakoutChanged = false when it has not changed', () => {
93
+ const newControls = {
94
+ breakout: 'breakout'
95
+ };
96
+
97
+ const {updates} = ControlsUtils.getControls({breakout: 'breakout'}, newControls);
98
+
99
+ assert.equal(updates.hasBreakoutChanged, false);
100
+ });
81
101
  });
82
102
  });
@@ -8,14 +8,16 @@ describe('plugin-meetings', () => {
8
8
  const slidoApp = {
9
9
  url: 'https://hecate-b.wbx2.com/apps/api/v1/locus/7a4994a7',
10
10
  sequence: 138849877016800000,
11
- appId: 'Y2lzY29zcGFyazovL3VzL0FQUExJQ0FUSU9OLzQxODc1MGQ0LTM3ZDctNGY2MC1hOWE3LWEwZTE1NDFhNjRkNg',
11
+ appId:
12
+ 'Y2lzY29zcGFyazovL3VzL0FQUExJQ0FUSU9OLzQxODc1MGQ0LTM3ZDctNGY2MC1hOWE3LWEwZTE1NDFhNjRkNg',
12
13
  instanceInfo: {
13
- appInstanceUrl: 'https://webex.sli.do/participant/event/mFKKjcYxzx9h31eyWgngFS?clusterId=eu1',
14
+ appInstanceUrl:
15
+ 'https://webex.sli.do/participant/event/mFKKjcYxzx9h31eyWgngFS?clusterId=eu1',
14
16
  externalAppInstanceUrl: '',
15
- title: 'Active session'
17
+ title: 'Active session',
16
18
  },
17
19
  state: 'STARTED',
18
- lastModified: '2022-10-13T21:01:41.680Z'
20
+ lastModified: '2022-10-13T21:01:41.680Z',
19
21
  };
20
22
  const otherApp = {
21
23
  url: 'https://hecate-b.wbx2.com/apps/api/v1/locus/7a4994a7',
@@ -24,10 +26,10 @@ describe('plugin-meetings', () => {
24
26
  instanceInfo: {
25
27
  appInstanceUrl: 'https://webex.someotherapp.com/mFKKjcYxzx9h31eyWgngFS?clusterId=eu1',
26
28
  externalAppInstanceUrl: '',
27
- title: 'Active session'
29
+ title: 'Active session',
28
30
  },
29
31
  state: 'STARTED',
30
- lastModified: '2022-10-13T21:01:31.680Z'
32
+ lastModified: '2022-10-13T21:01:31.680Z',
31
33
  };
32
34
 
33
35
  describe('parseApp', () => {
@@ -277,6 +277,25 @@ describe('plugin-meetings', () => {
277
277
  );
278
278
  });
279
279
 
280
+ it('should update the breakout state', () => {
281
+ locusInfo.emitScoped = sinon.stub();
282
+ newControls.breakout = 'new breakout';
283
+
284
+ locusInfo.updateControls(newControls);
285
+
286
+ assert.calledWith(
287
+ locusInfo.emitScoped,
288
+ {
289
+ file: 'locus-info',
290
+ function: 'updateControls',
291
+ },
292
+ LOCUSINFO.EVENTS.CONTROLS_MEETING_BREAKOUT_UPDATED,
293
+ {
294
+ breakout: 'new breakout'
295
+ }
296
+ );
297
+ });
298
+
280
299
  it('should update the transcript state', () => {
281
300
  locusInfo.emitScoped = sinon.stub();
282
301
  locusInfo.controls = {
@@ -664,6 +683,41 @@ describe('plugin-meetings', () => {
664
683
  );
665
684
  });
666
685
 
686
+ it('should trigger SELF_MEETING_BREAKOUTS_CHANGED when breakouts changed', () => {
687
+ locusInfo.self = self;
688
+ const selfWithBreakoutsChanged = cloneDeep(self);
689
+
690
+ selfWithBreakoutsChanged.controls.breakout.sessions.active[0].name = 'new name';
691
+
692
+ locusInfo.emitScoped = sinon.stub();
693
+ locusInfo.updateSelf(selfWithBreakoutsChanged, []);
694
+
695
+ assert.calledWith(
696
+ locusInfo.emitScoped,
697
+ {
698
+ file: 'locus-info',
699
+ function: 'updateSelf',
700
+ },
701
+ LOCUSINFO.EVENTS.SELF_MEETING_BREAKOUTS_CHANGED,
702
+ {
703
+ breakoutSessions: {
704
+ active: [{
705
+ name: 'new name',
706
+ groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
707
+ sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
708
+ sessionType: 'BREAKOUT'
709
+ }],
710
+ allowed: [{
711
+ name: 'Breakout session 2',
712
+ groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
713
+ sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
714
+ sessionType: 'BREAKOUT'
715
+ }]
716
+ }
717
+ }
718
+ );
719
+ });
720
+
667
721
  it('should trigger SELF_REMOTE_MUTE_STATUS_UPDATED if muted and disallowUnmute changed', () => {
668
722
  locusInfo.self = self;
669
723
  const selfWithMutedByOthersAndDissalowUnmute = cloneDeep(self);
@@ -967,8 +1021,7 @@ describe('plugin-meetings', () => {
967
1021
 
968
1022
  if (expected) {
969
1023
  assert.calledWith(...expectedArgs);
970
- }
971
- else {
1024
+ } else {
972
1025
  assert.neverCalledWith(...expectedArgs);
973
1026
  }
974
1027
  locusInfo.emitScoped.resetHistory();
@@ -1148,6 +1201,55 @@ describe('plugin-meetings', () => {
1148
1201
  assert.isFunction(locusParser.onDeltaAction);
1149
1202
  });
1150
1203
 
1204
+ it('#updateLocusInfo ignores breakout LEFT message', () => {
1205
+ const newLocus = {
1206
+ self: {
1207
+ reason: 'MOVED',
1208
+ state: 'LEFT'
1209
+ }
1210
+ };
1211
+
1212
+ locusInfo.updateControls = sinon.stub();
1213
+ locusInfo.updateConversationUrl = sinon.stub();
1214
+ locusInfo.updateCreated = sinon.stub();
1215
+ locusInfo.updateFullState = sinon.stub();
1216
+ locusInfo.updateHostInfo = sinon.stub();
1217
+ locusInfo.updateMeetingInfo = sinon.stub();
1218
+ locusInfo.updateMediaShares = sinon.stub();
1219
+ locusInfo.updateParticipantsUrl = sinon.stub();
1220
+ locusInfo.updateReplace = sinon.stub();
1221
+ locusInfo.updateSelf = sinon.stub();
1222
+ locusInfo.updateLocusUrl = sinon.stub();
1223
+ locusInfo.updateAclUrl = sinon.stub();
1224
+ locusInfo.updateBasequence = sinon.stub();
1225
+ locusInfo.updateSequence = sinon.stub();
1226
+ locusInfo.updateMemberShip = sinon.stub();
1227
+ locusInfo.updateIdentifiers = sinon.stub();
1228
+ locusInfo.updateEmbeddedApps = sinon.stub();
1229
+ locusInfo.compareAndUpdate = sinon.stub();
1230
+
1231
+ locusInfo.updateLocusInfo(newLocus);
1232
+
1233
+ assert.notCalled(locusInfo.updateControls);
1234
+ assert.notCalled(locusInfo.updateConversationUrl);
1235
+ assert.notCalled(locusInfo.updateCreated);
1236
+ assert.notCalled(locusInfo.updateFullState);
1237
+ assert.notCalled(locusInfo.updateHostInfo);
1238
+ assert.notCalled(locusInfo.updateMeetingInfo);
1239
+ assert.notCalled(locusInfo.updateMediaShares);
1240
+ assert.notCalled(locusInfo.updateParticipantsUrl);
1241
+ assert.notCalled(locusInfo.updateReplace);
1242
+ assert.notCalled(locusInfo.updateSelf);
1243
+ assert.notCalled(locusInfo.updateLocusUrl);
1244
+ assert.notCalled(locusInfo.updateAclUrl);
1245
+ assert.notCalled(locusInfo.updateBasequence);
1246
+ assert.notCalled(locusInfo.updateSequence);
1247
+ assert.notCalled(locusInfo.updateMemberShip);
1248
+ assert.notCalled(locusInfo.updateIdentifiers);
1249
+ assert.notCalled(locusInfo.updateEmbeddedApps);
1250
+ assert.notCalled(locusInfo.compareAndUpdate);
1251
+ });
1252
+
1151
1253
  it('onFullLocus() updates the working-copy of locus parser', () => {
1152
1254
  const eventType = 'fakeEvent';
1153
1255