@webex/plugin-meetings 3.0.0-beta.108 → 3.0.0-beta.109
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.
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/constants.js +21 -2
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.js +2 -0
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/types.js.map +1 -1
- package/dist/controls-options-manager/util.js +36 -0
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +39 -1
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +55 -0
- package/dist/locus-info/index.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +9 -1
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +84 -14
- package/dist/meeting/index.js.map +1 -1
- package/dist/types/constants.d.ts +16 -0
- package/dist/types/controls-options-manager/enums.d.ts +2 -0
- package/dist/types/controls-options-manager/types.d.ts +7 -1
- package/dist/types/meeting/in-meeting-actions.d.ts +8 -0
- package/package.json +19 -19
- package/src/constants.ts +22 -0
- package/src/controls-options-manager/enums.ts +2 -0
- package/src/controls-options-manager/types.ts +10 -0
- package/src/controls-options-manager/util.ts +45 -0
- package/src/locus-info/controlsUtils.ts +54 -0
- package/src/locus-info/index.ts +55 -0
- package/src/meeting/in-meeting-actions.ts +16 -0
- package/src/meeting/index.ts +70 -0
- package/test/unit/spec/controls-options-manager/util.js +108 -7
- package/test/unit/spec/locus-info/controlsUtils.js +112 -0
- package/test/unit/spec/locus-info/index.js +84 -1
- package/test/unit/spec/meeting/in-meeting-actions.ts +8 -0
- package/test/unit/spec/meeting/index.js +108 -0
|
@@ -128,6 +128,40 @@ describe('plugin-meetings', () => {
|
|
|
128
128
|
});
|
|
129
129
|
});
|
|
130
130
|
|
|
131
|
+
describe('canUpdateRaiseHand()', () => {
|
|
132
|
+
beforeEach(() => {
|
|
133
|
+
ControlsOptionsUtil.hasHints = sinon.stub().returns(true);
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
it('should call hasHints() with proper hints when `enabled` is true', () => {
|
|
137
|
+
ControlsOptionsUtil.canUpdateRaiseHand({properties: {enabled: true}}, [])
|
|
138
|
+
|
|
139
|
+
assert.calledWith(ControlsOptionsUtil.hasHints, {
|
|
140
|
+
requiredHints: [DISPLAY_HINTS.ENABLE_RAISE_HAND],
|
|
141
|
+
displayHints: [],
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
it('should call hasHints() with proper hints when `enabled` is false', () => {
|
|
146
|
+
ControlsOptionsUtil.canUpdateRaiseHand({properties: {enabled: false}}, [])
|
|
147
|
+
|
|
148
|
+
assert.calledWith(ControlsOptionsUtil.hasHints, {
|
|
149
|
+
requiredHints: [DISPLAY_HINTS.DISABLE_RAISE_HAND],
|
|
150
|
+
displayHints: [],
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
it('should return the resolution of hasHints()', () => {
|
|
155
|
+
const expected = 'example-return-value'
|
|
156
|
+
ControlsOptionsUtil.hasHints = sinon.stub().returns(expected);
|
|
157
|
+
|
|
158
|
+
const results = ControlsOptionsUtil.canUpdateRaiseHand({properties: {}}, []);
|
|
159
|
+
|
|
160
|
+
assert.calledOnce(ControlsOptionsUtil.hasHints);
|
|
161
|
+
assert.equal(results, expected);
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
|
|
131
165
|
describe('canUpdateReactions()', () => {
|
|
132
166
|
beforeEach(() => {
|
|
133
167
|
ControlsOptionsUtil.hasHints = sinon.stub().returns(true);
|
|
@@ -222,6 +256,40 @@ describe('plugin-meetings', () => {
|
|
|
222
256
|
});
|
|
223
257
|
});
|
|
224
258
|
|
|
259
|
+
describe('canUpdateVideo()', () => {
|
|
260
|
+
beforeEach(() => {
|
|
261
|
+
ControlsOptionsUtil.hasHints = sinon.stub().returns(true);
|
|
262
|
+
});
|
|
263
|
+
|
|
264
|
+
it('should call hasHints() with proper hints when `enabled` is true', () => {
|
|
265
|
+
ControlsOptionsUtil.canUpdateVideo({properties: {enabled: true}}, [])
|
|
266
|
+
|
|
267
|
+
assert.calledWith(ControlsOptionsUtil.hasHints, {
|
|
268
|
+
requiredHints: [DISPLAY_HINTS.ENABLE_VIDEO],
|
|
269
|
+
displayHints: [],
|
|
270
|
+
});
|
|
271
|
+
});
|
|
272
|
+
|
|
273
|
+
it('should call hasHints() with proper hints when `enabled` is false', () => {
|
|
274
|
+
ControlsOptionsUtil.canUpdateVideo({properties: {enabled: false}}, [])
|
|
275
|
+
|
|
276
|
+
assert.calledWith(ControlsOptionsUtil.hasHints, {
|
|
277
|
+
requiredHints: [DISPLAY_HINTS.DISABLE_VIDEO],
|
|
278
|
+
displayHints: [],
|
|
279
|
+
});
|
|
280
|
+
});
|
|
281
|
+
|
|
282
|
+
it('should return the resolution of hasHints()', () => {
|
|
283
|
+
const expected = 'example-return-value'
|
|
284
|
+
ControlsOptionsUtil.hasHints = sinon.stub().returns(expected);
|
|
285
|
+
|
|
286
|
+
const results = ControlsOptionsUtil.canUpdateVideo({properties: {}}, []);
|
|
287
|
+
|
|
288
|
+
assert.calledOnce(ControlsOptionsUtil.hasHints);
|
|
289
|
+
assert.equal(results, expected);
|
|
290
|
+
});
|
|
291
|
+
});
|
|
292
|
+
|
|
225
293
|
describe('canUpdateViewTheParticipantsList()', () => {
|
|
226
294
|
beforeEach(() => {
|
|
227
295
|
ControlsOptionsUtil.hasHints = sinon.stub().returns(true);
|
|
@@ -258,18 +326,13 @@ describe('plugin-meetings', () => {
|
|
|
258
326
|
|
|
259
327
|
describe('canUpdate()', () => {
|
|
260
328
|
const displayHints = [];
|
|
261
|
-
let spies;
|
|
262
329
|
|
|
263
330
|
beforeEach(() => {
|
|
264
|
-
// spies = {
|
|
265
|
-
// canUpdateAudio: sinon.spy(ControlsOptionsUtil, 'canUpdateAudio'),
|
|
266
|
-
// canUpdateReactions: sinon.spy(ControlsOptionsUtil, 'canUpdateReactions'),
|
|
267
|
-
// canUpdateShareControl: sinon.spy(ControlsOptionsUtil, 'canUpdateShareControl'),
|
|
268
|
-
// canUpdateViewTheParticipantsList: sinon.spy(ControlsOptionsUtil, 'canUpdateViewTheParticipantsList'),
|
|
269
|
-
// }
|
|
270
331
|
ControlsOptionsUtil.canUpdateAudio = sinon.stub().returns(true);
|
|
332
|
+
ControlsOptionsUtil.canUpdateRaiseHand = sinon.stub().returns(true);
|
|
271
333
|
ControlsOptionsUtil.canUpdateReactions = sinon.stub().returns(true);
|
|
272
334
|
ControlsOptionsUtil.canUpdateShareControl = sinon.stub().returns(true);
|
|
335
|
+
ControlsOptionsUtil.canUpdateVideo = sinon.stub().returns(true);
|
|
273
336
|
ControlsOptionsUtil.canUpdateViewTheParticipantsList = sinon.stub().returns(true);
|
|
274
337
|
});
|
|
275
338
|
|
|
@@ -279,20 +342,38 @@ describe('plugin-meetings', () => {
|
|
|
279
342
|
const results = ControlsOptionsUtil.canUpdate(control, displayHints);
|
|
280
343
|
|
|
281
344
|
assert.calledWith(ControlsOptionsUtil.canUpdateAudio, control, displayHints);
|
|
345
|
+
assert.callCount(ControlsOptionsUtil.canUpdateRaiseHand, 0);
|
|
282
346
|
assert.callCount(ControlsOptionsUtil.canUpdateReactions, 0);
|
|
283
347
|
assert.callCount(ControlsOptionsUtil.canUpdateShareControl, 0);
|
|
348
|
+
assert.callCount(ControlsOptionsUtil.canUpdateVideo, 0);
|
|
284
349
|
assert.callCount(ControlsOptionsUtil.canUpdateViewTheParticipantsList, 0);
|
|
285
350
|
assert.isTrue(results);
|
|
286
351
|
});
|
|
287
352
|
|
|
353
|
+
it('should only call canUpdateRaiseHand() if the scope is raiseHand', () => {
|
|
354
|
+
const control = { scope: 'raiseHand' };
|
|
355
|
+
|
|
356
|
+
const results = ControlsOptionsUtil.canUpdate(control, displayHints);
|
|
357
|
+
|
|
358
|
+
assert.callCount(ControlsOptionsUtil.canUpdateAudio, 0);
|
|
359
|
+
assert.calledWith(ControlsOptionsUtil.canUpdateRaiseHand, control, displayHints);
|
|
360
|
+
assert.callCount(ControlsOptionsUtil.canUpdateReactions, 0);
|
|
361
|
+
assert.callCount(ControlsOptionsUtil.canUpdateShareControl, 0);
|
|
362
|
+
assert.callCount(ControlsOptionsUtil.canUpdateVideo, 0);
|
|
363
|
+
assert.callCount(ControlsOptionsUtil.canUpdateViewTheParticipantsList, 0);
|
|
364
|
+
assert.isTrue(results);
|
|
365
|
+
})
|
|
366
|
+
|
|
288
367
|
it('should only call canUpdateReactions() if the scope is reactions', () => {
|
|
289
368
|
const control = { scope: 'reactions' };
|
|
290
369
|
|
|
291
370
|
const results = ControlsOptionsUtil.canUpdate(control, displayHints);
|
|
292
371
|
|
|
293
372
|
assert.callCount(ControlsOptionsUtil.canUpdateAudio, 0);
|
|
373
|
+
assert.callCount(ControlsOptionsUtil.canUpdateRaiseHand, 0);
|
|
294
374
|
assert.calledWith(ControlsOptionsUtil.canUpdateReactions, control, displayHints);
|
|
295
375
|
assert.callCount(ControlsOptionsUtil.canUpdateShareControl, 0);
|
|
376
|
+
assert.callCount(ControlsOptionsUtil.canUpdateVideo, 0);
|
|
296
377
|
assert.callCount(ControlsOptionsUtil.canUpdateViewTheParticipantsList, 0);
|
|
297
378
|
assert.isTrue(results);
|
|
298
379
|
});
|
|
@@ -303,8 +384,24 @@ describe('plugin-meetings', () => {
|
|
|
303
384
|
const results = ControlsOptionsUtil.canUpdate(control, displayHints);
|
|
304
385
|
|
|
305
386
|
assert.callCount(ControlsOptionsUtil.canUpdateAudio, 0);
|
|
387
|
+
assert.callCount(ControlsOptionsUtil.canUpdateRaiseHand, 0);
|
|
306
388
|
assert.callCount(ControlsOptionsUtil.canUpdateReactions, 0);
|
|
307
389
|
assert.calledWith(ControlsOptionsUtil.canUpdateShareControl, displayHints);
|
|
390
|
+
assert.callCount(ControlsOptionsUtil.canUpdateVideo, 0);
|
|
391
|
+
assert.callCount(ControlsOptionsUtil.canUpdateViewTheParticipantsList, 0);
|
|
392
|
+
assert.isTrue(results);
|
|
393
|
+
});
|
|
394
|
+
|
|
395
|
+
it('should only call canUpdateVideo() if the scope is video', () => {
|
|
396
|
+
const control = { scope: 'video' };
|
|
397
|
+
|
|
398
|
+
const results = ControlsOptionsUtil.canUpdate(control, displayHints);
|
|
399
|
+
|
|
400
|
+
assert.callCount(ControlsOptionsUtil.canUpdateAudio, 0);
|
|
401
|
+
assert.callCount(ControlsOptionsUtil.canUpdateRaiseHand, 0);
|
|
402
|
+
assert.callCount(ControlsOptionsUtil.canUpdateReactions, 0);
|
|
403
|
+
assert.callCount(ControlsOptionsUtil.canUpdateShareControl, 0);
|
|
404
|
+
assert.calledWith(ControlsOptionsUtil.canUpdateVideo, control, displayHints);
|
|
308
405
|
assert.callCount(ControlsOptionsUtil.canUpdateViewTheParticipantsList, 0);
|
|
309
406
|
assert.isTrue(results);
|
|
310
407
|
});
|
|
@@ -315,8 +412,10 @@ describe('plugin-meetings', () => {
|
|
|
315
412
|
const results = ControlsOptionsUtil.canUpdate(control, displayHints);
|
|
316
413
|
|
|
317
414
|
assert.callCount(ControlsOptionsUtil.canUpdateAudio, 0);
|
|
415
|
+
assert.callCount(ControlsOptionsUtil.canUpdateRaiseHand, 0);
|
|
318
416
|
assert.callCount(ControlsOptionsUtil.canUpdateReactions, 0);
|
|
319
417
|
assert.callCount(ControlsOptionsUtil.canUpdateShareControl, 0);
|
|
418
|
+
assert.callCount(ControlsOptionsUtil.canUpdateVideo, 0);
|
|
320
419
|
assert.calledWith(ControlsOptionsUtil.canUpdateViewTheParticipantsList, control, displayHints);
|
|
321
420
|
assert.isTrue(results);
|
|
322
421
|
});
|
|
@@ -327,8 +426,10 @@ describe('plugin-meetings', () => {
|
|
|
327
426
|
const results = ControlsOptionsUtil.canUpdate(control, displayHints);
|
|
328
427
|
|
|
329
428
|
assert.callCount(ControlsOptionsUtil.canUpdateAudio, 0);
|
|
429
|
+
assert.callCount(ControlsOptionsUtil.canUpdateRaiseHand, 0);
|
|
330
430
|
assert.callCount(ControlsOptionsUtil.canUpdateReactions, 0);
|
|
331
431
|
assert.callCount(ControlsOptionsUtil.canUpdateShareControl, 0);
|
|
432
|
+
assert.callCount(ControlsOptionsUtil.canUpdateVideo, 0);
|
|
332
433
|
assert.callCount(ControlsOptionsUtil.canUpdateViewTheParticipantsList, 0);
|
|
333
434
|
assert.isFalse(results);
|
|
334
435
|
});
|
|
@@ -41,6 +41,62 @@ describe('plugin-meetings', () => {
|
|
|
41
41
|
assert.equal(parsedControls.entryExitTone, null);
|
|
42
42
|
});
|
|
43
43
|
|
|
44
|
+
it('should parse the muteOnEntry control', () => {
|
|
45
|
+
const newControls = {muteOnEntry: {enabled: true}};
|
|
46
|
+
|
|
47
|
+
const parsedControls = ControlsUtils.parse(newControls);
|
|
48
|
+
|
|
49
|
+
assert.equal(parsedControls.muteOnEntry.enabled, newControls.muteOnEntry.enabled);
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
it('should parse the shareControl control', () => {
|
|
53
|
+
const newControls = {shareControl: {control: 'example-value'}};
|
|
54
|
+
|
|
55
|
+
const parsedControls = ControlsUtils.parse(newControls);
|
|
56
|
+
|
|
57
|
+
assert.equal(parsedControls.shareControl.control, newControls.shareControl.control);
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
it('should parse the disallowUnmute control', () => {
|
|
61
|
+
const newControls = {disallowUnmute: {enabled: true}};
|
|
62
|
+
|
|
63
|
+
const parsedControls = ControlsUtils.parse(newControls);
|
|
64
|
+
|
|
65
|
+
assert.equal(parsedControls.disallowUnmute.enabled, newControls.disallowUnmute.enabled);
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
it('should parse the reactions control', () => {
|
|
69
|
+
const newControls = {reactions: {enabled: true}};
|
|
70
|
+
|
|
71
|
+
const parsedControls = ControlsUtils.parse(newControls);
|
|
72
|
+
|
|
73
|
+
assert.equal(parsedControls.reactions.enabled, newControls.reactions.enabled);
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
it('should parse the reactionDisplayNames control', () => {
|
|
77
|
+
const newControls = {reactions: {showDisplayNameWithReactions: true}};
|
|
78
|
+
|
|
79
|
+
const parsedControls = ControlsUtils.parse(newControls);
|
|
80
|
+
|
|
81
|
+
assert.equal(parsedControls.reactions.showDisplayNameWithReactions, newControls.reactions.showDisplayNameWithReactions);
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
it('should parse the viewTheParticipantList control', () => {
|
|
85
|
+
const newControls = {viewTheParticipantList: {enabled: true}};
|
|
86
|
+
|
|
87
|
+
const parsedControls = ControlsUtils.parse(newControls);
|
|
88
|
+
|
|
89
|
+
assert.equal(parsedControls.viewTheParticipantList.enabled, newControls.viewTheParticipantList.enabled);
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
it('should parse the raiseHand control', () => {
|
|
93
|
+
const newControls = {raiseHand: {enabled: true}};
|
|
94
|
+
|
|
95
|
+
const parsedControls = ControlsUtils.parse(newControls);
|
|
96
|
+
|
|
97
|
+
assert.equal(parsedControls.raiseHand.enabled, newControls.raiseHand.enabled);
|
|
98
|
+
});
|
|
99
|
+
|
|
44
100
|
describe('videoEnabled', () => {
|
|
45
101
|
it('returns expected', () => {
|
|
46
102
|
const result = ControlsUtils.parse({video: {enabled: true}});
|
|
@@ -65,6 +121,62 @@ describe('plugin-meetings', () => {
|
|
|
65
121
|
});
|
|
66
122
|
|
|
67
123
|
describe('getControls', () => {
|
|
124
|
+
it('returns hasMuteOnEntryChanged = true when changed', () => {
|
|
125
|
+
const newControls = {muteOnEntry: {enabled: true}};
|
|
126
|
+
|
|
127
|
+
const {updates} = ControlsUtils.getControls(defaultControls, newControls);
|
|
128
|
+
|
|
129
|
+
assert.equal(updates.hasMuteOnEntryChanged, true);
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
it('returns hasShareControlChanged = true when changed', () => {
|
|
133
|
+
const newControls = {shareControl: {control: 'example-value'}};
|
|
134
|
+
|
|
135
|
+
const {updates} = ControlsUtils.getControls(defaultControls, newControls);
|
|
136
|
+
|
|
137
|
+
assert.equal(updates.hasShareControlChanged, true);
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
it('returns hasDisallowUnmuteChanged = true when changed', () => {
|
|
141
|
+
const newControls = {disallowUnmute: {enabled: true}};
|
|
142
|
+
|
|
143
|
+
const {updates} = ControlsUtils.getControls(defaultControls, newControls);
|
|
144
|
+
|
|
145
|
+
assert.equal(updates.hasDisallowUnmuteChanged, true);
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
it('returns hasReactionsChanged = true when changed', () => {
|
|
149
|
+
const newControls = {reactions: {enabled: true}};
|
|
150
|
+
|
|
151
|
+
const {updates} = ControlsUtils.getControls(defaultControls, newControls);
|
|
152
|
+
|
|
153
|
+
assert.equal(updates.hasReactionsChanged, true);
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
it('returns hasReactionDisplayNamesChanged = true when changed', () => {
|
|
157
|
+
const newControls = {reactions: {showDisplayNameWithReactions: true}};
|
|
158
|
+
|
|
159
|
+
const {updates} = ControlsUtils.getControls(defaultControls, newControls);
|
|
160
|
+
|
|
161
|
+
assert.equal(updates.hasReactionDisplayNamesChanged, true);
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
it('returns hasViewTheParticipantListChanged = true when changed', () => {
|
|
165
|
+
const newControls = {viewTheParticipantList: {enabled: true}};
|
|
166
|
+
|
|
167
|
+
const {updates} = ControlsUtils.getControls(defaultControls, newControls);
|
|
168
|
+
|
|
169
|
+
assert.equal(updates.hasViewTheParticipantListChanged, true);
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
it('returns hasRaiseHandChanged = true when changed', () => {
|
|
173
|
+
const newControls = {raiseHand: {enabled: true}};
|
|
174
|
+
|
|
175
|
+
const {updates} = ControlsUtils.getControls(defaultControls, newControls);
|
|
176
|
+
|
|
177
|
+
assert.equal(updates.hasRaiseHandChanged, true);
|
|
178
|
+
});
|
|
179
|
+
|
|
68
180
|
it('returns hasEntryExitToneChanged = true when mode changed', () => {
|
|
69
181
|
const newControls = {
|
|
70
182
|
entryExitTone: {
|
|
@@ -67,8 +67,12 @@ describe('plugin-meetings', () => {
|
|
|
67
67
|
|
|
68
68
|
beforeEach('setup new controls', () => {
|
|
69
69
|
newControls = {
|
|
70
|
+
disallowUnmute: {enabled: true},
|
|
70
71
|
lock: {},
|
|
71
72
|
meetingFull: {},
|
|
73
|
+
muteOnEntry: {enabled: true},
|
|
74
|
+
raiseHand: {enabled: true},
|
|
75
|
+
reactions: {enabled: true, showDisplayNameWithReactions: true},
|
|
72
76
|
record: {
|
|
73
77
|
recording: false,
|
|
74
78
|
paused: false,
|
|
@@ -77,8 +81,9 @@ describe('plugin-meetings', () => {
|
|
|
77
81
|
modifiedBy: 'George Kittle',
|
|
78
82
|
},
|
|
79
83
|
},
|
|
80
|
-
shareControl: {},
|
|
84
|
+
shareControl: {control: 'example-value'},
|
|
81
85
|
transcribe: {},
|
|
86
|
+
viewTheParticipantList: {enabled: true},
|
|
82
87
|
meetingContainer: {
|
|
83
88
|
meetingContainerUrl: 'http://new-url.com',
|
|
84
89
|
},
|
|
@@ -97,6 +102,84 @@ describe('plugin-meetings', () => {
|
|
|
97
102
|
assert.equal(locusInfo.controls, newControls);
|
|
98
103
|
});
|
|
99
104
|
|
|
105
|
+
it('should trigger the CONTROLS_MUTE_ON_ENTRY_CHANGED event when necessary', () => {
|
|
106
|
+
locusInfo.controls = {};
|
|
107
|
+
locusInfo.emitScoped = sinon.stub();
|
|
108
|
+
locusInfo.updateControls(newControls);
|
|
109
|
+
|
|
110
|
+
assert.calledWith(
|
|
111
|
+
locusInfo.emitScoped,
|
|
112
|
+
{file: 'locus-info', function: 'updateControls'},
|
|
113
|
+
LOCUSINFO.EVENTS.CONTROLS_MUTE_ON_ENTRY_CHANGED,
|
|
114
|
+
{state: newControls.muteOnEntry},
|
|
115
|
+
);
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
it('should trigger the CONTROLS_SHARE_CONTROL_CHANGED event when necessary', () => {
|
|
119
|
+
locusInfo.controls = {};
|
|
120
|
+
locusInfo.emitScoped = sinon.stub();
|
|
121
|
+
locusInfo.updateControls(newControls);
|
|
122
|
+
|
|
123
|
+
assert.calledWith(
|
|
124
|
+
locusInfo.emitScoped,
|
|
125
|
+
{file: 'locus-info', function: 'updateControls'},
|
|
126
|
+
LOCUSINFO.EVENTS.CONTROLS_SHARE_CONTROL_CHANGED,
|
|
127
|
+
{state: newControls.shareControl},
|
|
128
|
+
);
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
it('should trigger the CONTROLS_DISALLOW_UNMUTE_CHANGED event when necessary', () => {
|
|
132
|
+
locusInfo.controls = {};
|
|
133
|
+
locusInfo.emitScoped = sinon.stub();
|
|
134
|
+
locusInfo.updateControls(newControls);
|
|
135
|
+
|
|
136
|
+
assert.calledWith(
|
|
137
|
+
locusInfo.emitScoped,
|
|
138
|
+
{file: 'locus-info', function: 'updateControls'},
|
|
139
|
+
LOCUSINFO.EVENTS.CONTROLS_DISALLOW_UNMUTE_CHANGED,
|
|
140
|
+
{state: newControls.disallowUnmute},
|
|
141
|
+
);
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
it('should trigger the CONTROLS_REACTIONS_CHANGED event when necessary', () => {
|
|
145
|
+
locusInfo.controls = {};
|
|
146
|
+
locusInfo.emitScoped = sinon.stub();
|
|
147
|
+
locusInfo.updateControls(newControls);
|
|
148
|
+
|
|
149
|
+
assert.calledWith(
|
|
150
|
+
locusInfo.emitScoped,
|
|
151
|
+
{file: 'locus-info', function: 'updateControls'},
|
|
152
|
+
LOCUSINFO.EVENTS.CONTROLS_REACTIONS_CHANGED,
|
|
153
|
+
{state: newControls.reactions},
|
|
154
|
+
);
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
it('should trigger the CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED event when necessary', () => {
|
|
158
|
+
locusInfo.controls = {};
|
|
159
|
+
locusInfo.emitScoped = sinon.stub();
|
|
160
|
+
locusInfo.updateControls(newControls);
|
|
161
|
+
|
|
162
|
+
assert.calledWith(
|
|
163
|
+
locusInfo.emitScoped,
|
|
164
|
+
{file: 'locus-info', function: 'updateControls'},
|
|
165
|
+
LOCUSINFO.EVENTS.CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED,
|
|
166
|
+
{state: newControls.viewTheParticipantList},
|
|
167
|
+
);
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
it('should trigger the CONTROLS_RAISE_HAND_CHANGED event when necessary', () => {
|
|
171
|
+
locusInfo.controls = {};
|
|
172
|
+
locusInfo.emitScoped = sinon.stub();
|
|
173
|
+
locusInfo.updateControls(newControls);
|
|
174
|
+
|
|
175
|
+
assert.calledWith(
|
|
176
|
+
locusInfo.emitScoped,
|
|
177
|
+
{file: 'locus-info', function: 'updateControls'},
|
|
178
|
+
LOCUSINFO.EVENTS.CONTROLS_RAISE_HAND_CHANGED,
|
|
179
|
+
{state: newControls.raiseHand},
|
|
180
|
+
);
|
|
181
|
+
});
|
|
182
|
+
|
|
100
183
|
it('should not trigger the CONTROLS_RECORDING_UPDATED event', () => {
|
|
101
184
|
locusInfo.controls = {};
|
|
102
185
|
locusInfo.emitScoped = sinon.stub();
|
|
@@ -56,6 +56,10 @@ describe('plugin-meetings', () => {
|
|
|
56
56
|
canUpdateShareControl: null,
|
|
57
57
|
canEnableViewTheParticipantsList: null,
|
|
58
58
|
canDisableViewTheParticipantsList: null,
|
|
59
|
+
canEnableRaiseHand: null,
|
|
60
|
+
canDisableRaiseHand: null,
|
|
61
|
+
canEnableVideo: null,
|
|
62
|
+
canDisableVideo: null,
|
|
59
63
|
...expected,
|
|
60
64
|
};
|
|
61
65
|
|
|
@@ -117,6 +121,10 @@ describe('plugin-meetings', () => {
|
|
|
117
121
|
'canUpdateShareControl',
|
|
118
122
|
'canEnableViewTheParticipantsList',
|
|
119
123
|
'canDisableViewTheParticipantsList',
|
|
124
|
+
'canEnableRaiseHand',
|
|
125
|
+
'canDisableRaiseHand',
|
|
126
|
+
'canEnableVideo',
|
|
127
|
+
'canDisableVideo',
|
|
120
128
|
].forEach((key) => {
|
|
121
129
|
it(`get and set for ${key} work as expected`, () => {
|
|
122
130
|
const inMeetingActions = new InMeetingActions();
|
|
@@ -4839,6 +4839,114 @@ describe('plugin-meetings', () => {
|
|
|
4839
4839
|
);
|
|
4840
4840
|
});
|
|
4841
4841
|
|
|
4842
|
+
it('listens to CONTROLS_MUTE_ON_ENTRY_CHANGED', async () => {
|
|
4843
|
+
const state = {example: 'value'}
|
|
4844
|
+
|
|
4845
|
+
await meeting.locusInfo.emitScoped(
|
|
4846
|
+
{function: 'test', file: 'test'},
|
|
4847
|
+
LOCUSINFO.EVENTS.CONTROLS_MUTE_ON_ENTRY_CHANGED,
|
|
4848
|
+
{state}
|
|
4849
|
+
);
|
|
4850
|
+
|
|
4851
|
+
assert.calledWith(
|
|
4852
|
+
TriggerProxy.trigger,
|
|
4853
|
+
meeting,
|
|
4854
|
+
{file: 'meeting/index', function: 'setupLocusControlsListener'},
|
|
4855
|
+
EVENT_TRIGGERS.MEETING_CONTROLS_MUTE_ON_ENTRY_UPDATED,
|
|
4856
|
+
{state},
|
|
4857
|
+
);
|
|
4858
|
+
});
|
|
4859
|
+
|
|
4860
|
+
it('listens to MEETING_CONTROLS_SHARE_CONTROL_UPDATED', async () => {
|
|
4861
|
+
const state = {example: 'value'}
|
|
4862
|
+
|
|
4863
|
+
await meeting.locusInfo.emitScoped(
|
|
4864
|
+
{function: 'test', file: 'test'},
|
|
4865
|
+
LOCUSINFO.EVENTS.CONTROLS_SHARE_CONTROL_CHANGED,
|
|
4866
|
+
{state}
|
|
4867
|
+
);
|
|
4868
|
+
|
|
4869
|
+
assert.calledWith(
|
|
4870
|
+
TriggerProxy.trigger,
|
|
4871
|
+
meeting,
|
|
4872
|
+
{file: 'meeting/index', function: 'setupLocusControlsListener'},
|
|
4873
|
+
EVENT_TRIGGERS.MEETING_CONTROLS_SHARE_CONTROL_UPDATED,
|
|
4874
|
+
{state},
|
|
4875
|
+
);
|
|
4876
|
+
});
|
|
4877
|
+
|
|
4878
|
+
it('listens to MEETING_CONTROLS_DISALLOW_UNMUTE_UPDATED', async () => {
|
|
4879
|
+
const state = {example: 'value'}
|
|
4880
|
+
|
|
4881
|
+
await meeting.locusInfo.emitScoped(
|
|
4882
|
+
{function: 'test', file: 'test'},
|
|
4883
|
+
LOCUSINFO.EVENTS.CONTROLS_DISALLOW_UNMUTE_CHANGED,
|
|
4884
|
+
{state}
|
|
4885
|
+
);
|
|
4886
|
+
|
|
4887
|
+
assert.calledWith(
|
|
4888
|
+
TriggerProxy.trigger,
|
|
4889
|
+
meeting,
|
|
4890
|
+
{file: 'meeting/index', function: 'setupLocusControlsListener'},
|
|
4891
|
+
EVENT_TRIGGERS.MEETING_CONTROLS_DISALLOW_UNMUTE_UPDATED,
|
|
4892
|
+
{state},
|
|
4893
|
+
);
|
|
4894
|
+
});
|
|
4895
|
+
|
|
4896
|
+
it('listens to MEETING_CONTROLS_REACTIONS_UPDATED', async () => {
|
|
4897
|
+
const state = {example: 'value'}
|
|
4898
|
+
|
|
4899
|
+
await meeting.locusInfo.emitScoped(
|
|
4900
|
+
{function: 'test', file: 'test'},
|
|
4901
|
+
LOCUSINFO.EVENTS.CONTROLS_REACTIONS_CHANGED,
|
|
4902
|
+
{state}
|
|
4903
|
+
);
|
|
4904
|
+
|
|
4905
|
+
assert.calledWith(
|
|
4906
|
+
TriggerProxy.trigger,
|
|
4907
|
+
meeting,
|
|
4908
|
+
{file: 'meeting/index', function: 'setupLocusControlsListener'},
|
|
4909
|
+
EVENT_TRIGGERS.MEETING_CONTROLS_REACTIONS_UPDATED,
|
|
4910
|
+
{state},
|
|
4911
|
+
);
|
|
4912
|
+
});
|
|
4913
|
+
|
|
4914
|
+
it('listens to MEETING_CONTROLS_VIEW_THE_PARTICIPANTS_LIST_UPDATED', async () => {
|
|
4915
|
+
const state = {example: 'value'}
|
|
4916
|
+
|
|
4917
|
+
await meeting.locusInfo.emitScoped(
|
|
4918
|
+
{function: 'test', file: 'test'},
|
|
4919
|
+
LOCUSINFO.EVENTS.CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED,
|
|
4920
|
+
{state}
|
|
4921
|
+
);
|
|
4922
|
+
|
|
4923
|
+
assert.calledWith(
|
|
4924
|
+
TriggerProxy.trigger,
|
|
4925
|
+
meeting,
|
|
4926
|
+
{file: 'meeting/index', function: 'setupLocusControlsListener'},
|
|
4927
|
+
EVENT_TRIGGERS.MEETING_CONTROLS_VIEW_THE_PARTICIPANTS_LIST_UPDATED,
|
|
4928
|
+
{state},
|
|
4929
|
+
);
|
|
4930
|
+
});
|
|
4931
|
+
|
|
4932
|
+
it('listens to MEETING_CONTROLS_RAISE_HAND_UPDATED', async () => {
|
|
4933
|
+
const state = {example: 'value'}
|
|
4934
|
+
|
|
4935
|
+
await meeting.locusInfo.emitScoped(
|
|
4936
|
+
{function: 'test', file: 'test'},
|
|
4937
|
+
LOCUSINFO.EVENTS.CONTROLS_RAISE_HAND_CHANGED,
|
|
4938
|
+
{state}
|
|
4939
|
+
);
|
|
4940
|
+
|
|
4941
|
+
assert.calledWith(
|
|
4942
|
+
TriggerProxy.trigger,
|
|
4943
|
+
meeting,
|
|
4944
|
+
{file: 'meeting/index', function: 'setupLocusControlsListener'},
|
|
4945
|
+
EVENT_TRIGGERS.MEETING_CONTROLS_RAISE_HAND_UPDATED,
|
|
4946
|
+
{state},
|
|
4947
|
+
);
|
|
4948
|
+
});
|
|
4949
|
+
|
|
4842
4950
|
it('listens to the timing that user joined into breakout', async () => {
|
|
4843
4951
|
const mainLocusUrl = 'mainLocusUrl123';
|
|
4844
4952
|
|