@webex/plugin-meetings 3.0.0-beta.274 → 3.0.0-beta.276
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +1 -1
- package/dist/interpretation/index.js +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/index.js +3 -1
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/parser.js +32 -16
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/types/locus-info/parser.d.ts +2 -0
- package/package.json +20 -20
- package/src/locus-info/index.ts +2 -1
- package/src/locus-info/parser.ts +34 -15
- package/test/unit/spec/locus-info/index.js +21 -0
- package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
- package/test/unit/spec/locus-info/parser.js +54 -13
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import sinon from 'sinon';
|
|
6
6
|
import {assert} from '@webex/test-helper-chai';
|
|
7
7
|
import LocusDeltaParser from '@webex/plugin-meetings/src/locus-info/parser';
|
|
8
|
+
import Metrics from '@webex/plugin-meetings/src/metrics';
|
|
8
9
|
|
|
9
10
|
import basicSequenceComparisons from './lib/BasicSeqCmp.json';
|
|
10
11
|
import sequenceComparisons from './lib/SeqCmp';
|
|
@@ -50,9 +51,11 @@ describe('locus-info/parser', () => {
|
|
|
50
51
|
});
|
|
51
52
|
|
|
52
53
|
describe('delta sequence comparisons', () => {
|
|
53
|
-
const {DESYNC, USE_CURRENT, USE_INCOMING} = LocusDeltaParser.loci;
|
|
54
|
+
const {DESYNC, USE_CURRENT, USE_INCOMING, WAIT, LOCUS_URL_CHANGED} = LocusDeltaParser.loci;
|
|
54
55
|
const {extractComparisonState: extract} = LocusDeltaParser;
|
|
55
56
|
|
|
57
|
+
sinon.stub(Metrics, 'sendBehavioralMetric');
|
|
58
|
+
|
|
56
59
|
function translate(action) {
|
|
57
60
|
switch (action) {
|
|
58
61
|
case 'ACCEPT_NEW':
|
|
@@ -61,6 +64,10 @@ describe('locus-info/parser', () => {
|
|
|
61
64
|
return USE_CURRENT;
|
|
62
65
|
case 'DESYNC':
|
|
63
66
|
return DESYNC;
|
|
67
|
+
case 'WAIT':
|
|
68
|
+
return WAIT;
|
|
69
|
+
case 'LOCUS_URL_CHANGED':
|
|
70
|
+
return LOCUS_URL_CHANGED;
|
|
64
71
|
default:
|
|
65
72
|
throw new Error(`${action} not recognized`);
|
|
66
73
|
}
|
|
@@ -73,10 +80,12 @@ describe('locus-info/parser', () => {
|
|
|
73
80
|
|
|
74
81
|
const current = {
|
|
75
82
|
sequence: sequenceComparisons.sequences[currentKey],
|
|
83
|
+
url: sequenceComparisons.update_actions[key].currentUrl,
|
|
76
84
|
};
|
|
77
85
|
const incoming = {
|
|
78
86
|
sequence: sequenceComparisons.sequences[incomingKey],
|
|
79
87
|
baseSequence: sequenceComparisons.sequences[baseKey],
|
|
88
|
+
url: sequenceComparisons.update_actions[key].incomingUrl,
|
|
80
89
|
};
|
|
81
90
|
const comparison = LocusDeltaParser.compare(current, incoming);
|
|
82
91
|
const action = extract(comparison);
|
|
@@ -87,6 +96,8 @@ describe('locus-info/parser', () => {
|
|
|
87
96
|
assert.equal(action, translate(result));
|
|
88
97
|
});
|
|
89
98
|
});
|
|
99
|
+
|
|
100
|
+
Metrics.sendBehavioralMetric.restore();
|
|
90
101
|
});
|
|
91
102
|
});
|
|
92
103
|
|
|
@@ -106,7 +117,7 @@ describe('locus-info/parser', () => {
|
|
|
106
117
|
return burst;
|
|
107
118
|
})();
|
|
108
119
|
|
|
109
|
-
parser.onDeltaAction =
|
|
120
|
+
parser.onDeltaAction = sinon.stub();
|
|
110
121
|
parser.processDeltaEvent = function () {
|
|
111
122
|
const fakeLoci = this.queue.dequeue();
|
|
112
123
|
|
|
@@ -133,7 +144,11 @@ describe('locus-info/parser', () => {
|
|
|
133
144
|
});
|
|
134
145
|
|
|
135
146
|
describe('Processes delta events correctly', () => {
|
|
136
|
-
const
|
|
147
|
+
const CURRENT_LOCI = {sequence: {entries: [100]}, url: 'CURRENT LOCI', baseSequence: {
|
|
148
|
+
"entries": [100], "rangeStart": 100, "rangeEnd": 100}};
|
|
149
|
+
const NEW_LOCI = {sequence: {entries: [200]}, url: 'NEW LOCI', baseSequence: {
|
|
150
|
+
"entries": [200], "rangeStart": 200, "rangeEnd": 200}};
|
|
151
|
+
|
|
137
152
|
let sandbox = null;
|
|
138
153
|
let parser;
|
|
139
154
|
|
|
@@ -142,6 +157,7 @@ describe('locus-info/parser', () => {
|
|
|
142
157
|
parser = new LocusDeltaParser();
|
|
143
158
|
sandbox.stub(parser, 'isValidLocus').returns(true);
|
|
144
159
|
parser.queue.dequeue = sandbox.stub().returns(NEW_LOCI);
|
|
160
|
+
parser.onDeltaAction = sandbox.stub();
|
|
145
161
|
});
|
|
146
162
|
|
|
147
163
|
afterEach(() => {
|
|
@@ -153,7 +169,7 @@ describe('locus-info/parser', () => {
|
|
|
153
169
|
const {DESYNC} = LocusDeltaParser.loci;
|
|
154
170
|
|
|
155
171
|
parser.pause = sandbox.stub();
|
|
156
|
-
|
|
172
|
+
sandbox.stub(LocusDeltaParser, 'compare').returns(DESYNC);
|
|
157
173
|
|
|
158
174
|
parser.processDeltaEvent();
|
|
159
175
|
|
|
@@ -164,7 +180,7 @@ describe('locus-info/parser', () => {
|
|
|
164
180
|
const {USE_INCOMING} = LocusDeltaParser.loci;
|
|
165
181
|
|
|
166
182
|
parser.workingCopy = null;
|
|
167
|
-
|
|
183
|
+
sandbox.stub(LocusDeltaParser, 'compare').returns(USE_INCOMING);
|
|
168
184
|
|
|
169
185
|
parser.processDeltaEvent();
|
|
170
186
|
|
|
@@ -175,8 +191,7 @@ describe('locus-info/parser', () => {
|
|
|
175
191
|
const {USE_INCOMING} = LocusDeltaParser.loci;
|
|
176
192
|
const lociComparison = USE_INCOMING;
|
|
177
193
|
|
|
178
|
-
|
|
179
|
-
parser.onDeltaAction = sandbox.stub();
|
|
194
|
+
sandbox.stub(LocusDeltaParser, 'compare').returns(lociComparison);
|
|
180
195
|
|
|
181
196
|
parser.processDeltaEvent();
|
|
182
197
|
|
|
@@ -186,7 +201,7 @@ describe('locus-info/parser', () => {
|
|
|
186
201
|
it('should call nextEvent()', () => {
|
|
187
202
|
const {USE_INCOMING} = LocusDeltaParser.loci;
|
|
188
203
|
|
|
189
|
-
|
|
204
|
+
sandbox.stub(LocusDeltaParser, 'compare').returns(USE_INCOMING);
|
|
190
205
|
parser.nextEvent = sandbox.stub();
|
|
191
206
|
|
|
192
207
|
parser.processDeltaEvent();
|
|
@@ -197,7 +212,8 @@ describe('locus-info/parser', () => {
|
|
|
197
212
|
it('should not call compare() if locus is invalid', () => {
|
|
198
213
|
const {USE_INCOMING} = LocusDeltaParser.loci;
|
|
199
214
|
|
|
200
|
-
|
|
215
|
+
sandbox.stub(LocusDeltaParser, 'compare').returns(USE_INCOMING);
|
|
216
|
+
|
|
201
217
|
// restore the original method
|
|
202
218
|
parser.isValidLocus.restore();
|
|
203
219
|
parser.isValidLocus.bind(parser);
|
|
@@ -208,9 +224,8 @@ describe('locus-info/parser', () => {
|
|
|
208
224
|
});
|
|
209
225
|
|
|
210
226
|
it('processDeltaEvent() should take next item in queue', () => {
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
227
|
+
parser.workingCopy = CURRENT_LOCI;
|
|
228
|
+
|
|
214
229
|
parser.processDeltaEvent();
|
|
215
230
|
|
|
216
231
|
assert.calledOnce(parser.queue.dequeue);
|
|
@@ -228,7 +243,7 @@ describe('locus-info/parser', () => {
|
|
|
228
243
|
assert.equal(comparisonResults, expectedResults);
|
|
229
244
|
});
|
|
230
245
|
|
|
231
|
-
it('
|
|
246
|
+
it('should be able to unpack comparison results', () => {
|
|
232
247
|
const {extractComparisonState: extract} = LocusDeltaParser;
|
|
233
248
|
|
|
234
249
|
const comparisonResults = 'value04:value03:value:02:value01';
|
|
@@ -236,6 +251,32 @@ describe('locus-info/parser', () => {
|
|
|
236
251
|
|
|
237
252
|
assert.equal(lastResult, 'value04');
|
|
238
253
|
});
|
|
254
|
+
|
|
255
|
+
it('replaces current loci when the locus URL changes and incoming sequence is later, even when baseSequence doesn\'t match', () => {
|
|
256
|
+
const {USE_INCOMING} = LocusDeltaParser.loci;
|
|
257
|
+
|
|
258
|
+
parser.queue.dequeue = sandbox.stub().returns(NEW_LOCI);
|
|
259
|
+
parser.onDeltaAction = sandbox.stub();
|
|
260
|
+
parser.workingCopy = CURRENT_LOCI;
|
|
261
|
+
parser.triggerSync = sandbox.stub();
|
|
262
|
+
|
|
263
|
+
parser.processDeltaEvent();
|
|
264
|
+
|
|
265
|
+
assert.equal(parser.workingCopy, NEW_LOCI);
|
|
266
|
+
});
|
|
267
|
+
|
|
268
|
+
it('does not replace current loci when the locus URL changes but incoming sequence is not later', () => {
|
|
269
|
+
const {USE_INCOMING} = LocusDeltaParser.loci;
|
|
270
|
+
const laterLoci = {...CURRENT_LOCI, sequence: {entries: [300]}};
|
|
271
|
+
|
|
272
|
+
parser.queue.dequeue = sandbox.stub().returns(NEW_LOCI);
|
|
273
|
+
parser.onDeltaAction = sandbox.stub();
|
|
274
|
+
parser.workingCopy = laterLoci;
|
|
275
|
+
|
|
276
|
+
parser.processDeltaEvent();
|
|
277
|
+
|
|
278
|
+
assert.equal(parser.workingCopy, laterLoci);
|
|
279
|
+
});
|
|
239
280
|
});
|
|
240
281
|
|
|
241
282
|
describe('Full Locus handling', () => {
|