@webex/plugin-meetings 3.0.0-beta.13 → 3.0.0-beta.15

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 (252) hide show
  1. package/UPGRADING.md +9 -9
  2. package/browsers.js +19 -24
  3. package/dist/common/browser-detection.js +1 -0
  4. package/dist/common/browser-detection.js.map +1 -1
  5. package/dist/common/collection.js.map +1 -1
  6. package/dist/common/errors/captcha-error.js +5 -5
  7. package/dist/common/errors/captcha-error.js.map +1 -1
  8. package/dist/common/errors/intent-to-join.js +5 -5
  9. package/dist/common/errors/intent-to-join.js.map +1 -1
  10. package/dist/common/errors/join-meeting.js +6 -6
  11. package/dist/common/errors/join-meeting.js.map +1 -1
  12. package/dist/common/errors/media.js +5 -5
  13. package/dist/common/errors/media.js.map +1 -1
  14. package/dist/common/errors/parameter.js +5 -5
  15. package/dist/common/errors/parameter.js.map +1 -1
  16. package/dist/common/errors/password-error.js +5 -5
  17. package/dist/common/errors/password-error.js.map +1 -1
  18. package/dist/common/errors/permission.js +4 -4
  19. package/dist/common/errors/permission.js.map +1 -1
  20. package/dist/common/errors/reconnection.js +5 -5
  21. package/dist/common/errors/reconnection.js.map +1 -1
  22. package/dist/common/errors/stats.js +5 -5
  23. package/dist/common/errors/stats.js.map +1 -1
  24. package/dist/common/errors/webex-errors.js.map +1 -1
  25. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  26. package/dist/common/events/events-scope.js.map +1 -1
  27. package/dist/common/events/events.js.map +1 -1
  28. package/dist/common/events/trigger-proxy.js.map +1 -1
  29. package/dist/common/events/util.js.map +1 -1
  30. package/dist/common/logs/logger-proxy.js.map +1 -1
  31. package/dist/common/logs/request.js.map +1 -1
  32. package/dist/config.js.map +1 -1
  33. package/dist/constants.js.map +1 -1
  34. package/dist/index.js.map +1 -1
  35. package/dist/locus-info/controlsUtils.js.map +1 -1
  36. package/dist/locus-info/fullState.js.map +1 -1
  37. package/dist/locus-info/hostUtils.js.map +1 -1
  38. package/dist/locus-info/index.js +11 -8
  39. package/dist/locus-info/index.js.map +1 -1
  40. package/dist/locus-info/infoUtils.js.map +1 -1
  41. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  42. package/dist/locus-info/parser.js +2 -1
  43. package/dist/locus-info/parser.js.map +1 -1
  44. package/dist/locus-info/selfUtils.js +2 -1
  45. package/dist/locus-info/selfUtils.js.map +1 -1
  46. package/dist/media/index.js.map +1 -1
  47. package/dist/media/internal-media-core-wrapper.js.map +1 -1
  48. package/dist/media/properties.js.map +1 -1
  49. package/dist/media/util.js +1 -1
  50. package/dist/media/util.js.map +1 -1
  51. package/dist/mediaQualityMetrics/config.js.map +1 -1
  52. package/dist/meeting/effectsState.js +1 -1
  53. package/dist/meeting/effectsState.js.map +1 -1
  54. package/dist/meeting/in-meeting-actions.js.map +1 -1
  55. package/dist/meeting/index.js +118 -89
  56. package/dist/meeting/index.js.map +1 -1
  57. package/dist/meeting/muteState.js +1 -1
  58. package/dist/meeting/muteState.js.map +1 -1
  59. package/dist/meeting/request.js +25 -0
  60. package/dist/meeting/request.js.map +1 -1
  61. package/dist/meeting/request.type.js +8 -0
  62. package/dist/meeting/request.type.js.map +1 -0
  63. package/dist/meeting/state.js +5 -5
  64. package/dist/meeting/state.js.map +1 -1
  65. package/dist/meeting/util.js.map +1 -1
  66. package/dist/meeting-info/collection.js.map +1 -1
  67. package/dist/meeting-info/index.js +2 -2
  68. package/dist/meeting-info/index.js.map +1 -1
  69. package/dist/meeting-info/meeting-info-v2.js +48 -48
  70. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  71. package/dist/meeting-info/request.js.map +1 -1
  72. package/dist/meeting-info/util.js.map +1 -1
  73. package/dist/meeting-info/utilv2.js +1 -1
  74. package/dist/meeting-info/utilv2.js.map +1 -1
  75. package/dist/meetings/collection.js.map +1 -1
  76. package/dist/meetings/index.js +251 -250
  77. package/dist/meetings/index.js.map +1 -1
  78. package/dist/meetings/request.js +2 -2
  79. package/dist/meetings/request.js.map +1 -1
  80. package/dist/meetings/util.js +14 -14
  81. package/dist/meetings/util.js.map +1 -1
  82. package/dist/member/index.js +31 -31
  83. package/dist/member/index.js.map +1 -1
  84. package/dist/member/util.js.map +1 -1
  85. package/dist/members/collection.js.map +1 -1
  86. package/dist/members/index.js +43 -43
  87. package/dist/members/index.js.map +1 -1
  88. package/dist/members/request.js.map +1 -1
  89. package/dist/members/util.js.map +1 -1
  90. package/dist/metrics/config.js.map +1 -1
  91. package/dist/metrics/constants.js.map +1 -1
  92. package/dist/metrics/index.js +23 -20
  93. package/dist/metrics/index.js.map +1 -1
  94. package/dist/multistream/multistreamMedia.js +2 -1
  95. package/dist/multistream/multistreamMedia.js.map +1 -1
  96. package/dist/multistream/receiveSlot.js.map +1 -1
  97. package/dist/multistream/receiveSlotManager.js +2 -0
  98. package/dist/multistream/receiveSlotManager.js.map +1 -1
  99. package/dist/multistream/remoteMedia.js.map +1 -1
  100. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  101. package/dist/multistream/remoteMediaManager.js.map +1 -1
  102. package/dist/networkQualityMonitor/index.js +8 -8
  103. package/dist/networkQualityMonitor/index.js.map +1 -1
  104. package/dist/personal-meeting-room/index.js +7 -7
  105. package/dist/personal-meeting-room/index.js.map +1 -1
  106. package/dist/personal-meeting-room/request.js.map +1 -1
  107. package/dist/personal-meeting-room/util.js.map +1 -1
  108. package/dist/reachability/index.js.map +1 -1
  109. package/dist/reachability/request.js.map +1 -1
  110. package/dist/reactions/reactions.js.map +1 -1
  111. package/dist/reactions/reactions.type.js +3 -1
  112. package/dist/reactions/reactions.type.js.map +1 -1
  113. package/dist/reconnection-manager/index.js +4 -4
  114. package/dist/reconnection-manager/index.js.map +1 -1
  115. package/dist/roap/index.js +5 -5
  116. package/dist/roap/index.js.map +1 -1
  117. package/dist/roap/request.js.map +1 -1
  118. package/dist/roap/turnDiscovery.js.map +1 -1
  119. package/dist/statsAnalyzer/global.js.map +1 -1
  120. package/dist/statsAnalyzer/index.js.map +1 -1
  121. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  122. package/dist/transcription/index.js +4 -1
  123. package/dist/transcription/index.js.map +1 -1
  124. package/internal-README.md +7 -6
  125. package/package.json +18 -18
  126. package/src/common/browser-detection.ts +9 -6
  127. package/src/common/collection.ts +3 -1
  128. package/src/common/errors/captcha-error.ts +6 -6
  129. package/src/common/errors/intent-to-join.ts +6 -6
  130. package/src/common/errors/join-meeting.ts +12 -8
  131. package/src/common/errors/media.ts +6 -6
  132. package/src/common/errors/parameter.ts +9 -6
  133. package/src/common/errors/password-error.ts +6 -6
  134. package/src/common/errors/permission.ts +5 -5
  135. package/src/common/errors/reconnection.ts +6 -6
  136. package/src/common/errors/stats.ts +6 -6
  137. package/src/common/errors/webex-errors.ts +7 -5
  138. package/src/common/errors/webex-meetings-error.ts +1 -1
  139. package/src/common/events/events-scope.ts +5 -1
  140. package/src/common/events/events.ts +5 -1
  141. package/src/common/events/trigger-proxy.ts +8 -3
  142. package/src/common/events/util.ts +1 -2
  143. package/src/common/logs/logger-proxy.ts +21 -10
  144. package/src/common/logs/request.ts +11 -8
  145. package/src/config.ts +11 -11
  146. package/src/constants.ts +1 -1
  147. package/src/index.js +1 -1
  148. package/src/locus-info/controlsUtils.ts +34 -24
  149. package/src/locus-info/fullState.ts +15 -11
  150. package/src/locus-info/hostUtils.ts +4 -3
  151. package/src/locus-info/index.ts +25 -34
  152. package/src/locus-info/infoUtils.ts +12 -4
  153. package/src/locus-info/mediaSharesUtils.ts +4 -4
  154. package/src/locus-info/parser.ts +45 -68
  155. package/src/locus-info/selfUtils.ts +106 -57
  156. package/src/media/index.ts +123 -135
  157. package/src/media/internal-media-core-wrapper.ts +2 -2
  158. package/src/media/properties.ts +30 -20
  159. package/src/media/util.ts +1 -1
  160. package/src/mediaQualityMetrics/config.ts +46 -46
  161. package/src/meeting/effectsState.ts +35 -35
  162. package/src/meeting/in-meeting-actions.ts +7 -3
  163. package/src/meeting/index.ts +1576 -1291
  164. package/src/meeting/muteState.ts +62 -31
  165. package/src/meeting/request.ts +174 -113
  166. package/src/meeting/request.type.ts +11 -0
  167. package/src/meeting/state.ts +45 -30
  168. package/src/meeting/util.ts +101 -70
  169. package/src/meeting-info/collection.ts +2 -1
  170. package/src/meeting-info/index.ts +32 -30
  171. package/src/meeting-info/meeting-info-v2.ts +106 -108
  172. package/src/meeting-info/request.ts +9 -3
  173. package/src/meeting-info/util.ts +54 -46
  174. package/src/meeting-info/utilv2.ts +59 -53
  175. package/src/meetings/collection.ts +1 -1
  176. package/src/meetings/index.ts +512 -440
  177. package/src/meetings/request.ts +26 -24
  178. package/src/meetings/util.ts +29 -29
  179. package/src/member/index.ts +55 -49
  180. package/src/member/util.ts +26 -13
  181. package/src/members/collection.ts +0 -1
  182. package/src/members/index.ts +182 -126
  183. package/src/members/request.ts +46 -14
  184. package/src/members/util.ts +44 -42
  185. package/src/metrics/config.ts +254 -81
  186. package/src/metrics/constants.ts +0 -2
  187. package/src/metrics/index.ts +84 -71
  188. package/src/multistream/multistreamMedia.ts +1 -0
  189. package/src/multistream/receiveSlot.ts +1 -0
  190. package/src/multistream/receiveSlotManager.ts +1 -0
  191. package/src/multistream/remoteMedia.ts +1 -1
  192. package/src/multistream/remoteMediaGroup.ts +2 -1
  193. package/src/multistream/remoteMediaManager.ts +3 -0
  194. package/src/networkQualityMonitor/index.ts +20 -23
  195. package/src/personal-meeting-room/index.ts +12 -16
  196. package/src/personal-meeting-room/request.ts +10 -3
  197. package/src/personal-meeting-room/util.ts +3 -3
  198. package/src/reachability/index.ts +61 -59
  199. package/src/reachability/request.ts +36 -32
  200. package/src/reactions/reactions.ts +4 -4
  201. package/src/reactions/reactions.type.ts +4 -3
  202. package/src/reconnection-manager/index.ts +139 -84
  203. package/src/roap/index.ts +46 -38
  204. package/src/roap/request.ts +44 -31
  205. package/src/roap/turnDiscovery.ts +59 -30
  206. package/src/statsAnalyzer/global.ts +30 -33
  207. package/src/statsAnalyzer/index.ts +432 -175
  208. package/src/statsAnalyzer/mqaUtil.ts +178 -72
  209. package/src/transcription/index.ts +34 -32
  210. package/test/integration/spec/journey.js +663 -462
  211. package/test/integration/spec/space-meeting.js +318 -203
  212. package/test/integration/spec/transcription.js +6 -7
  213. package/test/unit/spec/common/browser-detection.js +9 -28
  214. package/test/unit/spec/fixture/locus.js +92 -90
  215. package/test/unit/spec/locus-info/controlsUtils.js +5 -5
  216. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  217. package/test/unit/spec/locus-info/index.js +1 -2
  218. package/test/unit/spec/locus-info/infoUtils.js +26 -33
  219. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  220. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  221. package/test/unit/spec/locus-info/parser.js +3 -9
  222. package/test/unit/spec/locus-info/selfConstant.js +72 -103
  223. package/test/unit/spec/locus-info/selfUtils.js +21 -12
  224. package/test/unit/spec/meeting/effectsState.js +36 -46
  225. package/test/unit/spec/meeting/in-meeting-actions.ts +2 -3
  226. package/test/unit/spec/meeting/index.js +1342 -684
  227. package/test/unit/spec/meeting/muteState.js +42 -33
  228. package/test/unit/spec/meeting/request.js +75 -45
  229. package/test/unit/spec/meeting/utils.js +78 -53
  230. package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
  231. package/test/unit/spec/meeting-info/request.js +7 -9
  232. package/test/unit/spec/meeting-info/util.js +11 -12
  233. package/test/unit/spec/meeting-info/utilv2.js +110 -74
  234. package/test/unit/spec/meetings/collection.js +1 -1
  235. package/test/unit/spec/meetings/index.js +438 -257
  236. package/test/unit/spec/meetings/utils.js +14 -12
  237. package/test/unit/spec/member/index.js +0 -1
  238. package/test/unit/spec/member/util.js +5 -6
  239. package/test/unit/spec/members/index.js +104 -54
  240. package/test/unit/spec/members/request.js +29 -20
  241. package/test/unit/spec/members/utils.js +8 -5
  242. package/test/unit/spec/metrics/index.js +16 -21
  243. package/test/unit/spec/networkQualityMonitor/index.js +21 -15
  244. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  245. package/test/unit/spec/reachability/index.ts +9 -11
  246. package/test/unit/spec/reconnection-manager/index.js +16 -18
  247. package/test/unit/spec/roap/turnDiscovery.ts +22 -19
  248. package/test/unit/spec/stats-analyzer/index.js +25 -20
  249. package/test/utils/cmr.js +44 -42
  250. package/test/utils/testUtils.js +83 -74
  251. package/test/utils/webex-config.js +18 -18
  252. package/test/utils/webex-test-users.js +53 -50
