@thoughtspot/visual-embed-sdk 1.44.1-test → 1.44.2
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/cjs/package.json +6 -5
- package/cjs/src/auth.spec.js +43 -42
- package/cjs/src/auth.spec.js.map +1 -1
- package/cjs/src/authToken.spec.js +3 -3
- package/cjs/src/authToken.spec.js.map +1 -1
- package/cjs/src/embed/app.d.ts.map +1 -1
- package/cjs/src/embed/app.js +3 -1
- package/cjs/src/embed/app.js.map +1 -1
- package/cjs/src/embed/app.spec.js +12 -5
- package/cjs/src/embed/app.spec.js.map +1 -1
- package/cjs/src/embed/base.spec.js +11 -15
- package/cjs/src/embed/base.spec.js.map +1 -1
- package/cjs/src/embed/bodyless-conversation.spec.js +2 -2
- package/cjs/src/embed/bodyless-conversation.spec.js.map +1 -1
- package/cjs/src/embed/conversation.spec.js +2 -2
- package/cjs/src/embed/conversation.spec.js.map +1 -1
- package/cjs/src/embed/embed.spec.js +101 -2
- package/cjs/src/embed/embed.spec.js.map +1 -1
- package/cjs/src/embed/events.spec.js +2 -2
- package/cjs/src/embed/events.spec.js.map +1 -1
- package/cjs/src/embed/hostEventClient/host-event-client.spec.js +1 -1
- package/cjs/src/embed/hostEventClient/host-event-client.spec.js.map +1 -1
- package/cjs/src/embed/liveboard.d.ts.map +1 -1
- package/cjs/src/embed/liveboard.js +3 -1
- package/cjs/src/embed/liveboard.js.map +1 -1
- package/cjs/src/embed/liveboard.spec.js +28 -26
- package/cjs/src/embed/liveboard.spec.js.map +1 -1
- package/cjs/src/embed/pinboard.spec.js +1 -1
- package/cjs/src/embed/pinboard.spec.js.map +1 -1
- package/cjs/src/embed/sage.spec.js +2 -2
- package/cjs/src/embed/sage.spec.js.map +1 -1
- package/cjs/src/embed/search.spec.js +118 -2
- package/cjs/src/embed/search.spec.js.map +1 -1
- package/cjs/src/embed/ts-embed-trigger.spec.js +2 -3
- package/cjs/src/embed/ts-embed-trigger.spec.js.map +1 -1
- package/cjs/src/embed/ts-embed.spec.js +242 -66
- package/cjs/src/embed/ts-embed.spec.js.map +1 -1
- package/cjs/src/mixpanel-service.spec.js +1 -1
- package/cjs/src/mixpanel-service.spec.js.map +1 -1
- package/cjs/src/react/index.spec.js +3 -4
- package/cjs/src/react/index.spec.js.map +1 -1
- package/cjs/src/test/test-utils.js +1 -1
- package/cjs/src/test/test-utils.js.map +1 -1
- package/cjs/src/utils/authService/authService.spec.js +8 -8
- package/cjs/src/utils/authService/authService.spec.js.map +1 -1
- package/cjs/src/utils/authService/tokenizedAuthService.spec.js.map +1 -1
- package/cjs/src/utils/graphql/answerService/answerService.spec.js +1 -1
- package/cjs/src/utils/graphql/answerService/answerService.spec.js.map +1 -1
- package/cjs/src/utils/graphql/graphql-request.spec.js +1 -1
- package/cjs/src/utils/graphql/graphql-request.spec.js.map +1 -1
- package/cjs/src/utils/graphql/sourceService.spec.js +1 -1
- package/cjs/src/utils/graphql/sourceService.spec.js.map +1 -1
- package/cjs/src/utils/logger.spec.d.ts +5 -20
- package/cjs/src/utils/logger.spec.d.ts.map +1 -1
- package/cjs/src/utils/processData.spec.js +17 -17
- package/cjs/src/utils/processData.spec.js.map +1 -1
- package/cjs/src/utils/processTrigger.spec.js +8 -8
- package/cjs/src/utils/processTrigger.spec.js.map +1 -1
- package/cjs/src/utils.d.ts +6 -0
- package/cjs/src/utils.d.ts.map +1 -1
- package/cjs/src/utils.js +32 -1
- package/cjs/src/utils.js.map +1 -1
- package/cjs/src/utils.spec.js +19 -10
- package/cjs/src/utils.spec.js.map +1 -1
- package/dist/{index-BXCUJ09L.js → index-CSFjfTVk.js} +1 -1
- package/dist/src/embed/app.d.ts.map +1 -1
- package/dist/src/embed/liveboard.d.ts.map +1 -1
- package/dist/src/utils/logger.spec.d.ts +5 -20
- package/dist/src/utils/logger.spec.d.ts.map +1 -1
- package/dist/src/utils.d.ts +6 -0
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/tsembed-react.es.js +39 -5
- package/dist/tsembed-react.js +38 -4
- package/dist/tsembed.es.js +39 -5
- package/dist/tsembed.js +38 -4
- package/lib/package.json +6 -5
- package/lib/src/auth.spec.js +43 -42
- package/lib/src/auth.spec.js.map +1 -1
- package/lib/src/authToken.spec.js +3 -3
- package/lib/src/authToken.spec.js.map +1 -1
- package/lib/src/embed/app.d.ts.map +1 -1
- package/lib/src/embed/app.js +4 -2
- package/lib/src/embed/app.js.map +1 -1
- package/lib/src/embed/app.spec.js +12 -5
- package/lib/src/embed/app.spec.js.map +1 -1
- package/lib/src/embed/base.spec.js +11 -15
- package/lib/src/embed/base.spec.js.map +1 -1
- package/lib/src/embed/bodyless-conversation.spec.js +2 -2
- package/lib/src/embed/bodyless-conversation.spec.js.map +1 -1
- package/lib/src/embed/conversation.spec.js +2 -2
- package/lib/src/embed/conversation.spec.js.map +1 -1
- package/lib/src/embed/embed.spec.js +103 -4
- package/lib/src/embed/embed.spec.js.map +1 -1
- package/lib/src/embed/events.spec.js +2 -2
- package/lib/src/embed/events.spec.js.map +1 -1
- package/lib/src/embed/hostEventClient/host-event-client.spec.js +2 -2
- package/lib/src/embed/hostEventClient/host-event-client.spec.js.map +1 -1
- package/lib/src/embed/liveboard.d.ts.map +1 -1
- package/lib/src/embed/liveboard.js +4 -2
- package/lib/src/embed/liveboard.js.map +1 -1
- package/lib/src/embed/liveboard.spec.js +28 -26
- package/lib/src/embed/liveboard.spec.js.map +1 -1
- package/lib/src/embed/pinboard.spec.js +1 -1
- package/lib/src/embed/pinboard.spec.js.map +1 -1
- package/lib/src/embed/sage.spec.js +2 -2
- package/lib/src/embed/sage.spec.js.map +1 -1
- package/lib/src/embed/search.spec.js +118 -2
- package/lib/src/embed/search.spec.js.map +1 -1
- package/lib/src/embed/ts-embed-trigger.spec.js +2 -3
- package/lib/src/embed/ts-embed-trigger.spec.js.map +1 -1
- package/lib/src/embed/ts-embed.spec.js +242 -66
- package/lib/src/embed/ts-embed.spec.js.map +1 -1
- package/lib/src/mixpanel-service.spec.js +1 -1
- package/lib/src/mixpanel-service.spec.js.map +1 -1
- package/lib/src/react/index.spec.js +3 -4
- package/lib/src/react/index.spec.js.map +1 -1
- package/lib/src/test/test-utils.js +1 -1
- package/lib/src/test/test-utils.js.map +1 -1
- package/lib/src/utils/authService/authService.spec.js +8 -8
- package/lib/src/utils/authService/authService.spec.js.map +1 -1
- package/lib/src/utils/authService/tokenizedAuthService.spec.js.map +1 -1
- package/lib/src/utils/graphql/answerService/answerService.spec.js +1 -1
- package/lib/src/utils/graphql/answerService/answerService.spec.js.map +1 -1
- package/lib/src/utils/graphql/graphql-request.spec.js +1 -1
- package/lib/src/utils/graphql/graphql-request.spec.js.map +1 -1
- package/lib/src/utils/graphql/sourceService.spec.js +1 -1
- package/lib/src/utils/graphql/sourceService.spec.js.map +1 -1
- package/lib/src/utils/logger.spec.d.ts +5 -20
- package/lib/src/utils/logger.spec.d.ts.map +1 -1
- package/lib/src/utils/processData.spec.js +17 -17
- package/lib/src/utils/processData.spec.js.map +1 -1
- package/lib/src/utils/processTrigger.spec.js +8 -8
- package/lib/src/utils/processTrigger.spec.js.map +1 -1
- package/lib/src/utils.d.ts +6 -0
- package/lib/src/utils.d.ts.map +1 -1
- package/lib/src/utils.js +30 -0
- package/lib/src/utils.js.map +1 -1
- package/lib/src/utils.spec.js +20 -11
- package/lib/src/utils.spec.js.map +1 -1
- package/package.json +6 -5
- package/src/auth.spec.ts +53 -51
- package/src/authToken.spec.ts +3 -3
- package/src/embed/app.spec.ts +12 -5
- package/src/embed/app.ts +4 -2
- package/src/embed/base.spec.ts +16 -20
- package/src/embed/bodyless-conversation.spec.ts +2 -2
- package/src/embed/conversation.spec.ts +2 -2
- package/src/embed/embed.spec.ts +122 -2
- package/src/embed/events.spec.ts +2 -2
- package/src/embed/hostEventClient/host-event-client.spec.ts +2 -2
- package/src/embed/liveboard.spec.ts +30 -29
- package/src/embed/liveboard.ts +4 -2
- package/src/embed/pinboard.spec.ts +1 -1
- package/src/embed/sage.spec.ts +2 -2
- package/src/embed/search.spec.ts +133 -2
- package/src/embed/ts-embed-trigger.spec.ts +2 -3
- package/src/embed/ts-embed.spec.ts +317 -76
- package/src/mixpanel-service.spec.ts +1 -1
- package/src/react/index.spec.tsx +4 -5
- package/src/test/test-utils.ts +2 -2
- package/src/utils/authService/authService.spec.ts +17 -17
- package/src/utils/authService/tokenizedAuthService.spec.ts +4 -4
- package/src/utils/graphql/answerService/answerService.spec.ts +3 -3
- package/src/utils/graphql/graphql-request.spec.ts +2 -2
- package/src/utils/graphql/sourceService.spec.ts +1 -1
- package/src/utils/processData.spec.ts +26 -26
- package/src/utils/processTrigger.spec.ts +8 -8
- package/src/utils.spec.ts +22 -11
- package/src/utils.ts +34 -0
|
@@ -44,7 +44,7 @@ exports.defaultParams = `&${exports.defaultParamsWithoutHiddenActions}&hideActio
|
|
|
44
44
|
const hideBydefault = `&hideAction=${(0, test_utils_1.fixedEncodeURI)(JSON.stringify([types_1.Action.ReportError, ...search_1.HiddenActionItemByDefaultForSearchEmbed]))}`;
|
|
45
45
|
const defaultParamsWithHiddenActions = exports.defaultParamsWithoutHiddenActions + hideBydefault;
|
|
46
46
|
beforeAll(() => {
|
|
47
|
-
spyOn(window, 'alert');
|
|
47
|
+
jest.spyOn(window, 'alert').mockImplementation(() => { });
|
|
48
48
|
});
|
|
49
49
|
const customisations = {
|
|
50
50
|
style: {
|
|
@@ -100,7 +100,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
100
100
|
(0, authToken_1.resetCachedAuthToken)();
|
|
101
101
|
});
|
|
102
102
|
beforeAll(() => {
|
|
103
|
-
jest.spyOn(authInstance, 'postLoginService').mockResolvedValue(
|
|
103
|
+
jest.spyOn(authInstance, 'postLoginService').mockResolvedValue(undefined);
|
|
104
104
|
});
|
|
105
105
|
describe('Vaidate iframe properties', () => {
|
|
106
106
|
beforeAll(() => {
|
|
@@ -208,7 +208,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
208
208
|
(0, test_utils_1.postMessageToParent)(iframe.contentWindow, mockEmbedEventPayload, mockPort);
|
|
209
209
|
});
|
|
210
210
|
await (0, test_utils_1.executeAfterWait)(() => {
|
|
211
|
-
expect(baseInstance.notifyAuthFailure).
|
|
211
|
+
expect(baseInstance.notifyAuthFailure).toHaveBeenCalledWith(authInstance.AuthFailureType.EXPIRY);
|
|
212
212
|
expect(baseInstance.handleAuth).not.toHaveBeenCalled();
|
|
213
213
|
expect(mockPort.postMessage).toHaveBeenCalledWith({
|
|
214
214
|
type: index_1.EmbedEvent.AuthExpire,
|
|
@@ -240,7 +240,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
240
240
|
(0, test_utils_1.postMessageToParent)(iframe.contentWindow, mockEmbedEventPayload, mockPort);
|
|
241
241
|
});
|
|
242
242
|
await (0, test_utils_1.executeAfterWait)(() => {
|
|
243
|
-
expect(baseInstance.notifyAuthFailure).
|
|
243
|
+
expect(baseInstance.notifyAuthFailure).toHaveBeenCalledWith(authInstance.AuthFailureType.EXPIRY);
|
|
244
244
|
expect(mockPort.postMessage).not.toHaveBeenCalledWith({
|
|
245
245
|
type: index_1.EmbedEvent.AuthExpire,
|
|
246
246
|
data: { authToken: 'test_auth_token2' },
|
|
@@ -592,7 +592,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
592
592
|
expect(iframe.contentWindow.postMessage).toHaveBeenCalledTimes(0);
|
|
593
593
|
}, 1000);
|
|
594
594
|
});
|
|
595
|
-
test('should remove event listener when called off method', async (
|
|
595
|
+
test('should remove event listener when called off method', async () => {
|
|
596
596
|
const mockEmbedEventPayload = {
|
|
597
597
|
type: index_1.EmbedEvent.Save,
|
|
598
598
|
data: { answerId: '123' },
|
|
@@ -610,10 +610,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
610
610
|
const iframe = (0, test_utils_1.getIFrameEl)();
|
|
611
611
|
(0, test_utils_1.postMessageToParent)(iframe.contentWindow, mockEmbedEventPayload);
|
|
612
612
|
});
|
|
613
|
-
|
|
614
|
-
expect(mockFn).toHaveBeenCalledTimes(1);
|
|
615
|
-
done();
|
|
616
|
-
}, 100);
|
|
613
|
+
expect(mockFn).toHaveBeenCalledTimes(1);
|
|
617
614
|
});
|
|
618
615
|
});
|
|
619
616
|
describe('Appinit embedEvent in cookieless authentication authType', () => {
|
|
@@ -854,7 +851,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
854
851
|
authType: index_1.AuthType.TrustedAuthTokenCookieless,
|
|
855
852
|
getAuthToken: () => Promise.reject(),
|
|
856
853
|
});
|
|
857
|
-
jest.spyOn(logger_1.logger, 'error').
|
|
854
|
+
jest.spyOn(logger_1.logger, 'error').mockImplementation(() => { });
|
|
858
855
|
});
|
|
859
856
|
afterEach(() => {
|
|
860
857
|
jest.clearAllMocks();
|
|
@@ -921,14 +918,14 @@ describe('Unit test case for ts embed', () => {
|
|
|
921
918
|
const mockPort = {
|
|
922
919
|
postMessage: jest.fn(),
|
|
923
920
|
};
|
|
924
|
-
const loggerSpy = jest.spyOn(logger_1.logger, 'error').
|
|
921
|
+
const loggerSpy = jest.spyOn(logger_1.logger, 'error').mockImplementation(() => { });
|
|
925
922
|
await (0, test_utils_1.executeAfterWait)(() => {
|
|
926
923
|
const iframe = (0, test_utils_1.getIFrameEl)();
|
|
927
924
|
(0, test_utils_1.postMessageToParent)(iframe.contentWindow, mockEmbedEventPayload, mockPort);
|
|
928
925
|
});
|
|
929
926
|
await (0, test_utils_1.executeAfterWait)(() => {
|
|
930
927
|
expect((0, test_utils_1.getRootEl)().innerHTML).toContain('Not logged in');
|
|
931
|
-
expect(baseInstance.notifyAuthFailure).
|
|
928
|
+
expect(baseInstance.notifyAuthFailure).toHaveBeenCalledWith(authInstance.AuthFailureType.EXPIRY);
|
|
932
929
|
expect(loggerSpy).toHaveBeenCalledTimes(1);
|
|
933
930
|
});
|
|
934
931
|
jest.spyOn(authService, 'verifyTokenService').mockClear();
|
|
@@ -945,7 +942,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
945
942
|
const searchEmbed = new index_1.SearchEmbed((0, test_utils_1.getRootEl)(), { ...defaultViewConfig, preRenderId: 'test' });
|
|
946
943
|
jest.spyOn(baseInstance, 'notifyAuthFailure');
|
|
947
944
|
searchEmbed.preRender();
|
|
948
|
-
const loggerSpy = jest.spyOn(logger_1.logger, 'error').
|
|
945
|
+
const loggerSpy = jest.spyOn(logger_1.logger, 'error').mockImplementation(() => { });
|
|
949
946
|
const mockPort = {
|
|
950
947
|
postMessage: jest.fn(),
|
|
951
948
|
};
|
|
@@ -956,7 +953,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
956
953
|
const preRenderWrapper = document.getElementById('tsEmbed-pre-render-wrapper-test');
|
|
957
954
|
await (0, test_utils_1.executeAfterWait)(() => {
|
|
958
955
|
expect(preRenderWrapper.innerHTML).toContain('Not logged in');
|
|
959
|
-
expect(baseInstance.notifyAuthFailure).
|
|
956
|
+
expect(baseInstance.notifyAuthFailure).toHaveBeenCalledWith(authInstance.AuthFailureType.EXPIRY);
|
|
960
957
|
expect(loggerSpy).toHaveBeenCalledTimes(1);
|
|
961
958
|
});
|
|
962
959
|
jest.spyOn(authService, 'verifyTokenService').mockClear();
|
|
@@ -986,7 +983,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
986
983
|
(0, test_utils_1.postMessageToParent)(iframe.contentWindow, mockEmbedEventPayload);
|
|
987
984
|
});
|
|
988
985
|
await (0, test_utils_1.executeAfterWait)(() => {
|
|
989
|
-
expect(baseInstance.notifyAuthFailure).
|
|
986
|
+
expect(baseInstance.notifyAuthFailure).toHaveBeenCalledWith(authInstance.AuthFailureType.EXPIRY);
|
|
990
987
|
expect(baseInstance.handleAuth).toHaveBeenCalled();
|
|
991
988
|
});
|
|
992
989
|
});
|
|
@@ -1011,7 +1008,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
1011
1008
|
(0, test_utils_1.postMessageToParent)(iframe.contentWindow, mockEmbedEventPayload);
|
|
1012
1009
|
});
|
|
1013
1010
|
await (0, test_utils_1.executeAfterWait)(() => {
|
|
1014
|
-
expect(baseInstance.notifyAuthFailure).
|
|
1011
|
+
expect(baseInstance.notifyAuthFailure).toHaveBeenCalledWith(authInstance.AuthFailureType.EXPIRY);
|
|
1015
1012
|
expect(baseInstance.handleAuth).not.toHaveBeenCalled();
|
|
1016
1013
|
});
|
|
1017
1014
|
});
|
|
@@ -1027,9 +1024,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
1027
1024
|
const setup = async (isLoggedIn = false) => {
|
|
1028
1025
|
jest.spyOn(window, 'addEventListener').mockImplementationOnce((event, handler, options) => {
|
|
1029
1026
|
handler({
|
|
1030
|
-
data: {
|
|
1031
|
-
type: 'xyz',
|
|
1032
|
-
},
|
|
1027
|
+
data: { type: 'xyz' },
|
|
1033
1028
|
ports: [3000],
|
|
1034
1029
|
source: null,
|
|
1035
1030
|
});
|
|
@@ -1047,8 +1042,8 @@ describe('Unit test case for ts embed', () => {
|
|
|
1047
1042
|
};
|
|
1048
1043
|
test('mixpanel should call with VISUAL_SDK_RENDER_COMPLETE', async () => {
|
|
1049
1044
|
await setup(true);
|
|
1050
|
-
expect(mockMixPanelEvent).
|
|
1051
|
-
expect(mockMixPanelEvent).
|
|
1045
|
+
expect(mockMixPanelEvent).toHaveBeenCalledWith(mixpanel_service_1.MIXPANEL_EVENT.VISUAL_SDK_RENDER_START);
|
|
1046
|
+
expect(mockMixPanelEvent).toHaveBeenCalledWith(mixpanel_service_1.MIXPANEL_EVENT.VISUAL_SDK_RENDER_COMPLETE, expect.objectContaining({
|
|
1052
1047
|
elWidth: 0,
|
|
1053
1048
|
elHeight: 0,
|
|
1054
1049
|
}));
|
|
@@ -1058,12 +1053,9 @@ describe('Unit test case for ts embed', () => {
|
|
|
1058
1053
|
const prefetchIframe = document.querySelectorAll('.prefetchIframe');
|
|
1059
1054
|
expect(prefetchIframe.length).toBe(0);
|
|
1060
1055
|
});
|
|
1061
|
-
test('Should render failure when login fails', async (
|
|
1062
|
-
setup(false);
|
|
1063
|
-
(0, test_utils_1.
|
|
1064
|
-
expect((0, test_utils_1.getRootEl)().innerHTML).toContain('Failed to Login');
|
|
1065
|
-
done();
|
|
1066
|
-
});
|
|
1056
|
+
test('Should render failure when login fails', async () => {
|
|
1057
|
+
await setup(false);
|
|
1058
|
+
expect((0, test_utils_1.getRootEl)().innerHTML).toContain('Failed to Login');
|
|
1067
1059
|
});
|
|
1068
1060
|
});
|
|
1069
1061
|
describe('Trigger infoSuccess event on iframe load', () => {
|
|
@@ -1078,9 +1070,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
1078
1070
|
const setup = async (isLoggedIn = false, overrideOrgId = undefined) => {
|
|
1079
1071
|
jest.spyOn(window, 'addEventListener').mockImplementationOnce((event, handler, options) => {
|
|
1080
1072
|
handler({
|
|
1081
|
-
data: {
|
|
1082
|
-
type: 'xyz',
|
|
1083
|
-
},
|
|
1073
|
+
data: { type: 'xyz' },
|
|
1084
1074
|
ports: [3000],
|
|
1085
1075
|
source: null,
|
|
1086
1076
|
});
|
|
@@ -1313,19 +1303,19 @@ describe('Unit test case for ts embed', () => {
|
|
|
1313
1303
|
const iFrame = document.createElement('div');
|
|
1314
1304
|
iFrame.contentWindow = null;
|
|
1315
1305
|
jest.spyOn(document, 'createElement').mockReturnValueOnce(iFrame);
|
|
1316
|
-
spyOn(logger_1.logger, 'error');
|
|
1306
|
+
jest.spyOn(logger_1.logger, 'error');
|
|
1317
1307
|
await tsEmbed.render();
|
|
1318
1308
|
});
|
|
1319
1309
|
test('mixpanel should call with VISUAL_SDK_RENDER_FAILED', () => {
|
|
1320
|
-
expect(mockMixPanelEvent).
|
|
1321
|
-
expect(mockMixPanelEvent).
|
|
1310
|
+
expect(mockMixPanelEvent).toHaveBeenCalledWith(mixpanel_service_1.MIXPANEL_EVENT.VISUAL_SDK_RENDER_START);
|
|
1311
|
+
expect(mockMixPanelEvent).toHaveBeenCalledWith(mixpanel_service_1.MIXPANEL_EVENT.VISUAL_SDK_RENDER_FAILED, {
|
|
1322
1312
|
error: 'false',
|
|
1323
1313
|
});
|
|
1324
1314
|
});
|
|
1325
1315
|
});
|
|
1326
1316
|
describe('when visible actions are set', () => {
|
|
1327
1317
|
test('should throw error when there are both visible and hidden actions - pinboard', async () => {
|
|
1328
|
-
spyOn(logger_1.logger, 'error');
|
|
1318
|
+
jest.spyOn(logger_1.logger, 'error');
|
|
1329
1319
|
const pinboardEmbed = new index_1.PinboardEmbed((0, test_utils_1.getRootEl)(), {
|
|
1330
1320
|
hiddenActions: [types_1.Action.DownloadAsCsv],
|
|
1331
1321
|
visibleActions: [types_1.Action.DownloadAsCsv],
|
|
@@ -1356,7 +1346,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
1356
1346
|
* @param visibleActions
|
|
1357
1347
|
*/
|
|
1358
1348
|
async function testActionsForLiveboards(hiddenActions, visibleActions) {
|
|
1359
|
-
spyOn(logger_1.logger, 'error');
|
|
1349
|
+
jest.spyOn(logger_1.logger, 'error');
|
|
1360
1350
|
const liveboardEmbed = new index_1.LiveboardEmbed((0, test_utils_1.getRootEl)(), {
|
|
1361
1351
|
hiddenActions,
|
|
1362
1352
|
visibleActions,
|
|
@@ -1402,7 +1392,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
1402
1392
|
});
|
|
1403
1393
|
describe('when visible Tabs are set', () => {
|
|
1404
1394
|
test('should throw error when there are both visible and hidden Tabs - pinboard', async () => {
|
|
1405
|
-
spyOn(logger_1.logger, 'error');
|
|
1395
|
+
jest.spyOn(logger_1.logger, 'error');
|
|
1406
1396
|
const pinboardEmbed = new index_1.PinboardEmbed((0, test_utils_1.getRootEl)(), {
|
|
1407
1397
|
visibleTabs: [tabId1],
|
|
1408
1398
|
hiddenTabs: [tabId2],
|
|
@@ -1433,7 +1423,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
1433
1423
|
* @param visibleTabs
|
|
1434
1424
|
*/
|
|
1435
1425
|
async function testTabsForLiveboards(hiddenTabs, visibleTabs) {
|
|
1436
|
-
spyOn(logger_1.logger, 'error');
|
|
1426
|
+
jest.spyOn(logger_1.logger, 'error');
|
|
1437
1427
|
const liveboardEmbed = new index_1.LiveboardEmbed((0, test_utils_1.getRootEl)(), {
|
|
1438
1428
|
hiddenTabs,
|
|
1439
1429
|
visibleTabs,
|
|
@@ -1486,7 +1476,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
1486
1476
|
});
|
|
1487
1477
|
});
|
|
1488
1478
|
test('Error should be true', async () => {
|
|
1489
|
-
spyOn(logger_1.logger, 'error');
|
|
1479
|
+
jest.spyOn(logger_1.logger, 'error');
|
|
1490
1480
|
const tsEmbed = new index_1.SearchEmbed((0, test_utils_1.getRootEl)(), {});
|
|
1491
1481
|
await tsEmbed.render();
|
|
1492
1482
|
expect(tsEmbed['isError']).toBe(true);
|
|
@@ -1503,7 +1493,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
1503
1493
|
jest.spyOn(config, 'getThoughtSpotHost').mockImplementation(() => 'http://tshost');
|
|
1504
1494
|
});
|
|
1505
1495
|
test('when isRendered is true than isError will be true', async () => {
|
|
1506
|
-
spyOn(logger_1.logger, 'warn');
|
|
1496
|
+
jest.spyOn(logger_1.logger, 'warn');
|
|
1507
1497
|
const viEmbedIns = new tsEmbedInstance.V1Embed((0, test_utils_1.getRootEl)(), defaultViewConfig);
|
|
1508
1498
|
expect(viEmbedIns['isError']).toBe(false);
|
|
1509
1499
|
await viEmbedIns.render();
|
|
@@ -1547,7 +1537,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
1547
1537
|
(0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false&${test_utils_1.defaultParamsForPinboardEmbed}${defaultParamsPost}#/${path}`);
|
|
1548
1538
|
});
|
|
1549
1539
|
test('navigateToPage function use before render', async () => {
|
|
1550
|
-
spyOn(logger_1.logger, 'log');
|
|
1540
|
+
jest.spyOn(logger_1.logger, 'log');
|
|
1551
1541
|
const appEmbed = new index_1.AppEmbed((0, test_utils_1.getRootEl)(), {
|
|
1552
1542
|
frameParams: {
|
|
1553
1543
|
width: '100%',
|
|
@@ -1751,7 +1741,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
1751
1741
|
await appEmbed.render();
|
|
1752
1742
|
(0, test_utils_1.expectUrlMatchesWithParams)((0, test_utils_1.getIFrameSrc)(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false&additionalPendoKey=1234${defaultParamsPost}#/home`);
|
|
1753
1743
|
});
|
|
1754
|
-
xit('Sets the forceSAMLAutoRedirect param', async (
|
|
1744
|
+
xit('Sets the forceSAMLAutoRedirect param', async () => {
|
|
1755
1745
|
jest.spyOn(baseInstance, 'getAuthPromise').mockResolvedValue(true);
|
|
1756
1746
|
(0, index_1.init)({
|
|
1757
1747
|
thoughtSpotHost: 'tshost',
|
|
@@ -1764,11 +1754,8 @@ describe('Unit test case for ts embed', () => {
|
|
|
1764
1754
|
},
|
|
1765
1755
|
});
|
|
1766
1756
|
appEmbed.render();
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
expect((0, test_utils_1.getIFrameSrc)()).toContain('forceSAMLAutoRedirect=true');
|
|
1770
|
-
done();
|
|
1771
|
-
});
|
|
1757
|
+
expect((0, test_utils_1.getIFrameSrc)()).toContain('authType=EmbeddedSSO');
|
|
1758
|
+
expect((0, test_utils_1.getIFrameSrc)()).toContain('forceSAMLAutoRedirect=true');
|
|
1772
1759
|
});
|
|
1773
1760
|
it('Should set the override locale for number/date and currency format', async () => {
|
|
1774
1761
|
jest.spyOn(baseInstance, 'getAuthPromise').mockResolvedValue(true);
|
|
@@ -1918,8 +1905,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
1918
1905
|
beforeAll(() => {
|
|
1919
1906
|
delete window.location;
|
|
1920
1907
|
window.location = {
|
|
1921
|
-
|
|
1922
|
-
search: '',
|
|
1908
|
+
assign: jest.fn(),
|
|
1923
1909
|
};
|
|
1924
1910
|
});
|
|
1925
1911
|
beforeEach(() => {
|
|
@@ -1989,7 +1975,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
1989
1975
|
});
|
|
1990
1976
|
afterAll(() => {
|
|
1991
1977
|
const rootEle = document.getElementById('myRoot');
|
|
1992
|
-
rootEle.remove();
|
|
1978
|
+
rootEle === null || rootEle === void 0 ? void 0 : rootEle.remove();
|
|
1993
1979
|
jest.clearAllMocks();
|
|
1994
1980
|
});
|
|
1995
1981
|
it('should preRender and hide the iframe', async () => {
|
|
@@ -2023,9 +2009,9 @@ describe('Unit test case for ts embed', () => {
|
|
|
2023
2009
|
};
|
|
2024
2010
|
});
|
|
2025
2011
|
// show preRender
|
|
2026
|
-
const warnSpy = spyOn(logger_1.logger, 'warn');
|
|
2012
|
+
const warnSpy = jest.spyOn(logger_1.logger, 'warn');
|
|
2027
2013
|
libEmbed.showPreRender();
|
|
2028
|
-
expect(warnSpy).toHaveBeenCalledTimes(
|
|
2014
|
+
expect(warnSpy).toHaveBeenCalledTimes(1);
|
|
2029
2015
|
resizeObserverCb([
|
|
2030
2016
|
{
|
|
2031
2017
|
target: tsEmbedDiv,
|
|
@@ -2046,7 +2032,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
2046
2032
|
});
|
|
2047
2033
|
it('preRender called without preRenderId should log error ', () => {
|
|
2048
2034
|
(0, test_utils_1.createRootEleForEmbed)();
|
|
2049
|
-
spyOn(logger_1.logger, 'error');
|
|
2035
|
+
jest.spyOn(logger_1.logger, 'error');
|
|
2050
2036
|
const libEmbed = new index_1.LiveboardEmbed('#tsEmbedDiv', {
|
|
2051
2037
|
liveboardId: 'myLiveboardId',
|
|
2052
2038
|
});
|
|
@@ -2073,7 +2059,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
2073
2059
|
preRenderId: 'i-am-preRendered',
|
|
2074
2060
|
liveboardId: 'myLiveboardId',
|
|
2075
2061
|
});
|
|
2076
|
-
spyOn(libEmbed, 'preRender');
|
|
2062
|
+
jest.spyOn(libEmbed, 'preRender');
|
|
2077
2063
|
libEmbed.hidePreRender();
|
|
2078
2064
|
expect(libEmbed.preRender).toHaveBeenCalledTimes(0);
|
|
2079
2065
|
});
|
|
@@ -2107,8 +2093,8 @@ describe('Unit test case for ts embed', () => {
|
|
|
2107
2093
|
const libEmbed = new index_1.LiveboardEmbed('#tsEmbedDiv', {
|
|
2108
2094
|
liveboardId: 'myLiveboardId',
|
|
2109
2095
|
});
|
|
2110
|
-
spyOn(libEmbed, 'preRender');
|
|
2111
|
-
spyOn(logger_1.logger, 'error');
|
|
2096
|
+
jest.spyOn(libEmbed, 'preRender');
|
|
2097
|
+
jest.spyOn(logger_1.logger, 'error');
|
|
2112
2098
|
libEmbed.showPreRender();
|
|
2113
2099
|
expect(libEmbed.preRender).toHaveBeenCalledTimes(0);
|
|
2114
2100
|
expect(logger_1.logger.error).toHaveBeenCalledTimes(1);
|
|
@@ -2138,7 +2124,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
2138
2124
|
preRenderId: 'test',
|
|
2139
2125
|
});
|
|
2140
2126
|
await libEmbed.syncPreRenderStyle();
|
|
2141
|
-
expect(logger_1.logger.error).
|
|
2127
|
+
expect(logger_1.logger.error).toHaveBeenCalledWith('PreRender should be called before using syncPreRenderStyle');
|
|
2142
2128
|
logger_1.logger.error.mockClear();
|
|
2143
2129
|
});
|
|
2144
2130
|
});
|
|
@@ -2171,7 +2157,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
2171
2157
|
(0, test_utils_1.postMessageToParent)(iframe.contentWindow, mockEmbedEventPayload, mockPort);
|
|
2172
2158
|
});
|
|
2173
2159
|
await (0, test_utils_1.executeAfterWait)(() => {
|
|
2174
|
-
expect(baseInstance.notifyAuthFailure).
|
|
2160
|
+
expect(baseInstance.notifyAuthFailure).toHaveBeenCalledWith(authInstance.AuthFailureType.IDLE_SESSION_TIMEOUT);
|
|
2175
2161
|
expect(baseInstance.handleAuth).toHaveBeenCalled();
|
|
2176
2162
|
expect(mockPort.postMessage).toHaveBeenCalledWith({
|
|
2177
2163
|
type: index_1.EmbedEvent.IdleSessionTimeout,
|
|
@@ -2197,14 +2183,14 @@ describe('Unit test case for ts embed', () => {
|
|
|
2197
2183
|
const mockPort = {
|
|
2198
2184
|
postMessage: jest.fn(),
|
|
2199
2185
|
};
|
|
2200
|
-
const loggerSpy = jest.spyOn(logger_1.logger, 'error').
|
|
2186
|
+
const loggerSpy = jest.spyOn(logger_1.logger, 'error').mockImplementation(() => { });
|
|
2201
2187
|
await (0, test_utils_1.executeAfterWait)(() => {
|
|
2202
2188
|
const iframe = (0, test_utils_1.getIFrameEl)();
|
|
2203
2189
|
(0, test_utils_1.postMessageToParent)(iframe.contentWindow, mockEmbedEventPayload, mockPort);
|
|
2204
2190
|
});
|
|
2205
2191
|
await (0, test_utils_1.executeAfterWait)(() => {
|
|
2206
2192
|
expect((0, test_utils_1.getRootEl)().innerHTML).toContain('Not logged in');
|
|
2207
|
-
expect(baseInstance.notifyAuthFailure).
|
|
2193
|
+
expect(baseInstance.notifyAuthFailure).toHaveBeenCalledWith(authInstance.AuthFailureType.IDLE_SESSION_TIMEOUT);
|
|
2208
2194
|
expect(loggerSpy).toHaveBeenCalledTimes(1);
|
|
2209
2195
|
});
|
|
2210
2196
|
jest.spyOn(authService, 'verifyTokenService').mockClear();
|
|
@@ -2229,13 +2215,13 @@ describe('Unit test case for ts embed', () => {
|
|
|
2229
2215
|
const mockPort = {
|
|
2230
2216
|
postMessage: jest.fn(),
|
|
2231
2217
|
};
|
|
2232
|
-
const loggerSpy = jest.spyOn(logger_1.logger, 'error').
|
|
2218
|
+
const loggerSpy = jest.spyOn(logger_1.logger, 'error').mockImplementation(() => { });
|
|
2233
2219
|
await (0, test_utils_1.executeAfterWait)(() => {
|
|
2234
2220
|
const iframe = (0, test_utils_1.getIFrameEl)();
|
|
2235
2221
|
(0, test_utils_1.postMessageToParent)(iframe.contentWindow, mockEmbedEventPayload, mockPort);
|
|
2236
2222
|
});
|
|
2237
2223
|
await (0, test_utils_1.executeAfterWait)(() => {
|
|
2238
|
-
expect(baseInstance.notifyAuthFailure).
|
|
2224
|
+
expect(baseInstance.notifyAuthFailure).toHaveBeenCalledWith(authInstance.AuthFailureType.IDLE_SESSION_TIMEOUT);
|
|
2239
2225
|
expect(loggerSpy).toHaveBeenCalledTimes(0);
|
|
2240
2226
|
});
|
|
2241
2227
|
jest.spyOn(authService, 'verifyTokenService').mockClear();
|
|
@@ -2243,7 +2229,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
2243
2229
|
});
|
|
2244
2230
|
});
|
|
2245
2231
|
describe('Renders should wait for init to completed', () => {
|
|
2246
|
-
const errorSpy = jest.spyOn(logger_1.logger, 'error').
|
|
2232
|
+
const errorSpy = jest.spyOn(logger_1.logger, 'error').mockImplementation(() => { });
|
|
2247
2233
|
beforeEach(() => {
|
|
2248
2234
|
errorSpy.mockClear();
|
|
2249
2235
|
(0, utils_1.resetValueFromWindow)('initFlagKey');
|
|
@@ -2887,7 +2873,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
2887
2873
|
});
|
|
2888
2874
|
test('should execute callbacks through executeEvent function', async () => {
|
|
2889
2875
|
let capturedExecuteEvent;
|
|
2890
|
-
mockHandleInterceptEvent.mockImplementation((params) => {
|
|
2876
|
+
mockHandleInterceptEvent.mockImplementation(async (params) => {
|
|
2891
2877
|
capturedExecuteEvent = params.executeEvent;
|
|
2892
2878
|
});
|
|
2893
2879
|
const searchEmbed = new index_1.SearchEmbed((0, test_utils_1.getRootEl)(), defaultViewConfig);
|
|
@@ -2920,7 +2906,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
2920
2906
|
});
|
|
2921
2907
|
test('should call triggerUIPassThrough through getUnsavedAnswerTml function', async () => {
|
|
2922
2908
|
let capturedGetUnsavedAnswerTml;
|
|
2923
|
-
mockHandleInterceptEvent.mockImplementation((params) => {
|
|
2909
|
+
mockHandleInterceptEvent.mockImplementation(async (params) => {
|
|
2924
2910
|
capturedGetUnsavedAnswerTml = params.getUnsavedAnswerTml;
|
|
2925
2911
|
});
|
|
2926
2912
|
const mockTmlResponse = { tml: 'test-tml-content' };
|
|
@@ -3070,7 +3056,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
3070
3056
|
});
|
|
3071
3057
|
test('should pass eventPort to executeCallbacks', async () => {
|
|
3072
3058
|
let capturedExecuteEvent;
|
|
3073
|
-
mockHandleInterceptEvent.mockImplementation((params) => {
|
|
3059
|
+
mockHandleInterceptEvent.mockImplementation(async (params) => {
|
|
3074
3060
|
capturedExecuteEvent = params.executeEvent;
|
|
3075
3061
|
});
|
|
3076
3062
|
const searchEmbed = new index_1.SearchEmbed((0, test_utils_1.getRootEl)(), defaultViewConfig);
|
|
@@ -3103,7 +3089,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
3103
3089
|
});
|
|
3104
3090
|
test('should handle getUnsavedAnswerTml with empty response', async () => {
|
|
3105
3091
|
let capturedGetUnsavedAnswerTml;
|
|
3106
|
-
mockHandleInterceptEvent.mockImplementation((params) => {
|
|
3092
|
+
mockHandleInterceptEvent.mockImplementation(async (params) => {
|
|
3107
3093
|
capturedGetUnsavedAnswerTml = params.getUnsavedAnswerTml;
|
|
3108
3094
|
});
|
|
3109
3095
|
mockProcessTrigger.mockResolvedValue([]);
|
|
@@ -3224,4 +3210,194 @@ describe('Additional Coverage Tests', () => {
|
|
|
3224
3210
|
expect(removeEventListenerSpy).toHaveBeenCalledWith('message', expect.any(Function));
|
|
3225
3211
|
});
|
|
3226
3212
|
});
|
|
3213
|
+
describe('Trigger method edge cases', () => {
|
|
3214
|
+
beforeAll(() => {
|
|
3215
|
+
(0, index_1.init)({
|
|
3216
|
+
thoughtSpotHost: 'tshost',
|
|
3217
|
+
authType: index_1.AuthType.None,
|
|
3218
|
+
});
|
|
3219
|
+
});
|
|
3220
|
+
beforeEach(() => {
|
|
3221
|
+
document.body.innerHTML = (0, test_utils_1.getDocumentBody)();
|
|
3222
|
+
});
|
|
3223
|
+
test('should handle error when trigger is called with undefined messageType', async () => {
|
|
3224
|
+
const searchEmbed = new index_1.SearchEmbed((0, test_utils_1.getRootEl)(), defaultViewConfig);
|
|
3225
|
+
jest.spyOn(logger_1.logger, 'error');
|
|
3226
|
+
await searchEmbed.render();
|
|
3227
|
+
await (0, test_utils_1.executeAfterWait)(async () => {
|
|
3228
|
+
const result = await searchEmbed.trigger(undefined);
|
|
3229
|
+
expect(result).toBeNull();
|
|
3230
|
+
expect(logger_1.logger.error).toHaveBeenCalledWith(expect.objectContaining({
|
|
3231
|
+
errorType: types_1.ErrorDetailsTypes.VALIDATION_ERROR,
|
|
3232
|
+
code: types_1.EmbedErrorCodes.HOST_EVENT_TYPE_UNDEFINED,
|
|
3233
|
+
}));
|
|
3234
|
+
});
|
|
3235
|
+
});
|
|
3236
|
+
test('should return null when trigger is called before iframe is ready', async () => {
|
|
3237
|
+
jest.spyOn(baseInstance, 'getAuthPromise').mockRejectedValueOnce(new Error('Auth failed'));
|
|
3238
|
+
const searchEmbed = new index_1.SearchEmbed((0, test_utils_1.getRootEl)(), defaultViewConfig);
|
|
3239
|
+
jest.spyOn(logger_1.logger, 'debug');
|
|
3240
|
+
await searchEmbed.render();
|
|
3241
|
+
await (0, test_utils_1.executeAfterWait)(async () => {
|
|
3242
|
+
const result = await searchEmbed.trigger(types_1.HostEvent.Reload);
|
|
3243
|
+
expect(result).toBeNull();
|
|
3244
|
+
});
|
|
3245
|
+
});
|
|
3246
|
+
});
|
|
3247
|
+
describe('PreRender replaceExistingPreRender scenarios', () => {
|
|
3248
|
+
beforeAll(() => {
|
|
3249
|
+
(0, index_1.init)({
|
|
3250
|
+
thoughtSpotHost: 'tshost',
|
|
3251
|
+
authType: index_1.AuthType.None,
|
|
3252
|
+
});
|
|
3253
|
+
});
|
|
3254
|
+
afterEach(() => {
|
|
3255
|
+
const rootEle = document.getElementById('myRoot');
|
|
3256
|
+
rootEle === null || rootEle === void 0 ? void 0 : rootEle.remove();
|
|
3257
|
+
});
|
|
3258
|
+
test('should skip re-rendering when preRender already exists and replaceExistingPreRender is false', async () => {
|
|
3259
|
+
(0, test_utils_1.createRootEleForEmbed)();
|
|
3260
|
+
const embed1 = new index_1.LiveboardEmbed('#tsEmbedDiv', {
|
|
3261
|
+
preRenderId: 'no-replace-test',
|
|
3262
|
+
liveboardId: 'lb1',
|
|
3263
|
+
});
|
|
3264
|
+
await embed1.preRender();
|
|
3265
|
+
await (0, test_utils_1.waitFor)(() => !!(0, test_utils_1.getIFrameEl)());
|
|
3266
|
+
const embed2 = new index_1.LiveboardEmbed('#tsEmbedDiv', {
|
|
3267
|
+
preRenderId: 'no-replace-test',
|
|
3268
|
+
liveboardId: 'lb2',
|
|
3269
|
+
});
|
|
3270
|
+
const result = await embed2.preRender(false, false);
|
|
3271
|
+
expect(result).toBe(embed2);
|
|
3272
|
+
// The original iframe should still have lb1
|
|
3273
|
+
const iframe = (0, test_utils_1.getIFrameEl)();
|
|
3274
|
+
expect(iframe.src).toContain('lb1');
|
|
3275
|
+
});
|
|
3276
|
+
});
|
|
3277
|
+
describe('Destroy error handling', () => {
|
|
3278
|
+
beforeAll(() => {
|
|
3279
|
+
(0, index_1.init)({
|
|
3280
|
+
thoughtSpotHost: 'tshost',
|
|
3281
|
+
authType: index_1.AuthType.None,
|
|
3282
|
+
});
|
|
3283
|
+
});
|
|
3284
|
+
beforeEach(() => {
|
|
3285
|
+
document.body.innerHTML = (0, test_utils_1.getDocumentBody)();
|
|
3286
|
+
});
|
|
3287
|
+
test('should handle error gracefully when destroy fails', async () => {
|
|
3288
|
+
const appEmbed = new index_1.AppEmbed((0, test_utils_1.getRootEl)(), {
|
|
3289
|
+
frameParams: { width: '100%', height: '100%' },
|
|
3290
|
+
});
|
|
3291
|
+
await appEmbed.render();
|
|
3292
|
+
const logSpy = jest.spyOn(logger_1.logger, 'log').mockImplementation(() => { });
|
|
3293
|
+
jest.spyOn(Node.prototype, 'removeChild').mockImplementationOnce(() => {
|
|
3294
|
+
throw new Error('Remove failed');
|
|
3295
|
+
});
|
|
3296
|
+
expect(() => {
|
|
3297
|
+
appEmbed.destroy();
|
|
3298
|
+
}).not.toThrow();
|
|
3299
|
+
expect(logSpy).toHaveBeenCalledWith('Error destroying TS Embed', expect.any(Error));
|
|
3300
|
+
logSpy.mockRestore();
|
|
3301
|
+
});
|
|
3302
|
+
});
|
|
3303
|
+
describe('Fullscreen change handler behavior', () => {
|
|
3304
|
+
beforeAll(() => {
|
|
3305
|
+
(0, index_1.init)({
|
|
3306
|
+
thoughtSpotHost: 'tshost',
|
|
3307
|
+
authType: index_1.AuthType.None,
|
|
3308
|
+
disableFullscreenPresentation: false,
|
|
3309
|
+
});
|
|
3310
|
+
});
|
|
3311
|
+
beforeEach(() => {
|
|
3312
|
+
document.body.innerHTML = (0, test_utils_1.getDocumentBody)();
|
|
3313
|
+
});
|
|
3314
|
+
test('should trigger ExitPresentMode when exiting fullscreen', async () => {
|
|
3315
|
+
const liveboardEmbed = new index_1.LiveboardEmbed((0, test_utils_1.getRootEl)(), {
|
|
3316
|
+
...defaultViewConfig,
|
|
3317
|
+
liveboardId: 'test-lb',
|
|
3318
|
+
});
|
|
3319
|
+
await liveboardEmbed.render();
|
|
3320
|
+
await (0, test_utils_1.executeAfterWait)(() => {
|
|
3321
|
+
const iframe = (0, test_utils_1.getIFrameEl)();
|
|
3322
|
+
expect(iframe).toBeTruthy();
|
|
3323
|
+
});
|
|
3324
|
+
mockProcessTrigger.mockResolvedValue({});
|
|
3325
|
+
liveboardEmbed['setupFullscreenChangeHandler']();
|
|
3326
|
+
Object.defineProperty(document, 'fullscreenElement', {
|
|
3327
|
+
value: null,
|
|
3328
|
+
writable: true,
|
|
3329
|
+
configurable: true,
|
|
3330
|
+
});
|
|
3331
|
+
const event = new Event('fullscreenchange');
|
|
3332
|
+
document.dispatchEvent(event);
|
|
3333
|
+
await (0, test_utils_1.executeAfterWait)(() => {
|
|
3334
|
+
expect(mockProcessTrigger).toHaveBeenCalledWith(expect.any(Object), types_1.HostEvent.ExitPresentMode, expect.any(String), expect.any(Object));
|
|
3335
|
+
});
|
|
3336
|
+
});
|
|
3337
|
+
test('should not trigger ExitPresentMode when entering fullscreen', async () => {
|
|
3338
|
+
const liveboardEmbed = new index_1.LiveboardEmbed((0, test_utils_1.getRootEl)(), {
|
|
3339
|
+
...defaultViewConfig,
|
|
3340
|
+
liveboardId: 'test-lb-fullscreen',
|
|
3341
|
+
});
|
|
3342
|
+
await liveboardEmbed.render();
|
|
3343
|
+
await (0, test_utils_1.executeAfterWait)(() => {
|
|
3344
|
+
const iframe = (0, test_utils_1.getIFrameEl)();
|
|
3345
|
+
expect(iframe).toBeTruthy();
|
|
3346
|
+
});
|
|
3347
|
+
mockProcessTrigger.mockClear();
|
|
3348
|
+
mockProcessTrigger.mockResolvedValue({});
|
|
3349
|
+
liveboardEmbed['setupFullscreenChangeHandler']();
|
|
3350
|
+
Object.defineProperty(document, 'fullscreenElement', {
|
|
3351
|
+
value: (0, test_utils_1.getIFrameEl)(),
|
|
3352
|
+
writable: true,
|
|
3353
|
+
configurable: true,
|
|
3354
|
+
});
|
|
3355
|
+
const event = new Event('fullscreenchange');
|
|
3356
|
+
document.dispatchEvent(event);
|
|
3357
|
+
await (0, test_utils_1.executeAfterWait)(() => {
|
|
3358
|
+
expect(mockProcessTrigger).not.toHaveBeenCalledWith(expect.any(Object), types_1.HostEvent.ExitPresentMode, expect.any(String), expect.any(Object));
|
|
3359
|
+
});
|
|
3360
|
+
});
|
|
3361
|
+
});
|
|
3362
|
+
describe('ShowPreRender with UpdateEmbedParams', () => {
|
|
3363
|
+
beforeAll(() => {
|
|
3364
|
+
(0, index_1.init)({
|
|
3365
|
+
thoughtSpotHost: 'tshost',
|
|
3366
|
+
authType: index_1.AuthType.None,
|
|
3367
|
+
});
|
|
3368
|
+
});
|
|
3369
|
+
afterEach(() => {
|
|
3370
|
+
const rootEle = document.getElementById('myRoot');
|
|
3371
|
+
rootEle === null || rootEle === void 0 ? void 0 : rootEle.remove();
|
|
3372
|
+
});
|
|
3373
|
+
test('should trigger UpdateEmbedParams when showPreRender connects to existing prerendered component', async () => {
|
|
3374
|
+
(0, test_utils_1.createRootEleForEmbed)();
|
|
3375
|
+
(0, test_utils_1.mockMessageChannel)();
|
|
3376
|
+
window.ResizeObserver = window.ResizeObserver
|
|
3377
|
+
|| jest.fn().mockImplementation(() => ({
|
|
3378
|
+
disconnect: jest.fn(),
|
|
3379
|
+
observe: jest.fn(),
|
|
3380
|
+
unobserve: jest.fn(),
|
|
3381
|
+
}));
|
|
3382
|
+
const embed1 = new index_1.LiveboardEmbed('#tsEmbedDiv', {
|
|
3383
|
+
preRenderId: 'update-params-test',
|
|
3384
|
+
liveboardId: 'original-lb',
|
|
3385
|
+
});
|
|
3386
|
+
await embed1.preRender();
|
|
3387
|
+
await (0, test_utils_1.waitFor)(() => !!(0, test_utils_1.getIFrameEl)());
|
|
3388
|
+
embed1.isEmbedContainerLoaded = true;
|
|
3389
|
+
mockProcessTrigger.mockClear();
|
|
3390
|
+
mockProcessTrigger.mockResolvedValue({});
|
|
3391
|
+
const embed2 = new index_1.LiveboardEmbed('#tsEmbedDiv', {
|
|
3392
|
+
preRenderId: 'update-params-test',
|
|
3393
|
+
liveboardId: 'updated-lb',
|
|
3394
|
+
});
|
|
3395
|
+
embed2.showPreRender();
|
|
3396
|
+
await (0, test_utils_1.executeAfterWait)(() => {
|
|
3397
|
+
expect(mockProcessTrigger).toHaveBeenCalledWith(expect.any(Object), types_1.HostEvent.UpdateEmbedParams, expect.any(String), expect.objectContaining({
|
|
3398
|
+
liveboardId: 'updated-lb',
|
|
3399
|
+
}));
|
|
3400
|
+
});
|
|
3401
|
+
});
|
|
3402
|
+
});
|
|
3227
3403
|
//# sourceMappingURL=ts-embed.spec.js.map
|