@webex/plugin-meetings 3.0.0-beta.50 → 3.0.0-beta.51
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 +2 -2
- package/dist/breakouts/breakout.js.map +1 -1
- package/dist/breakouts/index.js +25 -1
- package/dist/breakouts/index.js.map +1 -1
- package/package.json +18 -18
- package/src/breakouts/README.md +4 -4
- package/src/breakouts/breakout.ts +1 -2
- package/src/breakouts/index.ts +28 -0
- package/test/unit/spec/breakouts/breakout.ts +26 -27
- package/test/unit/spec/breakouts/index.ts +145 -88
|
@@ -115,7 +115,7 @@ var Breakout = _webexCore.WebexPlugin.extend({
|
|
|
115
115
|
parseRoster: function parseRoster(locus) {
|
|
116
116
|
this.members.locusParticipantsUpdate(locus);
|
|
117
117
|
},
|
|
118
|
-
|
|
118
|
+
/*
|
|
119
119
|
* Broadcast message to this breakout session's participants
|
|
120
120
|
* @param {String} message
|
|
121
121
|
* @param {Object} options
|
|
@@ -130,7 +130,7 @@ var Breakout = _webexCore.WebexPlugin.extend({
|
|
|
130
130
|
sessionId: this.sessionId
|
|
131
131
|
});
|
|
132
132
|
},
|
|
133
|
-
version: "3.0.0-beta.
|
|
133
|
+
version: "3.0.0-beta.51"
|
|
134
134
|
});
|
|
135
135
|
var _default = Breakout;
|
|
136
136
|
exports.default = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Breakout","WebexPlugin","extend","idAttribute","namespace","MEETINGS","breakoutRequest","BreakoutRequest","props","active","allowed","assigned","assignedCurrent","requested","current","name","sessionId","sessionType","groupId","url","derived","isMain","deps","fn","initialize","members","Members","parent","webex","join","request","method","HTTP_VERBS","POST","uri","body","leave","Error","mainSession","breakouts","filter","breakout","askForHelp","parseRoster","locus","locusParticipantsUpdate","broadcast","message","options"],"sources":["breakout.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {WebexPlugin} from '@webex/webex-core';\n\nimport {HTTP_VERBS, MEETINGS} from '../constants';\nimport LocusInfo from '../locus-info';\nimport Members from '../members';\nimport BreakoutRequest from './request';\n\n/**\n * @class\n */\nconst Breakout = WebexPlugin.extend({\n idAttribute: 'sessionId',\n\n namespace: MEETINGS,\n\n breakoutRequest: BreakoutRequest,\n props: {\n active: ['boolean', false, false], // this session is active\n allowed: ['boolean', false, false], // allowed to join this session\n assigned: ['boolean', false, false], // assigned to this session, but not necessarily joined yet\n assignedCurrent: ['boolean', false, false], // assigned AND current session\n requested: ['boolean', false, false], // requested by the host to join this session\n current: ['boolean', false, false], // the current joined session\n name: 'string',\n sessionId: 'string',\n sessionType: 'string',\n groupId: 'string',\n url: 'string', // where to send requests to\n },\n\n derived: {\n isMain: {\n deps: ['sessionType'],\n /**\n * If the breakout has no name, assume it is the main session\n * @returns {boolean}\n */\n fn() {\n return this.sessionType === 'MAIN';\n },\n },\n },\n\n initialize() {\n this.members = new Members({}, {parent: this.webex});\n // @ts-ignore\n this.breakoutRequest = new BreakoutRequest({webex: this.webex});\n },\n\n /**\n * Joins the breakout session\n * @returns {Promise}\n */\n join() {\n return this.request({\n method: HTTP_VERBS.POST,\n uri: `${this.url}/move`,\n body: {\n groupId: this.groupId,\n sessionId: this.sessionId,\n },\n });\n },\n\n /**\n * Leaves the breakout session to return to the main session\n * @returns {Promise}\n * @throws {Error} if an attempt is made to leave the main session or if the main session cannot be found\n */\n leave() {\n if (this.isMain) {\n throw new Error('Cannot leave the main session');\n }\n\n const mainSession = this.parent.breakouts.filter((breakout) => breakout.isMain)[0];\n\n if (!mainSession) {\n throw new Error('Cannot leave, no main session found');\n }\n\n return mainSession.join();\n },\n\n /**\n * Sends a help request for the current breakout\n * @returns {Promise}\n */\n askForHelp() {\n return this.request({\n method: HTTP_VERBS.POST,\n uri: `${this.url}/help`,\n body: {\n groupId: this.groupId,\n sessionId: this.sessionId,\n },\n });\n },\n\n /**\n * Parses the participants from the locus object\n * @param locus Locus object\n * @returns {void}\n */\n\n parseRoster(locus) {\n this.members.locusParticipantsUpdate(locus);\n },\n
|
|
1
|
+
{"version":3,"names":["Breakout","WebexPlugin","extend","idAttribute","namespace","MEETINGS","breakoutRequest","BreakoutRequest","props","active","allowed","assigned","assignedCurrent","requested","current","name","sessionId","sessionType","groupId","url","derived","isMain","deps","fn","initialize","members","Members","parent","webex","join","request","method","HTTP_VERBS","POST","uri","body","leave","Error","mainSession","breakouts","filter","breakout","askForHelp","parseRoster","locus","locusParticipantsUpdate","broadcast","message","options"],"sources":["breakout.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {WebexPlugin} from '@webex/webex-core';\n\nimport {HTTP_VERBS, MEETINGS} from '../constants';\nimport LocusInfo from '../locus-info';\nimport Members from '../members';\nimport BreakoutRequest from './request';\n\n/**\n * @class\n */\nconst Breakout = WebexPlugin.extend({\n idAttribute: 'sessionId',\n\n namespace: MEETINGS,\n\n breakoutRequest: BreakoutRequest,\n props: {\n active: ['boolean', false, false], // this session is active\n allowed: ['boolean', false, false], // allowed to join this session\n assigned: ['boolean', false, false], // assigned to this session, but not necessarily joined yet\n assignedCurrent: ['boolean', false, false], // assigned AND current session\n requested: ['boolean', false, false], // requested by the host to join this session\n current: ['boolean', false, false], // the current joined session\n name: 'string',\n sessionId: 'string',\n sessionType: 'string',\n groupId: 'string',\n url: 'string', // where to send requests to\n },\n\n derived: {\n isMain: {\n deps: ['sessionType'],\n /**\n * If the breakout has no name, assume it is the main session\n * @returns {boolean}\n */\n fn() {\n return this.sessionType === 'MAIN';\n },\n },\n },\n\n initialize() {\n this.members = new Members({}, {parent: this.webex});\n // @ts-ignore\n this.breakoutRequest = new BreakoutRequest({webex: this.webex});\n },\n\n /**\n * Joins the breakout session\n * @returns {Promise}\n */\n join() {\n return this.request({\n method: HTTP_VERBS.POST,\n uri: `${this.url}/move`,\n body: {\n groupId: this.groupId,\n sessionId: this.sessionId,\n },\n });\n },\n\n /**\n * Leaves the breakout session to return to the main session\n * @returns {Promise}\n * @throws {Error} if an attempt is made to leave the main session or if the main session cannot be found\n */\n leave() {\n if (this.isMain) {\n throw new Error('Cannot leave the main session');\n }\n\n const mainSession = this.parent.breakouts.filter((breakout) => breakout.isMain)[0];\n\n if (!mainSession) {\n throw new Error('Cannot leave, no main session found');\n }\n\n return mainSession.join();\n },\n\n /**\n * Sends a help request for the current breakout\n * @returns {Promise}\n */\n askForHelp() {\n return this.request({\n method: HTTP_VERBS.POST,\n uri: `${this.url}/help`,\n body: {\n groupId: this.groupId,\n sessionId: this.sessionId,\n },\n });\n },\n\n /**\n * Parses the participants from the locus object\n * @param locus Locus object\n * @returns {void}\n */\n\n parseRoster(locus) {\n this.members.locusParticipantsUpdate(locus);\n },\n /*\n * Broadcast message to this breakout session's participants\n * @param {String} message\n * @param {Object} options\n * @returns {Promise}\n */\n broadcast(message, options) {\n return this.breakoutRequest.broadcast({\n url: this.url,\n message,\n options,\n groupId: this.groupId,\n sessionId: this.sessionId,\n });\n },\n});\n\nexport default Breakout;\n"],"mappings":"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"}
|
package/dist/breakouts/index.js
CHANGED
|
@@ -548,7 +548,31 @@ var Breakouts = _webexCore.WebexPlugin.extend({
|
|
|
548
548
|
}, _callee4);
|
|
549
549
|
}))();
|
|
550
550
|
},
|
|
551
|
-
|
|
551
|
+
/**
|
|
552
|
+
* assign participants to breakout session
|
|
553
|
+
* @param {Array} sessions
|
|
554
|
+
* @returns {void}
|
|
555
|
+
*/
|
|
556
|
+
assign: function assign(sessions) {
|
|
557
|
+
var internalSessions = sessions.map(function (item) {
|
|
558
|
+
return {
|
|
559
|
+
id: item.id,
|
|
560
|
+
assigned: item.memberIds,
|
|
561
|
+
assignedEmails: item.emails
|
|
562
|
+
};
|
|
563
|
+
});
|
|
564
|
+
return this.request({
|
|
565
|
+
method: _constants.HTTP_VERBS.PUT,
|
|
566
|
+
uri: this.url,
|
|
567
|
+
body: {
|
|
568
|
+
groups: [{
|
|
569
|
+
id: this.breakoutGroupId,
|
|
570
|
+
sessions: internalSessions
|
|
571
|
+
}]
|
|
572
|
+
}
|
|
573
|
+
});
|
|
574
|
+
},
|
|
575
|
+
version: "3.0.0-beta.51"
|
|
552
576
|
});
|
|
553
577
|
var _default = Breakouts;
|
|
554
578
|
exports.default = _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Breakouts","WebexPlugin","extend","namespace","MEETINGS","breakoutRequest","BreakoutRequest","collections","breakouts","BreakoutCollection","props","allowBackToMain","delayCloseTime","enableBreakoutSession","groupId","name","sessionId","sessionType","startTime","status","url","locusUrl","breakoutServiceUrl","mainLocusUrl","groups","children","currentBreakoutSession","Breakout","derived","isInMainSession","deps","fn","BREAKOUTS","SESSION_TYPES","MAIN","breakoutGroupId","length","id","initialize","listenTo","STATUS","CLOSING","trigger","EVENTS","BREAKOUTS_CLOSING","debouncedQueryRosters","queryRosters","leading","trailing","listenToBroadcastMessages","listenToBreakoutRosters","webex","cleanUp","stopListening","locusUrlUpdate","set","breakoutServiceUrlUpdate","request","uri","qs","btoa","then","result","rosters","body","forEach","locus","handleRosterUpdate","MEMBERS_UPDATE","catch","error","LoggerProxy","logger","controls","breakout","session","get","parseRoster","internal","llm","event","data","senderUserId","sentTime","message","MESSAGE","mercury","updateBreakout","params","current","SESSION_STATES","ACTIVE","ALLOWED","ASSIGNED_CURRENT","REQUESTED","updateBreakoutSessions","payload","breakoutSessions","state","ASSIGNED","getMainSession","mainSession","filter","isMain","Error","askAllToReturn","method","HTTP_VERBS","POST","broadcast","options","enableBreakouts","err","reject","toggleBreakout","enable","undefined","info","doToggleBreakout","PUT","create","sessions","boServiceErrorHandler","breakInfo","resolve","clearSessions","action","ACTION","DELETE","start","START","allowToJoinLater","duration","DEFAULT_DURATION","end","CLOSE","getBreakout","editlock","GET"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.\n */\nimport {WebexPlugin} from '@webex/webex-core';\nimport {debounce, forEach} from 'lodash';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nimport {BREAKOUTS, MEETINGS, HTTP_VERBS} from '../constants';\n\nimport Breakout from './breakout';\nimport BreakoutCollection from './collection';\nimport BreakoutRequest from './request';\nimport {boServiceErrorHandler} from './utils';\n\n/**\n * @class Breakouts\n */\nconst Breakouts = WebexPlugin.extend({\n namespace: MEETINGS,\n breakoutRequest: BreakoutRequest,\n collections: {\n breakouts: BreakoutCollection,\n },\n\n props: {\n allowBackToMain: 'boolean', // only present when in a breakout session\n delayCloseTime: 'number', // appears once breakouts start\n enableBreakoutSession: 'boolean', // appears from the moment you enable breakouts\n groupId: 'string', // appears from the moment you enable breakouts\n name: 'string', // only present when in a breakout session\n sessionId: 'string', // appears from the moment you enable breakouts\n sessionType: 'string', // appears from the moment you enable breakouts\n startTime: 'string', // appears once breakouts start\n status: 'string', // only present when in a breakout session\n url: 'string', // appears from the moment you enable breakouts\n locusUrl: 'string', // the current locus url\n breakoutServiceUrl: 'string', // the current breakout resouce url\n mainLocusUrl: 'string', // the locus url of the main session\n groups: 'array', // appears when create breakouts\n },\n\n children: {\n currentBreakoutSession: Breakout,\n },\n\n derived: {\n isInMainSession: {\n deps: ['sessionType'],\n /**\n * Returns true if the user is in the main session\n * @returns {boolean}\n */\n fn() {\n return this.sessionType === BREAKOUTS.SESSION_TYPES.MAIN;\n },\n },\n breakoutGroupId: {\n deps: ['groups'],\n /**\n * Returns the actived group id\n * @returns {boolean}\n */\n fn() {\n if (this.groups?.length) {\n return this.groups[0].id;\n }\n\n return '';\n },\n },\n },\n\n /**\n * initialize for the breakouts\n * @returns {void}\n */\n initialize() {\n this.listenTo(this, 'change:status', () => {\n if (this.status === BREAKOUTS.STATUS.CLOSING) {\n this.trigger(BREAKOUTS.EVENTS.BREAKOUTS_CLOSING);\n }\n });\n this.debouncedQueryRosters = debounce(this.queryRosters, 10, {\n leading: true,\n trailing: false,\n });\n this.listenTo(this.breakouts, 'add', () => {\n this.debouncedQueryRosters();\n });\n this.listenToBroadcastMessages();\n this.listenToBreakoutRosters();\n // @ts-ignore\n this.breakoutRequest = new BreakoutRequest({webex: this.webex});\n },\n\n /**\n * Calls this to clean up listeners\n * @returns {void}\n */\n cleanUp() {\n this.stopListening();\n },\n\n /**\n * Update the current locus url of the meeting\n * @param {string} locusUrl // locus url\n * @returns {void}\n */\n locusUrlUpdate(locusUrl) {\n this.set('locusUrl', locusUrl);\n const {isInMainSession, mainLocusUrl} = this;\n if (isInMainSession || !mainLocusUrl) {\n this.set('mainLocusUrl', locusUrl);\n }\n },\n\n /**\n * Update the current breakout resouce url\n * @param {string} breakoutServiceUrl\n * @returns {void}\n */\n breakoutServiceUrlUpdate(breakoutServiceUrl) {\n this.set('breakoutServiceUrl', `${breakoutServiceUrl}/breakout/`);\n },\n\n /**\n * The initial roster lists need to be queried because you don't\n * get a breakout.roster event when you join the meeting\n * @returns {void}\n */\n queryRosters() {\n this.webex\n .request({uri: `${this.url}/roster`, qs: {locusUrl: btoa(this.locusUrl)}})\n .then((result) => {\n const {\n body: {rosters},\n } = result;\n\n rosters?.forEach(({locus}) => {\n this.handleRosterUpdate(locus);\n });\n\n this.trigger(BREAKOUTS.EVENTS.MEMBERS_UPDATE);\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:breakouts#queryRosters failed', error);\n });\n },\n\n /**\n *\n * @param {Object} locus // locus object\n * @returns {void}\n */\n handleRosterUpdate(locus) {\n const sessionId = locus.controls?.breakout?.sessionId;\n\n const session = this.breakouts.get(sessionId);\n\n if (!session) {\n return;\n }\n\n session.parseRoster(locus);\n },\n\n /**\n * Sets up listener for broadcast messages sent to the breakout session\n * @returns {void}\n */\n listenToBroadcastMessages() {\n this.listenTo(this.webex.internal.llm, 'event:breakout.message', (event) => {\n const {\n data: {senderUserId, sentTime, message},\n } = event;\n\n this.trigger(BREAKOUTS.EVENTS.MESSAGE, {\n senderUserId,\n sentTime,\n message,\n // FIXME: This is only the current sessionId\n // We'd need to check that the dataChannelUrl is still the same\n // to guarantee that this message was sent to this session\n sessionId: this.currentBreakoutSession.sessionId,\n });\n });\n },\n\n /**\n * Sets up a listener for roster messags from mecury\n * @returns {void}\n */\n listenToBreakoutRosters() {\n this.listenTo(this.webex.internal.mercury, 'event:breakout.roster', (event) => {\n this.handleRosterUpdate(event.data.locus);\n this.trigger(BREAKOUTS.EVENTS.MEMBERS_UPDATE);\n });\n },\n\n /**\n * Updates the information about the current breakout\n * @param {Object} params\n * @returns {void}\n */\n updateBreakout(params) {\n this.set(params);\n this.set('groups', params.groups);\n\n this.set('currentBreakoutSession', {\n sessionId: params.sessionId,\n groupId: params.groupId,\n name: params.name,\n current: true,\n sessionType: params.sessionType,\n url: params.url,\n [BREAKOUTS.SESSION_STATES.ACTIVE]: false,\n [BREAKOUTS.SESSION_STATES.ALLOWED]: false,\n [BREAKOUTS.SESSION_STATES.ALLOWED]: false,\n [BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT]: false,\n [BREAKOUTS.SESSION_STATES.REQUESTED]: false,\n });\n\n this.set('enableBreakoutSession', params.enableBreakoutSession);\n },\n\n /**\n * Updates the information about available breakouts\n * @param {Object} payload\n * @returns {void}\n */\n updateBreakoutSessions(payload) {\n const breakouts = {};\n\n if (payload.breakoutSessions) {\n forEach(BREAKOUTS.SESSION_STATES, (state) => {\n forEach(payload.breakoutSessions[state], (breakout) => {\n const {sessionId} = breakout;\n\n if (!breakouts[sessionId]) {\n breakouts[sessionId] = breakout;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ACTIVE] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ASSIGNED] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ALLOWED] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.REQUESTED] = false;\n }\n\n breakouts[sessionId][state] = true;\n });\n });\n }\n\n forEach(breakouts, (breakout: typeof Breakout) => {\n // eslint-disable-next-line no-param-reassign\n breakout.url = this.url;\n });\n\n this.breakouts.set(Object.values(breakouts));\n },\n /**\n * get main session\n * @returns {Breakout}\n */\n getMainSession() {\n if (this.isInMainSession) {\n return this.currentBreakoutSession;\n }\n\n const mainSession = this.breakouts.filter((breakout) => breakout.isMain)[0];\n if (!mainSession) {\n throw new Error('no main session found');\n }\n\n return mainSession;\n },\n /**\n * Host/CoHost ask all participants return to main session\n * @returns {Promise}\n */\n askAllToReturn() {\n const mainSession = this.getMainSession();\n\n return this.webex.request({\n method: HTTP_VERBS.POST,\n uri: `${this.url}/requestMove`,\n body: {\n groupId: mainSession.groupId,\n sessionId: mainSession.sessionId,\n },\n });\n },\n\n /**\n * Broadcast message to all breakout session's participants\n * @param {String} message\n * @param {Object} options\n * @returns {Promise}\n */\n broadcast(message, options) {\n const {breakoutGroupId} = this;\n if (!breakoutGroupId) {\n throw new Error('Cannot broadcast, no breakout session found');\n }\n\n return this.breakoutRequest.broadcast({\n url: this.url,\n message,\n options,\n groupId: breakoutGroupId,\n });\n },\n /**\n * Make enable breakout resource\n * @returns {Promise}\n */\n enableBreakouts() {\n if (this.breakoutServiceUrl) {\n // @ts-ignore\n return this.webex\n .request({\n method: HTTP_VERBS.POST,\n uri: this.breakoutServiceUrl,\n body: {\n locusUrl: this.locusUrl,\n },\n })\n .catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#touchBreakout --> Error provisioning error ${err}`\n );\n throw err;\n });\n }\n\n return Promise.reject(new Error(`enableBreakouts: the breakoutServiceUrl is empty`));\n },\n\n /**\n * Make the meeting enbale or disable breakout session\n * @param {boolean} enable\n * @returns {Promise}\n */\n async toggleBreakout(enable) {\n if (this.enableBreakoutSession === undefined) {\n const info = await this.enableBreakouts();\n if (!enable) {\n // if enable is false, updateBreakout set the param then set enableBreakoutSession as false\n this.updateBreakout(info.body);\n await this.doToggleBreakout(enable);\n }\n } else {\n await this.doToggleBreakout(enable);\n }\n },\n\n /**\n * do toggle meeting breakout session enable or disable\n * @param {boolean} enable\n * @returns {Promise}\n */\n doToggleBreakout(enable) {\n // @ts-ignore\n return this.webex.request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body: {\n enableBreakoutSession: enable,\n },\n });\n },\n\n /**\n * Create new breakout sessions\n * @param {object} sessions -- breakout session group\n * @returns {Promise}\n */\n async create(sessions) {\n // @ts-ignore\n const breakInfo = await this.webex\n .request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body: {\n groups: [\n {\n sessions,\n },\n ],\n },\n })\n .catch((error) => {\n return Promise.reject(\n boServiceErrorHandler(error, 'Breakouts#create --> Edit lock token mismatch')\n );\n });\n\n if (breakInfo.body?.groups) {\n this.set('groups', breakInfo.body.groups);\n }\n\n return Promise.resolve(breakInfo);\n },\n\n /**\n * Delete all breakout sessions\n * @returns {Promise}\n */\n async clearSessions() {\n // @ts-ignore\n const breakInfo = await this.webex\n .request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body: {\n groups: [\n {\n action: BREAKOUTS.ACTION.DELETE,\n },\n ],\n },\n })\n .catch((error) => {\n return Promise.reject(\n boServiceErrorHandler(error, 'Breakouts#clearSessions --> Edit lock token mismatch')\n );\n });\n\n if (breakInfo.body?.groups) {\n this.set('groups', breakInfo.body.groups);\n }\n\n return Promise.resolve(breakInfo);\n },\n\n /**\n * Host or cohost starts breakout sessions\n * @param {object} params\n * @returns {Promise}\n */\n start(params = {}) {\n const action = BREAKOUTS.ACTION.START;\n const payload = {\n id: this.breakoutGroupId,\n action,\n allowBackToMain: false,\n allowToJoinLater: false,\n duration: BREAKOUTS.DEFAULT_DURATION,\n ...params,\n };\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body: {\n groups: [payload],\n },\n }).catch((error) => {\n return Promise.reject(\n boServiceErrorHandler(error, 'Breakouts#start --> Edit lock token mismatch')\n );\n });\n },\n\n /**\n * Host or cohost ends breakout sessions\n * @param {object} params\n * @returns {Promise}\n */\n end(params = {}) {\n const {delayCloseTime, breakoutGroupId: id} = this;\n const action = BREAKOUTS.ACTION.CLOSE;\n const payload = {\n id,\n action,\n delayCloseTime,\n ...params,\n };\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body: {\n groups: [payload],\n },\n }).catch((error) => {\n return Promise.reject(\n boServiceErrorHandler(error, 'Breakouts#end --> Edit lock token mismatch')\n );\n });\n },\n\n /**\n * get existed breakout sessions\n * @param {boolean} editlock -- lock operations of the breakout sessions\n * @returns {Promise}\n */\n async getBreakout(editlock) {\n const breakout = await this.request({\n method: HTTP_VERBS.GET,\n uri: this.url + (editlock ? `?editlock=${editlock}` : ''),\n });\n\n if (breakout.body?.groups) {\n this.set('groups', breakout.body.groups);\n }\n\n return breakout;\n },\n});\n\nexport default Breakouts;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Breakouts","WebexPlugin","extend","namespace","MEETINGS","breakoutRequest","BreakoutRequest","collections","breakouts","BreakoutCollection","props","allowBackToMain","delayCloseTime","enableBreakoutSession","groupId","name","sessionId","sessionType","startTime","status","url","locusUrl","breakoutServiceUrl","mainLocusUrl","groups","children","currentBreakoutSession","Breakout","derived","isInMainSession","deps","fn","BREAKOUTS","SESSION_TYPES","MAIN","breakoutGroupId","length","id","initialize","listenTo","STATUS","CLOSING","trigger","EVENTS","BREAKOUTS_CLOSING","debouncedQueryRosters","queryRosters","leading","trailing","listenToBroadcastMessages","listenToBreakoutRosters","webex","cleanUp","stopListening","locusUrlUpdate","set","breakoutServiceUrlUpdate","request","uri","qs","btoa","then","result","rosters","body","forEach","locus","handleRosterUpdate","MEMBERS_UPDATE","catch","error","LoggerProxy","logger","controls","breakout","session","get","parseRoster","internal","llm","event","data","senderUserId","sentTime","message","MESSAGE","mercury","updateBreakout","params","current","SESSION_STATES","ACTIVE","ALLOWED","ASSIGNED_CURRENT","REQUESTED","updateBreakoutSessions","payload","breakoutSessions","state","ASSIGNED","getMainSession","mainSession","filter","isMain","Error","askAllToReturn","method","HTTP_VERBS","POST","broadcast","options","enableBreakouts","err","reject","toggleBreakout","enable","undefined","info","doToggleBreakout","PUT","create","sessions","boServiceErrorHandler","breakInfo","resolve","clearSessions","action","ACTION","DELETE","start","START","allowToJoinLater","duration","DEFAULT_DURATION","end","CLOSE","getBreakout","editlock","GET","assign","internalSessions","map","item","assigned","memberIds","assignedEmails","emails"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.\n */\nimport {WebexPlugin} from '@webex/webex-core';\nimport {debounce, forEach} from 'lodash';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nimport {BREAKOUTS, MEETINGS, HTTP_VERBS} from '../constants';\n\nimport Breakout from './breakout';\nimport BreakoutCollection from './collection';\nimport BreakoutRequest from './request';\nimport {boServiceErrorHandler} from './utils';\n\n/**\n * @class Breakouts\n */\nconst Breakouts = WebexPlugin.extend({\n namespace: MEETINGS,\n breakoutRequest: BreakoutRequest,\n collections: {\n breakouts: BreakoutCollection,\n },\n\n props: {\n allowBackToMain: 'boolean', // only present when in a breakout session\n delayCloseTime: 'number', // appears once breakouts start\n enableBreakoutSession: 'boolean', // appears from the moment you enable breakouts\n groupId: 'string', // appears from the moment you enable breakouts\n name: 'string', // only present when in a breakout session\n sessionId: 'string', // appears from the moment you enable breakouts\n sessionType: 'string', // appears from the moment you enable breakouts\n startTime: 'string', // appears once breakouts start\n status: 'string', // only present when in a breakout session\n url: 'string', // appears from the moment you enable breakouts\n locusUrl: 'string', // the current locus url\n breakoutServiceUrl: 'string', // the current breakout resouce url\n mainLocusUrl: 'string', // the locus url of the main session\n groups: 'array', // appears when create breakouts\n },\n\n children: {\n currentBreakoutSession: Breakout,\n },\n\n derived: {\n isInMainSession: {\n deps: ['sessionType'],\n /**\n * Returns true if the user is in the main session\n * @returns {boolean}\n */\n fn() {\n return this.sessionType === BREAKOUTS.SESSION_TYPES.MAIN;\n },\n },\n breakoutGroupId: {\n deps: ['groups'],\n /**\n * Returns the actived group id\n * @returns {boolean}\n */\n fn() {\n if (this.groups?.length) {\n return this.groups[0].id;\n }\n\n return '';\n },\n },\n },\n\n /**\n * initialize for the breakouts\n * @returns {void}\n */\n initialize() {\n this.listenTo(this, 'change:status', () => {\n if (this.status === BREAKOUTS.STATUS.CLOSING) {\n this.trigger(BREAKOUTS.EVENTS.BREAKOUTS_CLOSING);\n }\n });\n this.debouncedQueryRosters = debounce(this.queryRosters, 10, {\n leading: true,\n trailing: false,\n });\n this.listenTo(this.breakouts, 'add', () => {\n this.debouncedQueryRosters();\n });\n this.listenToBroadcastMessages();\n this.listenToBreakoutRosters();\n // @ts-ignore\n this.breakoutRequest = new BreakoutRequest({webex: this.webex});\n },\n\n /**\n * Calls this to clean up listeners\n * @returns {void}\n */\n cleanUp() {\n this.stopListening();\n },\n\n /**\n * Update the current locus url of the meeting\n * @param {string} locusUrl // locus url\n * @returns {void}\n */\n locusUrlUpdate(locusUrl) {\n this.set('locusUrl', locusUrl);\n const {isInMainSession, mainLocusUrl} = this;\n if (isInMainSession || !mainLocusUrl) {\n this.set('mainLocusUrl', locusUrl);\n }\n },\n\n /**\n * Update the current breakout resouce url\n * @param {string} breakoutServiceUrl\n * @returns {void}\n */\n breakoutServiceUrlUpdate(breakoutServiceUrl) {\n this.set('breakoutServiceUrl', `${breakoutServiceUrl}/breakout/`);\n },\n\n /**\n * The initial roster lists need to be queried because you don't\n * get a breakout.roster event when you join the meeting\n * @returns {void}\n */\n queryRosters() {\n this.webex\n .request({uri: `${this.url}/roster`, qs: {locusUrl: btoa(this.locusUrl)}})\n .then((result) => {\n const {\n body: {rosters},\n } = result;\n\n rosters?.forEach(({locus}) => {\n this.handleRosterUpdate(locus);\n });\n\n this.trigger(BREAKOUTS.EVENTS.MEMBERS_UPDATE);\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:breakouts#queryRosters failed', error);\n });\n },\n\n /**\n *\n * @param {Object} locus // locus object\n * @returns {void}\n */\n handleRosterUpdate(locus) {\n const sessionId = locus.controls?.breakout?.sessionId;\n\n const session = this.breakouts.get(sessionId);\n\n if (!session) {\n return;\n }\n\n session.parseRoster(locus);\n },\n\n /**\n * Sets up listener for broadcast messages sent to the breakout session\n * @returns {void}\n */\n listenToBroadcastMessages() {\n this.listenTo(this.webex.internal.llm, 'event:breakout.message', (event) => {\n const {\n data: {senderUserId, sentTime, message},\n } = event;\n\n this.trigger(BREAKOUTS.EVENTS.MESSAGE, {\n senderUserId,\n sentTime,\n message,\n // FIXME: This is only the current sessionId\n // We'd need to check that the dataChannelUrl is still the same\n // to guarantee that this message was sent to this session\n sessionId: this.currentBreakoutSession.sessionId,\n });\n });\n },\n\n /**\n * Sets up a listener for roster messags from mecury\n * @returns {void}\n */\n listenToBreakoutRosters() {\n this.listenTo(this.webex.internal.mercury, 'event:breakout.roster', (event) => {\n this.handleRosterUpdate(event.data.locus);\n this.trigger(BREAKOUTS.EVENTS.MEMBERS_UPDATE);\n });\n },\n\n /**\n * Updates the information about the current breakout\n * @param {Object} params\n * @returns {void}\n */\n updateBreakout(params) {\n this.set(params);\n this.set('groups', params.groups);\n\n this.set('currentBreakoutSession', {\n sessionId: params.sessionId,\n groupId: params.groupId,\n name: params.name,\n current: true,\n sessionType: params.sessionType,\n url: params.url,\n [BREAKOUTS.SESSION_STATES.ACTIVE]: false,\n [BREAKOUTS.SESSION_STATES.ALLOWED]: false,\n [BREAKOUTS.SESSION_STATES.ALLOWED]: false,\n [BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT]: false,\n [BREAKOUTS.SESSION_STATES.REQUESTED]: false,\n });\n\n this.set('enableBreakoutSession', params.enableBreakoutSession);\n },\n\n /**\n * Updates the information about available breakouts\n * @param {Object} payload\n * @returns {void}\n */\n updateBreakoutSessions(payload) {\n const breakouts = {};\n\n if (payload.breakoutSessions) {\n forEach(BREAKOUTS.SESSION_STATES, (state) => {\n forEach(payload.breakoutSessions[state], (breakout) => {\n const {sessionId} = breakout;\n\n if (!breakouts[sessionId]) {\n breakouts[sessionId] = breakout;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ACTIVE] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ASSIGNED] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ALLOWED] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.REQUESTED] = false;\n }\n\n breakouts[sessionId][state] = true;\n });\n });\n }\n\n forEach(breakouts, (breakout: typeof Breakout) => {\n // eslint-disable-next-line no-param-reassign\n breakout.url = this.url;\n });\n\n this.breakouts.set(Object.values(breakouts));\n },\n /**\n * get main session\n * @returns {Breakout}\n */\n getMainSession() {\n if (this.isInMainSession) {\n return this.currentBreakoutSession;\n }\n\n const mainSession = this.breakouts.filter((breakout) => breakout.isMain)[0];\n if (!mainSession) {\n throw new Error('no main session found');\n }\n\n return mainSession;\n },\n /**\n * Host/CoHost ask all participants return to main session\n * @returns {Promise}\n */\n askAllToReturn() {\n const mainSession = this.getMainSession();\n\n return this.webex.request({\n method: HTTP_VERBS.POST,\n uri: `${this.url}/requestMove`,\n body: {\n groupId: mainSession.groupId,\n sessionId: mainSession.sessionId,\n },\n });\n },\n\n /**\n * Broadcast message to all breakout session's participants\n * @param {String} message\n * @param {Object} options\n * @returns {Promise}\n */\n broadcast(message, options) {\n const {breakoutGroupId} = this;\n if (!breakoutGroupId) {\n throw new Error('Cannot broadcast, no breakout session found');\n }\n\n return this.breakoutRequest.broadcast({\n url: this.url,\n message,\n options,\n groupId: breakoutGroupId,\n });\n },\n /**\n * Make enable breakout resource\n * @returns {Promise}\n */\n enableBreakouts() {\n if (this.breakoutServiceUrl) {\n // @ts-ignore\n return this.webex\n .request({\n method: HTTP_VERBS.POST,\n uri: this.breakoutServiceUrl,\n body: {\n locusUrl: this.locusUrl,\n },\n })\n .catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#touchBreakout --> Error provisioning error ${err}`\n );\n throw err;\n });\n }\n\n return Promise.reject(new Error(`enableBreakouts: the breakoutServiceUrl is empty`));\n },\n\n /**\n * Make the meeting enbale or disable breakout session\n * @param {boolean} enable\n * @returns {Promise}\n */\n async toggleBreakout(enable) {\n if (this.enableBreakoutSession === undefined) {\n const info = await this.enableBreakouts();\n if (!enable) {\n // if enable is false, updateBreakout set the param then set enableBreakoutSession as false\n this.updateBreakout(info.body);\n await this.doToggleBreakout(enable);\n }\n } else {\n await this.doToggleBreakout(enable);\n }\n },\n\n /**\n * do toggle meeting breakout session enable or disable\n * @param {boolean} enable\n * @returns {Promise}\n */\n doToggleBreakout(enable) {\n // @ts-ignore\n return this.webex.request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body: {\n enableBreakoutSession: enable,\n },\n });\n },\n\n /**\n * Create new breakout sessions\n * @param {object} sessions -- breakout session group\n * @returns {Promise}\n */\n async create(sessions) {\n // @ts-ignore\n const breakInfo = await this.webex\n .request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body: {\n groups: [\n {\n sessions,\n },\n ],\n },\n })\n .catch((error) => {\n return Promise.reject(\n boServiceErrorHandler(error, 'Breakouts#create --> Edit lock token mismatch')\n );\n });\n\n if (breakInfo.body?.groups) {\n this.set('groups', breakInfo.body.groups);\n }\n\n return Promise.resolve(breakInfo);\n },\n\n /**\n * Delete all breakout sessions\n * @returns {Promise}\n */\n async clearSessions() {\n // @ts-ignore\n const breakInfo = await this.webex\n .request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body: {\n groups: [\n {\n action: BREAKOUTS.ACTION.DELETE,\n },\n ],\n },\n })\n .catch((error) => {\n return Promise.reject(\n boServiceErrorHandler(error, 'Breakouts#clearSessions --> Edit lock token mismatch')\n );\n });\n\n if (breakInfo.body?.groups) {\n this.set('groups', breakInfo.body.groups);\n }\n\n return Promise.resolve(breakInfo);\n },\n\n /**\n * Host or cohost starts breakout sessions\n * @param {object} params\n * @returns {Promise}\n */\n start(params = {}) {\n const action = BREAKOUTS.ACTION.START;\n const payload = {\n id: this.breakoutGroupId,\n action,\n allowBackToMain: false,\n allowToJoinLater: false,\n duration: BREAKOUTS.DEFAULT_DURATION,\n ...params,\n };\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body: {\n groups: [payload],\n },\n }).catch((error) => {\n return Promise.reject(\n boServiceErrorHandler(error, 'Breakouts#start --> Edit lock token mismatch')\n );\n });\n },\n\n /**\n * Host or cohost ends breakout sessions\n * @param {object} params\n * @returns {Promise}\n */\n end(params = {}) {\n const {delayCloseTime, breakoutGroupId: id} = this;\n const action = BREAKOUTS.ACTION.CLOSE;\n const payload = {\n id,\n action,\n delayCloseTime,\n ...params,\n };\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body: {\n groups: [payload],\n },\n }).catch((error) => {\n return Promise.reject(\n boServiceErrorHandler(error, 'Breakouts#end --> Edit lock token mismatch')\n );\n });\n },\n\n /**\n * get existed breakout sessions\n * @param {boolean} editlock -- lock operations of the breakout sessions\n * @returns {Promise}\n */\n async getBreakout(editlock) {\n const breakout = await this.request({\n method: HTTP_VERBS.GET,\n uri: this.url + (editlock ? `?editlock=${editlock}` : ''),\n });\n\n if (breakout.body?.groups) {\n this.set('groups', breakout.body.groups);\n }\n\n return breakout;\n },\n\n /**\n * assign participants to breakout session\n * @param {Array} sessions\n * @returns {void}\n */\n assign(sessions: any[]) {\n const internalSessions = sessions.map((item) => {\n return {\n id: item.id,\n assigned: item.memberIds,\n assignedEmails: item.emails,\n };\n });\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body: {\n groups: [\n {\n id: this.breakoutGroupId,\n sessions: internalSessions,\n },\n ],\n },\n });\n },\n});\n\nexport default Breakouts;\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webex/plugin-meetings",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.51",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "Cisco EULA (https://www.cisco.com/c/en/us/products/end-user-license-agreement.html)",
|
|
6
6
|
"contributors": [
|
|
@@ -32,12 +32,12 @@
|
|
|
32
32
|
"build": "yarn run -T tsc --declaration true --declarationDir ./dist/types"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@webex/plugin-meetings": "3.0.0-beta.
|
|
36
|
-
"@webex/test-helper-chai": "3.0.0-beta.
|
|
37
|
-
"@webex/test-helper-mocha": "3.0.0-beta.
|
|
38
|
-
"@webex/test-helper-mock-webex": "3.0.0-beta.
|
|
39
|
-
"@webex/test-helper-retry": "3.0.0-beta.
|
|
40
|
-
"@webex/test-helper-test-users": "3.0.0-beta.
|
|
35
|
+
"@webex/plugin-meetings": "3.0.0-beta.51",
|
|
36
|
+
"@webex/test-helper-chai": "3.0.0-beta.51",
|
|
37
|
+
"@webex/test-helper-mocha": "3.0.0-beta.51",
|
|
38
|
+
"@webex/test-helper-mock-webex": "3.0.0-beta.51",
|
|
39
|
+
"@webex/test-helper-retry": "3.0.0-beta.51",
|
|
40
|
+
"@webex/test-helper-test-users": "3.0.0-beta.51",
|
|
41
41
|
"chai": "^4.3.4",
|
|
42
42
|
"chai-as-promised": "^7.1.1",
|
|
43
43
|
"jsdom-global": "3.0.2",
|
|
@@ -46,18 +46,18 @@
|
|
|
46
46
|
"typescript": "^4.7.4"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@webex/common": "3.0.0-beta.
|
|
49
|
+
"@webex/common": "3.0.0-beta.51",
|
|
50
50
|
"@webex/internal-media-core": "1.35.3",
|
|
51
|
-
"@webex/internal-plugin-conversation": "3.0.0-beta.
|
|
52
|
-
"@webex/internal-plugin-device": "3.0.0-beta.
|
|
53
|
-
"@webex/internal-plugin-llm": "3.0.0-beta.
|
|
54
|
-
"@webex/internal-plugin-mercury": "3.0.0-beta.
|
|
55
|
-
"@webex/internal-plugin-metrics": "3.0.0-beta.
|
|
56
|
-
"@webex/internal-plugin-support": "3.0.0-beta.
|
|
57
|
-
"@webex/internal-plugin-user": "3.0.0-beta.
|
|
58
|
-
"@webex/plugin-people": "3.0.0-beta.
|
|
59
|
-
"@webex/plugin-rooms": "3.0.0-beta.
|
|
60
|
-
"@webex/webex-core": "3.0.0-beta.
|
|
51
|
+
"@webex/internal-plugin-conversation": "3.0.0-beta.51",
|
|
52
|
+
"@webex/internal-plugin-device": "3.0.0-beta.51",
|
|
53
|
+
"@webex/internal-plugin-llm": "3.0.0-beta.51",
|
|
54
|
+
"@webex/internal-plugin-mercury": "3.0.0-beta.51",
|
|
55
|
+
"@webex/internal-plugin-metrics": "3.0.0-beta.51",
|
|
56
|
+
"@webex/internal-plugin-support": "3.0.0-beta.51",
|
|
57
|
+
"@webex/internal-plugin-user": "3.0.0-beta.51",
|
|
58
|
+
"@webex/plugin-people": "3.0.0-beta.51",
|
|
59
|
+
"@webex/plugin-rooms": "3.0.0-beta.51",
|
|
60
|
+
"@webex/webex-core": "3.0.0-beta.51",
|
|
61
61
|
"ampersand-collection": "^2.0.2",
|
|
62
62
|
"bowser": "^2.11.0",
|
|
63
63
|
"btoa": "^1.2.1",
|
package/src/breakouts/README.md
CHANGED
|
@@ -107,10 +107,6 @@ note: None of these are currently implemented
|
|
|
107
107
|
// Move a participant to breakout
|
|
108
108
|
breakout.move(participant)
|
|
109
109
|
|
|
110
|
-
// Assign a particpant to a breakout
|
|
111
|
-
// Not sure whether there is any difference from move
|
|
112
|
-
breakout.assign(participant)
|
|
113
|
-
|
|
114
110
|
// Remove someone from a breakout session
|
|
115
111
|
// This returns them to the main session
|
|
116
112
|
breakout.remove(participant)
|
|
@@ -134,6 +130,10 @@ breakout.rename(newSessionName)
|
|
|
134
130
|
// Start breakout sessions with necessary params
|
|
135
131
|
breakouts.start(params)
|
|
136
132
|
|
|
133
|
+
// Assign a particpant/participants to breakouts/a breakout
|
|
134
|
+
// sessions should be like: [{id:'xx',memberIds:['111'],emails:['111@ss.com']},...]
|
|
135
|
+
breakouts.assign(sessions)
|
|
136
|
+
|
|
137
137
|
// End breakout sessions with necessary params
|
|
138
138
|
breakouts.end(params)
|
|
139
139
|
|
|
@@ -109,8 +109,7 @@ const Breakout = WebexPlugin.extend({
|
|
|
109
109
|
parseRoster(locus) {
|
|
110
110
|
this.members.locusParticipantsUpdate(locus);
|
|
111
111
|
},
|
|
112
|
-
|
|
113
|
-
/**
|
|
112
|
+
/*
|
|
114
113
|
* Broadcast message to this breakout session's participants
|
|
115
114
|
* @param {String} message
|
|
116
115
|
* @param {Object} options
|
package/src/breakouts/index.ts
CHANGED
|
@@ -506,6 +506,34 @@ const Breakouts = WebexPlugin.extend({
|
|
|
506
506
|
|
|
507
507
|
return breakout;
|
|
508
508
|
},
|
|
509
|
+
|
|
510
|
+
/**
|
|
511
|
+
* assign participants to breakout session
|
|
512
|
+
* @param {Array} sessions
|
|
513
|
+
* @returns {void}
|
|
514
|
+
*/
|
|
515
|
+
assign(sessions: any[]) {
|
|
516
|
+
const internalSessions = sessions.map((item) => {
|
|
517
|
+
return {
|
|
518
|
+
id: item.id,
|
|
519
|
+
assigned: item.memberIds,
|
|
520
|
+
assignedEmails: item.emails,
|
|
521
|
+
};
|
|
522
|
+
});
|
|
523
|
+
|
|
524
|
+
return this.request({
|
|
525
|
+
method: HTTP_VERBS.PUT,
|
|
526
|
+
uri: this.url,
|
|
527
|
+
body: {
|
|
528
|
+
groups: [
|
|
529
|
+
{
|
|
530
|
+
id: this.breakoutGroupId,
|
|
531
|
+
sessions: internalSessions,
|
|
532
|
+
},
|
|
533
|
+
],
|
|
534
|
+
},
|
|
535
|
+
});
|
|
536
|
+
},
|
|
509
537
|
});
|
|
510
538
|
|
|
511
539
|
export default Breakouts;
|
|
@@ -3,12 +3,10 @@ import Breakout from '@webex/plugin-meetings/src/breakouts/breakout';
|
|
|
3
3
|
import Breakouts from '@webex/plugin-meetings/src/breakouts';
|
|
4
4
|
import Members from '@webex/plugin-meetings/src/members';
|
|
5
5
|
import MockWebex from '@webex/test-helper-mock-webex';
|
|
6
|
-
import sinon from
|
|
7
|
-
|
|
6
|
+
import sinon from 'sinon';
|
|
8
7
|
|
|
9
8
|
describe('plugin-meetings', () => {
|
|
10
9
|
describe('breakout', () => {
|
|
11
|
-
|
|
12
10
|
let webex;
|
|
13
11
|
let breakout;
|
|
14
12
|
let breakouts;
|
|
@@ -29,34 +27,33 @@ describe('plugin-meetings', () => {
|
|
|
29
27
|
describe('initialize', () => {
|
|
30
28
|
it('creates the object correctly', () => {
|
|
31
29
|
assert.instanceOf(breakout.members, Members);
|
|
32
|
-
})
|
|
30
|
+
});
|
|
33
31
|
});
|
|
34
32
|
|
|
35
33
|
describe('#join', () => {
|
|
36
34
|
it('makes the request as expected', async () => {
|
|
37
|
-
const result = await breakout.join()
|
|
35
|
+
const result = await breakout.join();
|
|
38
36
|
|
|
39
37
|
assert.calledOnceWithExactly(webex.request, {
|
|
40
38
|
method: 'POST',
|
|
41
39
|
uri: 'url/move',
|
|
42
40
|
body: {
|
|
43
41
|
groupId: 'groupId',
|
|
44
|
-
sessionId: 'sessionId'
|
|
45
|
-
}
|
|
42
|
+
sessionId: 'sessionId',
|
|
43
|
+
},
|
|
46
44
|
});
|
|
47
45
|
|
|
48
|
-
assert.equal(result, 'REQUEST_RETURN_VALUE')
|
|
46
|
+
assert.equal(result, 'REQUEST_RETURN_VALUE');
|
|
49
47
|
});
|
|
50
48
|
});
|
|
51
49
|
|
|
52
50
|
describe('#leave', () => {
|
|
53
51
|
it('throws error if in main sesson', async () => {
|
|
54
|
-
|
|
55
52
|
breakout.set('sessionType', 'MAIN');
|
|
56
53
|
|
|
57
54
|
const fn = () => {
|
|
58
55
|
breakout.leave();
|
|
59
|
-
}
|
|
56
|
+
};
|
|
60
57
|
|
|
61
58
|
expect(fn).to.throw(/Cannot leave the main session/);
|
|
62
59
|
});
|
|
@@ -64,14 +61,14 @@ describe('plugin-meetings', () => {
|
|
|
64
61
|
it('throws error if there is no main session', async () => {
|
|
65
62
|
const fn = () => {
|
|
66
63
|
breakout.leave();
|
|
67
|
-
}
|
|
64
|
+
};
|
|
68
65
|
|
|
69
66
|
expect(fn).to.throw(/Cannot leave, no main session found/);
|
|
70
67
|
});
|
|
71
68
|
|
|
72
69
|
it('joins the main session if in a breakout', async () => {
|
|
73
70
|
breakout.parent.breakouts.add({
|
|
74
|
-
sessionType: 'MAIN'
|
|
71
|
+
sessionType: 'MAIN',
|
|
75
72
|
});
|
|
76
73
|
|
|
77
74
|
const mainSession = breakouts.breakouts.models[0];
|
|
@@ -82,58 +79,60 @@ describe('plugin-meetings', () => {
|
|
|
82
79
|
|
|
83
80
|
assert.calledOnceWithExactly(mainSession.join);
|
|
84
81
|
assert.equal(result, 'JOIN_RETURN_VALUE');
|
|
85
|
-
})
|
|
82
|
+
});
|
|
86
83
|
});
|
|
87
84
|
|
|
88
85
|
describe('#askForHelp', () => {
|
|
89
86
|
it('makes the request as expected', async () => {
|
|
90
|
-
const result = await breakout.askForHelp()
|
|
87
|
+
const result = await breakout.askForHelp();
|
|
91
88
|
|
|
92
89
|
assert.calledOnceWithExactly(webex.request, {
|
|
93
90
|
method: 'POST',
|
|
94
91
|
uri: 'url/help',
|
|
95
92
|
body: {
|
|
96
93
|
groupId: 'groupId',
|
|
97
|
-
sessionId: 'sessionId'
|
|
98
|
-
}
|
|
94
|
+
sessionId: 'sessionId',
|
|
95
|
+
},
|
|
99
96
|
});
|
|
100
97
|
|
|
101
|
-
assert.equal(result, 'REQUEST_RETURN_VALUE')
|
|
98
|
+
assert.equal(result, 'REQUEST_RETURN_VALUE');
|
|
102
99
|
});
|
|
103
100
|
});
|
|
104
101
|
|
|
105
102
|
describe('#broadcast', () => {
|
|
106
103
|
it('makes the request as expected', async () => {
|
|
107
|
-
breakout.breakoutRequest.broadcast = sinon
|
|
108
|
-
|
|
104
|
+
breakout.breakoutRequest.broadcast = sinon
|
|
105
|
+
.stub()
|
|
106
|
+
.returns(Promise.resolve('REQUEST_RETURN_VALUE'));
|
|
107
|
+
let result = await breakout.broadcast('hello');
|
|
109
108
|
assert.calledWithExactly(breakout.breakoutRequest.broadcast, {
|
|
110
109
|
url: 'url',
|
|
111
110
|
message: 'hello',
|
|
112
111
|
options: undefined,
|
|
113
112
|
groupId: 'groupId',
|
|
114
|
-
sessionId: 'sessionId'
|
|
113
|
+
sessionId: 'sessionId',
|
|
115
114
|
});
|
|
116
115
|
|
|
117
|
-
assert.equal(result, 'REQUEST_RETURN_VALUE')
|
|
116
|
+
assert.equal(result, 'REQUEST_RETURN_VALUE');
|
|
118
117
|
|
|
119
|
-
result = await breakout.broadcast('hello', {presenters: true, cohosts: true})
|
|
118
|
+
result = await breakout.broadcast('hello', {presenters: true, cohosts: true});
|
|
120
119
|
|
|
121
120
|
assert.calledWithExactly(breakout.breakoutRequest.broadcast, {
|
|
122
121
|
url: 'url',
|
|
123
122
|
message: 'hello',
|
|
124
123
|
options: {presenters: true, cohosts: true},
|
|
125
124
|
groupId: 'groupId',
|
|
126
|
-
sessionId: 'sessionId'
|
|
125
|
+
sessionId: 'sessionId',
|
|
127
126
|
});
|
|
128
127
|
|
|
129
|
-
assert.equal(result, 'REQUEST_RETURN_VALUE')
|
|
128
|
+
assert.equal(result, 'REQUEST_RETURN_VALUE');
|
|
130
129
|
});
|
|
131
130
|
});
|
|
132
131
|
|
|
133
132
|
describe('#parseRoster', () => {
|
|
134
133
|
it('calls locusParticipantsUpdate', () => {
|
|
135
134
|
breakout.members = {
|
|
136
|
-
locusParticipantsUpdate: sinon.stub()
|
|
135
|
+
locusParticipantsUpdate: sinon.stub(),
|
|
137
136
|
};
|
|
138
137
|
|
|
139
138
|
const locusData = {some: 'data'};
|
|
@@ -141,7 +140,7 @@ describe('plugin-meetings', () => {
|
|
|
141
140
|
|
|
142
141
|
assert.calledOnceWithExactly(breakout.members.locusParticipantsUpdate, locusData);
|
|
143
142
|
assert.equal(result, undefined);
|
|
144
|
-
})
|
|
145
|
-
})
|
|
143
|
+
});
|
|
144
|
+
});
|
|
146
145
|
});
|
|
147
146
|
});
|
|
@@ -5,7 +5,7 @@ import {BREAKOUTS} from '@webex/plugin-meetings/src/constants';
|
|
|
5
5
|
import sinon from 'sinon';
|
|
6
6
|
import MockWebex from '@webex/test-helper-mock-webex';
|
|
7
7
|
import testUtils from '../../../utils/testUtils';
|
|
8
|
-
import BreakoutEditLockedError from
|
|
8
|
+
import BreakoutEditLockedError from '@webex/plugin-meetings/src/breakouts/edit-lock-error';
|
|
9
9
|
|
|
10
10
|
const getBOResponse = (status: string) => {
|
|
11
11
|
return {
|
|
@@ -347,13 +347,13 @@ describe('plugin-meetings', () => {
|
|
|
347
347
|
enableBreakoutSession: true,
|
|
348
348
|
startTime: 'startTime',
|
|
349
349
|
status: 'active',
|
|
350
|
-
locusUrl: 'locusUrl'
|
|
350
|
+
locusUrl: 'locusUrl',
|
|
351
351
|
});
|
|
352
352
|
const payload = {
|
|
353
353
|
breakoutSessions: {
|
|
354
354
|
active: [{sessionId: 'sessionId1'}],
|
|
355
|
-
}
|
|
356
|
-
}
|
|
355
|
+
},
|
|
356
|
+
};
|
|
357
357
|
breakouts.updateBreakoutSessions(payload);
|
|
358
358
|
|
|
359
359
|
breakouts.set('sessionType', BREAKOUTS.SESSION_TYPES.MAIN);
|
|
@@ -363,8 +363,8 @@ describe('plugin-meetings', () => {
|
|
|
363
363
|
const payload2 = {
|
|
364
364
|
breakoutSessions: {
|
|
365
365
|
active: [{sessionId: 'sessionId1', sessionType: BREAKOUTS.SESSION_TYPES.MAIN}],
|
|
366
|
-
}
|
|
367
|
-
}
|
|
366
|
+
},
|
|
367
|
+
};
|
|
368
368
|
breakouts.updateBreakoutSessions(payload2);
|
|
369
369
|
breakouts.set('sessionType', 'BREAKOUT');
|
|
370
370
|
result = breakouts.getMainSession();
|
|
@@ -373,12 +373,12 @@ describe('plugin-meetings', () => {
|
|
|
373
373
|
it('throw error if cannot find main session', () => {
|
|
374
374
|
const fn = () => {
|
|
375
375
|
breakouts.getMainSession();
|
|
376
|
-
}
|
|
376
|
+
};
|
|
377
377
|
expect(fn).to.throw(/no main session found/);
|
|
378
378
|
});
|
|
379
379
|
});
|
|
380
380
|
|
|
381
|
-
describe('#askAllToReturn',
|
|
381
|
+
describe('#askAllToReturn', () => {
|
|
382
382
|
it('makes the request as expected', async () => {
|
|
383
383
|
breakouts.set('sessionType', BREAKOUTS.SESSION_TYPES.MAIN);
|
|
384
384
|
breakouts.currentBreakoutSession.sessionId = 'sessionId';
|
|
@@ -389,8 +389,8 @@ describe('plugin-meetings', () => {
|
|
|
389
389
|
uri: 'url/requestMove',
|
|
390
390
|
body: {
|
|
391
391
|
groupId: 'groupId',
|
|
392
|
-
sessionId: 'sessionId'
|
|
393
|
-
}
|
|
392
|
+
sessionId: 'sessionId',
|
|
393
|
+
},
|
|
394
394
|
});
|
|
395
395
|
});
|
|
396
396
|
});
|
|
@@ -403,16 +403,18 @@ describe('plugin-meetings', () => {
|
|
|
403
403
|
});
|
|
404
404
|
|
|
405
405
|
describe('#toggleBreakout', () => {
|
|
406
|
-
it('enableBreakoutSession is undefined, run enableBreakouts then toggleBreakout', async() => {
|
|
406
|
+
it('enableBreakoutSession is undefined, run enableBreakouts then toggleBreakout', async () => {
|
|
407
407
|
breakouts.enableBreakoutSession = undefined;
|
|
408
|
-
breakouts.enableBreakouts = sinon.stub().resolves(
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
408
|
+
breakouts.enableBreakouts = sinon.stub().resolves({
|
|
409
|
+
body: {
|
|
410
|
+
sessionId: 'sessionId',
|
|
411
|
+
groupId: 'groupId',
|
|
412
|
+
name: 'name',
|
|
413
|
+
current: true,
|
|
414
|
+
sessionType: 'sessionType',
|
|
415
|
+
url: 'url',
|
|
416
|
+
},
|
|
417
|
+
});
|
|
416
418
|
breakouts.updateBreakout = sinon.stub().resolves();
|
|
417
419
|
breakouts.doToggleBreakout = sinon.stub().resolves();
|
|
418
420
|
|
|
@@ -424,12 +426,12 @@ describe('plugin-meetings', () => {
|
|
|
424
426
|
name: 'name',
|
|
425
427
|
current: true,
|
|
426
428
|
sessionType: 'sessionType',
|
|
427
|
-
url: 'url'
|
|
429
|
+
url: 'url',
|
|
428
430
|
});
|
|
429
431
|
assert.calledOnceWithExactly(breakouts.doToggleBreakout, false);
|
|
430
432
|
});
|
|
431
433
|
|
|
432
|
-
it('enableBreakoutSession is exist, run toggleBreakout', async() => {
|
|
434
|
+
it('enableBreakoutSession is exist, run toggleBreakout', async () => {
|
|
433
435
|
breakouts.enableBreakoutSession = true;
|
|
434
436
|
breakouts.doToggleBreakout = sinon.stub().resolves();
|
|
435
437
|
await breakouts.toggleBreakout(true);
|
|
@@ -445,17 +447,19 @@ describe('plugin-meetings', () => {
|
|
|
445
447
|
method: 'POST',
|
|
446
448
|
uri: 'breakoutServiceUrl',
|
|
447
449
|
body: {
|
|
448
|
-
locusUrl: 'locusUrl'
|
|
449
|
-
}
|
|
450
|
+
locusUrl: 'locusUrl',
|
|
451
|
+
},
|
|
450
452
|
});
|
|
451
453
|
|
|
452
454
|
assert.equal(result, 'REQUEST_RETURN_VALUE');
|
|
453
455
|
});
|
|
454
456
|
});
|
|
455
457
|
|
|
456
|
-
describe('#broadcast',
|
|
458
|
+
describe('#broadcast', () => {
|
|
457
459
|
it('makes the request as expected', async () => {
|
|
458
|
-
breakouts.breakoutRequest.broadcast = sinon
|
|
460
|
+
breakouts.breakoutRequest.broadcast = sinon
|
|
461
|
+
.stub()
|
|
462
|
+
.returns(Promise.resolve('REQUEST_RETURN_VALUE'));
|
|
459
463
|
webex.request.returns(
|
|
460
464
|
Promise.resolve({
|
|
461
465
|
body: getBOResponse('OPEN'),
|
|
@@ -467,7 +471,7 @@ describe('plugin-meetings', () => {
|
|
|
467
471
|
url: 'url',
|
|
468
472
|
message: 'hello',
|
|
469
473
|
options: undefined,
|
|
470
|
-
groupId: 'groupId'
|
|
474
|
+
groupId: 'groupId',
|
|
471
475
|
});
|
|
472
476
|
|
|
473
477
|
assert.equal(result, 'REQUEST_RETURN_VALUE');
|
|
@@ -477,16 +481,16 @@ describe('plugin-meetings', () => {
|
|
|
477
481
|
url: 'url',
|
|
478
482
|
groupId: 'groupId',
|
|
479
483
|
message: 'hello',
|
|
480
|
-
options: {presenters: true, cohosts: true}
|
|
484
|
+
options: {presenters: true, cohosts: true},
|
|
481
485
|
});
|
|
482
|
-
assert.equal(result, 'REQUEST_RETURN_VALUE')
|
|
486
|
+
assert.equal(result, 'REQUEST_RETURN_VALUE');
|
|
483
487
|
});
|
|
484
488
|
|
|
485
489
|
it('throw error if no breakout group id found', () => {
|
|
486
490
|
breakouts.set('sessionType', BREAKOUTS.SESSION_TYPES.MAIN);
|
|
487
491
|
const fn = () => {
|
|
488
492
|
breakouts.broadcast('hello');
|
|
489
|
-
}
|
|
493
|
+
};
|
|
490
494
|
expect(fn).to.throw(/no breakout session found/);
|
|
491
495
|
});
|
|
492
496
|
});
|
|
@@ -511,25 +515,39 @@ describe('plugin-meetings', () => {
|
|
|
511
515
|
|
|
512
516
|
assert.equal(arg.uri, 'url');
|
|
513
517
|
assert.equal(arg.method, 'PUT');
|
|
514
|
-
assert.deepEqual(argObj1, {
|
|
515
|
-
|
|
518
|
+
assert.deepEqual(argObj1, {
|
|
519
|
+
id: 'groupId',
|
|
520
|
+
action: 'START',
|
|
521
|
+
allowBackToMain: false,
|
|
522
|
+
allowToJoinLater: false,
|
|
523
|
+
duration: BREAKOUTS.DEFAULT_DURATION,
|
|
524
|
+
});
|
|
525
|
+
assert.deepEqual(argObj2, {
|
|
526
|
+
id: 'id',
|
|
527
|
+
action: 'START',
|
|
528
|
+
allowBackToMain: false,
|
|
529
|
+
allowToJoinLater: false,
|
|
530
|
+
someOtherParam: 'someOtherParam',
|
|
531
|
+
duration: BREAKOUTS.DEFAULT_DURATION,
|
|
532
|
+
});
|
|
516
533
|
assert.deepEqual(result, {body: getBOResponse('OPEN')});
|
|
517
534
|
});
|
|
518
535
|
|
|
519
536
|
it('rejects when edit lock token mismatch', async () => {
|
|
520
|
-
webex.request.returns(
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
537
|
+
webex.request.returns(
|
|
538
|
+
Promise.reject({
|
|
539
|
+
body: {
|
|
540
|
+
errorCode: BREAKOUTS.ERROR_CODE.EDIT_LOCK_TOKEN_MISMATCH,
|
|
541
|
+
message: 'Edit lock token mismatch',
|
|
542
|
+
},
|
|
543
|
+
})
|
|
544
|
+
);
|
|
526
545
|
|
|
527
546
|
await assert.isRejected(
|
|
528
547
|
breakouts.start(),
|
|
529
548
|
BreakoutEditLockedError,
|
|
530
549
|
'Edit lock token mismatch'
|
|
531
550
|
);
|
|
532
|
-
|
|
533
551
|
});
|
|
534
552
|
});
|
|
535
553
|
|
|
@@ -553,25 +571,31 @@ describe('plugin-meetings', () => {
|
|
|
553
571
|
|
|
554
572
|
assert.equal(arg.uri, 'url');
|
|
555
573
|
assert.equal(arg.method, 'PUT');
|
|
556
|
-
assert.deepEqual(argObj1, {id:'groupId', action: 'CLOSE', delayCloseTime: 60});
|
|
557
|
-
assert.deepEqual(argObj2, {
|
|
574
|
+
assert.deepEqual(argObj1, {id: 'groupId', action: 'CLOSE', delayCloseTime: 60});
|
|
575
|
+
assert.deepEqual(argObj2, {
|
|
576
|
+
id: 'id',
|
|
577
|
+
action: 'CLOSE',
|
|
578
|
+
delayCloseTime: 60,
|
|
579
|
+
someOtherParam: 'someOtherParam',
|
|
580
|
+
});
|
|
558
581
|
assert.deepEqual(result, {body: getBOResponse('CLOSING')});
|
|
559
582
|
});
|
|
560
583
|
|
|
561
584
|
it('rejects when edit lock token mismatch', async () => {
|
|
562
|
-
webex.request.returns(
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
585
|
+
webex.request.returns(
|
|
586
|
+
Promise.reject({
|
|
587
|
+
body: {
|
|
588
|
+
errorCode: BREAKOUTS.ERROR_CODE.EDIT_LOCK_TOKEN_MISMATCH,
|
|
589
|
+
message: 'Edit lock token mismatch',
|
|
590
|
+
},
|
|
591
|
+
})
|
|
592
|
+
);
|
|
568
593
|
|
|
569
594
|
await assert.isRejected(
|
|
570
595
|
breakouts.end(),
|
|
571
596
|
BreakoutEditLockedError,
|
|
572
597
|
'Edit lock token mismatch'
|
|
573
598
|
);
|
|
574
|
-
|
|
575
599
|
});
|
|
576
600
|
});
|
|
577
601
|
|
|
@@ -605,8 +629,8 @@ describe('plugin-meetings', () => {
|
|
|
605
629
|
method: 'PUT',
|
|
606
630
|
uri: 'url',
|
|
607
631
|
body: {
|
|
608
|
-
enableBreakoutSession: true
|
|
609
|
-
}
|
|
632
|
+
enableBreakoutSession: true,
|
|
633
|
+
},
|
|
610
634
|
});
|
|
611
635
|
|
|
612
636
|
assert.equal(result, 'REQUEST_RETURN_VALUE');
|
|
@@ -615,15 +639,19 @@ describe('plugin-meetings', () => {
|
|
|
615
639
|
|
|
616
640
|
describe('delete', () => {
|
|
617
641
|
it('makes the request as expected', async () => {
|
|
618
|
-
webex.request.returns(
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
642
|
+
webex.request.returns(
|
|
643
|
+
Promise.resolve({
|
|
644
|
+
body: {
|
|
645
|
+
groups: [
|
|
646
|
+
{
|
|
647
|
+
id: '455556a4-37cd-4baa-89bc-8730581a1cc0',
|
|
648
|
+
status: 'CLOSE',
|
|
649
|
+
type: 'BREAKOUT',
|
|
650
|
+
},
|
|
651
|
+
],
|
|
652
|
+
},
|
|
653
|
+
})
|
|
654
|
+
);
|
|
627
655
|
|
|
628
656
|
const result = await breakouts.clearSessions();
|
|
629
657
|
assert.calledOnceWithExactly(webex.request, {
|
|
@@ -635,66 +663,71 @@ describe('plugin-meetings', () => {
|
|
|
635
663
|
action: BREAKOUTS.ACTION.DELETE,
|
|
636
664
|
},
|
|
637
665
|
],
|
|
638
|
-
}
|
|
666
|
+
},
|
|
639
667
|
});
|
|
640
668
|
|
|
641
|
-
assert.equal(breakouts.groups[0].status,
|
|
669
|
+
assert.equal(breakouts.groups[0].status, 'CLOSE');
|
|
642
670
|
});
|
|
643
671
|
|
|
644
672
|
it('rejects when edit lock token mismatch', async () => {
|
|
645
|
-
webex.request.returns(
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
673
|
+
webex.request.returns(
|
|
674
|
+
Promise.reject({
|
|
675
|
+
body: {
|
|
676
|
+
errorCode: BREAKOUTS.ERROR_CODE.EDIT_LOCK_TOKEN_MISMATCH,
|
|
677
|
+
message: 'Edit lock token mismatch',
|
|
678
|
+
},
|
|
679
|
+
})
|
|
680
|
+
);
|
|
651
681
|
|
|
652
682
|
await assert.isRejected(
|
|
653
683
|
breakouts.clearSessions(),
|
|
654
684
|
BreakoutEditLockedError,
|
|
655
685
|
'Edit lock token mismatch'
|
|
656
686
|
);
|
|
657
|
-
|
|
658
687
|
});
|
|
659
688
|
});
|
|
660
689
|
|
|
661
690
|
describe('create', () => {
|
|
662
691
|
it('response not include groups info', async () => {
|
|
663
|
-
const sessions = [{
|
|
692
|
+
const sessions = [{name: 'session1', anyoneCanJoin: true}];
|
|
664
693
|
const result = await breakouts.create(sessions);
|
|
665
694
|
|
|
666
695
|
assert.equal(result, 'REQUEST_RETURN_VALUE');
|
|
667
|
-
|
|
668
696
|
});
|
|
669
697
|
|
|
670
698
|
it('response include groups info', async () => {
|
|
671
|
-
const sessions = [{
|
|
699
|
+
const sessions = [{name: 'session1', anyoneCanJoin: true}];
|
|
672
700
|
|
|
673
|
-
webex.request.returns(
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
701
|
+
webex.request.returns(
|
|
702
|
+
Promise.resolve({
|
|
703
|
+
body: {
|
|
704
|
+
groups: [
|
|
705
|
+
{
|
|
706
|
+
id: '455556a4-37cd-4baa-89bc-8730581a1cc0',
|
|
707
|
+
status: 'PENDING',
|
|
708
|
+
type: 'BREAKOUT',
|
|
709
|
+
},
|
|
710
|
+
],
|
|
711
|
+
},
|
|
712
|
+
})
|
|
713
|
+
);
|
|
682
714
|
|
|
683
715
|
const result = await breakouts.create(sessions);
|
|
684
716
|
|
|
685
|
-
assert.equal(breakouts.groups[0].id,
|
|
686
|
-
|
|
717
|
+
assert.equal(breakouts.groups[0].id, '455556a4-37cd-4baa-89bc-8730581a1cc0');
|
|
687
718
|
});
|
|
688
719
|
|
|
689
720
|
it('rejects when edit lock token mismatch', async () => {
|
|
690
|
-
const sessions = [{
|
|
721
|
+
const sessions = [{name: 'session1', anyoneCanJoin: true}];
|
|
691
722
|
|
|
692
|
-
webex.request.returns(
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
723
|
+
webex.request.returns(
|
|
724
|
+
Promise.reject({
|
|
725
|
+
body: {
|
|
726
|
+
errorCode: BREAKOUTS.ERROR_CODE.EDIT_LOCK_TOKEN_MISMATCH,
|
|
727
|
+
message: 'Edit lock token mismatch',
|
|
728
|
+
},
|
|
729
|
+
})
|
|
730
|
+
);
|
|
698
731
|
|
|
699
732
|
await assert.isRejected(
|
|
700
733
|
breakouts.create(sessions),
|
|
@@ -703,5 +736,29 @@ describe('plugin-meetings', () => {
|
|
|
703
736
|
);
|
|
704
737
|
});
|
|
705
738
|
});
|
|
739
|
+
|
|
740
|
+
describe('#assign', () => {
|
|
741
|
+
it('assign members and emails to a breakout session', async () => {
|
|
742
|
+
breakouts.assign = sinon.stub().returns(Promise.resolve('ASSIGN_RETURN_VALUE'));
|
|
743
|
+
const params = [{id: 'sessionId', memberIds: ['111'], emails: ['111@cisco.com']}];
|
|
744
|
+
const result = await breakouts.assign(params);
|
|
745
|
+
assert.calledOnceWithExactly(breakouts.assign, params);
|
|
746
|
+
assert.equal(result, 'ASSIGN_RETURN_VALUE');
|
|
747
|
+
});
|
|
748
|
+
it('assign only members to a breakout session', async () => {
|
|
749
|
+
breakouts.assign = sinon.stub().returns(Promise.resolve('ASSIGN_RETURN_VALUE'));
|
|
750
|
+
const params = [{id: 'sessionId', memberIds: ['111']}];
|
|
751
|
+
const result = await breakouts.assign(params);
|
|
752
|
+
assert.calledOnceWithExactly(breakouts.assign, params);
|
|
753
|
+
assert.equal(result, 'ASSIGN_RETURN_VALUE');
|
|
754
|
+
});
|
|
755
|
+
it('assign only emails to a breakout session', async () => {
|
|
756
|
+
breakouts.assign = sinon.stub().returns(Promise.resolve('ASSIGN_RETURN_VALUE'));
|
|
757
|
+
const params = [{id: 'sessionId', emails: ['111@cisco.com']}];
|
|
758
|
+
const result = await breakouts.assign(params);
|
|
759
|
+
assert.calledOnceWithExactly(breakouts.assign, params);
|
|
760
|
+
assert.equal(result, 'ASSIGN_RETURN_VALUE');
|
|
761
|
+
});
|
|
762
|
+
});
|
|
706
763
|
});
|
|
707
764
|
});
|