@@ -27,7 +27,7 @@ import {
27
27
  ONLINE,
28
28
  ROAP,
29
29
  LOCUSINFO,
30
- EVENT_TRIGGERS
30
+ EVENT_TRIGGERS,
31
31
  } from '../../../../src/constants';
32
32
 
33
33
  describe('plugin-meetings', () => {
@@ -37,17 +37,19 @@ describe('plugin-meetings', () => {
37
37
  error: () => {},
38
38
  warn: () => {},
39
39
  trace: () => {},
40
- debug: () => {}
40
+ debug: () => {},
41
41
  };
42
42
 
43
43
  beforeEach(() => {
44
44
  StaticConfig.set({
45
45
  bandwidth: {
46
- audio: 50, video: 500
47
- }
46
+ audio: 50,
47
+ video: 500,
48
+ },
48
49
  });
49
50
  LoggerConfig.set({
50
- verboseEvents: true, enable: false
51
+ verboseEvents: true,
52
+ enable: false,
51
53
  });
52
54
  TriggerProxy.trigger = sinon.stub().returns(true);
53
55
  });
@@ -71,13 +73,12 @@ describe('plugin-meetings', () => {
71
73
  children: {
72
74
  device: Device,
73
75
  mercury: Mercury,
74
- meetings: Meetings
75
- }
76
+ meetings: Meetings,
77
+ },
76
78
  });
77
79
 
78
-
79
80
  Object.assign(webex, {
80
- logging: logger
81
+ logging: logger,
81
82
  });
82
83
 
83
84
  Object.assign(webex.meetings.config, {
@@ -86,64 +87,65 @@ describe('plugin-meetings', () => {
86
87
  // the server supports, minimums have to be tested
87
88
  audio: 64000,
88
89
  video: 4000000,
89
- startBitrate: 2000
90
+ startBitrate: 2000,
90
91
  },
91
92
  experimental: {
92
- enableUnifiedMeetings: true
93
+ enableUnifiedMeetings: true,
93
94
  },
94
95
  logging: {
95
96
  enable: true,
96
- verboseEvents: true
97
- }
97
+ verboseEvents: true,
98
+ },
98
99
  });
99
100
 
100
101
  Object.assign(webex, {
101
- logger
102
+ logger,
102
103
  });
103
104
 
104
105
  Object.assign(webex.meetings, {
105
- startReachability: sinon.stub().returns(Promise.resolve())
106
+ startReachability: sinon.stub().returns(Promise.resolve()),
106
107
  });
107
108
 
108
109
  Object.assign(webex.internal, {
109
110
  device: {
110
111
  deviceType: 'FAKE_DEVICE',
111
112
  register: sinon.stub().returns(Promise.resolve()),
112
- unregister: sinon.stub().returns(Promise.resolve())
113
+ unregister: sinon.stub().returns(Promise.resolve()),
113
114
  },
114
115
  mercury: {
115
116
  connect: sinon.stub().returns(Promise.resolve()),
116
117
  disconnect: sinon.stub().returns(Promise.resolve()),
117
118
  on: () => {},
118
- off: () => {}
119
+ off: () => {},
119
120
  },
120
121
  services: {
121
- getMeetingPreferences: sinon.stub().returns(Promise.resolve({
122
- sites: [
123
- {
124
- siteUrl: 'site1-example.webex.com',
125
- default: false
126
- },
127
- {
128
- siteUrl: 'site2-example.webex.com',
129
- default: false
130
- },
131
- {
132
- siteUrl: 'site3-example.webex.com',
133
- default: false
134
- },
135
- {
136
- siteUrl: 'go.webex.com',
137
- default: true
138
- }
139
- ]
140
- })),
141
- fetchClientRegionInfo: sinon.stub().returns(Promise.resolve())
122
+ getMeetingPreferences: sinon.stub().returns(
123
+ Promise.resolve({
124
+ sites: [
125
+ {
126
+ siteUrl: 'site1-example.webex.com',
127
+ default: false,
128
+ },
129
+ {
130
+ siteUrl: 'site2-example.webex.com',
131
+ default: false,
132
+ },
133
+ {
134
+ siteUrl: 'site3-example.webex.com',
135
+ default: false,
136
+ },
137
+ {
138
+ siteUrl: 'go.webex.com',
139
+ default: true,
140
+ },
141
+ ],
142
+ })
143
+ ),
144
+ fetchClientRegionInfo: sinon.stub().returns(Promise.resolve()),
142
145
  },
143
146
  metrics: {
144
- submitClientMetrics: sinon.stub().returns(Promise.resolve())
145
- }
146
-
147
+ submitClientMetrics: sinon.stub().returns(Promise.resolve()),
148
+ },
147
149
  });
