softphone-vendor-headsets 1.0.1 → 2.0.0-develop.11
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/README.md +319 -3
- package/dist/1.softhphone-vendor-headsets.js +1 -1
- package/dist/1.softhphone-vendor-headsets.js.map +1 -1
- package/dist/2.softhphone-vendor-headsets.js +1 -1
- package/dist/2.softhphone-vendor-headsets.js.map +1 -1
- package/dist/3.softhphone-vendor-headsets.js +1 -1
- package/dist/3.softhphone-vendor-headsets.js.map +1 -1
- package/dist/cjs/src/config/i18n.js +1 -0
- package/dist/cjs/src/config/i18n.js.map +1 -1
- package/dist/cjs/src/library/index.d.ts +0 -1
- package/dist/cjs/src/library/index.js +5 -2
- package/dist/cjs/src/library/index.js.map +1 -1
- package/dist/cjs/src/library/services/headset.d.ts +5 -1
- package/dist/cjs/src/library/services/headset.js +170 -18
- package/dist/cjs/src/library/services/headset.js.map +1 -1
- package/dist/cjs/src/library/services/headset.test.js +503 -21
- package/dist/cjs/src/library/services/headset.test.js.map +1 -1
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra-native/jabra-native.d.ts +5 -4
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra-native/jabra-native.js +75 -54
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra-native/jabra-native.js.map +1 -1
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra-native/jabra-native.test.js +72 -62
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra-native/jabra-native.test.js.map +1 -1
- package/dist/{es/src/library/services/vendor-implementations/jabra/jabra-native/jabra-native-types.d.ts → cjs/src/library/services/vendor-implementations/jabra/jabra-native/types.d.ts} +10 -0
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra-native/{jabra-native-types.js → types.js} +9 -2
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra-native/types.js.map +1 -0
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra.d.ts +15 -14
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra.js +177 -118
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra.js.map +1 -1
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra.test.js +371 -258
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra.test.js.map +1 -1
- package/dist/cjs/src/library/services/vendor-implementations/jabra/mock-jabra-sdk.d.ts +7 -0
- package/dist/cjs/src/library/services/vendor-implementations/jabra/mock-jabra-sdk.js +11 -0
- package/dist/cjs/src/library/services/vendor-implementations/jabra/mock-jabra-sdk.js.map +1 -0
- package/dist/cjs/src/library/services/vendor-implementations/plantronics/plantronics-call-events.d.ts +11 -1
- package/dist/cjs/src/library/services/vendor-implementations/plantronics/plantronics-call-events.js +39 -39
- package/dist/cjs/src/library/services/vendor-implementations/plantronics/plantronics-call-events.js.map +1 -1
- package/dist/cjs/src/library/services/vendor-implementations/plantronics/plantronics-call-events.test.js +35 -35
- package/dist/cjs/src/library/services/vendor-implementations/plantronics/plantronics-call-events.test.js.map +1 -1
- package/dist/cjs/src/library/services/vendor-implementations/plantronics/plantronics-test-responses.d.ts +101 -9
- package/dist/cjs/src/library/services/vendor-implementations/plantronics/plantronics-test-responses.js +168 -51
- package/dist/cjs/src/library/services/vendor-implementations/plantronics/plantronics-test-responses.js.map +1 -1
- package/dist/cjs/src/library/services/vendor-implementations/plantronics/plantronics.d.ts +6 -2
- package/dist/cjs/src/library/services/vendor-implementations/plantronics/plantronics.js +56 -36
- package/dist/cjs/src/library/services/vendor-implementations/plantronics/plantronics.js.map +1 -1
- package/dist/cjs/src/library/services/vendor-implementations/plantronics/plantronics.test.js +408 -221
- package/dist/cjs/src/library/services/vendor-implementations/plantronics/plantronics.test.js.map +1 -1
- package/dist/cjs/src/library/services/vendor-implementations/sennheiser/sennheiser.d.ts +1 -3
- package/dist/cjs/src/library/services/vendor-implementations/sennheiser/sennheiser.js +61 -87
- package/dist/cjs/src/library/services/vendor-implementations/sennheiser/sennheiser.js.map +1 -1
- package/dist/cjs/src/library/services/vendor-implementations/sennheiser/sennheiser.test.js +140 -233
- package/dist/cjs/src/library/services/vendor-implementations/sennheiser/sennheiser.test.js.map +1 -1
- package/dist/{es/src/library/services/vendor-implementations/sennheiser/sennheiser-events.d.ts → cjs/src/library/services/vendor-implementations/sennheiser/types.d.ts} +19 -0
- package/dist/cjs/src/library/services/vendor-implementations/sennheiser/{sennheiser-events.js → types.js} +8 -2
- package/dist/cjs/src/library/services/vendor-implementations/sennheiser/types.js.map +1 -0
- package/dist/cjs/src/library/services/vendor-implementations/vendor-implementation.d.ts +7 -27
- package/dist/cjs/src/library/services/vendor-implementations/vendor-implementation.js +6 -6
- package/dist/cjs/src/library/services/vendor-implementations/vendor-implementation.js.map +1 -1
- package/dist/cjs/src/library/services/vendor-implementations/vendor-implemntation.test.js.map +1 -1
- package/dist/{es/src/library/test-utils.test.d.ts → cjs/src/library/test-utils.d.ts} +1 -1
- package/dist/cjs/src/library/{test-utils.test.js → test-utils.js} +12 -9
- package/dist/cjs/src/library/test-utils.js.map +1 -0
- package/dist/cjs/src/library/types/consumed-headset-events.d.ts +8 -22
- package/dist/cjs/src/library/types/consumed-headset-events.js +0 -1
- package/dist/cjs/src/library/types/consumed-headset-events.js.map +1 -1
- package/dist/cjs/src/library/types/emitted-headset-events.d.ts +14 -11
- package/dist/cjs/src/library/types/headset-states.d.ts +10 -0
- package/dist/cjs/src/library/types/{jabra-request.js → headset-states.js} +1 -1
- package/dist/cjs/src/library/types/headset-states.js.map +1 -0
- package/dist/cjs/src/library/utils.js.map +1 -1
- package/dist/cjs/src/library/utils.test.js +2 -2
- package/dist/cjs/src/library/utils.test.js.map +1 -1
- package/dist/cjs/src/mocks/call.js +2 -1
- package/dist/cjs/src/mocks/call.js.map +1 -1
- package/dist/cjs/src/mocks/device-service.js +1 -0
- package/dist/cjs/src/mocks/device-service.js.map +1 -1
- package/dist/deploy-info.json +33 -195
- package/dist/es/src/config/i18n.js +1 -0
- package/dist/es/src/config/i18n.js.map +1 -1
- package/dist/es/src/library/index.d.ts +0 -1
- package/dist/es/src/library/index.js +0 -1
- package/dist/es/src/library/index.js.map +1 -1
- package/dist/es/src/library/services/headset.d.ts +5 -1
- package/dist/es/src/library/services/headset.js +170 -18
- package/dist/es/src/library/services/headset.js.map +1 -1
- package/dist/es/src/library/services/headset.test.js +503 -21
- package/dist/es/src/library/services/headset.test.js.map +1 -1
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra-native/jabra-native.d.ts +5 -4
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra-native/jabra-native.js +60 -39
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra-native/jabra-native.js.map +1 -1
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra-native/jabra-native.test.js +20 -14
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra-native/jabra-native.test.js.map +1 -1
- package/dist/{cjs/src/library/services/vendor-implementations/jabra/jabra-native/jabra-native-types.d.ts → es/src/library/services/vendor-implementations/jabra/jabra-native/types.d.ts} +10 -0
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra-native/{jabra-native-types.js → types.js} +8 -1
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra-native/types.js.map +1 -0
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra.d.ts +15 -14
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra.js +181 -122
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra.js.map +1 -1
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra.test.js +373 -260
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra.test.js.map +1 -1
- package/dist/es/src/library/services/vendor-implementations/jabra/mock-jabra-sdk.d.ts +7 -0
- package/dist/es/src/library/services/vendor-implementations/jabra/mock-jabra-sdk.js +7 -0
- package/dist/es/src/library/services/vendor-implementations/jabra/mock-jabra-sdk.js.map +1 -0
- package/dist/es/src/library/services/vendor-implementations/plantronics/plantronics-call-events.d.ts +11 -1
- package/dist/es/src/library/services/vendor-implementations/plantronics/plantronics-call-events.js +38 -38
- package/dist/es/src/library/services/vendor-implementations/plantronics/plantronics-call-events.js.map +1 -1
- package/dist/es/src/library/services/vendor-implementations/plantronics/plantronics-call-events.test.js +36 -36
- package/dist/es/src/library/services/vendor-implementations/plantronics/plantronics-call-events.test.js.map +1 -1
- package/dist/es/src/library/services/vendor-implementations/plantronics/plantronics-test-responses.d.ts +101 -9
- package/dist/es/src/library/services/vendor-implementations/plantronics/plantronics-test-responses.js +169 -52
- package/dist/es/src/library/services/vendor-implementations/plantronics/plantronics-test-responses.js.map +1 -1
- package/dist/es/src/library/services/vendor-implementations/plantronics/plantronics.d.ts +6 -2
- package/dist/es/src/library/services/vendor-implementations/plantronics/plantronics.js +56 -36
- package/dist/es/src/library/services/vendor-implementations/plantronics/plantronics.js.map +1 -1
- package/dist/es/src/library/services/vendor-implementations/plantronics/plantronics.test.js +403 -216
- package/dist/es/src/library/services/vendor-implementations/plantronics/plantronics.test.js.map +1 -1
- package/dist/es/src/library/services/vendor-implementations/sennheiser/sennheiser.d.ts +1 -3
- package/dist/es/src/library/services/vendor-implementations/sennheiser/sennheiser.js +16 -46
- package/dist/es/src/library/services/vendor-implementations/sennheiser/sennheiser.js.map +1 -1
- package/dist/es/src/library/services/vendor-implementations/sennheiser/sennheiser.test.js +37 -134
- package/dist/es/src/library/services/vendor-implementations/sennheiser/sennheiser.test.js.map +1 -1
- package/dist/{cjs/src/library/services/vendor-implementations/sennheiser/sennheiser-events.d.ts → es/src/library/services/vendor-implementations/sennheiser/types.d.ts} +19 -0
- package/dist/es/src/library/services/vendor-implementations/sennheiser/{sennheiser-events.js → types.js} +7 -1
- package/dist/es/src/library/services/vendor-implementations/sennheiser/types.js.map +1 -0
- package/dist/es/src/library/services/vendor-implementations/vendor-implementation.d.ts +7 -27
- package/dist/es/src/library/services/vendor-implementations/vendor-implementation.js +6 -6
- package/dist/es/src/library/services/vendor-implementations/vendor-implementation.js.map +1 -1
- package/dist/es/src/library/services/vendor-implementations/vendor-implemntation.test.js.map +1 -1
- package/dist/{cjs/src/library/test-utils.test.d.ts → es/src/library/test-utils.d.ts} +1 -1
- package/dist/es/src/library/{test-utils.test.js → test-utils.js} +10 -8
- package/dist/es/src/library/test-utils.js.map +1 -0
- package/dist/es/src/library/types/consumed-headset-events.d.ts +8 -22
- package/dist/es/src/library/types/consumed-headset-events.js +0 -1
- package/dist/es/src/library/types/consumed-headset-events.js.map +1 -1
- package/dist/es/src/library/types/emitted-headset-events.d.ts +14 -11
- package/dist/es/src/library/types/headset-states.d.ts +10 -0
- package/dist/es/src/library/types/headset-states.js +2 -0
- package/dist/es/src/library/types/headset-states.js.map +1 -0
- package/dist/es/src/library/utils.js.map +1 -1
- package/dist/es/src/mocks/call.js +1 -0
- package/dist/es/src/mocks/call.js.map +1 -1
- package/dist/es/src/mocks/device-service.js +1 -0
- package/dist/es/src/mocks/device-service.js.map +1 -1
- package/dist/softhphone-vendor-headsets.js +4 -19
- package/dist/softhphone-vendor-headsets.js.map +1 -1
- package/package.json +82 -88
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra-chrome/jabra-chrome-commands.d.ts +0 -13
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra-chrome/jabra-chrome-commands.js +0 -18
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra-chrome/jabra-chrome-commands.js.map +0 -1
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra-chrome/jabra-chrome-event-translation.d.ts +0 -12
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra-chrome/jabra-chrome-event-translation.js +0 -16
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra-chrome/jabra-chrome-event-translation.js.map +0 -1
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra-chrome/jabra-chrome-requested-events.d.ts +0 -5
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra-chrome/jabra-chrome-requested-events.js +0 -10
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra-chrome/jabra-chrome-requested-events.js.map +0 -1
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra-chrome/jabra-chrome.d.ts +0 -38
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra-chrome/jabra-chrome.js +0 -251
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra-chrome/jabra-chrome.js.map +0 -1
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra-chrome/jabra-chrome.test.d.ts +0 -1
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra-chrome/jabra-chrome.test.js +0 -573
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra-chrome/jabra-chrome.test.js.map +0 -1
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra-commands.d.ts +0 -13
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra-commands.js +0 -18
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra-commands.js.map +0 -1
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra-native/jabra-native-commands.d.ts +0 -6
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra-native/jabra-native-commands.js +0 -11
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra-native/jabra-native-commands.js.map +0 -1
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra-native/jabra-native-heaset-state.d.ts +0 -4
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra-native/jabra-native-heaset-state.js +0 -3
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra-native/jabra-native-heaset-state.js.map +0 -1
- package/dist/cjs/src/library/services/vendor-implementations/jabra/jabra-native/jabra-native-types.js.map +0 -1
- package/dist/cjs/src/library/services/vendor-implementations/sennheiser/sennheiser-event-types.d.ts +0 -5
- package/dist/cjs/src/library/services/vendor-implementations/sennheiser/sennheiser-event-types.js +0 -10
- package/dist/cjs/src/library/services/vendor-implementations/sennheiser/sennheiser-event-types.js.map +0 -1
- package/dist/cjs/src/library/services/vendor-implementations/sennheiser/sennheiser-events.js.map +0 -1
- package/dist/cjs/src/library/services/vendor-implementations/sennheiser/sennheiser-payload.d.ts +0 -16
- package/dist/cjs/src/library/services/vendor-implementations/sennheiser/sennheiser-payload.js +0 -3
- package/dist/cjs/src/library/services/vendor-implementations/sennheiser/sennheiser-payload.js.map +0 -1
- package/dist/cjs/src/library/test-utils.test.js.map +0 -1
- package/dist/cjs/src/library/types/jabra-request.d.ts +0 -3
- package/dist/cjs/src/library/types/jabra-request.js.map +0 -1
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra-chrome/jabra-chrome-commands.d.ts +0 -13
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra-chrome/jabra-chrome-commands.js +0 -15
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra-chrome/jabra-chrome-commands.js.map +0 -1
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra-chrome/jabra-chrome-event-translation.d.ts +0 -12
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra-chrome/jabra-chrome-event-translation.js +0 -13
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra-chrome/jabra-chrome-event-translation.js.map +0 -1
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra-chrome/jabra-chrome-requested-events.d.ts +0 -5
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra-chrome/jabra-chrome-requested-events.js +0 -7
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra-chrome/jabra-chrome-requested-events.js.map +0 -1
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra-chrome/jabra-chrome.d.ts +0 -38
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra-chrome/jabra-chrome.js +0 -248
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra-chrome/jabra-chrome.js.map +0 -1
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra-chrome/jabra-chrome.test.d.ts +0 -1
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra-chrome/jabra-chrome.test.js +0 -568
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra-chrome/jabra-chrome.test.js.map +0 -1
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra-commands.d.ts +0 -13
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra-commands.js +0 -15
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra-commands.js.map +0 -1
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra-native/jabra-native-commands.d.ts +0 -6
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra-native/jabra-native-commands.js +0 -8
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra-native/jabra-native-commands.js.map +0 -1
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra-native/jabra-native-heaset-state.d.ts +0 -4
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra-native/jabra-native-heaset-state.js +0 -2
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra-native/jabra-native-heaset-state.js.map +0 -1
- package/dist/es/src/library/services/vendor-implementations/jabra/jabra-native/jabra-native-types.js.map +0 -1
- package/dist/es/src/library/services/vendor-implementations/sennheiser/sennheiser-event-types.d.ts +0 -5
- package/dist/es/src/library/services/vendor-implementations/sennheiser/sennheiser-event-types.js +0 -7
- package/dist/es/src/library/services/vendor-implementations/sennheiser/sennheiser-event-types.js.map +0 -1
- package/dist/es/src/library/services/vendor-implementations/sennheiser/sennheiser-events.js.map +0 -1
- package/dist/es/src/library/services/vendor-implementations/sennheiser/sennheiser-payload.d.ts +0 -16
- package/dist/es/src/library/services/vendor-implementations/sennheiser/sennheiser-payload.js +0 -2
- package/dist/es/src/library/services/vendor-implementations/sennheiser/sennheiser-payload.js.map +0 -1
- package/dist/es/src/library/test-utils.test.js.map +0 -1
- package/dist/es/src/library/types/jabra-request.d.ts +0 -3
- package/dist/es/src/library/types/jabra-request.js +0 -2
- package/dist/es/src/library/types/jabra-request.js.map +0 -1
|
@@ -21,6 +21,7 @@ const jabra_1 = __importDefault(require("./vendor-implementations/jabra/jabra"))
|
|
|
21
21
|
require("regenerator-runtime");
|
|
22
22
|
const broadcast_channel_1 = require("broadcast-channel");
|
|
23
23
|
const consumed_headset_events_1 = require("../types/consumed-headset-events");
|
|
24
|
+
const rxjs_1 = require("rxjs");
|
|
24
25
|
jest.mock('broadcast-channel');
|
|
25
26
|
describe('HeadsetService', () => {
|
|
26
27
|
let plantronics;
|
|
@@ -29,10 +30,8 @@ describe('HeadsetService', () => {
|
|
|
29
30
|
let jabraNative;
|
|
30
31
|
let jabra;
|
|
31
32
|
let headsetService;
|
|
32
|
-
// let jabraSdk: Promise<IApi>;
|
|
33
33
|
const config = { logger: console };
|
|
34
34
|
beforeEach(() => {
|
|
35
|
-
// jabraSdk = initializeSdk(subject);
|
|
36
35
|
headsetService = headset_1.default.getInstance(Object.assign(Object.assign({}, config), { createNew: true }));
|
|
37
36
|
plantronics = plantronics_1.default.getInstance(Object.assign(Object.assign({}, config), { vendorName: 'Plantronics' }));
|
|
38
37
|
sennheiser = sennheiser_1.default.getInstance(Object.assign(Object.assign({}, config), { vendorName: 'Sennheiser' }));
|
|
@@ -180,35 +179,123 @@ describe('HeadsetService', () => {
|
|
|
180
179
|
afterEach(() => {
|
|
181
180
|
jest.resetAllMocks();
|
|
182
181
|
});
|
|
182
|
+
it('should do nothing if already in the expected state', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
183
|
+
const conversationId = 'convoId241123';
|
|
184
|
+
plantronics.isConnected = true;
|
|
185
|
+
headsetService['headsetConversationStates'] = {
|
|
186
|
+
[conversationId]: {
|
|
187
|
+
offHook: true,
|
|
188
|
+
muted: false,
|
|
189
|
+
held: true,
|
|
190
|
+
ringing: false,
|
|
191
|
+
conversationId
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
yield headsetService.answerCall(conversationId);
|
|
195
|
+
expect(plantronics.answerCall).not.toHaveBeenCalled();
|
|
196
|
+
}));
|
|
183
197
|
it('should call answerCall on the selected implementation when the implementation is connected', () => {
|
|
184
|
-
const conversationId = '
|
|
198
|
+
const conversationId = 'convoId123';
|
|
185
199
|
plantronics.isConnected = true;
|
|
200
|
+
headsetService['headsetConversationStates'] = {
|
|
201
|
+
'convoId123': {
|
|
202
|
+
offHook: false,
|
|
203
|
+
muted: false,
|
|
204
|
+
held: false,
|
|
205
|
+
ringing: true,
|
|
206
|
+
conversationId: 'convoId123'
|
|
207
|
+
}
|
|
208
|
+
};
|
|
186
209
|
headsetService.answerCall(conversationId);
|
|
187
210
|
expect(plantronics.answerCall).toHaveBeenCalledWith(conversationId);
|
|
188
211
|
});
|
|
189
|
-
it('
|
|
212
|
+
it('should not call answerCall on the selected implmenetation when the implementation is not connected', () => {
|
|
190
213
|
const conversationId = '1234';
|
|
191
214
|
plantronics.isConnected = false;
|
|
192
215
|
headsetService.answerCall(conversationId);
|
|
193
216
|
expect(plantronics.answerCall).not.toHaveBeenCalled();
|
|
194
217
|
});
|
|
195
218
|
});
|
|
196
|
-
describe('
|
|
219
|
+
describe('rejectCall', () => {
|
|
197
220
|
beforeEach(() => {
|
|
221
|
+
jest.useFakeTimers();
|
|
198
222
|
headsetService = headset_1.default.getInstance(config);
|
|
199
223
|
jest.spyOn(plantronics, 'rejectCall').mockResolvedValue({});
|
|
200
224
|
headsetService.selectedImplementation = plantronics;
|
|
201
225
|
});
|
|
202
226
|
afterEach(() => {
|
|
203
227
|
jest.resetAllMocks();
|
|
228
|
+
jest.useRealTimers();
|
|
204
229
|
});
|
|
230
|
+
it('should do nothing if already in expected state', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
231
|
+
const conversationId = 'convoId12523';
|
|
232
|
+
plantronics.isConnected = true;
|
|
233
|
+
headsetService['headsetConversationStates'] = {
|
|
234
|
+
[conversationId]: {
|
|
235
|
+
offHook: false,
|
|
236
|
+
muted: false,
|
|
237
|
+
held: false,
|
|
238
|
+
ringing: false,
|
|
239
|
+
conversationId
|
|
240
|
+
}
|
|
241
|
+
};
|
|
242
|
+
yield headsetService.rejectCall(conversationId);
|
|
243
|
+
expect(plantronics.rejectCall).not.toHaveBeenCalled();
|
|
244
|
+
}));
|
|
245
|
+
it('should not delete the headset state if there is no removeTimer', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
246
|
+
const conversationId = 'convoId12523';
|
|
247
|
+
plantronics.isConnected = true;
|
|
248
|
+
headsetService['headsetConversationStates'] = {
|
|
249
|
+
[conversationId]: {
|
|
250
|
+
offHook: false,
|
|
251
|
+
muted: false,
|
|
252
|
+
held: false,
|
|
253
|
+
ringing: true,
|
|
254
|
+
conversationId
|
|
255
|
+
}
|
|
256
|
+
};
|
|
257
|
+
yield headsetService.rejectCall(conversationId);
|
|
258
|
+
expect(headsetService['headsetConversationStates'][conversationId]).toBeTruthy();
|
|
259
|
+
delete headsetService['headsetConversationStates'][conversationId].removeTimer;
|
|
260
|
+
jest.advanceTimersByTime(3000);
|
|
261
|
+
expect(headsetService['headsetConversationStates'][conversationId]).toBeTruthy();
|
|
262
|
+
}));
|
|
263
|
+
it('should delete the headset state if there is removeTimer', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
264
|
+
const conversationId = 'convoId12523';
|
|
265
|
+
plantronics.isConnected = true;
|
|
266
|
+
headsetService['headsetConversationStates'] = {
|
|
267
|
+
[conversationId]: {
|
|
268
|
+
offHook: false,
|
|
269
|
+
muted: false,
|
|
270
|
+
held: false,
|
|
271
|
+
ringing: true,
|
|
272
|
+
conversationId
|
|
273
|
+
}
|
|
274
|
+
};
|
|
275
|
+
yield headsetService.rejectCall(conversationId);
|
|
276
|
+
expect(headsetService['headsetConversationStates'][conversationId]).toBeTruthy();
|
|
277
|
+
jest.advanceTimersByTime(3000);
|
|
278
|
+
expect(headsetService['headsetConversationStates'][conversationId]).toBeFalsy();
|
|
279
|
+
}));
|
|
205
280
|
it('should call rejectCall on the selected implementation when the implementation is connected', () => {
|
|
206
|
-
const conversationId = '
|
|
281
|
+
const conversationId = 'convoId123';
|
|
207
282
|
plantronics.isConnected = true;
|
|
283
|
+
headsetService['headsetConversationStates'] = {
|
|
284
|
+
'convoId123': {
|
|
285
|
+
offHook: false,
|
|
286
|
+
muted: false,
|
|
287
|
+
held: false,
|
|
288
|
+
ringing: true,
|
|
289
|
+
conversationId: 'convoId123'
|
|
290
|
+
}
|
|
291
|
+
};
|
|
208
292
|
headsetService.rejectCall(conversationId);
|
|
209
293
|
expect(plantronics.rejectCall).toHaveBeenCalledWith(conversationId);
|
|
294
|
+
expect(headsetService['headsetConversationStates']['convoId123'].removeTimer).toBeDefined();
|
|
295
|
+
jest.advanceTimersByTime(2500);
|
|
296
|
+
expect(headsetService['headsetConversationStates']).toStrictEqual({});
|
|
210
297
|
});
|
|
211
|
-
it('
|
|
298
|
+
it('should not call rejectCall on the selected implmenetation when the implementation is not connected', () => {
|
|
212
299
|
const conversationId = '1234';
|
|
213
300
|
plantronics.isConnected = false;
|
|
214
301
|
headsetService.rejectCall(conversationId);
|
|
@@ -224,10 +311,35 @@ describe('HeadsetService', () => {
|
|
|
224
311
|
afterEach(() => {
|
|
225
312
|
jest.resetAllMocks();
|
|
226
313
|
});
|
|
314
|
+
it('should do nothing if all calls are muted', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
315
|
+
const conversationId = 'convoId123';
|
|
316
|
+
plantronics.isConnected = true;
|
|
317
|
+
headsetService['headsetConversationStates'] = {
|
|
318
|
+
[conversationId]: {
|
|
319
|
+
offHook: true,
|
|
320
|
+
muted: true,
|
|
321
|
+
held: true,
|
|
322
|
+
ringing: false,
|
|
323
|
+
conversationId
|
|
324
|
+
}
|
|
325
|
+
};
|
|
326
|
+
yield headsetService.setMute(true);
|
|
327
|
+
expect(plantronics.setMute).not.toHaveBeenCalled();
|
|
328
|
+
}));
|
|
227
329
|
it('should call setMute on the selected implementation when the implementation is connected', () => {
|
|
228
330
|
plantronics.isConnected = true;
|
|
331
|
+
headsetService['headsetConversationStates'] = {
|
|
332
|
+
'convoId123': {
|
|
333
|
+
offHook: false,
|
|
334
|
+
muted: false,
|
|
335
|
+
held: false,
|
|
336
|
+
ringing: true,
|
|
337
|
+
conversationId: 'convoId123'
|
|
338
|
+
}
|
|
339
|
+
};
|
|
229
340
|
headsetService.setMute(true);
|
|
230
341
|
expect(plantronics.setMute).toHaveBeenCalledWith(true);
|
|
342
|
+
expect(headsetService['headsetConversationStates']['convoId123'].muted).toBe(true);
|
|
231
343
|
});
|
|
232
344
|
it('shouldnot call setMute on the selected implmenetation when the implementation is not connected', () => {
|
|
233
345
|
plantronics.isConnected = false;
|
|
@@ -244,9 +356,33 @@ describe('HeadsetService', () => {
|
|
|
244
356
|
afterEach(() => {
|
|
245
357
|
jest.resetAllMocks();
|
|
246
358
|
});
|
|
359
|
+
it('should do nothing if already in expected state', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
360
|
+
const conversationId = 'convoId123';
|
|
361
|
+
plantronics.isConnected = true;
|
|
362
|
+
headsetService['headsetConversationStates'] = {
|
|
363
|
+
[conversationId]: {
|
|
364
|
+
offHook: true,
|
|
365
|
+
muted: false,
|
|
366
|
+
held: true,
|
|
367
|
+
ringing: false,
|
|
368
|
+
conversationId
|
|
369
|
+
}
|
|
370
|
+
};
|
|
371
|
+
yield headsetService.setHold(conversationId, true);
|
|
372
|
+
expect(plantronics.setHold).not.toHaveBeenCalled();
|
|
373
|
+
}));
|
|
247
374
|
it('should call setHold on the selected implementation when the implementation is connected', () => {
|
|
248
|
-
const conversationId = '
|
|
375
|
+
const conversationId = 'convoId123';
|
|
249
376
|
plantronics.isConnected = true;
|
|
377
|
+
headsetService['headsetConversationStates'] = {
|
|
378
|
+
'convoId123': {
|
|
379
|
+
offHook: true,
|
|
380
|
+
muted: false,
|
|
381
|
+
held: false,
|
|
382
|
+
ringing: false,
|
|
383
|
+
conversationId: 'convoId123'
|
|
384
|
+
}
|
|
385
|
+
};
|
|
250
386
|
headsetService.setHold(conversationId, true);
|
|
251
387
|
expect(plantronics.setHold).toHaveBeenCalledWith(conversationId, true);
|
|
252
388
|
});
|
|
@@ -259,19 +395,86 @@ describe('HeadsetService', () => {
|
|
|
259
395
|
});
|
|
260
396
|
describe('endCall', () => {
|
|
261
397
|
beforeEach(() => {
|
|
398
|
+
jest.useFakeTimers();
|
|
262
399
|
headsetService = headset_1.default.getInstance(config);
|
|
263
400
|
jest.spyOn(plantronics, 'endCall').mockResolvedValue({});
|
|
264
401
|
headsetService.selectedImplementation = plantronics;
|
|
265
402
|
});
|
|
266
403
|
afterEach(() => {
|
|
404
|
+
jest.useRealTimers();
|
|
267
405
|
jest.resetAllMocks();
|
|
268
406
|
});
|
|
407
|
+
it('should do nothing if already in expected state', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
408
|
+
const conversationId = 'myconvoId5';
|
|
409
|
+
plantronics.isConnected = true;
|
|
410
|
+
headsetService['headsetConversationStates'] = {
|
|
411
|
+
[conversationId]: {
|
|
412
|
+
conversationId,
|
|
413
|
+
held: false,
|
|
414
|
+
muted: false,
|
|
415
|
+
offHook: false,
|
|
416
|
+
ringing: false,
|
|
417
|
+
removeTimer: 12525
|
|
418
|
+
}
|
|
419
|
+
};
|
|
420
|
+
const timeoutSpy = jest.spyOn(window, 'setTimeout');
|
|
421
|
+
headsetService.endCall(conversationId, false);
|
|
422
|
+
expect(timeoutSpy).not.toHaveBeenCalled();
|
|
423
|
+
timeoutSpy.mockRestore();
|
|
424
|
+
}));
|
|
425
|
+
it('should delete headset state after time', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
426
|
+
const conversationId = 'myconvoId5';
|
|
427
|
+
plantronics.isConnected = true;
|
|
428
|
+
headsetService['headsetConversationStates'] = {
|
|
429
|
+
[conversationId]: {
|
|
430
|
+
conversationId,
|
|
431
|
+
held: false,
|
|
432
|
+
muted: false,
|
|
433
|
+
offHook: true,
|
|
434
|
+
ringing: false,
|
|
435
|
+
}
|
|
436
|
+
};
|
|
437
|
+
yield headsetService.endCall(conversationId, false);
|
|
438
|
+
expect(headsetService['headsetConversationStates'][conversationId]).toBeTruthy();
|
|
439
|
+
jest.advanceTimersByTime(3000);
|
|
440
|
+
expect(headsetService['headsetConversationStates'][conversationId]).toBeFalsy();
|
|
441
|
+
}));
|
|
442
|
+
it('should not delete headset state after time if there is no removeTimer', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
443
|
+
const conversationId = 'myconvoId5';
|
|
444
|
+
plantronics.isConnected = true;
|
|
445
|
+
headsetService['headsetConversationStates'] = {
|
|
446
|
+
[conversationId]: {
|
|
447
|
+
conversationId,
|
|
448
|
+
held: false,
|
|
449
|
+
muted: false,
|
|
450
|
+
offHook: true,
|
|
451
|
+
ringing: false,
|
|
452
|
+
}
|
|
453
|
+
};
|
|
454
|
+
yield headsetService.endCall(conversationId, false);
|
|
455
|
+
expect(headsetService['headsetConversationStates'][conversationId]).toBeTruthy();
|
|
456
|
+
delete headsetService['headsetConversationStates'][conversationId].removeTimer;
|
|
457
|
+
jest.advanceTimersByTime(3000);
|
|
458
|
+
expect(headsetService['headsetConversationStates'][conversationId]).toBeTruthy();
|
|
459
|
+
}));
|
|
269
460
|
it('should call endCall on the selected implementation when the implementation is connected', () => {
|
|
270
|
-
const conversationId = '
|
|
461
|
+
const conversationId = 'convoId123';
|
|
271
462
|
const hasOtherActiveCalls = false;
|
|
272
463
|
plantronics.isConnected = true;
|
|
464
|
+
headsetService['headsetConversationStates'] = {
|
|
465
|
+
'convoId123': {
|
|
466
|
+
offHook: true,
|
|
467
|
+
muted: false,
|
|
468
|
+
held: false,
|
|
469
|
+
ringing: false,
|
|
470
|
+
conversationId: 'convoId123'
|
|
471
|
+
}
|
|
472
|
+
};
|
|
273
473
|
headsetService.endCall(conversationId, hasOtherActiveCalls);
|
|
274
474
|
expect(plantronics.endCall).toHaveBeenCalledWith(conversationId, hasOtherActiveCalls);
|
|
475
|
+
expect(headsetService['headsetConversationStates']['convoId123'].removeTimer).toBeDefined();
|
|
476
|
+
jest.advanceTimersByTime(2500);
|
|
477
|
+
expect(headsetService['headsetConversationStates']).toStrictEqual({});
|
|
275
478
|
});
|
|
276
479
|
it('shouldnot call endCall on the selected implmenetation when the implementation is not connected', () => {
|
|
277
480
|
const conversationId = '1234';
|
|
@@ -283,17 +486,97 @@ describe('HeadsetService', () => {
|
|
|
283
486
|
});
|
|
284
487
|
describe('endAllCalls', () => {
|
|
285
488
|
beforeEach(() => {
|
|
489
|
+
jest.useFakeTimers();
|
|
286
490
|
headsetService = headset_1.default.getInstance(config);
|
|
287
491
|
jest.spyOn(plantronics, 'endAllCalls').mockResolvedValue({});
|
|
288
492
|
headsetService.selectedImplementation = plantronics;
|
|
289
493
|
});
|
|
290
494
|
afterEach(() => {
|
|
495
|
+
jest.useRealTimers();
|
|
291
496
|
jest.resetAllMocks();
|
|
292
497
|
});
|
|
498
|
+
it('should not setTimeout if there is already a remove timer', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
499
|
+
plantronics.isConnected = true;
|
|
500
|
+
headsetService['headsetConversationStates'] = {
|
|
501
|
+
'myConvoId': {
|
|
502
|
+
conversationId: 'myConvoId',
|
|
503
|
+
held: false,
|
|
504
|
+
muted: false,
|
|
505
|
+
offHook: true,
|
|
506
|
+
ringing: false,
|
|
507
|
+
removeTimer: 12525
|
|
508
|
+
}
|
|
509
|
+
};
|
|
510
|
+
const timeoutSpy = jest.spyOn(window, 'setTimeout');
|
|
511
|
+
yield headsetService.endAllCalls();
|
|
512
|
+
expect(timeoutSpy).not.toHaveBeenCalled();
|
|
513
|
+
timeoutSpy.mockRestore();
|
|
514
|
+
}));
|
|
515
|
+
it('should not delete if theres no remove timer', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
516
|
+
plantronics.isConnected = true;
|
|
517
|
+
const conversationId = 'myConvoId15521';
|
|
518
|
+
headsetService['headsetConversationStates'] = {
|
|
519
|
+
[conversationId]: {
|
|
520
|
+
conversationId,
|
|
521
|
+
held: false,
|
|
522
|
+
muted: false,
|
|
523
|
+
offHook: true,
|
|
524
|
+
ringing: false,
|
|
525
|
+
}
|
|
526
|
+
};
|
|
527
|
+
yield headsetService.endAllCalls();
|
|
528
|
+
delete headsetService['headsetConversationStates'][conversationId].removeTimer;
|
|
529
|
+
jest.advanceTimersByTime(3000);
|
|
530
|
+
expect(headsetService['headsetConversationStates'][conversationId]).toBeTruthy();
|
|
531
|
+
}));
|
|
532
|
+
it('should delete headset state', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
533
|
+
plantronics.isConnected = true;
|
|
534
|
+
const conversationId = 'myConvoId151';
|
|
535
|
+
headsetService['headsetConversationStates'] = {
|
|
536
|
+
[conversationId]: {
|
|
537
|
+
conversationId,
|
|
538
|
+
held: false,
|
|
539
|
+
muted: false,
|
|
540
|
+
offHook: true,
|
|
541
|
+
ringing: false,
|
|
542
|
+
}
|
|
543
|
+
};
|
|
544
|
+
yield headsetService.endAllCalls();
|
|
545
|
+
jest.advanceTimersByTime(3000);
|
|
546
|
+
expect(headsetService['headsetConversationStates'][conversationId]).toBeFalsy();
|
|
547
|
+
}));
|
|
293
548
|
it('should call endAllCalls on the selected implementation when the implementation is connected', () => {
|
|
294
549
|
plantronics.isConnected = true;
|
|
550
|
+
headsetService['headsetConversationStates'] = {
|
|
551
|
+
'convoId123': {
|
|
552
|
+
offHook: true,
|
|
553
|
+
muted: false,
|
|
554
|
+
held: false,
|
|
555
|
+
ringing: false,
|
|
556
|
+
conversationId: 'convoId123'
|
|
557
|
+
},
|
|
558
|
+
'convoId456': {
|
|
559
|
+
offHook: true,
|
|
560
|
+
muted: false,
|
|
561
|
+
held: false,
|
|
562
|
+
ringing: false,
|
|
563
|
+
conversationId: 'convoId456'
|
|
564
|
+
},
|
|
565
|
+
'convoId789': {
|
|
566
|
+
offHook: true,
|
|
567
|
+
muted: false,
|
|
568
|
+
held: false,
|
|
569
|
+
ringing: false,
|
|
570
|
+
conversationId: 'convoId789'
|
|
571
|
+
}
|
|
572
|
+
};
|
|
295
573
|
headsetService.endAllCalls();
|
|
574
|
+
Object.keys(headsetService['headsetConversationStates']).forEach((key) => {
|
|
575
|
+
expect(headsetService['headsetConversationStates'][key].removeTimer).toBeDefined();
|
|
576
|
+
});
|
|
296
577
|
expect(plantronics.endAllCalls).toHaveBeenCalled();
|
|
578
|
+
jest.advanceTimersByTime(2500);
|
|
579
|
+
expect(headsetService['headsetConversationStates']).toStrictEqual({});
|
|
297
580
|
});
|
|
298
581
|
it('shouldnot call endAllCalls on the selected implmenetation when the implementation is not connected', () => {
|
|
299
582
|
plantronics.isConnected = false;
|
|
@@ -311,11 +594,20 @@ describe('HeadsetService', () => {
|
|
|
311
594
|
headsetService = headset_1.default.getInstance(config);
|
|
312
595
|
});
|
|
313
596
|
it('should return nothing if the selected implementation does not match the vendor passed in from the event', () => {
|
|
314
|
-
const result = headsetService['handleDeviceAnsweredCall']({ vendor: {}, body: { name: 'AcceptCall', code: '1', event: {} } });
|
|
597
|
+
const result = headsetService['handleDeviceAnsweredCall']({ vendor: {}, body: { name: 'AcceptCall', code: '1', event: {}, conversationId: 'myconvo' } });
|
|
315
598
|
expect(result).toBeUndefined();
|
|
316
599
|
});
|
|
317
600
|
it('should send a headset event of type DEVICE_ANSWERED_CALL', (done) => {
|
|
318
|
-
const testEvent = { vendor: plantronics, body: { name: 'AcceptCall', code: '1', event: {} } };
|
|
601
|
+
const testEvent = { vendor: plantronics, body: { name: 'AcceptCall', code: '1', conversationId: 'convoId123', event: {} } };
|
|
602
|
+
headsetService['headsetConversationStates'] = {
|
|
603
|
+
[testEvent.body.conversationId]: {
|
|
604
|
+
offHook: false,
|
|
605
|
+
muted: false,
|
|
606
|
+
held: false,
|
|
607
|
+
ringing: true,
|
|
608
|
+
conversationId: testEvent.body.conversationId
|
|
609
|
+
}
|
|
610
|
+
};
|
|
319
611
|
headsetService.headsetEvents$.subscribe((event) => {
|
|
320
612
|
expect(event.event).toBe('deviceAnsweredCall');
|
|
321
613
|
expect(event.payload).toStrictEqual(testEvent.body);
|
|
@@ -323,43 +615,128 @@ describe('HeadsetService', () => {
|
|
|
323
615
|
});
|
|
324
616
|
headsetService.selectedImplementation = plantronics;
|
|
325
617
|
headsetService['handleDeviceAnsweredCall'](testEvent);
|
|
618
|
+
expect(headsetService['headsetConversationStates'][testEvent.body.conversationId]).toStrictEqual({
|
|
619
|
+
offHook: true,
|
|
620
|
+
muted: false,
|
|
621
|
+
held: false,
|
|
622
|
+
ringing: false,
|
|
623
|
+
conversationId: testEvent.body.conversationId
|
|
624
|
+
});
|
|
326
625
|
});
|
|
327
626
|
});
|
|
328
627
|
describe('triggerDeviceRejectedCall', () => {
|
|
329
628
|
beforeEach(() => {
|
|
629
|
+
jest.useFakeTimers();
|
|
330
630
|
headsetService = headset_1.default.getInstance(config);
|
|
331
631
|
});
|
|
632
|
+
afterEach(() => {
|
|
633
|
+
jest.useRealTimers();
|
|
634
|
+
});
|
|
332
635
|
it('should return nothing if the selected implementation does not match the vendor passed in from the event', () => {
|
|
333
|
-
const result = headsetService['handleDeviceRejectedCall']({ vendor: {}, body: { conversationId: 'a1b2c3' } });
|
|
636
|
+
const result = headsetService['handleDeviceRejectedCall']({ vendor: {}, body: { name: 'CallRejected', conversationId: 'a1b2c3' } });
|
|
334
637
|
expect(result).toBeUndefined();
|
|
335
638
|
});
|
|
336
639
|
it('should send a headset event of type DEVICE_REJECTED_CALL', (done) => {
|
|
337
640
|
headsetService.headsetEvents$.subscribe((event) => {
|
|
338
641
|
expect(event.event).toBe('deviceRejectedCall');
|
|
339
|
-
expect(event.payload).toStrictEqual({ conversationId: 'a1b2c3' });
|
|
642
|
+
expect(event.payload).toStrictEqual({ conversationId: 'a1b2c3', name: 'callrejected' });
|
|
340
643
|
done();
|
|
341
644
|
});
|
|
342
645
|
headsetService.selectedImplementation = plantronics;
|
|
343
|
-
const testEvent = { vendor: plantronics, body: { conversationId: 'a1b2c3' } };
|
|
646
|
+
const testEvent = { vendor: plantronics, body: { name: 'callrejected', conversationId: 'a1b2c3' } };
|
|
647
|
+
headsetService['headsetConversationStates'] = {
|
|
648
|
+
[testEvent.body.conversationId]: {
|
|
649
|
+
offHook: false,
|
|
650
|
+
muted: false,
|
|
651
|
+
held: false,
|
|
652
|
+
ringing: true,
|
|
653
|
+
conversationId: testEvent.body.conversationId
|
|
654
|
+
}
|
|
655
|
+
};
|
|
656
|
+
headsetService['handleDeviceRejectedCall'](testEvent);
|
|
657
|
+
expect(headsetService['headsetConversationStates'][testEvent.body.conversationId]).toMatchObject({
|
|
658
|
+
offHook: false,
|
|
659
|
+
muted: false,
|
|
660
|
+
held: false,
|
|
661
|
+
ringing: false,
|
|
662
|
+
conversationId: testEvent.body.conversationId
|
|
663
|
+
});
|
|
664
|
+
expect(headsetService['headsetConversationStates'][testEvent.body.conversationId]).toHaveProperty('removeTimer');
|
|
665
|
+
jest.advanceTimersByTime(3100);
|
|
666
|
+
expect(headsetService['headsetConversationStates'][testEvent.body.conversationId]).toBeFalsy();
|
|
667
|
+
});
|
|
668
|
+
it('should do nothing if already in expected state', () => {
|
|
669
|
+
headsetService.selectedImplementation = plantronics;
|
|
670
|
+
const testEvent = { vendor: plantronics, body: { name: 'callrejected', conversationId: 'a1b2c3' } };
|
|
671
|
+
headsetService['headsetConversationStates'] = {
|
|
672
|
+
[testEvent.body.conversationId]: {
|
|
673
|
+
offHook: false,
|
|
674
|
+
muted: false,
|
|
675
|
+
held: false,
|
|
676
|
+
ringing: false,
|
|
677
|
+
conversationId: testEvent.body.conversationId
|
|
678
|
+
}
|
|
679
|
+
};
|
|
680
|
+
const timeoutSpy = jest.spyOn(window, 'setTimeout');
|
|
344
681
|
headsetService['handleDeviceRejectedCall'](testEvent);
|
|
682
|
+
expect(timeoutSpy).not.toHaveBeenCalled();
|
|
683
|
+
timeoutSpy.mockRestore();
|
|
345
684
|
});
|
|
346
685
|
});
|
|
347
686
|
describe('triggerDeviceEndedCall', () => {
|
|
348
687
|
beforeEach(() => {
|
|
688
|
+
jest.useFakeTimers();
|
|
349
689
|
headsetService = headset_1.default.getInstance(config);
|
|
690
|
+
jest.resetAllMocks();
|
|
691
|
+
});
|
|
692
|
+
afterEach(() => {
|
|
693
|
+
jest.useRealTimers();
|
|
350
694
|
});
|
|
351
695
|
it('should send a headset event of type DEVICE_ENDED_CALL', (done) => {
|
|
352
696
|
headsetService.headsetEvents$.subscribe((event) => {
|
|
353
697
|
expect(event.event).toBe('deviceEndedCall');
|
|
354
698
|
expect(event.payload).toStrictEqual(testEvent.body);
|
|
355
699
|
done();
|
|
356
|
-
expect(event.event).toBe('loggableEvent');
|
|
357
|
-
expect(event.payload).toStrictEqual(testEvent.body);
|
|
358
|
-
done();
|
|
359
700
|
});
|
|
360
|
-
const testEvent = { vendor: {}, body: { name: 'TerminateCall', code: '2', event: {} } };
|
|
701
|
+
const testEvent = { vendor: {}, body: { name: 'TerminateCall', code: '2', event: {}, conversationId: 'convo421' } };
|
|
702
|
+
headsetService['headsetConversationStates'] = {
|
|
703
|
+
[testEvent.body.conversationId]: {
|
|
704
|
+
offHook: true,
|
|
705
|
+
muted: false,
|
|
706
|
+
held: false,
|
|
707
|
+
ringing: false,
|
|
708
|
+
conversationId: testEvent.body.conversationId
|
|
709
|
+
}
|
|
710
|
+
};
|
|
711
|
+
headsetService['handleDeviceEndedCall'](testEvent);
|
|
712
|
+
expect(headsetService['headsetConversationStates'][testEvent.body.conversationId]).toMatchObject({
|
|
713
|
+
offHook: false,
|
|
714
|
+
muted: false,
|
|
715
|
+
held: false,
|
|
716
|
+
ringing: false,
|
|
717
|
+
conversationId: testEvent.body.conversationId
|
|
718
|
+
});
|
|
719
|
+
expect(headsetService['headsetConversationStates'][testEvent.body.conversationId]).toHaveProperty('removeTimer');
|
|
720
|
+
jest.advanceTimersByTime(3100);
|
|
721
|
+
expect(headsetService['headsetConversationStates'][testEvent.body.conversationId]).toBeFalsy();
|
|
722
|
+
});
|
|
723
|
+
it('should do nothing if already in expected state', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
724
|
+
const testEvent = { vendor: {}, body: { name: 'TerminateCall', code: '2', event: {}, conversationId: 'convo421' } };
|
|
725
|
+
headsetService['headsetConversationStates'] = {
|
|
726
|
+
[testEvent.body.conversationId]: {
|
|
727
|
+
conversationId: testEvent.body.conversationId,
|
|
728
|
+
held: false,
|
|
729
|
+
muted: false,
|
|
730
|
+
offHook: false,
|
|
731
|
+
ringing: false,
|
|
732
|
+
removeTimer: 12525
|
|
733
|
+
}
|
|
734
|
+
};
|
|
735
|
+
const timeoutSpy = jest.spyOn(window, 'setTimeout');
|
|
361
736
|
headsetService['handleDeviceEndedCall'](testEvent);
|
|
362
|
-
|
|
737
|
+
expect(timeoutSpy).not.toHaveBeenCalled();
|
|
738
|
+
timeoutSpy.mockRestore();
|
|
739
|
+
}));
|
|
363
740
|
});
|
|
364
741
|
describe('triggerDeviceMuteStatusChanged', () => {
|
|
365
742
|
beforeEach(() => {
|
|
@@ -371,8 +748,39 @@ describe('HeadsetService', () => {
|
|
|
371
748
|
expect(event.payload).toStrictEqual(testEvent.body);
|
|
372
749
|
done();
|
|
373
750
|
});
|
|
374
|
-
const testEvent = { vendor: {}, body: { name: '
|
|
751
|
+
const testEvent = { vendor: {}, body: { name: 'Mute', code: '12', event: {}, isMuted: true, conversationId: 'crazy88' } };
|
|
752
|
+
headsetService['headsetConversationStates'] = {
|
|
753
|
+
[testEvent.body.conversationId]: {
|
|
754
|
+
offHook: true,
|
|
755
|
+
muted: false,
|
|
756
|
+
held: false,
|
|
757
|
+
ringing: false,
|
|
758
|
+
conversationId: testEvent.body.conversationId
|
|
759
|
+
}
|
|
760
|
+
};
|
|
375
761
|
headsetService['handleDeviceMuteStatusChanged'](testEvent);
|
|
762
|
+
expect(headsetService['headsetConversationStates'][testEvent.body.conversationId]).toStrictEqual({
|
|
763
|
+
offHook: true,
|
|
764
|
+
muted: true,
|
|
765
|
+
held: false,
|
|
766
|
+
ringing: false,
|
|
767
|
+
conversationId: testEvent.body.conversationId
|
|
768
|
+
});
|
|
769
|
+
});
|
|
770
|
+
it('should do nothing if already in expected state', () => {
|
|
771
|
+
const testEvent = { vendor: {}, body: { name: 'Mute', code: '12', event: {}, isMuted: true, conversationId: 'crazy88' } };
|
|
772
|
+
const testObject = {
|
|
773
|
+
offHook: true,
|
|
774
|
+
muted: true,
|
|
775
|
+
held: false,
|
|
776
|
+
ringing: false,
|
|
777
|
+
conversationId: testEvent.body.conversationId
|
|
778
|
+
};
|
|
779
|
+
headsetService['headsetConversationStates'] = {
|
|
780
|
+
[testEvent.body.conversationId]: testObject
|
|
781
|
+
};
|
|
782
|
+
headsetService['handleDeviceMuteStatusChanged'](testEvent);
|
|
783
|
+
expect(headsetService['headsetConversationStates'][testEvent.body.conversationId]).toStrictEqual(testObject);
|
|
376
784
|
});
|
|
377
785
|
});
|
|
378
786
|
describe('triggerDeviceHoldStatusChanged', () => {
|
|
@@ -385,8 +793,24 @@ describe('HeadsetService', () => {
|
|
|
385
793
|
expect(event.payload).toStrictEqual(testEvent.body);
|
|
386
794
|
done();
|
|
387
795
|
});
|
|
388
|
-
const testEvent = { vendor: {}, body: { name: 'HoldCall', code: '3', event: {}, holdRequested: true, toggle: false } };
|
|
796
|
+
const testEvent = { vendor: {}, body: { name: 'HoldCall', code: '3', event: {}, holdRequested: true, toggle: false, conversationId: 'convo41556' } };
|
|
797
|
+
headsetService['headsetConversationStates'] = {
|
|
798
|
+
[testEvent.body.conversationId]: {
|
|
799
|
+
offHook: true,
|
|
800
|
+
muted: false,
|
|
801
|
+
held: false,
|
|
802
|
+
ringing: false,
|
|
803
|
+
conversationId: testEvent.body.conversationId
|
|
804
|
+
}
|
|
805
|
+
};
|
|
389
806
|
headsetService['handleDeviceHoldStatusChanged'](testEvent);
|
|
807
|
+
expect(headsetService['headsetConversationStates'][testEvent.body.conversationId]).toStrictEqual({
|
|
808
|
+
offHook: true,
|
|
809
|
+
muted: false,
|
|
810
|
+
held: true,
|
|
811
|
+
ringing: false,
|
|
812
|
+
conversationId: testEvent.body.conversationId
|
|
813
|
+
});
|
|
390
814
|
});
|
|
391
815
|
});
|
|
392
816
|
describe('handleWebHidPermissionRequested', () => {
|
|
@@ -451,6 +875,34 @@ describe('HeadsetService', () => {
|
|
|
451
875
|
headsetService.activeMicChange('test test');
|
|
452
876
|
expect(disconnectSpy).toHaveBeenCalled();
|
|
453
877
|
}));
|
|
878
|
+
it('should not clear if there is no active vendor', () => {
|
|
879
|
+
const spy = headsetService['clearSelectedImplementation'] = jest.fn();
|
|
880
|
+
headsetService.selectedImplementation = null;
|
|
881
|
+
// should not find a selectable vendor
|
|
882
|
+
headsetService.activeMicChange('bose');
|
|
883
|
+
expect(spy).not.toHaveBeenCalled();
|
|
884
|
+
});
|
|
885
|
+
it('should clear if no new vendor', () => {
|
|
886
|
+
const spy = headsetService['clearSelectedImplementation'] = jest.fn();
|
|
887
|
+
headsetService.selectedImplementation = {};
|
|
888
|
+
// should not find a selectable vendor
|
|
889
|
+
headsetService.activeMicChange('bose');
|
|
890
|
+
expect(spy).toHaveBeenCalled();
|
|
891
|
+
});
|
|
892
|
+
});
|
|
893
|
+
describe('clearSelectedImplementation', () => {
|
|
894
|
+
it('should only emit an event if there is a selected implementation', () => {
|
|
895
|
+
headsetService.selectedImplementation = null;
|
|
896
|
+
const spy = jest.fn();
|
|
897
|
+
headsetService.headsetEvents$
|
|
898
|
+
.pipe((0, rxjs_1.filter)((event) => event.event === consumed_headset_events_1.HeadsetEvents.implementationChanged)).subscribe(spy);
|
|
899
|
+
headsetService['clearSelectedImplementation']();
|
|
900
|
+
expect(spy).not.toHaveBeenCalled();
|
|
901
|
+
headsetService.selectedImplementation = { disconnect: jest.fn() };
|
|
902
|
+
headsetService['clearSelectedImplementation']();
|
|
903
|
+
expect(spy).toHaveBeenCalled();
|
|
904
|
+
expect(headsetService.selectedImplementation).toBeNull();
|
|
905
|
+
});
|
|
454
906
|
});
|
|
455
907
|
describe('retryConnection', () => {
|
|
456
908
|
beforeEach(() => {
|
|
@@ -483,5 +935,35 @@ describe('HeadsetService', () => {
|
|
|
483
935
|
expect(headsetService.connectionStatus()).toBe('noVendor');
|
|
484
936
|
});
|
|
485
937
|
});
|
|
938
|
+
describe('isDifferentState', () => {
|
|
939
|
+
it('should return the negated value of state after finding a value in this.headsetConversationStates', () => {
|
|
940
|
+
headsetService['headsetConversationStates'] = {
|
|
941
|
+
'convoId123': {
|
|
942
|
+
offHook: true,
|
|
943
|
+
muted: false,
|
|
944
|
+
held: false,
|
|
945
|
+
ringing: false,
|
|
946
|
+
conversationId: 'convoId123'
|
|
947
|
+
}
|
|
948
|
+
};
|
|
949
|
+
expect(headsetService['isDifferentState']({ conversationId: 'convoId123', state: {} })).toBe(false);
|
|
950
|
+
});
|
|
951
|
+
it('should check the passed in state if no state is pulled from this.headsetConversationStates', () => {
|
|
952
|
+
const testState = {
|
|
953
|
+
offHook: true,
|
|
954
|
+
muted: false,
|
|
955
|
+
held: false,
|
|
956
|
+
ringing: false,
|
|
957
|
+
conversationId: 'convoId123'
|
|
958
|
+
};
|
|
959
|
+
expect(headsetService['isDifferentState']({ conversationId: '828256', state: testState })).toStrictEqual(true);
|
|
960
|
+
});
|
|
961
|
+
});
|
|
962
|
+
describe('updateHeadsetState', () => {
|
|
963
|
+
it('should return false if the isDifferentState returns false, meaning the states are the same', () => {
|
|
964
|
+
headsetService['isDifferentState'] = jest.fn().mockReturnValueOnce(false);
|
|
965
|
+
expect(headsetService['updateHeadsetState']({ conversationId: 'convoId123', state: {} })).toBe(false);
|
|
966
|
+
});
|
|
967
|
+
});
|
|
486
968
|
});
|
|
487
969
|
//# sourceMappingURL=headset.test.js.map
|