@webex/internal-plugin-flag 2.59.3-next.1 → 2.59.4-next.1
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/.eslintrc.js +6 -6
- package/README.md +42 -42
- package/babel.config.js +3 -3
- package/dist/config.js +2 -2
- package/dist/config.js.map +1 -1
- package/dist/flag.js +33 -33
- package/dist/flag.js.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/jest.config.js +3 -3
- package/package.json +11 -11
- package/process +1 -1
- package/src/config.js +7 -7
- package/src/flag.js +176 -176
- package/src/index.js +20 -20
- package/test/integration/spec/flag.js +195 -195
- package/test/unit/spec/flag.js +41 -41
package/.eslintrc.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
const config = {
|
|
2
|
-
root: true,
|
|
3
|
-
extends: ['@webex/eslint-config-legacy'],
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
module.exports = config;
|
|
1
|
+
const config = {
|
|
2
|
+
root: true,
|
|
3
|
+
extends: ['@webex/eslint-config-legacy'],
|
|
4
|
+
};
|
|
5
|
+
|
|
6
|
+
module.exports = config;
|
package/README.md
CHANGED
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
# @webex/internal-plugin-flag
|
|
2
|
-
|
|
3
|
-
[](https://github.com/RichardLitt/standard-readme)
|
|
4
|
-
|
|
5
|
-
> Plugin for the Flag service
|
|
6
|
-
|
|
7
|
-
This is an internal Cisco Webex plugin. As such, it does not strictly adhere to semantic versioning. Use at your own risk. If you're not working on one of our first party clients, please look at our [developer api](https://developer.webex.com/) and stick to our public plugins.
|
|
8
|
-
|
|
9
|
-
- [Install](#install)
|
|
10
|
-
- [Usage](#usage)
|
|
11
|
-
- [Contribute](#contribute)
|
|
12
|
-
- [Maintainers](#maintainers)
|
|
13
|
-
- [License](#license)
|
|
14
|
-
|
|
15
|
-
## Install
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
npm install --save @webex/internal-plugin-flag
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
## Usage
|
|
22
|
-
|
|
23
|
-
```js
|
|
24
|
-
import '@webex/internal-plugin-flag';
|
|
25
|
-
|
|
26
|
-
import WebexCore from '@webex/webex-core';
|
|
27
|
-
|
|
28
|
-
const webex = new WebexCore();
|
|
29
|
-
webex.internal.flag.WHATEVER;
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
## Maintainers
|
|
33
|
-
|
|
34
|
-
This package is maintained by [Cisco Webex for Developers](https://developer.webex.com/).
|
|
35
|
-
|
|
36
|
-
## Contribute
|
|
37
|
-
|
|
38
|
-
Pull requests welcome. Please see [CONTRIBUTING.md](https://github.com/webex/webex-js-sdk/blob/master/CONTRIBUTING.md) for more details.
|
|
39
|
-
|
|
40
|
-
## License
|
|
41
|
-
|
|
42
|
-
© 2016-2020 Cisco and/or its affiliates. All Rights Reserved.
|
|
1
|
+
# @webex/internal-plugin-flag
|
|
2
|
+
|
|
3
|
+
[](https://github.com/RichardLitt/standard-readme)
|
|
4
|
+
|
|
5
|
+
> Plugin for the Flag service
|
|
6
|
+
|
|
7
|
+
This is an internal Cisco Webex plugin. As such, it does not strictly adhere to semantic versioning. Use at your own risk. If you're not working on one of our first party clients, please look at our [developer api](https://developer.webex.com/) and stick to our public plugins.
|
|
8
|
+
|
|
9
|
+
- [Install](#install)
|
|
10
|
+
- [Usage](#usage)
|
|
11
|
+
- [Contribute](#contribute)
|
|
12
|
+
- [Maintainers](#maintainers)
|
|
13
|
+
- [License](#license)
|
|
14
|
+
|
|
15
|
+
## Install
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npm install --save @webex/internal-plugin-flag
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Usage
|
|
22
|
+
|
|
23
|
+
```js
|
|
24
|
+
import '@webex/internal-plugin-flag';
|
|
25
|
+
|
|
26
|
+
import WebexCore from '@webex/webex-core';
|
|
27
|
+
|
|
28
|
+
const webex = new WebexCore();
|
|
29
|
+
webex.internal.flag.WHATEVER;
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Maintainers
|
|
33
|
+
|
|
34
|
+
This package is maintained by [Cisco Webex for Developers](https://developer.webex.com/).
|
|
35
|
+
|
|
36
|
+
## Contribute
|
|
37
|
+
|
|
38
|
+
Pull requests welcome. Please see [CONTRIBUTING.md](https://github.com/webex/webex-js-sdk/blob/master/CONTRIBUTING.md) for more details.
|
|
39
|
+
|
|
40
|
+
## License
|
|
41
|
+
|
|
42
|
+
© 2016-2020 Cisco and/or its affiliates. All Rights Reserved.
|
package/babel.config.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const babelConfigLegacy = require('@webex/babel-config-legacy');
|
|
2
|
-
|
|
3
|
-
module.exports = babelConfigLegacy;
|
|
1
|
+
const babelConfigLegacy = require('@webex/babel-config-legacy');
|
|
2
|
+
|
|
3
|
+
module.exports = babelConfigLegacy;
|
package/dist/config.js
CHANGED
|
@@ -5,8 +5,8 @@ _Object$defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
|
-
/*!
|
|
9
|
-
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
8
|
+
/*!
|
|
9
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
10
10
|
*/
|
|
11
11
|
var _default = {
|
|
12
12
|
flag: {}
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_default","flag","exports","default"],"sources":["config.js"],"sourcesContent":["/*!\
|
|
1
|
+
{"version":3,"names":["_default","flag","exports","default"],"sources":["config.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nexport default {\n flag: {},\n};\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AAFA,IAAAA,QAAA,GAIe;EACbC,IAAI,EAAE,CAAC;AACT,CAAC;AAAAC,OAAA,CAAAC,OAAA,GAAAH,QAAA"}
|
package/dist/flag.js
CHANGED
|
@@ -14,12 +14,12 @@ _Object$defineProperty(exports, "__esModule", {
|
|
|
14
14
|
});
|
|
15
15
|
exports.default = void 0;
|
|
16
16
|
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
|
|
17
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/slicedToArray"));
|
|
18
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
|
|
17
19
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
18
20
|
var _map = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/map"));
|
|
19
21
|
var _from = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/array/from"));
|
|
20
|
-
var
|
|
21
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
|
|
22
|
-
var _flatten2 = _interopRequireDefault(require("lodash/flatten"));
|
|
22
|
+
var _lodash = require("lodash");
|
|
23
23
|
var WebexCore = _interopRequireWildcard(require("@webex/webex-core"));
|
|
24
24
|
function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
25
25
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -28,11 +28,11 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
|
|
|
28
28
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
29
29
|
var Flag = WebexCore.WebexPlugin.extend({
|
|
30
30
|
namespace: 'Flag',
|
|
31
|
-
/**
|
|
32
|
-
* Archive a flag
|
|
33
|
-
* @param {Object} flag
|
|
34
|
-
* @param {Object} options
|
|
35
|
-
* @returns {Promise<Object>} Resolves with the flag archival
|
|
31
|
+
/**
|
|
32
|
+
* Archive a flag
|
|
33
|
+
* @param {Object} flag
|
|
34
|
+
* @param {Object} options
|
|
35
|
+
* @returns {Promise<Object>} Resolves with the flag archival
|
|
36
36
|
*/
|
|
37
37
|
archive: function archive(flag, options) {
|
|
38
38
|
if (!flag.url) {
|
|
@@ -51,11 +51,11 @@ var Flag = WebexCore.WebexPlugin.extend({
|
|
|
51
51
|
return res.body;
|
|
52
52
|
});
|
|
53
53
|
},
|
|
54
|
-
/**
|
|
55
|
-
* Flags an activity
|
|
56
|
-
* @param {Object} activity
|
|
57
|
-
* @param {Object} options
|
|
58
|
-
* @returns {Promise<Object>} Resolves with the flag creation
|
|
54
|
+
/**
|
|
55
|
+
* Flags an activity
|
|
56
|
+
* @param {Object} activity
|
|
57
|
+
* @param {Object} options
|
|
58
|
+
* @returns {Promise<Object>} Resolves with the flag creation
|
|
59
59
|
*/
|
|
60
60
|
create: function create(activity, options) {
|
|
61
61
|
if (!activity.url) {
|
|
@@ -77,10 +77,10 @@ var Flag = WebexCore.WebexPlugin.extend({
|
|
|
77
77
|
return res.body;
|
|
78
78
|
});
|
|
79
79
|
},
|
|
80
|
-
/**
|
|
81
|
-
* Gets a list of Flags for a user
|
|
82
|
-
* @param {Object} options
|
|
83
|
-
* @returns {Promise} Resolves with the fetched flags
|
|
80
|
+
/**
|
|
81
|
+
* Gets a list of Flags for a user
|
|
82
|
+
* @param {Object} options
|
|
83
|
+
* @returns {Promise} Resolves with the fetched flags
|
|
84
84
|
*/
|
|
85
85
|
list: function list(options) {
|
|
86
86
|
options = options || {};
|
|
@@ -97,11 +97,11 @@ var Flag = WebexCore.WebexPlugin.extend({
|
|
|
97
97
|
return res.body.items;
|
|
98
98
|
});
|
|
99
99
|
},
|
|
100
|
-
/**
|
|
101
|
-
* Gets an array of activities where the status is 200
|
|
102
|
-
* @param {Object} flags
|
|
103
|
-
* @returns {Promise<Object>} Resolves with the activities
|
|
104
|
-
* TODO: this should be implemented as a batched request when migrating to the modular sdk
|
|
100
|
+
/**
|
|
101
|
+
* Gets an array of activities where the status is 200
|
|
102
|
+
* @param {Object} flags
|
|
103
|
+
* @returns {Promise<Object>} Resolves with the activities
|
|
104
|
+
* TODO: this should be implemented as a batched request when migrating to the modular sdk
|
|
105
105
|
*/
|
|
106
106
|
mapToActivities: function mapToActivities(flags) {
|
|
107
107
|
var _this = this;
|
|
@@ -172,7 +172,7 @@ var Flag = WebexCore.WebexPlugin.extend({
|
|
|
172
172
|
}()));
|
|
173
173
|
case 5:
|
|
174
174
|
responses = _context2.sent;
|
|
175
|
-
return _context2.abrupt("return", (0,
|
|
175
|
+
return _context2.abrupt("return", (0, _lodash.flatten)(responses));
|
|
176
176
|
case 7:
|
|
177
177
|
case "end":
|
|
178
178
|
return _context2.stop();
|
|
@@ -180,11 +180,11 @@ var Flag = WebexCore.WebexPlugin.extend({
|
|
|
180
180
|
}, _callee2);
|
|
181
181
|
}))();
|
|
182
182
|
},
|
|
183
|
-
/**
|
|
184
|
-
* Delete a flag
|
|
185
|
-
* @param {Object} flag
|
|
186
|
-
* @param {Object} options
|
|
187
|
-
* @returns {Promise<Object>} Resolves with the flag deletion
|
|
183
|
+
/**
|
|
184
|
+
* Delete a flag
|
|
185
|
+
* @param {Object} flag
|
|
186
|
+
* @param {Object} options
|
|
187
|
+
* @returns {Promise<Object>} Resolves with the flag deletion
|
|
188
188
|
*/
|
|
189
189
|
delete: function _delete(flag, options) {
|
|
190
190
|
if (!flag.url) {
|
|
@@ -200,11 +200,11 @@ var Flag = WebexCore.WebexPlugin.extend({
|
|
|
200
200
|
return res.body;
|
|
201
201
|
});
|
|
202
202
|
},
|
|
203
|
-
/**
|
|
204
|
-
* UnFlags an activity
|
|
205
|
-
* @param {Object} flag
|
|
206
|
-
* @param {Object} options
|
|
207
|
-
* @returns {Promise<Object>} Resolves with the flag removal
|
|
203
|
+
/**
|
|
204
|
+
* UnFlags an activity
|
|
205
|
+
* @param {Object} flag
|
|
206
|
+
* @param {Object} options
|
|
207
|
+
* @returns {Promise<Object>} Resolves with the flag removal
|
|
208
208
|
*/
|
|
209
209
|
unflag: function unflag(flag, options) {
|
|
210
210
|
if (!flag.url) {
|
package/dist/flag.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["WebexCore","_interopRequireWildcard","require","_getRequireWildcardCache","nodeInterop","_WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","default","cache","has","get","newObj","hasPropertyDescriptor","_Object$defineProperty","_Object$getOwnPropertyDescriptor","key","Object","prototype","hasOwnProperty","call","desc","set","_createForOfIteratorHelper","o","allowArrayLike","it","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","step","next","_e2","return","minLen","_arrayLikeToArray","toString","slice","constructor","name","_Array$from2","test","arr","len","arr2","Array","Flag","WebexPlugin","extend","namespace","archive","flag","options","url","_promise","reject","Error","params","method","uri","body","state","webex","request","then","res","create","activity","service","resource","target","list","qs","items","mapToActivities","flags","_this","_asyncToGenerator2","_regenerator","mark","_callee2","mapUrlActivities","_iterator","_step","convoUrlRegex","match","activities","responses","wrap","_callee2$","_context2","prev","_map","exec","push","logger","warn","concat","all","_from","_ref2","_callee","_ref","_ref3","convoUrl","activityUrls","_callee$","_context","_slicedToArray2","sent","abrupt","multistatus","reduce","activitiesArr","statusData","status","data","stop","_x","apply","arguments","_flatten2","delete","_delete","unflag","_default","exports"],"sources":["flag.js"],"sourcesContent":["/*!\r\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\r\n */\r\nimport {flatten} from 'lodash';\r\nimport * as WebexCore from '@webex/webex-core';\r\n\r\nconst Flag = WebexCore.WebexPlugin.extend({\r\n namespace: 'Flag',\r\n\r\n /**\r\n * Archive a flag\r\n * @param {Object} flag\r\n * @param {Object} options\r\n * @returns {Promise<Object>} Resolves with the flag archival\r\n */\r\n archive(flag, options) {\r\n if (!flag.url) {\r\n return Promise.reject(new Error('`flag.url` is required'));\r\n }\r\n options = options || {};\r\n const params = {\r\n method: 'PUT',\r\n uri: flag.url,\r\n options,\r\n body: {\r\n state: 'archived',\r\n },\r\n };\r\n\r\n return this.webex.request(params).then((res) => res.body);\r\n },\r\n\r\n /**\r\n * Flags an activity\r\n * @param {Object} activity\r\n * @param {Object} options\r\n * @returns {Promise<Object>} Resolves with the flag creation\r\n */\r\n create(activity, options) {\r\n if (!activity.url) {\r\n return Promise.reject(new Error('`activity.url` is required'));\r\n }\r\n options = options || {};\r\n const params = {\r\n method: 'POST',\r\n service: 'userApps',\r\n resource: '/flags',\r\n options,\r\n body: {\r\n 'conversation-url': activity.target.url,\r\n 'flag-item': activity.url,\r\n state: 'flagged',\r\n },\r\n };\r\n\r\n return this.webex.request(params).then((res) => res.body);\r\n },\r\n\r\n /**\r\n * Gets a list of Flags for a user\r\n * @param {Object} options\r\n * @returns {Promise} Resolves with the fetched flags\r\n */\r\n list(options) {\r\n options = options || {};\r\n const params = {\r\n method: 'GET',\r\n service: 'userApps',\r\n resource: '/flags',\r\n options,\r\n qs: {\r\n state: 'flagged',\r\n },\r\n };\r\n\r\n return this.webex.request(params).then((res) => res.body.items);\r\n },\r\n\r\n /**\r\n * Gets an array of activities where the status is 200\r\n * @param {Object} flags\r\n * @returns {Promise<Object>} Resolves with the activities\r\n * TODO: this should be implemented as a batched request when migrating to the modular sdk\r\n */\r\n async mapToActivities(flags) {\r\n const mapUrlActivities = new Map();\r\n\r\n for (const flag of flags) {\r\n const convoUrlRegex = /(.*)\\/activities\\//;\r\n const activity = flag['flag-item'];\r\n const match = convoUrlRegex.exec(activity);\r\n\r\n if (match) {\r\n const url = match[1];\r\n let activities = mapUrlActivities.get(url);\r\n\r\n if (!activities) {\r\n activities = [];\r\n mapUrlActivities.set(url, activities);\r\n }\r\n activities.push(activity);\r\n } else {\r\n this.logger.warn(`The activity URL has a strange format (${activity}). Ignoring it.`);\r\n }\r\n }\r\n\r\n const responses = await Promise.all(\r\n Array.from(mapUrlActivities, async ([convoUrl, activityUrls]) => {\r\n const params = {\r\n method: 'POST',\r\n url: `${convoUrl}/bulk_activities_fetch`,\r\n body: {\r\n activityUrls,\r\n },\r\n };\r\n\r\n const res = await this.webex.request(params);\r\n\r\n return res.body.multistatus.reduce((activitiesArr, statusData) => {\r\n if (statusData.status === '200') {\r\n activitiesArr.push(statusData.data.activity);\r\n }\r\n\r\n return activitiesArr;\r\n }, []);\r\n })\r\n );\r\n\r\n return flatten(responses);\r\n },\r\n\r\n /**\r\n * Delete a flag\r\n * @param {Object} flag\r\n * @param {Object} options\r\n * @returns {Promise<Object>} Resolves with the flag deletion\r\n */\r\n delete(flag, options) {\r\n if (!flag.url) {\r\n return Promise.reject(new Error('`flag.url` is required'));\r\n }\r\n options = options || {};\r\n const params = {\r\n method: 'DELETE',\r\n options,\r\n uri: flag.url,\r\n };\r\n\r\n return this.request(params).then((res) => res.body);\r\n },\r\n\r\n /**\r\n * UnFlags an activity\r\n * @param {Object} flag\r\n * @param {Object} options\r\n * @returns {Promise<Object>} Resolves with the flag removal\r\n */\r\n unflag(flag, options) {\r\n if (!flag.url) {\r\n return Promise.reject(new Error('`flag.url` is required'));\r\n }\r\n options = options || {};\r\n const params = {\r\n method: 'PUT',\r\n uri: flag.url,\r\n options,\r\n body: {\r\n state: 'unflagged',\r\n },\r\n };\r\n\r\n return this.webex.request(params).then((res) => res.body);\r\n },\r\n});\r\n\r\nexport default Flag;\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_lodash","require","WebexCore","_interopRequireWildcard","_getRequireWildcardCache","nodeInterop","_WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","default","cache","has","get","newObj","hasPropertyDescriptor","_Object$defineProperty","_Object$getOwnPropertyDescriptor","key","Object","prototype","hasOwnProperty","call","desc","set","_createForOfIteratorHelper","o","allowArrayLike","it","_Symbol","_Symbol$iterator","_Array$isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","step","next","_e2","return","minLen","_arrayLikeToArray","toString","slice","constructor","name","_Array$from2","test","arr","len","arr2","Array","Flag","WebexPlugin","extend","namespace","archive","flag","options","url","_promise","reject","Error","params","method","uri","body","state","webex","request","then","res","create","activity","service","resource","target","list","qs","items","mapToActivities","flags","_this","_asyncToGenerator2","_regenerator","mark","_callee2","mapUrlActivities","_iterator","_step","convoUrlRegex","match","activities","responses","wrap","_callee2$","_context2","prev","_map","exec","push","logger","warn","concat","all","_from","_ref2","_callee","_ref","_ref3","convoUrl","activityUrls","_callee$","_context","_slicedToArray2","sent","abrupt","multistatus","reduce","activitiesArr","statusData","status","data","stop","_x","apply","arguments","flatten","delete","_delete","unflag","_default","exports"],"sources":["flag.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\nimport {flatten} from 'lodash';\nimport * as WebexCore from '@webex/webex-core';\n\nconst Flag = WebexCore.WebexPlugin.extend({\n namespace: 'Flag',\n\n /**\n * Archive a flag\n * @param {Object} flag\n * @param {Object} options\n * @returns {Promise<Object>} Resolves with the flag archival\n */\n archive(flag, options) {\n if (!flag.url) {\n return Promise.reject(new Error('`flag.url` is required'));\n }\n options = options || {};\n const params = {\n method: 'PUT',\n uri: flag.url,\n options,\n body: {\n state: 'archived',\n },\n };\n\n return this.webex.request(params).then((res) => res.body);\n },\n\n /**\n * Flags an activity\n * @param {Object} activity\n * @param {Object} options\n * @returns {Promise<Object>} Resolves with the flag creation\n */\n create(activity, options) {\n if (!activity.url) {\n return Promise.reject(new Error('`activity.url` is required'));\n }\n options = options || {};\n const params = {\n method: 'POST',\n service: 'userApps',\n resource: '/flags',\n options,\n body: {\n 'conversation-url': activity.target.url,\n 'flag-item': activity.url,\n state: 'flagged',\n },\n };\n\n return this.webex.request(params).then((res) => res.body);\n },\n\n /**\n * Gets a list of Flags for a user\n * @param {Object} options\n * @returns {Promise} Resolves with the fetched flags\n */\n list(options) {\n options = options || {};\n const params = {\n method: 'GET',\n service: 'userApps',\n resource: '/flags',\n options,\n qs: {\n state: 'flagged',\n },\n };\n\n return this.webex.request(params).then((res) => res.body.items);\n },\n\n /**\n * Gets an array of activities where the status is 200\n * @param {Object} flags\n * @returns {Promise<Object>} Resolves with the activities\n * TODO: this should be implemented as a batched request when migrating to the modular sdk\n */\n async mapToActivities(flags) {\n const mapUrlActivities = new Map();\n\n for (const flag of flags) {\n const convoUrlRegex = /(.*)\\/activities\\//;\n const activity = flag['flag-item'];\n const match = convoUrlRegex.exec(activity);\n\n if (match) {\n const url = match[1];\n let activities = mapUrlActivities.get(url);\n\n if (!activities) {\n activities = [];\n mapUrlActivities.set(url, activities);\n }\n activities.push(activity);\n } else {\n this.logger.warn(`The activity URL has a strange format (${activity}). Ignoring it.`);\n }\n }\n\n const responses = await Promise.all(\n Array.from(mapUrlActivities, async ([convoUrl, activityUrls]) => {\n const params = {\n method: 'POST',\n url: `${convoUrl}/bulk_activities_fetch`,\n body: {\n activityUrls,\n },\n };\n\n const res = await this.webex.request(params);\n\n return res.body.multistatus.reduce((activitiesArr, statusData) => {\n if (statusData.status === '200') {\n activitiesArr.push(statusData.data.activity);\n }\n\n return activitiesArr;\n }, []);\n })\n );\n\n return flatten(responses);\n },\n\n /**\n * Delete a flag\n * @param {Object} flag\n * @param {Object} options\n * @returns {Promise<Object>} Resolves with the flag deletion\n */\n delete(flag, options) {\n if (!flag.url) {\n return Promise.reject(new Error('`flag.url` is required'));\n }\n options = options || {};\n const params = {\n method: 'DELETE',\n options,\n uri: flag.url,\n };\n\n return this.request(params).then((res) => res.body);\n },\n\n /**\n * UnFlags an activity\n * @param {Object} flag\n * @param {Object} options\n * @returns {Promise<Object>} Resolves with the flag removal\n */\n unflag(flag, options) {\n if (!flag.url) {\n return Promise.reject(new Error('`flag.url` is required'));\n }\n options = options || {};\n const params = {\n method: 'PUT',\n uri: flag.url,\n options,\n body: {\n state: 'unflagged',\n },\n };\n\n return this.webex.request(params).then((res) => res.body);\n },\n});\n\nexport default Flag;\n"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -16,8 +16,8 @@ require("@webex/internal-plugin-conversation");
|
|
|
16
16
|
require("@webex/internal-plugin-device");
|
|
17
17
|
var _flag = _interopRequireDefault(require("./flag"));
|
|
18
18
|
var _config = _interopRequireDefault(require("./config"));
|
|
19
|
-
/*!
|
|
20
|
-
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
19
|
+
/*!
|
|
20
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
21
21
|
*/
|
|
22
22
|
|
|
23
23
|
(0, _webexCore.registerInternalPlugin)('flag', _flag.default, {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_webexCore","require","_flag","_interopRequireDefault","_config","registerInternalPlugin","Flag","config","payloadTransformer","predicates","transforms"],"sources":["index.js"],"sourcesContent":["/*!\
|
|
1
|
+
{"version":3,"names":["_webexCore","require","_flag","_interopRequireDefault","_config","registerInternalPlugin","Flag","config","payloadTransformer","predicates","transforms"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {registerInternalPlugin} from '@webex/webex-core';\n\nimport '@webex/internal-plugin-conversation';\nimport '@webex/internal-plugin-device';\nimport Flag from './flag';\nimport config from './config';\n\nregisterInternalPlugin('flag', Flag, {\n config,\n payloadTransformer: {\n predicates: [],\n transforms: [],\n },\n});\n\nexport {default} from './flag';\n"],"mappings":";;;;;;;;;;;;;AAIA,IAAAA,UAAA,GAAAC,OAAA;AAEAA,OAAA;AACAA,OAAA;AACA,IAAAC,KAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,OAAA,GAAAD,sBAAA,CAAAF,OAAA;AATA;AACA;AACA;;AASA,IAAAI,iCAAsB,EAAC,MAAM,EAAEC,aAAI,EAAE;EACnCC,MAAM,EAANA,eAAM;EACNC,kBAAkB,EAAE;IAClBC,UAAU,EAAE,EAAE;IACdC,UAAU,EAAE;EACd;AACF,CAAC,CAAC"}
|
package/jest.config.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const config = require('@webex/jest-config-legacy');
|
|
2
|
-
|
|
3
|
-
module.exports = config;
|
|
1
|
+
const config = require('@webex/jest-config-legacy');
|
|
2
|
+
|
|
3
|
+
module.exports = config;
|
package/package.json
CHANGED
|
@@ -30,12 +30,12 @@
|
|
|
30
30
|
]
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@webex/internal-plugin-conversation": "^2.59.
|
|
34
|
-
"@webex/internal-plugin-device": "^2.59.
|
|
35
|
-
"@webex/test-helper-chai": "^2.59.
|
|
36
|
-
"@webex/test-helper-mock-webex": "^2.59.
|
|
37
|
-
"@webex/test-helper-test-users": "^2.59.
|
|
38
|
-
"@webex/webex-core": "^2.59.
|
|
33
|
+
"@webex/internal-plugin-conversation": "^2.59.4-next.1",
|
|
34
|
+
"@webex/internal-plugin-device": "^2.59.4-next.1",
|
|
35
|
+
"@webex/test-helper-chai": "^2.59.4-next.1",
|
|
36
|
+
"@webex/test-helper-mock-webex": "^2.59.4-next.1",
|
|
37
|
+
"@webex/test-helper-test-users": "^2.59.4-next.1",
|
|
38
|
+
"@webex/webex-core": "^2.59.4-next.1",
|
|
39
39
|
"lodash": "^4.17.21"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
@@ -45,13 +45,13 @@
|
|
|
45
45
|
"@webex/eslint-config-legacy": "^0.0.0",
|
|
46
46
|
"@webex/jest-config-legacy": "^0.0.0",
|
|
47
47
|
"@webex/legacy-tools": "^0.0.0",
|
|
48
|
-
"@webex/test-helper-chai": "^2.59.
|
|
49
|
-
"@webex/test-helper-mocha": "^2.59.
|
|
50
|
-
"@webex/test-helper-mock-webex": "^2.59.
|
|
51
|
-
"@webex/test-helper-test-users": "^2.59.
|
|
48
|
+
"@webex/test-helper-chai": "^2.59.4-next.1",
|
|
49
|
+
"@webex/test-helper-mocha": "^2.59.4-next.1",
|
|
50
|
+
"@webex/test-helper-mock-webex": "^2.59.4-next.1",
|
|
51
|
+
"@webex/test-helper-test-users": "^2.59.4-next.1",
|
|
52
52
|
"eslint": "^8.24.0",
|
|
53
53
|
"mocha": "^10.2.0",
|
|
54
54
|
"prettier": "^2.7.1"
|
|
55
55
|
},
|
|
56
|
-
"version": "2.59.
|
|
56
|
+
"version": "2.59.4-next.1"
|
|
57
57
|
}
|
package/process
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
module.exports = {browser: true};
|
|
1
|
+
module.exports = {browser: true};
|
package/src/config.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
export default {
|
|
6
|
-
flag: {},
|
|
7
|
-
};
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
export default {
|
|
6
|
+
flag: {},
|
|
7
|
+
};
|
package/src/flag.js
CHANGED
|
@@ -1,176 +1,176 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
-
*/
|
|
4
|
-
import {flatten} from 'lodash';
|
|
5
|
-
import * as WebexCore from '@webex/webex-core';
|
|
6
|
-
|
|
7
|
-
const Flag = WebexCore.WebexPlugin.extend({
|
|
8
|
-
namespace: 'Flag',
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Archive a flag
|
|
12
|
-
* @param {Object} flag
|
|
13
|
-
* @param {Object} options
|
|
14
|
-
* @returns {Promise<Object>} Resolves with the flag archival
|
|
15
|
-
*/
|
|
16
|
-
archive(flag, options) {
|
|
17
|
-
if (!flag.url) {
|
|
18
|
-
return Promise.reject(new Error('`flag.url` is required'));
|
|
19
|
-
}
|
|
20
|
-
options = options || {};
|
|
21
|
-
const params = {
|
|
22
|
-
method: 'PUT',
|
|
23
|
-
uri: flag.url,
|
|
24
|
-
options,
|
|
25
|
-
body: {
|
|
26
|
-
state: 'archived',
|
|
27
|
-
},
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
return this.webex.request(params).then((res) => res.body);
|
|
31
|
-
},
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Flags an activity
|
|
35
|
-
* @param {Object} activity
|
|
36
|
-
* @param {Object} options
|
|
37
|
-
* @returns {Promise<Object>} Resolves with the flag creation
|
|
38
|
-
*/
|
|
39
|
-
create(activity, options) {
|
|
40
|
-
if (!activity.url) {
|
|
41
|
-
return Promise.reject(new Error('`activity.url` is required'));
|
|
42
|
-
}
|
|
43
|
-
options = options || {};
|
|
44
|
-
const params = {
|
|
45
|
-
method: 'POST',
|
|
46
|
-
service: 'userApps',
|
|
47
|
-
resource: '/flags',
|
|
48
|
-
options,
|
|
49
|
-
body: {
|
|
50
|
-
'conversation-url': activity.target.url,
|
|
51
|
-
'flag-item': activity.url,
|
|
52
|
-
state: 'flagged',
|
|
53
|
-
},
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
return this.webex.request(params).then((res) => res.body);
|
|
57
|
-
},
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Gets a list of Flags for a user
|
|
61
|
-
* @param {Object} options
|
|
62
|
-
* @returns {Promise} Resolves with the fetched flags
|
|
63
|
-
*/
|
|
64
|
-
list(options) {
|
|
65
|
-
options = options || {};
|
|
66
|
-
const params = {
|
|
67
|
-
method: 'GET',
|
|
68
|
-
service: 'userApps',
|
|
69
|
-
resource: '/flags',
|
|
70
|
-
options,
|
|
71
|
-
qs: {
|
|
72
|
-
state: 'flagged',
|
|
73
|
-
},
|
|
74
|
-
};
|
|
75
|
-
|
|
76
|
-
return this.webex.request(params).then((res) => res.body.items);
|
|
77
|
-
},
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Gets an array of activities where the status is 200
|
|
81
|
-
* @param {Object} flags
|
|
82
|
-
* @returns {Promise<Object>} Resolves with the activities
|
|
83
|
-
* TODO: this should be implemented as a batched request when migrating to the modular sdk
|
|
84
|
-
*/
|
|
85
|
-
async mapToActivities(flags) {
|
|
86
|
-
const mapUrlActivities = new Map();
|
|
87
|
-
|
|
88
|
-
for (const flag of flags) {
|
|
89
|
-
const convoUrlRegex = /(.*)\/activities\//;
|
|
90
|
-
const activity = flag['flag-item'];
|
|
91
|
-
const match = convoUrlRegex.exec(activity);
|
|
92
|
-
|
|
93
|
-
if (match) {
|
|
94
|
-
const url = match[1];
|
|
95
|
-
let activities = mapUrlActivities.get(url);
|
|
96
|
-
|
|
97
|
-
if (!activities) {
|
|
98
|
-
activities = [];
|
|
99
|
-
mapUrlActivities.set(url, activities);
|
|
100
|
-
}
|
|
101
|
-
activities.push(activity);
|
|
102
|
-
} else {
|
|
103
|
-
this.logger.warn(`The activity URL has a strange format (${activity}). Ignoring it.`);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
const responses = await Promise.all(
|
|
108
|
-
Array.from(mapUrlActivities, async ([convoUrl, activityUrls]) => {
|
|
109
|
-
const params = {
|
|
110
|
-
method: 'POST',
|
|
111
|
-
url: `${convoUrl}/bulk_activities_fetch`,
|
|
112
|
-
body: {
|
|
113
|
-
activityUrls,
|
|
114
|
-
},
|
|
115
|
-
};
|
|
116
|
-
|
|
117
|
-
const res = await this.webex.request(params);
|
|
118
|
-
|
|
119
|
-
return res.body.multistatus.reduce((activitiesArr, statusData) => {
|
|
120
|
-
if (statusData.status === '200') {
|
|
121
|
-
activitiesArr.push(statusData.data.activity);
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
return activitiesArr;
|
|
125
|
-
}, []);
|
|
126
|
-
})
|
|
127
|
-
);
|
|
128
|
-
|
|
129
|
-
return flatten(responses);
|
|
130
|
-
},
|
|
131
|
-
|
|
132
|
-
/**
|
|
133
|
-
* Delete a flag
|
|
134
|
-
* @param {Object} flag
|
|
135
|
-
* @param {Object} options
|
|
136
|
-
* @returns {Promise<Object>} Resolves with the flag deletion
|
|
137
|
-
*/
|
|
138
|
-
delete(flag, options) {
|
|
139
|
-
if (!flag.url) {
|
|
140
|
-
return Promise.reject(new Error('`flag.url` is required'));
|
|
141
|
-
}
|
|
142
|
-
options = options || {};
|
|
143
|
-
const params = {
|
|
144
|
-
method: 'DELETE',
|
|
145
|
-
options,
|
|
146
|
-
uri: flag.url,
|
|
147
|
-
};
|
|
148
|
-
|
|
149
|
-
return this.request(params).then((res) => res.body);
|
|
150
|
-
},
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* UnFlags an activity
|
|
154
|
-
* @param {Object} flag
|
|
155
|
-
* @param {Object} options
|
|
156
|
-
* @returns {Promise<Object>} Resolves with the flag removal
|
|
157
|
-
*/
|
|
158
|
-
unflag(flag, options) {
|
|
159
|
-
if (!flag.url) {
|
|
160
|
-
return Promise.reject(new Error('`flag.url` is required'));
|
|
161
|
-
}
|
|
162
|
-
options = options || {};
|
|
163
|
-
const params = {
|
|
164
|
-
method: 'PUT',
|
|
165
|
-
uri: flag.url,
|
|
166
|
-
options,
|
|
167
|
-
body: {
|
|
168
|
-
state: 'unflagged',
|
|
169
|
-
},
|
|
170
|
-
};
|
|
171
|
-
|
|
172
|
-
return this.webex.request(params).then((res) => res.body);
|
|
173
|
-
},
|
|
174
|
-
});
|
|
175
|
-
|
|
176
|
-
export default Flag;
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
+
*/
|
|
4
|
+
import {flatten} from 'lodash';
|
|
5
|
+
import * as WebexCore from '@webex/webex-core';
|
|
6
|
+
|
|
7
|
+
const Flag = WebexCore.WebexPlugin.extend({
|
|
8
|
+
namespace: 'Flag',
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Archive a flag
|
|
12
|
+
* @param {Object} flag
|
|
13
|
+
* @param {Object} options
|
|
14
|
+
* @returns {Promise<Object>} Resolves with the flag archival
|
|
15
|
+
*/
|
|
16
|
+
archive(flag, options) {
|
|
17
|
+
if (!flag.url) {
|
|
18
|
+
return Promise.reject(new Error('`flag.url` is required'));
|
|
19
|
+
}
|
|
20
|
+
options = options || {};
|
|
21
|
+
const params = {
|
|
22
|
+
method: 'PUT',
|
|
23
|
+
uri: flag.url,
|
|
24
|
+
options,
|
|
25
|
+
body: {
|
|
26
|
+
state: 'archived',
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
return this.webex.request(params).then((res) => res.body);
|
|
31
|
+
},
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Flags an activity
|
|
35
|
+
* @param {Object} activity
|
|
36
|
+
* @param {Object} options
|
|
37
|
+
* @returns {Promise<Object>} Resolves with the flag creation
|
|
38
|
+
*/
|
|
39
|
+
create(activity, options) {
|
|
40
|
+
if (!activity.url) {
|
|
41
|
+
return Promise.reject(new Error('`activity.url` is required'));
|
|
42
|
+
}
|
|
43
|
+
options = options || {};
|
|
44
|
+
const params = {
|
|
45
|
+
method: 'POST',
|
|
46
|
+
service: 'userApps',
|
|
47
|
+
resource: '/flags',
|
|
48
|
+
options,
|
|
49
|
+
body: {
|
|
50
|
+
'conversation-url': activity.target.url,
|
|
51
|
+
'flag-item': activity.url,
|
|
52
|
+
state: 'flagged',
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
return this.webex.request(params).then((res) => res.body);
|
|
57
|
+
},
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Gets a list of Flags for a user
|
|
61
|
+
* @param {Object} options
|
|
62
|
+
* @returns {Promise} Resolves with the fetched flags
|
|
63
|
+
*/
|
|
64
|
+
list(options) {
|
|
65
|
+
options = options || {};
|
|
66
|
+
const params = {
|
|
67
|
+
method: 'GET',
|
|
68
|
+
service: 'userApps',
|
|
69
|
+
resource: '/flags',
|
|
70
|
+
options,
|
|
71
|
+
qs: {
|
|
72
|
+
state: 'flagged',
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
return this.webex.request(params).then((res) => res.body.items);
|
|
77
|
+
},
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Gets an array of activities where the status is 200
|
|
81
|
+
* @param {Object} flags
|
|
82
|
+
* @returns {Promise<Object>} Resolves with the activities
|
|
83
|
+
* TODO: this should be implemented as a batched request when migrating to the modular sdk
|
|
84
|
+
*/
|
|
85
|
+
async mapToActivities(flags) {
|
|
86
|
+
const mapUrlActivities = new Map();
|
|
87
|
+
|
|
88
|
+
for (const flag of flags) {
|
|
89
|
+
const convoUrlRegex = /(.*)\/activities\//;
|
|
90
|
+
const activity = flag['flag-item'];
|
|
91
|
+
const match = convoUrlRegex.exec(activity);
|
|
92
|
+
|
|
93
|
+
if (match) {
|
|
94
|
+
const url = match[1];
|
|
95
|
+
let activities = mapUrlActivities.get(url);
|
|
96
|
+
|
|
97
|
+
if (!activities) {
|
|
98
|
+
activities = [];
|
|
99
|
+
mapUrlActivities.set(url, activities);
|
|
100
|
+
}
|
|
101
|
+
activities.push(activity);
|
|
102
|
+
} else {
|
|
103
|
+
this.logger.warn(`The activity URL has a strange format (${activity}). Ignoring it.`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
const responses = await Promise.all(
|
|
108
|
+
Array.from(mapUrlActivities, async ([convoUrl, activityUrls]) => {
|
|
109
|
+
const params = {
|
|
110
|
+
method: 'POST',
|
|
111
|
+
url: `${convoUrl}/bulk_activities_fetch`,
|
|
112
|
+
body: {
|
|
113
|
+
activityUrls,
|
|
114
|
+
},
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
const res = await this.webex.request(params);
|
|
118
|
+
|
|
119
|
+
return res.body.multistatus.reduce((activitiesArr, statusData) => {
|
|
120
|
+
if (statusData.status === '200') {
|
|
121
|
+
activitiesArr.push(statusData.data.activity);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return activitiesArr;
|
|
125
|
+
}, []);
|
|
126
|
+
})
|
|
127
|
+
);
|
|
128
|
+
|
|
129
|
+
return flatten(responses);
|
|
130
|
+
},
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Delete a flag
|
|
134
|
+
* @param {Object} flag
|
|
135
|
+
* @param {Object} options
|
|
136
|
+
* @returns {Promise<Object>} Resolves with the flag deletion
|
|
137
|
+
*/
|
|
138
|
+
delete(flag, options) {
|
|
139
|
+
if (!flag.url) {
|
|
140
|
+
return Promise.reject(new Error('`flag.url` is required'));
|
|
141
|
+
}
|
|
142
|
+
options = options || {};
|
|
143
|
+
const params = {
|
|
144
|
+
method: 'DELETE',
|
|
145
|
+
options,
|
|
146
|
+
uri: flag.url,
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
return this.request(params).then((res) => res.body);
|
|
150
|
+
},
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* UnFlags an activity
|
|
154
|
+
* @param {Object} flag
|
|
155
|
+
* @param {Object} options
|
|
156
|
+
* @returns {Promise<Object>} Resolves with the flag removal
|
|
157
|
+
*/
|
|
158
|
+
unflag(flag, options) {
|
|
159
|
+
if (!flag.url) {
|
|
160
|
+
return Promise.reject(new Error('`flag.url` is required'));
|
|
161
|
+
}
|
|
162
|
+
options = options || {};
|
|
163
|
+
const params = {
|
|
164
|
+
method: 'PUT',
|
|
165
|
+
uri: flag.url,
|
|
166
|
+
options,
|
|
167
|
+
body: {
|
|
168
|
+
state: 'unflagged',
|
|
169
|
+
},
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
return this.webex.request(params).then((res) => res.body);
|
|
173
|
+
},
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
export default Flag;
|
package/src/index.js
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import {registerInternalPlugin} from '@webex/webex-core';
|
|
6
|
-
|
|
7
|
-
import '@webex/internal-plugin-conversation';
|
|
8
|
-
import '@webex/internal-plugin-device';
|
|
9
|
-
import Flag from './flag';
|
|
10
|
-
import config from './config';
|
|
11
|
-
|
|
12
|
-
registerInternalPlugin('flag', Flag, {
|
|
13
|
-
config,
|
|
14
|
-
payloadTransformer: {
|
|
15
|
-
predicates: [],
|
|
16
|
-
transforms: [],
|
|
17
|
-
},
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
export {default} from './flag';
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import {registerInternalPlugin} from '@webex/webex-core';
|
|
6
|
+
|
|
7
|
+
import '@webex/internal-plugin-conversation';
|
|
8
|
+
import '@webex/internal-plugin-device';
|
|
9
|
+
import Flag from './flag';
|
|
10
|
+
import config from './config';
|
|
11
|
+
|
|
12
|
+
registerInternalPlugin('flag', Flag, {
|
|
13
|
+
config,
|
|
14
|
+
payloadTransformer: {
|
|
15
|
+
predicates: [],
|
|
16
|
+
transforms: [],
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
export {default} from './flag';
|
|
@@ -1,195 +1,195 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import '@webex/internal-plugin-flag';
|
|
6
|
-
|
|
7
|
-
import {assert} from '@webex/test-helper-chai';
|
|
8
|
-
import WebexCore from '@webex/webex-core';
|
|
9
|
-
import '@webex/internal-plugin-conversation';
|
|
10
|
-
import {map, find} from 'lodash';
|
|
11
|
-
import testUsers from '@webex/test-helper-test-users';
|
|
12
|
-
|
|
13
|
-
describe('plugin-flag', function () {
|
|
14
|
-
this.timeout(60000);
|
|
15
|
-
describe('Flag', () => {
|
|
16
|
-
let flagConversation, mccoy, participants, spock;
|
|
17
|
-
|
|
18
|
-
beforeEach('create users', () =>
|
|
19
|
-
testUsers.create({count: 2}).then((users) => {
|
|
20
|
-
participants = [mccoy, spock] = users;
|
|
21
|
-
spock.webex = new WebexCore({
|
|
22
|
-
credentials: {
|
|
23
|
-
authorization: users[0].token,
|
|
24
|
-
},
|
|
25
|
-
});
|
|
26
|
-
mccoy.webex = new WebexCore({
|
|
27
|
-
credentials: {
|
|
28
|
-
authorization: users[1].token,
|
|
29
|
-
},
|
|
30
|
-
});
|
|
31
|
-
})
|
|
32
|
-
);
|
|
33
|
-
|
|
34
|
-
beforeEach('connect spock to mercury', () => spock.webex.internal.mercury.connect());
|
|
35
|
-
beforeEach('connect mccoy to mercury', () => mccoy.webex.internal.mercury.connect());
|
|
36
|
-
|
|
37
|
-
afterEach(() =>
|
|
38
|
-
Promise.all([
|
|
39
|
-
spock && spock.webex.internal.mercury.disconnect(),
|
|
40
|
-
mccoy && mccoy.webex.internal.mercury.disconnect(),
|
|
41
|
-
])
|
|
42
|
-
);
|
|
43
|
-
|
|
44
|
-
beforeEach('populate data', () =>
|
|
45
|
-
spock.webex.internal.conversation
|
|
46
|
-
.create({
|
|
47
|
-
displayName: 'Test Flagging Room',
|
|
48
|
-
participants,
|
|
49
|
-
})
|
|
50
|
-
.then((c) => {
|
|
51
|
-
flagConversation = c;
|
|
52
|
-
|
|
53
|
-
return mccoy.webex.internal.conversation.post(flagConversation, {
|
|
54
|
-
displayName: 'Hi Dear, How are you?',
|
|
55
|
-
});
|
|
56
|
-
})
|
|
57
|
-
.then(() =>
|
|
58
|
-
spock.webex.internal.conversation.post(flagConversation, {
|
|
59
|
-
displayName: 'Hey! I am doing well. How are you?',
|
|
60
|
-
})
|
|
61
|
-
)
|
|
62
|
-
.then(() =>
|
|
63
|
-
mccoy.webex.internal.conversation.post(flagConversation, {
|
|
64
|
-
displayName: 'I am also doing well. Are you in for the party?',
|
|
65
|
-
})
|
|
66
|
-
)
|
|
67
|
-
.then(() =>
|
|
68
|
-
spock.webex.internal.conversation.post(flagConversation, {
|
|
69
|
-
displayName: 'Yes, I am in.',
|
|
70
|
-
})
|
|
71
|
-
)
|
|
72
|
-
.then(() => {
|
|
73
|
-
assert.isDefined(flagConversation);
|
|
74
|
-
const params = {
|
|
75
|
-
activitiesLimit: 30,
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
return spock.webex.internal.conversation.get(flagConversation, params);
|
|
79
|
-
})
|
|
80
|
-
.then((conversation) => {
|
|
81
|
-
// Removes the "create" activity.
|
|
82
|
-
conversation.activities.items.shift();
|
|
83
|
-
const comments = map(conversation.activities.items, 'object.displayName');
|
|
84
|
-
|
|
85
|
-
assert.lengthOf(comments, 4);
|
|
86
|
-
assert.equal(comments[0], 'Hi Dear, How are you?');
|
|
87
|
-
assert.equal(comments[1], 'Hey! I am doing well. How are you?');
|
|
88
|
-
assert.equal(comments[2], 'I am also doing well. Are you in for the party?');
|
|
89
|
-
assert.equal(comments[3], 'Yes, I am in.');
|
|
90
|
-
flagConversation = conversation;
|
|
91
|
-
})
|
|
92
|
-
);
|
|
93
|
-
|
|
94
|
-
afterEach(() =>
|
|
95
|
-
spock.webex.internal.flag
|
|
96
|
-
.list()
|
|
97
|
-
.then((flags) =>
|
|
98
|
-
Promise.all(
|
|
99
|
-
flags.map((flag) =>
|
|
100
|
-
spock.webex.internal.flag.delete(flag).catch((reason) => console.warn(reason))
|
|
101
|
-
)
|
|
102
|
-
)
|
|
103
|
-
)
|
|
104
|
-
);
|
|
105
|
-
|
|
106
|
-
describe('#create()', () => {
|
|
107
|
-
it('flags the activity', () => {
|
|
108
|
-
const flaggedActivity1 = flagConversation.activities.items[1];
|
|
109
|
-
|
|
110
|
-
return spock.webex.internal.flag.create(flaggedActivity1).then((flagResponse1) => {
|
|
111
|
-
assert.equal(flagResponse1.state, 'flagged');
|
|
112
|
-
assert.equal(flagResponse1['flag-item'], flaggedActivity1.url);
|
|
113
|
-
assert.equal(flagResponse1['conversation-url'], flaggedActivity1.target.url);
|
|
114
|
-
});
|
|
115
|
-
});
|
|
116
|
-
});
|
|
117
|
-
|
|
118
|
-
describe('#list()', () => {
|
|
119
|
-
it('fetches the flag list', () =>
|
|
120
|
-
spock.webex.internal.flag.list().then((flagList) => {
|
|
121
|
-
assert.isArray(flagList);
|
|
122
|
-
assert.lengthOf(flagList, 0);
|
|
123
|
-
}));
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
describe('#mapToActivities()', () => {
|
|
127
|
-
it('maps flags to activity', () => {
|
|
128
|
-
const flaggedActivity1 = flagConversation.activities.items[1];
|
|
129
|
-
|
|
130
|
-
return spock.webex.internal.flag.create(flaggedActivity1).then((flagResponse1) => {
|
|
131
|
-
assert.equal(flagResponse1.state, 'flagged');
|
|
132
|
-
const flags = [];
|
|
133
|
-
|
|
134
|
-
flags.push(flagResponse1);
|
|
135
|
-
|
|
136
|
-
return spock.webex.internal.flag.mapToActivities(flags).then((activities) => {
|
|
137
|
-
const activity = activities[0];
|
|
138
|
-
|
|
139
|
-
assert.equal(activity.object.displayName, 'Hey! I am doing well. How are you?');
|
|
140
|
-
assert.isDefined(find(activities, {url: flagResponse1['flag-item']}));
|
|
141
|
-
});
|
|
142
|
-
});
|
|
143
|
-
});
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
describe('#remove()', () => {
|
|
147
|
-
it('removes the flag from activity', () => {
|
|
148
|
-
const flaggedActivity1 = flagConversation.activities.items[1];
|
|
149
|
-
|
|
150
|
-
return spock.webex.internal.flag
|
|
151
|
-
.create(flaggedActivity1)
|
|
152
|
-
.then((flagResponse1) => {
|
|
153
|
-
assert.equal(flagResponse1.state, 'flagged');
|
|
154
|
-
|
|
155
|
-
return spock.webex.internal.flag.delete(flagResponse1);
|
|
156
|
-
})
|
|
157
|
-
.then(() => spock.webex.internal.flag.list())
|
|
158
|
-
.then((flagList) => {
|
|
159
|
-
assert.isArray(flagList);
|
|
160
|
-
assert.lengthOf(flagList, 0);
|
|
161
|
-
});
|
|
162
|
-
});
|
|
163
|
-
});
|
|
164
|
-
|
|
165
|
-
describe('#archive()', () => {
|
|
166
|
-
it('archives the flag for an activity', () => {
|
|
167
|
-
const flaggedActivity1 = flagConversation.activities.items[1];
|
|
168
|
-
|
|
169
|
-
return spock.webex.internal.flag
|
|
170
|
-
.create(flaggedActivity1)
|
|
171
|
-
.then((flagResponse1) => {
|
|
172
|
-
assert.equal(flagResponse1.state, 'flagged');
|
|
173
|
-
|
|
174
|
-
return spock.webex.internal.flag.archive(flagResponse1);
|
|
175
|
-
})
|
|
176
|
-
.then((response) => assert.equal(response.state, 'archived'));
|
|
177
|
-
});
|
|
178
|
-
});
|
|
179
|
-
|
|
180
|
-
describe('#unflag()', () => {
|
|
181
|
-
it('unflag the flag for an activity', () => {
|
|
182
|
-
const flaggedActivity1 = flagConversation.activities.items[1];
|
|
183
|
-
|
|
184
|
-
return spock.webex.internal.flag
|
|
185
|
-
.create(flaggedActivity1)
|
|
186
|
-
.then((flagResponse1) => {
|
|
187
|
-
assert.equal(flagResponse1.state, 'flagged');
|
|
188
|
-
|
|
189
|
-
return spock.webex.internal.flag.unflag(flagResponse1);
|
|
190
|
-
})
|
|
191
|
-
.then((response) => assert.equal(response.state, 'unflagged'));
|
|
192
|
-
});
|
|
193
|
-
});
|
|
194
|
-
});
|
|
195
|
-
});
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import '@webex/internal-plugin-flag';
|
|
6
|
+
|
|
7
|
+
import {assert} from '@webex/test-helper-chai';
|
|
8
|
+
import WebexCore from '@webex/webex-core';
|
|
9
|
+
import '@webex/internal-plugin-conversation';
|
|
10
|
+
import {map, find} from 'lodash';
|
|
11
|
+
import testUsers from '@webex/test-helper-test-users';
|
|
12
|
+
|
|
13
|
+
describe('plugin-flag', function () {
|
|
14
|
+
this.timeout(60000);
|
|
15
|
+
describe('Flag', () => {
|
|
16
|
+
let flagConversation, mccoy, participants, spock;
|
|
17
|
+
|
|
18
|
+
beforeEach('create users', () =>
|
|
19
|
+
testUsers.create({count: 2}).then((users) => {
|
|
20
|
+
participants = [mccoy, spock] = users;
|
|
21
|
+
spock.webex = new WebexCore({
|
|
22
|
+
credentials: {
|
|
23
|
+
authorization: users[0].token,
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
mccoy.webex = new WebexCore({
|
|
27
|
+
credentials: {
|
|
28
|
+
authorization: users[1].token,
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
})
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
beforeEach('connect spock to mercury', () => spock.webex.internal.mercury.connect());
|
|
35
|
+
beforeEach('connect mccoy to mercury', () => mccoy.webex.internal.mercury.connect());
|
|
36
|
+
|
|
37
|
+
afterEach(() =>
|
|
38
|
+
Promise.all([
|
|
39
|
+
spock && spock.webex.internal.mercury.disconnect(),
|
|
40
|
+
mccoy && mccoy.webex.internal.mercury.disconnect(),
|
|
41
|
+
])
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
beforeEach('populate data', () =>
|
|
45
|
+
spock.webex.internal.conversation
|
|
46
|
+
.create({
|
|
47
|
+
displayName: 'Test Flagging Room',
|
|
48
|
+
participants,
|
|
49
|
+
})
|
|
50
|
+
.then((c) => {
|
|
51
|
+
flagConversation = c;
|
|
52
|
+
|
|
53
|
+
return mccoy.webex.internal.conversation.post(flagConversation, {
|
|
54
|
+
displayName: 'Hi Dear, How are you?',
|
|
55
|
+
});
|
|
56
|
+
})
|
|
57
|
+
.then(() =>
|
|
58
|
+
spock.webex.internal.conversation.post(flagConversation, {
|
|
59
|
+
displayName: 'Hey! I am doing well. How are you?',
|
|
60
|
+
})
|
|
61
|
+
)
|
|
62
|
+
.then(() =>
|
|
63
|
+
mccoy.webex.internal.conversation.post(flagConversation, {
|
|
64
|
+
displayName: 'I am also doing well. Are you in for the party?',
|
|
65
|
+
})
|
|
66
|
+
)
|
|
67
|
+
.then(() =>
|
|
68
|
+
spock.webex.internal.conversation.post(flagConversation, {
|
|
69
|
+
displayName: 'Yes, I am in.',
|
|
70
|
+
})
|
|
71
|
+
)
|
|
72
|
+
.then(() => {
|
|
73
|
+
assert.isDefined(flagConversation);
|
|
74
|
+
const params = {
|
|
75
|
+
activitiesLimit: 30,
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
return spock.webex.internal.conversation.get(flagConversation, params);
|
|
79
|
+
})
|
|
80
|
+
.then((conversation) => {
|
|
81
|
+
// Removes the "create" activity.
|
|
82
|
+
conversation.activities.items.shift();
|
|
83
|
+
const comments = map(conversation.activities.items, 'object.displayName');
|
|
84
|
+
|
|
85
|
+
assert.lengthOf(comments, 4);
|
|
86
|
+
assert.equal(comments[0], 'Hi Dear, How are you?');
|
|
87
|
+
assert.equal(comments[1], 'Hey! I am doing well. How are you?');
|
|
88
|
+
assert.equal(comments[2], 'I am also doing well. Are you in for the party?');
|
|
89
|
+
assert.equal(comments[3], 'Yes, I am in.');
|
|
90
|
+
flagConversation = conversation;
|
|
91
|
+
})
|
|
92
|
+
);
|
|
93
|
+
|
|
94
|
+
afterEach(() =>
|
|
95
|
+
spock.webex.internal.flag
|
|
96
|
+
.list()
|
|
97
|
+
.then((flags) =>
|
|
98
|
+
Promise.all(
|
|
99
|
+
flags.map((flag) =>
|
|
100
|
+
spock.webex.internal.flag.delete(flag).catch((reason) => console.warn(reason))
|
|
101
|
+
)
|
|
102
|
+
)
|
|
103
|
+
)
|
|
104
|
+
);
|
|
105
|
+
|
|
106
|
+
describe('#create()', () => {
|
|
107
|
+
it('flags the activity', () => {
|
|
108
|
+
const flaggedActivity1 = flagConversation.activities.items[1];
|
|
109
|
+
|
|
110
|
+
return spock.webex.internal.flag.create(flaggedActivity1).then((flagResponse1) => {
|
|
111
|
+
assert.equal(flagResponse1.state, 'flagged');
|
|
112
|
+
assert.equal(flagResponse1['flag-item'], flaggedActivity1.url);
|
|
113
|
+
assert.equal(flagResponse1['conversation-url'], flaggedActivity1.target.url);
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
describe('#list()', () => {
|
|
119
|
+
it('fetches the flag list', () =>
|
|
120
|
+
spock.webex.internal.flag.list().then((flagList) => {
|
|
121
|
+
assert.isArray(flagList);
|
|
122
|
+
assert.lengthOf(flagList, 0);
|
|
123
|
+
}));
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
describe('#mapToActivities()', () => {
|
|
127
|
+
it('maps flags to activity', () => {
|
|
128
|
+
const flaggedActivity1 = flagConversation.activities.items[1];
|
|
129
|
+
|
|
130
|
+
return spock.webex.internal.flag.create(flaggedActivity1).then((flagResponse1) => {
|
|
131
|
+
assert.equal(flagResponse1.state, 'flagged');
|
|
132
|
+
const flags = [];
|
|
133
|
+
|
|
134
|
+
flags.push(flagResponse1);
|
|
135
|
+
|
|
136
|
+
return spock.webex.internal.flag.mapToActivities(flags).then((activities) => {
|
|
137
|
+
const activity = activities[0];
|
|
138
|
+
|
|
139
|
+
assert.equal(activity.object.displayName, 'Hey! I am doing well. How are you?');
|
|
140
|
+
assert.isDefined(find(activities, {url: flagResponse1['flag-item']}));
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
describe('#remove()', () => {
|
|
147
|
+
it('removes the flag from activity', () => {
|
|
148
|
+
const flaggedActivity1 = flagConversation.activities.items[1];
|
|
149
|
+
|
|
150
|
+
return spock.webex.internal.flag
|
|
151
|
+
.create(flaggedActivity1)
|
|
152
|
+
.then((flagResponse1) => {
|
|
153
|
+
assert.equal(flagResponse1.state, 'flagged');
|
|
154
|
+
|
|
155
|
+
return spock.webex.internal.flag.delete(flagResponse1);
|
|
156
|
+
})
|
|
157
|
+
.then(() => spock.webex.internal.flag.list())
|
|
158
|
+
.then((flagList) => {
|
|
159
|
+
assert.isArray(flagList);
|
|
160
|
+
assert.lengthOf(flagList, 0);
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
describe('#archive()', () => {
|
|
166
|
+
it('archives the flag for an activity', () => {
|
|
167
|
+
const flaggedActivity1 = flagConversation.activities.items[1];
|
|
168
|
+
|
|
169
|
+
return spock.webex.internal.flag
|
|
170
|
+
.create(flaggedActivity1)
|
|
171
|
+
.then((flagResponse1) => {
|
|
172
|
+
assert.equal(flagResponse1.state, 'flagged');
|
|
173
|
+
|
|
174
|
+
return spock.webex.internal.flag.archive(flagResponse1);
|
|
175
|
+
})
|
|
176
|
+
.then((response) => assert.equal(response.state, 'archived'));
|
|
177
|
+
});
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
describe('#unflag()', () => {
|
|
181
|
+
it('unflag the flag for an activity', () => {
|
|
182
|
+
const flaggedActivity1 = flagConversation.activities.items[1];
|
|
183
|
+
|
|
184
|
+
return spock.webex.internal.flag
|
|
185
|
+
.create(flaggedActivity1)
|
|
186
|
+
.then((flagResponse1) => {
|
|
187
|
+
assert.equal(flagResponse1.state, 'flagged');
|
|
188
|
+
|
|
189
|
+
return spock.webex.internal.flag.unflag(flagResponse1);
|
|
190
|
+
})
|
|
191
|
+
.then((response) => assert.equal(response.state, 'unflagged'));
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
});
|
|
195
|
+
});
|
package/test/unit/spec/flag.js
CHANGED
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import {assert} from '@webex/test-helper-chai';
|
|
6
|
-
import Flag from '@webex/internal-plugin-flag';
|
|
7
|
-
import MockWebex from '@webex/test-helper-mock-webex';
|
|
8
|
-
|
|
9
|
-
describe('plugin-flag', () => {
|
|
10
|
-
describe('Flag', () => {
|
|
11
|
-
let webex;
|
|
12
|
-
|
|
13
|
-
beforeEach(() => {
|
|
14
|
-
webex = new MockWebex({
|
|
15
|
-
children: {
|
|
16
|
-
flag: Flag,
|
|
17
|
-
},
|
|
18
|
-
});
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
describe('#flag()', () => {
|
|
22
|
-
it('requires an activity URL', () =>
|
|
23
|
-
assert.isRejected(webex.internal.flag.create({}, {}), /`activity.url` is required/));
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
describe('#unflag()', () => {
|
|
27
|
-
it('requires a Flag Id', () =>
|
|
28
|
-
assert.isRejected(webex.internal.flag.unflag({}, {}), /`flag.url` is required/));
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
describe('#archive()', () => {
|
|
32
|
-
it('requires a Flag Id', () =>
|
|
33
|
-
assert.isRejected(webex.internal.flag.archive({}, {}), /`flag.url` is required/));
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
describe('#remove()', () => {
|
|
37
|
-
it('requires a Flag Id', () =>
|
|
38
|
-
assert.isRejected(webex.internal.flag.delete({}, {}), /`flag.url` is required/));
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
});
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import {assert} from '@webex/test-helper-chai';
|
|
6
|
+
import Flag from '@webex/internal-plugin-flag';
|
|
7
|
+
import MockWebex from '@webex/test-helper-mock-webex';
|
|
8
|
+
|
|
9
|
+
describe('plugin-flag', () => {
|
|
10
|
+
describe('Flag', () => {
|
|
11
|
+
let webex;
|
|
12
|
+
|
|
13
|
+
beforeEach(() => {
|
|
14
|
+
webex = new MockWebex({
|
|
15
|
+
children: {
|
|
16
|
+
flag: Flag,
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
describe('#flag()', () => {
|
|
22
|
+
it('requires an activity URL', () =>
|
|
23
|
+
assert.isRejected(webex.internal.flag.create({}, {}), /`activity.url` is required/));
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
describe('#unflag()', () => {
|
|
27
|
+
it('requires a Flag Id', () =>
|
|
28
|
+
assert.isRejected(webex.internal.flag.unflag({}, {}), /`flag.url` is required/));
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
describe('#archive()', () => {
|
|
32
|
+
it('requires a Flag Id', () =>
|
|
33
|
+
assert.isRejected(webex.internal.flag.archive({}, {}), /`flag.url` is required/));
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
describe('#remove()', () => {
|
|
37
|
+
it('requires a Flag Id', () =>
|
|
38
|
+
assert.isRejected(webex.internal.flag.delete({}, {}), /`flag.url` is required/));
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
});
|