148
150
  webex.emit('ready');
149
151
  });
@@ -177,10 +179,14 @@ describe('plugin-meetings', () => {
177
179
 
178
180
  describe('failure', () => {
179
181
  it('should not accept non boolean input', () => {
180
- const currentEnableUnifiedMeetings = webex.meetings.config.experimental.enableUnifiedMeetings;
182
+ const currentEnableUnifiedMeetings =
183
+ webex.meetings.config.experimental.enableUnifiedMeetings;
181
184
 
182
185
  webex.meetings._toggleUnifiedMeetings('test');
183
- assert.equal(webex.meetings.config.experimental.enableUnifiedMeetings, currentEnableUnifiedMeetings);
186
+ assert.equal(
187
+ webex.meetings.config.experimental.enableUnifiedMeetings,
188
+ currentEnableUnifiedMeetings
189
+ );
184
190
  });
185
191
  });
186
192
  });
@@ -202,7 +208,10 @@ describe('plugin-meetings', () => {
202
208
  const currentEnableAdhocMeetings = webex.meetings.config.experimental.enableAdhocMeetings;
203
209
 
204
210
  webex.meetings._toggleAdhocMeetings('test');
205
- assert.equal(webex.meetings.config.experimental.enableAdhocMeetings, currentEnableAdhocMeetings);
211
+ assert.equal(
212
+ webex.meetings.config.experimental.enableAdhocMeetings,
213
+ currentEnableAdhocMeetings
214
+ );
206
215
  });
207
216
  });
208
217
  });
@@ -227,18 +236,25 @@ describe('plugin-meetings', () => {
227
236
  const currentEnableTurnDiscovery = webex.meetings.config.experimental.enableTurnDiscovery;
228
237
 
229
238
  webex.meetings._toggleTurnDiscovery('test');
230
- assert.equal(webex.meetings.config.experimental.enableAdhocMeetings, currentEnableTurnDiscovery);
239
+ assert.equal(
240
+ webex.meetings.config.experimental.enableAdhocMeetings,
241
+ currentEnableTurnDiscovery
242
+ );
231
243
  });
232
244
  });
233
245
  });
234
246
 
235
-
236
247
  describe('Public API Contracts', () => {
237
248
  describe('#register', () => {
238
249
  it('emits an event and resolves when register succeeds', async () => {
239
250
  webex.canAuthorize = true;
240
251
  await webex.meetings.register();
241
- assert.calledWith(TriggerProxy.trigger, sinon.match.instanceOf(Meetings), {file: 'meetings', function: 'register'}, 'meetings:registered');
252
+ assert.calledWith(
253
+ TriggerProxy.trigger,
254
+ sinon.match.instanceOf(Meetings),
255
+ {file: 'meetings', function: 'register'},
256
+ 'meetings:registered'
257
+ );
242
258
  assert.isTrue(webex.meetings.registered);
243
259
  });
244
260
 
@@ -284,9 +300,15 @@ describe('plugin-meetings', () => {
284
300
  it('emits an event and resolves when unregister succeeds', (done) => {
285
301
  webex.meetings.registered = true;
286
302
  webex.meetings.unregister().then(() => {
287
- assert.calledWith(TriggerProxy.trigger, sinon.match.instanceOf(Meetings), {
288
- file: 'meetings', function: 'unregister'
289
- }, 'meetings:unregistered');
303
+ assert.calledWith(
304
+ TriggerProxy.trigger,
305
+ sinon.match.instanceOf(Meetings),
306
+ {
307
+ file: 'meetings',
308
+ function: 'unregister',
309
+ },
310
+ 'meetings:unregistered'
311
+ );
290
312
  assert.isFalse(webex.meetings.registered);
291
313
  done();
292
314
  });
@@ -324,7 +346,10 @@ describe('plugin-meetings', () => {
324
346
  it('does not get a reachability instance', () => {
325
347
  const reachability = webex.meetings.getReachability();
326
348
 
327
- assert.notExists(reachability, 'reachability is undefined because #setReachability has not been called');
349
+ assert.notExists(
350
+ reachability,
351
+ 'reachability is undefined because #setReachability has not been called'
352
+ );
328
353
  });
329
354
  });
330
355
  describe('after #setReachability', () => {
@@ -337,7 +362,10 @@ describe('plugin-meetings', () => {
337
362
  it('gets the reachability data instance from webex.meetings', () => {
338
363
  const reachability = webex.meetings.getReachability();
339
364
 
340
- assert.exists(reachability, 'reachability is defined because #setReachability has been called');
365
+ assert.exists(
366
+ reachability,
367
+ 'reachability is defined because #setReachability has been called'
368
+ );
341
369
  assert.instanceOf(reachability, Reachability, 'should be a reachability instance');
342
370
  });
343
371
  });
@@ -349,8 +377,15 @@ describe('plugin-meetings', () => {
349
377
  it('gets the personal meeting room instance from webex.meetings', () => {
350
378
  const personalMeetingRoom = webex.meetings.getPersonalMeetingRoom();
351
379
 
352
- assert.exists(personalMeetingRoom, 'personal meeting room instance is set up at object creation');
353
- assert.instanceOf(personalMeetingRoom, PersonalMeetingRoom, 'should be a personal meeting room instance');
380
+ assert.exists(
381
+ personalMeetingRoom,
382
+ 'personal meeting room instance is set up at object creation'
383
+ );
384
+ assert.instanceOf(
385
+ personalMeetingRoom,
386
+ PersonalMeetingRoom,
387
+ 'should be a personal meeting room instance'
388
+ );
354
389
  });
355
390
  });
356
391
  describe('Static shortcut proxy methods', () => {
@@ -379,11 +414,11 @@ describe('plugin-meetings', () => {
379
414
  describe('#getAllMeetings', () => {
380
415
  it('calls MeetingCollection to get all meetings with supplied options', () => {
381
416
  webex.meetings.getAllMeetings({
382
- test: test1
417
+ test: test1,
383
418
  });
384
419
  assert.calledOnce(webex.meetings.meetingCollection.getAll);
385
420
  assert.calledWith(webex.meetings.meetingCollection.getAll, {
386
- test: test1
421
+ test: test1,
387
422
  });
388
423
  });
389
424
  });
@@ -396,11 +431,15 @@ describe('plugin-meetings', () => {
396
431
  });
397
432
  describe('succesful requests', () => {
398
433
  beforeEach(() => {
399
- webex.meetings.request.getActiveMeetings = sinon.stub().returns(Promise.resolve({
400
- loci: [{
401
- url: url1
402
- }]
403
- }));
434
+ webex.meetings.request.getActiveMeetings = sinon.stub().returns(
435
+ Promise.resolve({
436
+ loci: [
437
+ {
438
+ url: url1,
439
+ },
440
+ ],
441
+ })
442
+ );
404
443
  });
405
444
  describe('when meeting is returned', () => {
406
445
  let parse;
@@ -409,8 +448,8 @@ describe('plugin-meetings', () => {
409
448
  parse = sinon.stub().returns(true);
410
449
  webex.meetings.meetingCollection.getByKey = sinon.stub().returns({
411
450
  locusInfo: {
412
- parse
413
- }
451
+ parse,
452
+ },
414
453
  });
415
454
  });
416
455
  it('tests the sync meeting calls for existing meeting', async () => {
@@ -427,11 +466,13 @@ describe('plugin-meetings', () => {
427
466
  beforeEach(() => {
428
467
  initialSetup = sinon.stub().returns(true);
429
468
  webex.meetings.meetingCollection.getByKey = sinon.stub().returns(null);
430
- webex.meetings.create = sinon.stub().returns(Promise.resolve({
431
- locusInfo: {
432
- initialSetup
433
- }
434
- }));
469
+ webex.meetings.create = sinon.stub().returns(
470
+ Promise.resolve({
471
+ locusInfo: {
472
+ initialSetup,
473
+ },
474
+ })
475
+ );
435
476
  });
436
477
  it('tests the sync meeting calls for not existing meeting', async () => {
437
478
  await webex.meetings.syncMeetings();
@@ -441,11 +482,15 @@ describe('plugin-meetings', () => {
441
482
  assert.calledOnce(webex.meetings.create);
442
483
  assert.calledWith(webex.meetings.request.getActiveMeetings);
443
484
  assert.calledWith(webex.meetings.meetingCollection.getByKey, 'locusUrl', url1);
444
- assert.calledWith(webex.meetings.create, {
445
- url: url1
446
- }, 'LOCUS_ID');
485
+ assert.calledWith(
486
+ webex.meetings.create,
487
+ {
488
+ url: url1,
489
+ },
490
+ 'LOCUS_ID'
491
+ );
447
492
  assert.calledWith(initialSetup, {
448
- url: url1
493
+ url: url1,
449
494
  });
450
495
  });
451
496
  });
@@ -460,24 +505,29 @@ describe('plugin-meetings', () => {
460
505
  initialSetup = sinon.stub().returns(true);
461
506
  webex.meetings.meetingCollection.getByKey = sinon.stub().returns({
462
507
  locusInfo: {
463
- parse
508
+ parse,
464
509
  },
465
- sendCallAnalyzerMetrics: sinon.stub()
510
+ sendCallAnalyzerMetrics: sinon.stub(),
466
511
  });
467
512
  webex.meetings.meetingCollection.getAll = sinon.stub().returns({
468
513
  meetingutk: {
469
- locusUrl: 'fdfdjfdhj', sendCallAnalyzerMetrics: sinon.stub()
470
- }
471
- });
472
- webex.meetings.create = sinon.stub().returns(Promise.resolve({
473
- locusInfo: {
474
- initialSetup
514
+ locusUrl: 'fdfdjfdhj',
515
+ sendCallAnalyzerMetrics: sinon.stub(),
475
516
  },
476
- sendCallAnalyzerMetrics: sinon.stub()
477
- }));
478
- webex.meetings.request.getActiveMeetings = sinon.stub().returns(Promise.resolve({
479
- loci: []
480
- }));
517
+ });
518
+ webex.meetings.create = sinon.stub().returns(
519
+ Promise.resolve({
520
+ locusInfo: {
521
+ initialSetup,
522
+ },
523
+ sendCallAnalyzerMetrics: sinon.stub(),
524
+ })
525
+ );
526
+ webex.meetings.request.getActiveMeetings = sinon.stub().returns(
527
+ Promise.resolve({
528
+ loci: [],
529
+ })
530
+ );
481
531
  MeetingUtil.cleanUp = sinon.stub().returns(Promise.resolve());
482
532
  });
483
533
  it('destroy non active meetings', async () => {
@@ -499,34 +549,29 @@ describe('plugin-meetings', () => {
499
549
  beforeEach(() => {
500
550
  infoOptions = {
501
551
  destination: 'dest-example',
502
- type: 'CONVERSATION_URL'
552
+ type: 'CONVERSATION_URL',
503
553
  };
504
554
  webex.meetings.meetingCollection.getByKey = sinon.stub().returns();
505
- webex.meetings.createMeeting = sinon.stub().returns(Promise.resolve({
506
- on: () => true
507
- }));
555
+ webex.meetings.createMeeting = sinon.stub().returns(
556
+ Promise.resolve({
557
+ on: () => true,
558
+ })
559
+ );
508
560
  });
509
561
 
510
- it('should call MeetingInfo#fetchInfoOptions() with proper params',
511
- () => {
512
- webex.meetings.meetingInfo.fetchInfoOptions = sinon.stub().resolves(
513
- infoOptions
514
- );
562
+ it('should call MeetingInfo#fetchInfoOptions() with proper params', () => {
563
+ webex.meetings.meetingInfo.fetchInfoOptions = sinon.stub().resolves(infoOptions);
515
564
 
516
- return webex.meetings.create(
565
+ return webex.meetings.create(infoOptions.destination, infoOptions.type).then(() => {
566
+ assert.calledWith(
567
+ webex.meetings.meetingInfo.fetchInfoOptions,
517
568
  infoOptions.destination,
518
569
  infoOptions.type
519
- )
520
- .then(() => {
521
- assert.calledWith(
522
- webex.meetings.meetingInfo.fetchInfoOptions,
523
- infoOptions.destination,
524
- infoOptions.type
525
- );
526
-
527
- assert.calledTwice(webex.meetings.meetingCollection.getByKey);
528
- });
570
+ );
571
+
572
+ assert.calledTwice(webex.meetings.meetingCollection.getByKey);
529
573
  });
574
+ });
530
575
 
531
576
  it('calls createMeeting and returns its promise', async () => {
532
577
  const FAKE_USE_RANDOM_DELAY = true;
@@ -565,9 +610,9 @@ describe('plugin-meetings', () => {
565
610
  return undefined;
566
611
  });
567
612
 
568
- webex.meetings.meetingInfo.fetchInfoOptions = sinon.stub().resolves(
569
- scheduledMeetingFixture
570
- );
613
+ webex.meetings.meetingInfo.fetchInfoOptions = sinon
614
+ .stub()
615
+ .resolves(scheduledMeetingFixture);
571
616
 
572
617
  webex.meetings.meetingCollection.set(scheduledMeetingFixture);
573
618
 
@@ -602,28 +647,31 @@ describe('plugin-meetings', () => {
602
647
  it('doesnt call handle locus mercury for a locus roap event', () => {
603
648
  webex.meetings.handleLocusMercury({
604
649
  data: {
605
- eventType: 'locus.message.roap'
606
- }
650
+ eventType: 'locus.message.roap',
651
+ },
607
652
  });
608
653
  assert.notCalled(webex.meetings.handleLocusEvent);
609
654
  });
610
655
  it('doesnt call handle locus mercury for an undefined eventType', () => {
611
656
  webex.meetings.handleLocusMercury({
612
- data: {
613
- }
657
+ data: {},
614
658
  });
615
659
  assert.notCalled(webex.meetings.handleLocusEvent);
616
660
  });
617
661
  it('calls handle locus mercury for all locus events', () => {
618
662
  webex.meetings.handleLocusMercury({
619
663
  data: {
620
- eventType: test1
621
- }
664
+ eventType: test1,
665
+ },
622
666
  });
623
667
  assert.calledOnce(webex.meetings.handleLocusEvent);
624
- assert.calledWith(webex.meetings.handleLocusEvent, {
625
- eventType: test1
626
- }, true);
668
+ assert.calledWith(
669
+ webex.meetings.handleLocusEvent,
670
+ {
671
+ eventType: test1,
672
+ },
673
+ true
674
+ );
627
675
  });
628
676
  });
629
677
  describe('#handleLocusEvent', () => {
@@ -634,24 +682,28 @@ describe('plugin-meetings', () => {
634
682
  parse = sinon.stub().returns(true);
635
683
  webex.meetings.meetingCollection.getByKey = sinon.stub().returns({
636
684
  locusInfo: {
637
- parse
638
- }
685
+ parse,
686
+ },
639
687
  });
640
688
  });
641
689
  it('should parse the meeting info', () => {
642
690
  webex.meetings.handleLocusEvent({
643
- locusUrl: url1
691
+ locusUrl: url1,
644
692
  });
645
693
  assert.calledOnce(webex.meetings.meetingCollection.getByKey);
646
694
  assert.calledWith(webex.meetings.meetingCollection.getByKey, 'locusUrl', url1);
647
695
  assert.calledOnce(parse);
648
- assert.calledWith(parse, {
649
- locusInfo: {
650
- parse
696
+ assert.calledWith(
697
+ parse,
698
+ {
699
+ locusInfo: {
700
+ parse,
701
+ },
702
+ },
703
+ {
704
+ locusUrl: url1,
651
705
  }
652
- }, {
653
- locusUrl: url1
654
- });
706
+ );
655
707
  });
656
708
  });
657
709
  describe('there was not a meeting', () => {
@@ -660,41 +712,47 @@ describe('plugin-meetings', () => {
660
712
  beforeEach(() => {
661
713
  initialSetup = sinon.stub().returns(true);
662
714
  webex.meetings.meetingCollection.getByKey = sinon.stub().returns(undefined);
663
- webex.meetings.create = sinon.stub().returns(Promise.resolve({
664
- locusInfo: {
665
- initialSetup
666
- }
667
- }));
715
+ webex.meetings.create = sinon.stub().returns(
716
+ Promise.resolve({
717
+ locusInfo: {
718
+ initialSetup,
719
+ },
720
+ })
721
+ );
668
722
  });
669
723
  it('should setup the meeting by difference event', async () => {
670
724
  await webex.meetings.handleLocusEvent({
671
725
  locus: {
672
726
  id: uuid1,
673
- replaces: [{
674
- locusUrl: 'http:locusUrl'
675
- }],
727
+ replaces: [
728
+ {
729
+ locusUrl: 'http:locusUrl',
730
+ },
731
+ ],
676
732
  self: {
677
733
  callBackInfo: {
678
- callbackAddress: uri1
679
- }
680
- }
734
+ callbackAddress: uri1,
735
+ },
736
+ },
681
737
  },
682
738
  eventType: 'locus.difference',
683
- locusUrl: url1
739
+ locusUrl: url1,
684
740
  });
685
741
  assert.callCount(webex.meetings.meetingCollection.getByKey, 5);
686
742
  assert.calledWith(webex.meetings.meetingCollection.getByKey, 'locusUrl', url1);
687
743
  assert.calledOnce(initialSetup);
688
744
  assert.calledWith(initialSetup, {
689
745
  id: uuid1,
690
- replaces: [{
691
- locusUrl: 'http:locusUrl'
692
- }],
746
+ replaces: [
747
+ {
748
+ locusUrl: 'http:locusUrl',
749
+ },
750
+ ],
693
751
  self: {
694
752
  callBackInfo: {
695
- callbackAddress: uri1
696
- }
697
- }
753
+ callbackAddress: uri1,
754
+ },
755
+ },
698
756
  });
699
757
  });
700
758
  it('should setup the meeting by difference event without replaces', async () => {
@@ -703,12 +761,12 @@ describe('plugin-meetings', () => {
703
761
  id: uuid1,
704
762
  self: {
705
763
  callBackInfo: {
706
- callbackAddress: uri1
707
- }
708
- }
764
+ callbackAddress: uri1,
765
+ },
766
+ },
709
767
  },
710
768
  eventType: 'locus.difference',
711
- locusUrl: url1
769
+ locusUrl: url1,
712
770
  });
713
771
  assert.callCount(webex.meetings.meetingCollection.getByKey, 4);
714
772
  assert.calledWith(webex.meetings.meetingCollection.getByKey, 'locusUrl', url1);
@@ -717,9 +775,9 @@ describe('plugin-meetings', () => {
717
775
  id: uuid1,
718
776
  self: {
719
777
  callBackInfo: {
720
- callbackAddress: uri1
721
- }
722
- }
778
+ callbackAddress: uri1,
779
+ },
780
+ },
723
781
  });
724
782
  });
725
783
  it('should setup the meeting by a not difference event', async () => {
@@ -728,12 +786,12 @@ describe('plugin-meetings', () => {
728
786
  id: uuid1,
729
787
  self: {
730
788
  callBackInfo: {
731
- callbackAddress: uri1
732
- }
733
- }
789
+ callbackAddress: uri1,
790
+ },
791
+ },
734
792
  },
735
793
  eventType: test1,
736
- locusUrl: url1
794
+ locusUrl: url1,
737
795
  });
738
796
  assert.callCount(webex.meetings.meetingCollection.getByKey, 4);
739
797
  assert.calledWith(webex.meetings.meetingCollection.getByKey, 'locusUrl', url1);
@@ -742,9 +800,9 @@ describe('plugin-meetings', () => {
742
800
  id: uuid1,
743
801
  self: {
744
802
  callBackInfo: {
745
- callbackAddress: uri1
746
- }
747
- }
803
+ callbackAddress: uri1,
804
+ },
805
+ },
748
806
  });
749
807
  });
750
808
 
@@ -753,13 +811,13 @@ describe('plugin-meetings', () => {
753
811
  id: uuid1,
754
812
  self: {
755
813
  callbackInfo: {
756
- callbackAddress: uri1
757
- }
814
+ callbackAddress: uri1,
815
+ },
758
816
  },
759
817
  info: {
760
- isUnifiedSpaceMeeting
818
+ isUnifiedSpaceMeeting,
761
819
  },
762
- conversationUrl: 'fakeConvoUrl'
820
+ conversationUrl: 'fakeConvoUrl',
763
821
  },
764
822
  eventType: test1,
765
823
  locusUrl: url1,
@@ -768,18 +826,39 @@ describe('plugin-meetings', () => {
768
826
  it('should not try to match USM meetings by conversation url', async () => {
769
827
  await webex.meetings.handleLocusEvent(generateFakeLocusData(true));
770
828
  assert.callCount(webex.meetings.meetingCollection.getByKey, 3);
771
- assert.deepEqual(webex.meetings.meetingCollection.getByKey.getCall(0).args, ['locusUrl', url1]);
772
- assert.deepEqual(webex.meetings.meetingCollection.getByKey.getCall(1).args, ['correlationId', false]);
773
- assert.deepEqual(webex.meetings.meetingCollection.getByKey.getCall(2).args, ['sipUri', uri1]);
829
+ assert.deepEqual(webex.meetings.meetingCollection.getByKey.getCall(0).args, [
830
+ 'locusUrl',
831
+ url1,
832
+ ]);
833
+ assert.deepEqual(webex.meetings.meetingCollection.getByKey.getCall(1).args, [
834
+ 'correlationId',
835
+ false,
836
+ ]);
837
+ assert.deepEqual(webex.meetings.meetingCollection.getByKey.getCall(2).args, [
838
+ 'sipUri',
839
+ uri1,
840
+ ]);
774
841
  assert.calledOnce(initialSetup);
775
842
  });
776
843
  it('should try to match non-USM meetings by conversation url', async () => {
777
844
  await webex.meetings.handleLocusEvent(generateFakeLocusData(false));
778
845
  assert.callCount(webex.meetings.meetingCollection.getByKey, 4);
779
- assert.deepEqual(webex.meetings.meetingCollection.getByKey.getCall(0).args, ['locusUrl', url1]);
780
- assert.deepEqual(webex.meetings.meetingCollection.getByKey.getCall(1).args, ['correlationId', false]);
781
- assert.deepEqual(webex.meetings.meetingCollection.getByKey.getCall(2).args, ['sipUri', uri1]);
782
- assert.deepEqual(webex.meetings.meetingCollection.getByKey.getCall(3).args, ['conversationUrl', 'fakeConvoUrl']);
846
+ assert.deepEqual(webex.meetings.meetingCollection.getByKey.getCall(0).args, [
847
+ 'locusUrl',
848
+ url1,
849
+ ]);
850
+ assert.deepEqual(webex.meetings.meetingCollection.getByKey.getCall(1).args, [
851
+ 'correlationId',
852
+ false,
853
+ ]);
854
+ assert.deepEqual(webex.meetings.meetingCollection.getByKey.getCall(2).args, [
855
+ 'sipUri',
856
+ uri1,
857
+ ]);
858
+ assert.deepEqual(webex.meetings.meetingCollection.getByKey.getCall(3).args, [
859
+ 'conversationUrl',
860
+ 'fakeConvoUrl',
861
+ ]);
783
862
  assert.calledOnce(initialSetup);
784
863
  });
785
864
  });
@@ -798,11 +877,14 @@ describe('plugin-meetings', () => {
798
877
  beforeEach(() => {
799
878
  clock = sinon.useFakeTimers();
800
879
  setTimeoutSpy = sinon.spy(clock, 'setTimeout');
801
- webex.meetings.meetingInfo.fetchMeetingInfo = sinon.stub().returns(Promise.resolve({
802
- body: {
803
- permissionToken: 'PT', meetingJoinUrl: 'meetingJoinUrl'
804
- }
805
- }));
880
+ webex.meetings.meetingInfo.fetchMeetingInfo = sinon.stub().returns(
881
+ Promise.resolve({
882
+ body: {
883
+ permissionToken: 'PT',
884
+ meetingJoinUrl: 'meetingJoinUrl',
885
+ },
886
+ })
887
+ );
806
888
  const nowTimeStamp = Date.now();
807
889
 
808
890
  FAKE_TIME_TO_START = 0.1 * 60 * 1000;
@@ -816,7 +898,12 @@ describe('plugin-meetings', () => {
816
898
  clock.restore();
817
899
  });
818
900
 
819
- const checkCreateWithoutDelay = (meeting, destination, type, expectedMeetingData = {}) => {
901
+ const checkCreateWithoutDelay = (
902
+ meeting,
903
+ destination,
904
+ type,
905
+ expectedMeetingData = {}
906
+ ) => {
820
907
  assert.calledOnce(webex.meetings.meetingInfo.fetchMeetingInfo);
821
908
  assert.calledOnce(MeetingsUtil.getMeetingAddedType);
822
909
  assert.notCalled(setTimeoutSpy);
@@ -832,12 +919,25 @@ describe('plugin-meetings', () => {
832
919
  }
833
920
  assert.equal(meeting.destination, destination);
834
921
  assert.equal(meeting.destinationType, type);
835
- assert.calledWith(TriggerProxy.trigger, sinon.match.instanceOf(Meetings), {
836
- file: 'meetings', function: 'createMeeting'
837
- }, 'meeting:added', {
838
- meeting: sinon.match.instanceOf(Meeting), type: 'test meeting added type'
839
- });
840
- assert.calledWith(TriggerProxy.trigger, meeting, {file: 'meetings', function: 'fetchMeetingInfo'}, 'meeting:meetingInfoAvailable');
922
+ assert.calledWith(
923
+ TriggerProxy.trigger,
924
+ sinon.match.instanceOf(Meetings),
925
+ {
926
+ file: 'meetings',
927
+ function: 'createMeeting',
928
+ },
929
+ 'meeting:added',
930
+ {
931
+ meeting: sinon.match.instanceOf(Meeting),
932
+ type: 'test meeting added type',
933
+ }
934
+ );
935
+ assert.calledWith(
936
+ TriggerProxy.trigger,
937
+ meeting,
938
+ {file: 'meetings', function: 'fetchMeetingInfo'},
939
+ 'meeting:meetingInfoAvailable'
940
+ );
841
941
  };
842
942
 
843
943
  it('creates the meeting from a successful meeting info fetch promise testing', async () => {
@@ -845,7 +945,7 @@ describe('plugin-meetings', () => {
845
945
 
846
946
  const expectedMeetingData = {
847
947
  permissionToken: 'PT',
848
- meetingJoinUrl: 'meetingJoinUrl'
948
+ meetingJoinUrl: 'meetingJoinUrl',
849
949
  };
850
950
 
851
951
  checkCreateWithoutDelay(meeting, 'test destination', 'test type', expectedMeetingData);
@@ -855,10 +955,14 @@ describe('plugin-meetings', () => {
855
955
  const meeting = await webex.meetings.createMeeting('test destination', 'test type');
856
956
  const expectedMeetingData = {
857
957
  permissionToken: 'PT',
858
- meetingJoinUrl: 'meetingJoinUrl'
958
+ meetingJoinUrl: 'meetingJoinUrl',
859
959
  };
860
960
 
861
- assert.instanceOf(meeting, Meeting, 'createMeeting should eventually resolve to a Meeting Object');
961
+ assert.instanceOf(
962
+ meeting,
963
+ Meeting,
964
+ 'createMeeting should eventually resolve to a Meeting Object'
965
+ );
862
966
  checkCreateWithoutDelay(meeting, 'test destination', 'test type', expectedMeetingData);
863
967
  });
864
968
 
@@ -869,19 +973,27 @@ describe('plugin-meetings', () => {
869
973
  info: {
870
974
  webExMeetingId: 'locusMeetingId',
871
975
  sipUri: 'locusSipUri',
872
- owner: 'locusOwner'
976
+ owner: 'locusOwner',
873
977
  },
874
978
  meeting: {
875
- startTime: fakeMeetingStartTimeString
979
+ startTime: fakeMeetingStartTimeString,
876
980
  },
877
981
  fullState: {
878
- active: false
879
- }
982
+ active: false,
983
+ },
880
984
  };
881
985
 
882
- const meeting = await webex.meetings.createMeeting(FAKE_LOCUS_MEETING, 'test type', true);
986
+ const meeting = await webex.meetings.createMeeting(
987
+ FAKE_LOCUS_MEETING,
988
+ 'test type',
989
+ true
990
+ );
883
991
 
884
- assert.instanceOf(meeting, Meeting, 'createMeeting should eventually resolve to a Meeting Object');
992
+ assert.instanceOf(
993
+ meeting,
994
+ Meeting,
995
+ 'createMeeting should eventually resolve to a Meeting Object'
996
+ );
885
997
  assert.notCalled(webex.meetings.meetingInfo.fetchMeetingInfo);
886
998
  assert.calledOnce(setTimeoutSpy);
887
999
 
@@ -897,15 +1009,27 @@ describe('plugin-meetings', () => {
897
1009
  // Add meeting and send trigger
898
1010
  assert.calledWith(MeetingsUtil.getMeetingAddedType, 'test type');
899
1011
  assert.calledTwice(TriggerProxy.trigger);
900
- assert.calledWith(TriggerProxy.trigger, sinon.match.instanceOf(Meetings), {
901
- file: 'meetings', function: 'createMeeting'
902
- }, 'meeting:added', {
903
- meeting: sinon.match.instanceOf(Meeting), type: 'test meeting added type'
904
- });
1012
+ assert.calledWith(
1013
+ TriggerProxy.trigger,
1014
+ sinon.match.instanceOf(Meetings),
1015
+ {
1016
+ file: 'meetings',
1017
+ function: 'createMeeting',
1018
+ },
1019
+ 'meeting:added',
1020
+ {
1021
+ meeting: sinon.match.instanceOf(Meeting),
1022
+ type: 'test meeting added type',
1023
+ }
1024
+ );
905
1025
 
906
1026
  // When timer expires
907
1027
  clock.tick(FAKE_TIME_TO_START);
908
- assert.calledWith(webex.meetings.meetingInfo.fetchMeetingInfo, FAKE_LOCUS_MEETING, 'test type');
1028
+ assert.calledWith(
1029
+ webex.meetings.meetingInfo.fetchMeetingInfo,
1030
+ FAKE_LOCUS_MEETING,
1031
+ 'test type'
1032
+ );
909
1033
 
910
1034
  // Parse meeting info is called again with new meeting info
911
1035
  await testUtils.flushPromises();
@@ -917,7 +1041,12 @@ describe('plugin-meetings', () => {
917
1041
  assert.equal(meeting.owner, 'locusOwner');
918
1042
  assert.equal(meeting.permissionToken, 'PT');
919
1043
 
920
- assert.calledWith(TriggerProxy.trigger, meeting, {file: 'meetings', function: 'fetchMeetingInfo'}, 'meeting:meetingInfoAvailable');
1044
+ assert.calledWith(
1045
+ TriggerProxy.trigger,
1046
+ meeting,
1047
+ {file: 'meetings', function: 'fetchMeetingInfo'},
1048
+ 'meeting:meetingInfoAvailable'
1049
+ );
921
1050
  });
922
1051
 
923
1052
  it('creates the meeting from a successful meeting info fetch that has no random delay because it is active', async () => {
@@ -927,19 +1056,27 @@ describe('plugin-meetings', () => {
927
1056
  info: {
928
1057
  webExMeetingId: 'locusMeetingId',
929
1058
  sipUri: 'locusSipUri',
930
- owner: 'locusOwner'
1059
+ owner: 'locusOwner',
931
1060
  },
932
1061
  meeting: {
933
- startTime: fakeMeetingStartTimeString
1062
+ startTime: fakeMeetingStartTimeString,
934
1063
  },
935
1064
  fullState: {
936
- active: true
937
- }
1065
+ active: true,
1066
+ },
938
1067
  };
939
1068
 
940
- const meeting = await webex.meetings.createMeeting(FAKE_LOCUS_MEETING, 'test type', true);
1069
+ const meeting = await webex.meetings.createMeeting(
1070
+ FAKE_LOCUS_MEETING,
1071
+ 'test type',
1072
+ true
1073
+ );
941
1074
 
942
- assert.instanceOf(meeting, Meeting, 'createMeeting should eventually resolve to a Meeting Object');
1075
+ assert.instanceOf(
1076
+ meeting,
1077
+ Meeting,
1078
+ 'createMeeting should eventually resolve to a Meeting Object'
1079
+ );
943
1080
  checkCreateWithoutDelay(meeting, FAKE_LOCUS_MEETING, 'test type');
944
1081
  });
945
1082
 
@@ -950,27 +1087,35 @@ describe('plugin-meetings', () => {
950
1087
  info: {
951
1088
  webExMeetingId: 'locusMeetingId',
952
1089
  sipUri: 'locusSipUri',
953
- owner: 'locusOwner'
1090
+ owner: 'locusOwner',
954
1091
  },
955
1092
  meeting: {
956
- startTime: fakeMeetingStartTimeString - (1 * 60 * 60 * 1000)
1093
+ startTime: fakeMeetingStartTimeString - 1 * 60 * 60 * 1000,
957
1094
  },
958
1095
  fullState: {
959
- active: false
960
- }
1096
+ active: false,
1097
+ },
961
1098
  };
962
1099
 
963
- const meeting = await webex.meetings.createMeeting(FAKE_LOCUS_MEETING, 'test type', true);
1100
+ const meeting = await webex.meetings.createMeeting(
1101
+ FAKE_LOCUS_MEETING,
1102
+ 'test type',
1103
+ true
1104
+ );
964
1105
 
965
- assert.instanceOf(meeting, Meeting, 'createMeeting should eventually resolve to a Meeting Object');
1106
+ assert.instanceOf(
1107
+ meeting,
1108
+ Meeting,
1109
+ 'createMeeting should eventually resolve to a Meeting Object'
1110
+ );
966
1111
  checkCreateWithoutDelay(meeting, FAKE_LOCUS_MEETING, 'test type');
967
1112
  });
968
1113
 
969
1114
  it('creates the meeting from a successful meeting info fetch that has no random delay because enableUnifiedMeetings is disabled', async () => {
970
1115
  Object.assign(webex.meetings.config, {
971
1116
  experimental: {
972
- enableUnifiedMeetings: false
973
- }
1117
+ enableUnifiedMeetings: false,
1118
+ },
974
1119
  });
975
1120
  const FAKE_LOCUS_MEETING = {
976
1121
  conversationUrl: 'locusConvURL',
@@ -978,19 +1123,27 @@ describe('plugin-meetings', () => {
978
1123
  info: {
979
1124
  webExMeetingId: 'locusMeetingId',
980
1125
  sipUri: 'locusSipUri',
981
- owner: 'locusOwner'
1126
+ owner: 'locusOwner',
982
1127
  },
983
1128
  meeting: {
984
- startTime: fakeMeetingStartTimeString
1129
+ startTime: fakeMeetingStartTimeString,
985
1130
  },
986
1131
  fullState: {
987
- active: false
988
- }
1132
+ active: false,
1133
+ },
989
1134
  };
990
1135
 
991
- const meeting = await webex.meetings.createMeeting(FAKE_LOCUS_MEETING, 'test type', true);
1136
+ const meeting = await webex.meetings.createMeeting(
1137
+ FAKE_LOCUS_MEETING,
1138
+ 'test type',
1139
+ true
1140
+ );
992
1141
 
993
- assert.instanceOf(meeting, Meeting, 'createMeeting should eventually resolve to a Meeting Object');
1142
+ assert.instanceOf(
1143
+ meeting,
1144
+ Meeting,
1145
+ 'createMeeting should eventually resolve to a Meeting Object'
1146
+ );
994
1147
  checkCreateWithoutDelay(meeting, FAKE_LOCUS_MEETING, 'test type');
995
1148
  });
996
1149
  });
@@ -999,22 +1152,40 @@ describe('plugin-meetings', () => {
999
1152
  beforeEach(() => {
1000
1153
  console.error = sinon.stub().returns(false);
1001
1154
  TriggerProxy.trigger.reset();
1002
- webex.meetings.meetingInfo.fetchMeetingInfo = sinon.stub().returns(Promise.reject(new Error('test')));
1155
+ webex.meetings.meetingInfo.fetchMeetingInfo = sinon
1156
+ .stub()
1157
+ .returns(Promise.reject(new Error('test')));
1003
1158
  });
1004
1159
  it('creates the meeting from a rejected meeting info fetch', async () => {
1005
1160
  const meeting = await webex.meetings.createMeeting('test destination', 'test type');
1006
1161
 
1007
- assert.instanceOf(meeting, Meeting, 'createMeeting should eventually resolve to a Meeting Object');
1162
+ assert.instanceOf(
1163
+ meeting,
1164
+ Meeting,
1165
+ 'createMeeting should eventually resolve to a Meeting Object'
1166
+ );
1008
1167
  assert.calledOnce(webex.meetings.meetingInfo.fetchMeetingInfo);
1009
1168
  assert.calledOnce(MeetingsUtil.getMeetingAddedType);
1010
1169
  assert.calledTwice(TriggerProxy.trigger);
1011
- assert.calledWith(webex.meetings.meetingInfo.fetchMeetingInfo, 'test destination', 'test type');
1170
+ assert.calledWith(
1171
+ webex.meetings.meetingInfo.fetchMeetingInfo,
1172
+ 'test destination',
1173
+ 'test type'
1174
+ );
1012
1175
  assert.calledWith(MeetingsUtil.getMeetingAddedType, 'test type');
1013
- assert.calledWith(TriggerProxy.trigger, sinon.match.instanceOf(Meetings), {
1014
- file: 'meetings', function: 'createMeeting'
1015
- }, 'meeting:added', {
1016
- meeting: sinon.match.instanceOf(Meeting), type: 'test meeting added type'
1017
- });
1176
+ assert.calledWith(
1177
+ TriggerProxy.trigger,
1178
+ sinon.match.instanceOf(Meetings),
1179
+ {
1180
+ file: 'meetings',
1181
+ function: 'createMeeting',
1182
+ },
1183
+ 'meeting:added',
1184
+ {
1185
+ meeting: sinon.match.instanceOf(Meeting),
1186
+ type: 'test meeting added type',
1187
+ }
1188
+ );
1018
1189
  });
1019
1190
  });
1020
1191
  });
@@ -1039,11 +1210,19 @@ describe('plugin-meetings', () => {
1039
1210
 
1040
1211
  assert.calledOnce(webex.meetings.meetingCollection.delete);
1041
1212
  assert.calledWith(webex.meetings.meetingCollection.delete, meeting.id);
1042
- assert.calledWith(TriggerProxy.trigger, sinon.match.instanceOf(Meetings), {
1043
- file: 'meetings', function: 'destroy'
1044
- }, 'meeting:removed', {
1045
- meetingId: meeting.id, reason: test1
1046
- });
1213
+ assert.calledWith(
1214
+ TriggerProxy.trigger,
1215
+ sinon.match.instanceOf(Meetings),
1216
+ {
1217
+ file: 'meetings',
1218
+ function: 'destroy',
1219
+ },
1220
+ 'meeting:removed',
1221
+ {
1222
+ meetingId: meeting.id,
1223
+ reason: test1,
1224
+ }
1225
+ );
1047
1226
  });
1048
1227
  });
1049
1228
 
@@ -1068,7 +1247,8 @@ describe('plugin-meetings', () => {
1068
1247
  it('should trigger event upon mercury disconnect', () => {
1069
1248
  const {meetings} = webex;
1070
1249
  const SCOPE = {
1071
- file: 'meetings/index', function: 'handleMercuryOffline'
1250
+ file: 'meetings/index',
1251
+ function: 'handleMercuryOffline',
1072
1252
  };
1073
1253
  const EVENT = 'network:disconnected';
1074
1254
 
@@ -1098,13 +1278,11 @@ describe('plugin-meetings', () => {
1098
1278
  services: {
1099
1279
  getMeetingPreferences: sinon.stub().returns(Promise.resolve({})),
1100
1280
  },
1101
-
1102
1281
  });
1103
1282
 
1104
- await webex.meetings.fetchUserPreferredWebexSite()
1105
- .then(() => {
1106
- assert.equal(webex.meetings.preferredWebexSite, '');
1107
- });
1283
+ await webex.meetings.fetchUserPreferredWebexSite().then(() => {
1284
+ assert.equal(webex.meetings.preferredWebexSite, '');
1285
+ });
1108
1286
  });
1109
1287
  });
1110
1288
  });
@@ -1120,11 +1298,14 @@ describe('plugin-meetings', () => {
1120
1298
  TriggerProxy.trigger.reset();
1121
1299
  // clock = sinon.useFakeTimers();
1122
1300
  // setTimeoutSpy = sinon.spy(clock, 'setTimeout');
1123
- webex.meetings.meetingInfo.fetchMeetingInfo = sinon.stub().returns(Promise.resolve({
1124
- body: {
1125
- permissionToken: 'PT', meetingJoinUrl: 'meetingJoinUrl'
1126
- }
1127
- }));
1301
+ webex.meetings.meetingInfo.fetchMeetingInfo = sinon.stub().returns(
1302
+ Promise.resolve({
1303
+ body: {
1304
+ permissionToken: 'PT',
1305
+ meetingJoinUrl: 'meetingJoinUrl',
1306
+ },
1307
+ })
1308
+ );
1128
1309
 
1129
1310
  meeting = await webex.meetings.createMeeting('test destination', 'test type');
1130
1311
 
@@ -1132,37 +1313,37 @@ describe('plugin-meetings', () => {
1132
1313
  });
1133
1314
 
1134
1315
  it('triggers correct event when CONTROLS_ENTRY_EXIT_TONE_UPDATED emitted', async () => {
1135
- await meeting.locusInfo.emitScoped(
1136
- {},
1137
- LOCUSINFO.EVENTS.CONTROLS_ENTRY_EXIT_TONE_UPDATED,
1138
- {entryExitTone: 'foo'}
1139
- );
1316
+ await meeting.locusInfo.emitScoped({}, LOCUSINFO.EVENTS.CONTROLS_ENTRY_EXIT_TONE_UPDATED, {
1317
+ entryExitTone: 'foo',
1318
+ });
1140
1319
 
1141
1320
  assert.calledOnce(TriggerProxy.trigger);
1142
- assert.calledWith(TriggerProxy.trigger, sinon.match.instanceOf(Meeting),
1321
+ assert.calledWith(
1322
+ TriggerProxy.trigger,
1323
+ sinon.match.instanceOf(Meeting),
1143
1324
  {
1144
1325
  file: 'meeting/index',
1145
- function: 'setupLocusControlsListener'
1326
+ function: 'setupLocusControlsListener',
1146
1327
  },
1147
1328
  EVENT_TRIGGERS.MEETING_ENTRY_EXIT_TONE_UPDATE,
1148
- {entryExitTone: 'foo'});
1329
+ {entryExitTone: 'foo'}
1330
+ );
1149
1331
  });
1150
1332
 
1151
1333
  const checkSelfTrigger = async (inEvent, outEvent) => {
1152
- await meeting.locusInfo.emitScoped(
1153
- {},
1154
- inEvent,
1155
- {foo: 'bar'}
1156
- );
1334
+ await meeting.locusInfo.emitScoped({}, inEvent, {foo: 'bar'});
1157
1335
 
1158
1336
  assert.calledOnce(TriggerProxy.trigger);
1159
- assert.calledWith(TriggerProxy.trigger, sinon.match.instanceOf(Meeting),
1337
+ assert.calledWith(
1338
+ TriggerProxy.trigger,
1339
+ sinon.match.instanceOf(Meeting),
1160
1340
  {
1161
1341
  file: 'meeting/index',
1162
- function: 'setUpLocusInfoSelfListener'
1342
+ function: 'setUpLocusInfoSelfListener',
1163
1343
  },
1164
1344
  outEvent,
1165
- {payload: {foo: 'bar'}});
1345
+ {payload: {foo: 'bar'}}
1346
+ );
1166
1347
  };
1167
1348
 
1168
1349
  it('triggers correct event when SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE emitted', async () => {