@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
|
@@ -40,7 +40,7 @@ export const defaultParams = `&${defaultParamsWithoutHiddenActions}&hideAction=[
|
|
|
40
40
|
const hideBydefault = `&hideAction=${fixedEncodeURI(JSON.stringify([Action.ReportError, ...HiddenActionItemByDefaultForSearchEmbed]))}`;
|
|
41
41
|
const defaultParamsWithHiddenActions = defaultParamsWithoutHiddenActions + hideBydefault;
|
|
42
42
|
beforeAll(() => {
|
|
43
|
-
spyOn(window, 'alert');
|
|
43
|
+
jest.spyOn(window, 'alert').mockImplementation(() => { });
|
|
44
44
|
});
|
|
45
45
|
const customisations = {
|
|
46
46
|
style: {
|
|
@@ -96,7 +96,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
96
96
|
resetCachedAuthToken();
|
|
97
97
|
});
|
|
98
98
|
beforeAll(() => {
|
|
99
|
-
jest.spyOn(authInstance, 'postLoginService').mockResolvedValue(
|
|
99
|
+
jest.spyOn(authInstance, 'postLoginService').mockResolvedValue(undefined);
|
|
100
100
|
});
|
|
101
101
|
describe('Vaidate iframe properties', () => {
|
|
102
102
|
beforeAll(() => {
|
|
@@ -204,7 +204,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
204
204
|
postMessageToParent(iframe.contentWindow, mockEmbedEventPayload, mockPort);
|
|
205
205
|
});
|
|
206
206
|
await executeAfterWait(() => {
|
|
207
|
-
expect(baseInstance.notifyAuthFailure).
|
|
207
|
+
expect(baseInstance.notifyAuthFailure).toHaveBeenCalledWith(authInstance.AuthFailureType.EXPIRY);
|
|
208
208
|
expect(baseInstance.handleAuth).not.toHaveBeenCalled();
|
|
209
209
|
expect(mockPort.postMessage).toHaveBeenCalledWith({
|
|
210
210
|
type: EmbedEvent.AuthExpire,
|
|
@@ -236,7 +236,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
236
236
|
postMessageToParent(iframe.contentWindow, mockEmbedEventPayload, mockPort);
|
|
237
237
|
});
|
|
238
238
|
await executeAfterWait(() => {
|
|
239
|
-
expect(baseInstance.notifyAuthFailure).
|
|
239
|
+
expect(baseInstance.notifyAuthFailure).toHaveBeenCalledWith(authInstance.AuthFailureType.EXPIRY);
|
|
240
240
|
expect(mockPort.postMessage).not.toHaveBeenCalledWith({
|
|
241
241
|
type: EmbedEvent.AuthExpire,
|
|
242
242
|
data: { authToken: 'test_auth_token2' },
|
|
@@ -588,7 +588,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
588
588
|
expect(iframe.contentWindow.postMessage).toHaveBeenCalledTimes(0);
|
|
589
589
|
}, 1000);
|
|
590
590
|
});
|
|
591
|
-
test('should remove event listener when called off method', async (
|
|
591
|
+
test('should remove event listener when called off method', async () => {
|
|
592
592
|
const mockEmbedEventPayload = {
|
|
593
593
|
type: EmbedEvent.Save,
|
|
594
594
|
data: { answerId: '123' },
|
|
@@ -606,10 +606,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
606
606
|
const iframe = getIFrameEl();
|
|
607
607
|
postMessageToParent(iframe.contentWindow, mockEmbedEventPayload);
|
|
608
608
|
});
|
|
609
|
-
|
|
610
|
-
expect(mockFn).toHaveBeenCalledTimes(1);
|
|
611
|
-
done();
|
|
612
|
-
}, 100);
|
|
609
|
+
expect(mockFn).toHaveBeenCalledTimes(1);
|
|
613
610
|
});
|
|
614
611
|
});
|
|
615
612
|
describe('Appinit embedEvent in cookieless authentication authType', () => {
|
|
@@ -850,7 +847,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
850
847
|
authType: AuthType.TrustedAuthTokenCookieless,
|
|
851
848
|
getAuthToken: () => Promise.reject(),
|
|
852
849
|
});
|
|
853
|
-
jest.spyOn(logger, 'error').
|
|
850
|
+
jest.spyOn(logger, 'error').mockImplementation(() => { });
|
|
854
851
|
});
|
|
855
852
|
afterEach(() => {
|
|
856
853
|
jest.clearAllMocks();
|
|
@@ -917,14 +914,14 @@ describe('Unit test case for ts embed', () => {
|
|
|
917
914
|
const mockPort = {
|
|
918
915
|
postMessage: jest.fn(),
|
|
919
916
|
};
|
|
920
|
-
const loggerSpy = jest.spyOn(logger, 'error').
|
|
917
|
+
const loggerSpy = jest.spyOn(logger, 'error').mockImplementation(() => { });
|
|
921
918
|
await executeAfterWait(() => {
|
|
922
919
|
const iframe = getIFrameEl();
|
|
923
920
|
postMessageToParent(iframe.contentWindow, mockEmbedEventPayload, mockPort);
|
|
924
921
|
});
|
|
925
922
|
await executeAfterWait(() => {
|
|
926
923
|
expect(getRootEl().innerHTML).toContain('Not logged in');
|
|
927
|
-
expect(baseInstance.notifyAuthFailure).
|
|
924
|
+
expect(baseInstance.notifyAuthFailure).toHaveBeenCalledWith(authInstance.AuthFailureType.EXPIRY);
|
|
928
925
|
expect(loggerSpy).toHaveBeenCalledTimes(1);
|
|
929
926
|
});
|
|
930
927
|
jest.spyOn(authService, 'verifyTokenService').mockClear();
|
|
@@ -941,7 +938,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
941
938
|
const searchEmbed = new SearchEmbed(getRootEl(), { ...defaultViewConfig, preRenderId: 'test' });
|
|
942
939
|
jest.spyOn(baseInstance, 'notifyAuthFailure');
|
|
943
940
|
searchEmbed.preRender();
|
|
944
|
-
const loggerSpy = jest.spyOn(logger, 'error').
|
|
941
|
+
const loggerSpy = jest.spyOn(logger, 'error').mockImplementation(() => { });
|
|
945
942
|
const mockPort = {
|
|
946
943
|
postMessage: jest.fn(),
|
|
947
944
|
};
|
|
@@ -952,7 +949,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
952
949
|
const preRenderWrapper = document.getElementById('tsEmbed-pre-render-wrapper-test');
|
|
953
950
|
await executeAfterWait(() => {
|
|
954
951
|
expect(preRenderWrapper.innerHTML).toContain('Not logged in');
|
|
955
|
-
expect(baseInstance.notifyAuthFailure).
|
|
952
|
+
expect(baseInstance.notifyAuthFailure).toHaveBeenCalledWith(authInstance.AuthFailureType.EXPIRY);
|
|
956
953
|
expect(loggerSpy).toHaveBeenCalledTimes(1);
|
|
957
954
|
});
|
|
958
955
|
jest.spyOn(authService, 'verifyTokenService').mockClear();
|
|
@@ -982,7 +979,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
982
979
|
postMessageToParent(iframe.contentWindow, mockEmbedEventPayload);
|
|
983
980
|
});
|
|
984
981
|
await executeAfterWait(() => {
|
|
985
|
-
expect(baseInstance.notifyAuthFailure).
|
|
982
|
+
expect(baseInstance.notifyAuthFailure).toHaveBeenCalledWith(authInstance.AuthFailureType.EXPIRY);
|
|
986
983
|
expect(baseInstance.handleAuth).toHaveBeenCalled();
|
|
987
984
|
});
|
|
988
985
|
});
|
|
@@ -1007,7 +1004,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
1007
1004
|
postMessageToParent(iframe.contentWindow, mockEmbedEventPayload);
|
|
1008
1005
|
});
|
|
1009
1006
|
await executeAfterWait(() => {
|
|
1010
|
-
expect(baseInstance.notifyAuthFailure).
|
|
1007
|
+
expect(baseInstance.notifyAuthFailure).toHaveBeenCalledWith(authInstance.AuthFailureType.EXPIRY);
|
|
1011
1008
|
expect(baseInstance.handleAuth).not.toHaveBeenCalled();
|
|
1012
1009
|
});
|
|
1013
1010
|
});
|
|
@@ -1023,9 +1020,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
1023
1020
|
const setup = async (isLoggedIn = false) => {
|
|
1024
1021
|
jest.spyOn(window, 'addEventListener').mockImplementationOnce((event, handler, options) => {
|
|
1025
1022
|
handler({
|
|
1026
|
-
data: {
|
|
1027
|
-
type: 'xyz',
|
|
1028
|
-
},
|
|
1023
|
+
data: { type: 'xyz' },
|
|
1029
1024
|
ports: [3000],
|
|
1030
1025
|
source: null,
|
|
1031
1026
|
});
|
|
@@ -1043,8 +1038,8 @@ describe('Unit test case for ts embed', () => {
|
|
|
1043
1038
|
};
|
|
1044
1039
|
test('mixpanel should call with VISUAL_SDK_RENDER_COMPLETE', async () => {
|
|
1045
1040
|
await setup(true);
|
|
1046
|
-
expect(mockMixPanelEvent).
|
|
1047
|
-
expect(mockMixPanelEvent).
|
|
1041
|
+
expect(mockMixPanelEvent).toHaveBeenCalledWith(MIXPANEL_EVENT.VISUAL_SDK_RENDER_START);
|
|
1042
|
+
expect(mockMixPanelEvent).toHaveBeenCalledWith(MIXPANEL_EVENT.VISUAL_SDK_RENDER_COMPLETE, expect.objectContaining({
|
|
1048
1043
|
elWidth: 0,
|
|
1049
1044
|
elHeight: 0,
|
|
1050
1045
|
}));
|
|
@@ -1054,12 +1049,9 @@ describe('Unit test case for ts embed', () => {
|
|
|
1054
1049
|
const prefetchIframe = document.querySelectorAll('.prefetchIframe');
|
|
1055
1050
|
expect(prefetchIframe.length).toBe(0);
|
|
1056
1051
|
});
|
|
1057
|
-
test('Should render failure when login fails', async (
|
|
1058
|
-
setup(false);
|
|
1059
|
-
|
|
1060
|
-
expect(getRootEl().innerHTML).toContain('Failed to Login');
|
|
1061
|
-
done();
|
|
1062
|
-
});
|
|
1052
|
+
test('Should render failure when login fails', async () => {
|
|
1053
|
+
await setup(false);
|
|
1054
|
+
expect(getRootEl().innerHTML).toContain('Failed to Login');
|
|
1063
1055
|
});
|
|
1064
1056
|
});
|
|
1065
1057
|
describe('Trigger infoSuccess event on iframe load', () => {
|
|
@@ -1074,9 +1066,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
1074
1066
|
const setup = async (isLoggedIn = false, overrideOrgId = undefined) => {
|
|
1075
1067
|
jest.spyOn(window, 'addEventListener').mockImplementationOnce((event, handler, options) => {
|
|
1076
1068
|
handler({
|
|
1077
|
-
data: {
|
|
1078
|
-
type: 'xyz',
|
|
1079
|
-
},
|
|
1069
|
+
data: { type: 'xyz' },
|
|
1080
1070
|
ports: [3000],
|
|
1081
1071
|
source: null,
|
|
1082
1072
|
});
|
|
@@ -1309,19 +1299,19 @@ describe('Unit test case for ts embed', () => {
|
|
|
1309
1299
|
const iFrame = document.createElement('div');
|
|
1310
1300
|
iFrame.contentWindow = null;
|
|
1311
1301
|
jest.spyOn(document, 'createElement').mockReturnValueOnce(iFrame);
|
|
1312
|
-
spyOn(logger, 'error');
|
|
1302
|
+
jest.spyOn(logger, 'error');
|
|
1313
1303
|
await tsEmbed.render();
|
|
1314
1304
|
});
|
|
1315
1305
|
test('mixpanel should call with VISUAL_SDK_RENDER_FAILED', () => {
|
|
1316
|
-
expect(mockMixPanelEvent).
|
|
1317
|
-
expect(mockMixPanelEvent).
|
|
1306
|
+
expect(mockMixPanelEvent).toHaveBeenCalledWith(MIXPANEL_EVENT.VISUAL_SDK_RENDER_START);
|
|
1307
|
+
expect(mockMixPanelEvent).toHaveBeenCalledWith(MIXPANEL_EVENT.VISUAL_SDK_RENDER_FAILED, {
|
|
1318
1308
|
error: 'false',
|
|
1319
1309
|
});
|
|
1320
1310
|
});
|
|
1321
1311
|
});
|
|
1322
1312
|
describe('when visible actions are set', () => {
|
|
1323
1313
|
test('should throw error when there are both visible and hidden actions - pinboard', async () => {
|
|
1324
|
-
spyOn(logger, 'error');
|
|
1314
|
+
jest.spyOn(logger, 'error');
|
|
1325
1315
|
const pinboardEmbed = new PinboardEmbed(getRootEl(), {
|
|
1326
1316
|
hiddenActions: [Action.DownloadAsCsv],
|
|
1327
1317
|
visibleActions: [Action.DownloadAsCsv],
|
|
@@ -1352,7 +1342,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
1352
1342
|
* @param visibleActions
|
|
1353
1343
|
*/
|
|
1354
1344
|
async function testActionsForLiveboards(hiddenActions, visibleActions) {
|
|
1355
|
-
spyOn(logger, 'error');
|
|
1345
|
+
jest.spyOn(logger, 'error');
|
|
1356
1346
|
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
1357
1347
|
hiddenActions,
|
|
1358
1348
|
visibleActions,
|
|
@@ -1398,7 +1388,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
1398
1388
|
});
|
|
1399
1389
|
describe('when visible Tabs are set', () => {
|
|
1400
1390
|
test('should throw error when there are both visible and hidden Tabs - pinboard', async () => {
|
|
1401
|
-
spyOn(logger, 'error');
|
|
1391
|
+
jest.spyOn(logger, 'error');
|
|
1402
1392
|
const pinboardEmbed = new PinboardEmbed(getRootEl(), {
|
|
1403
1393
|
visibleTabs: [tabId1],
|
|
1404
1394
|
hiddenTabs: [tabId2],
|
|
@@ -1429,7 +1419,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
1429
1419
|
* @param visibleTabs
|
|
1430
1420
|
*/
|
|
1431
1421
|
async function testTabsForLiveboards(hiddenTabs, visibleTabs) {
|
|
1432
|
-
spyOn(logger, 'error');
|
|
1422
|
+
jest.spyOn(logger, 'error');
|
|
1433
1423
|
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
1434
1424
|
hiddenTabs,
|
|
1435
1425
|
visibleTabs,
|
|
@@ -1482,7 +1472,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
1482
1472
|
});
|
|
1483
1473
|
});
|
|
1484
1474
|
test('Error should be true', async () => {
|
|
1485
|
-
spyOn(logger, 'error');
|
|
1475
|
+
jest.spyOn(logger, 'error');
|
|
1486
1476
|
const tsEmbed = new SearchEmbed(getRootEl(), {});
|
|
1487
1477
|
await tsEmbed.render();
|
|
1488
1478
|
expect(tsEmbed['isError']).toBe(true);
|
|
@@ -1499,7 +1489,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
1499
1489
|
jest.spyOn(config, 'getThoughtSpotHost').mockImplementation(() => 'http://tshost');
|
|
1500
1490
|
});
|
|
1501
1491
|
test('when isRendered is true than isError will be true', async () => {
|
|
1502
|
-
spyOn(logger, 'warn');
|
|
1492
|
+
jest.spyOn(logger, 'warn');
|
|
1503
1493
|
const viEmbedIns = new tsEmbedInstance.V1Embed(getRootEl(), defaultViewConfig);
|
|
1504
1494
|
expect(viEmbedIns['isError']).toBe(false);
|
|
1505
1495
|
await viEmbedIns.render();
|
|
@@ -1543,7 +1533,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
1543
1533
|
expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false&${defaultParamsForPinboardEmbed}${defaultParamsPost}#/${path}`);
|
|
1544
1534
|
});
|
|
1545
1535
|
test('navigateToPage function use before render', async () => {
|
|
1546
|
-
spyOn(logger, 'log');
|
|
1536
|
+
jest.spyOn(logger, 'log');
|
|
1547
1537
|
const appEmbed = new AppEmbed(getRootEl(), {
|
|
1548
1538
|
frameParams: {
|
|
1549
1539
|
width: '100%',
|
|
@@ -1747,7 +1737,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
1747
1737
|
await appEmbed.render();
|
|
1748
1738
|
expectUrlMatchesWithParams(getIFrameSrc(), `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false&additionalPendoKey=1234${defaultParamsPost}#/home`);
|
|
1749
1739
|
});
|
|
1750
|
-
xit('Sets the forceSAMLAutoRedirect param', async (
|
|
1740
|
+
xit('Sets the forceSAMLAutoRedirect param', async () => {
|
|
1751
1741
|
jest.spyOn(baseInstance, 'getAuthPromise').mockResolvedValue(true);
|
|
1752
1742
|
init({
|
|
1753
1743
|
thoughtSpotHost: 'tshost',
|
|
@@ -1760,11 +1750,8 @@ describe('Unit test case for ts embed', () => {
|
|
|
1760
1750
|
},
|
|
1761
1751
|
});
|
|
1762
1752
|
appEmbed.render();
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
expect(getIFrameSrc()).toContain('forceSAMLAutoRedirect=true');
|
|
1766
|
-
done();
|
|
1767
|
-
});
|
|
1753
|
+
expect(getIFrameSrc()).toContain('authType=EmbeddedSSO');
|
|
1754
|
+
expect(getIFrameSrc()).toContain('forceSAMLAutoRedirect=true');
|
|
1768
1755
|
});
|
|
1769
1756
|
it('Should set the override locale for number/date and currency format', async () => {
|
|
1770
1757
|
jest.spyOn(baseInstance, 'getAuthPromise').mockResolvedValue(true);
|
|
@@ -1914,8 +1901,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
1914
1901
|
beforeAll(() => {
|
|
1915
1902
|
delete window.location;
|
|
1916
1903
|
window.location = {
|
|
1917
|
-
|
|
1918
|
-
search: '',
|
|
1904
|
+
assign: jest.fn(),
|
|
1919
1905
|
};
|
|
1920
1906
|
});
|
|
1921
1907
|
beforeEach(() => {
|
|
@@ -1985,7 +1971,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
1985
1971
|
});
|
|
1986
1972
|
afterAll(() => {
|
|
1987
1973
|
const rootEle = document.getElementById('myRoot');
|
|
1988
|
-
rootEle.remove();
|
|
1974
|
+
rootEle === null || rootEle === void 0 ? void 0 : rootEle.remove();
|
|
1989
1975
|
jest.clearAllMocks();
|
|
1990
1976
|
});
|
|
1991
1977
|
it('should preRender and hide the iframe', async () => {
|
|
@@ -2019,9 +2005,9 @@ describe('Unit test case for ts embed', () => {
|
|
|
2019
2005
|
};
|
|
2020
2006
|
});
|
|
2021
2007
|
// show preRender
|
|
2022
|
-
const warnSpy = spyOn(logger, 'warn');
|
|
2008
|
+
const warnSpy = jest.spyOn(logger, 'warn');
|
|
2023
2009
|
libEmbed.showPreRender();
|
|
2024
|
-
expect(warnSpy).toHaveBeenCalledTimes(
|
|
2010
|
+
expect(warnSpy).toHaveBeenCalledTimes(1);
|
|
2025
2011
|
resizeObserverCb([
|
|
2026
2012
|
{
|
|
2027
2013
|
target: tsEmbedDiv,
|
|
@@ -2042,7 +2028,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
2042
2028
|
});
|
|
2043
2029
|
it('preRender called without preRenderId should log error ', () => {
|
|
2044
2030
|
createRootEleForEmbed();
|
|
2045
|
-
spyOn(logger, 'error');
|
|
2031
|
+
jest.spyOn(logger, 'error');
|
|
2046
2032
|
const libEmbed = new LiveboardEmbed('#tsEmbedDiv', {
|
|
2047
2033
|
liveboardId: 'myLiveboardId',
|
|
2048
2034
|
});
|
|
@@ -2069,7 +2055,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
2069
2055
|
preRenderId: 'i-am-preRendered',
|
|
2070
2056
|
liveboardId: 'myLiveboardId',
|
|
2071
2057
|
});
|
|
2072
|
-
spyOn(libEmbed, 'preRender');
|
|
2058
|
+
jest.spyOn(libEmbed, 'preRender');
|
|
2073
2059
|
libEmbed.hidePreRender();
|
|
2074
2060
|
expect(libEmbed.preRender).toHaveBeenCalledTimes(0);
|
|
2075
2061
|
});
|
|
@@ -2103,8 +2089,8 @@ describe('Unit test case for ts embed', () => {
|
|
|
2103
2089
|
const libEmbed = new LiveboardEmbed('#tsEmbedDiv', {
|
|
2104
2090
|
liveboardId: 'myLiveboardId',
|
|
2105
2091
|
});
|
|
2106
|
-
spyOn(libEmbed, 'preRender');
|
|
2107
|
-
spyOn(logger, 'error');
|
|
2092
|
+
jest.spyOn(libEmbed, 'preRender');
|
|
2093
|
+
jest.spyOn(logger, 'error');
|
|
2108
2094
|
libEmbed.showPreRender();
|
|
2109
2095
|
expect(libEmbed.preRender).toHaveBeenCalledTimes(0);
|
|
2110
2096
|
expect(logger.error).toHaveBeenCalledTimes(1);
|
|
@@ -2134,7 +2120,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
2134
2120
|
preRenderId: 'test',
|
|
2135
2121
|
});
|
|
2136
2122
|
await libEmbed.syncPreRenderStyle();
|
|
2137
|
-
expect(logger.error).
|
|
2123
|
+
expect(logger.error).toHaveBeenCalledWith('PreRender should be called before using syncPreRenderStyle');
|
|
2138
2124
|
logger.error.mockClear();
|
|
2139
2125
|
});
|
|
2140
2126
|
});
|
|
@@ -2167,7 +2153,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
2167
2153
|
postMessageToParent(iframe.contentWindow, mockEmbedEventPayload, mockPort);
|
|
2168
2154
|
});
|
|
2169
2155
|
await executeAfterWait(() => {
|
|
2170
|
-
expect(baseInstance.notifyAuthFailure).
|
|
2156
|
+
expect(baseInstance.notifyAuthFailure).toHaveBeenCalledWith(authInstance.AuthFailureType.IDLE_SESSION_TIMEOUT);
|
|
2171
2157
|
expect(baseInstance.handleAuth).toHaveBeenCalled();
|
|
2172
2158
|
expect(mockPort.postMessage).toHaveBeenCalledWith({
|
|
2173
2159
|
type: EmbedEvent.IdleSessionTimeout,
|
|
@@ -2193,14 +2179,14 @@ describe('Unit test case for ts embed', () => {
|
|
|
2193
2179
|
const mockPort = {
|
|
2194
2180
|
postMessage: jest.fn(),
|
|
2195
2181
|
};
|
|
2196
|
-
const loggerSpy = jest.spyOn(logger, 'error').
|
|
2182
|
+
const loggerSpy = jest.spyOn(logger, 'error').mockImplementation(() => { });
|
|
2197
2183
|
await executeAfterWait(() => {
|
|
2198
2184
|
const iframe = getIFrameEl();
|
|
2199
2185
|
postMessageToParent(iframe.contentWindow, mockEmbedEventPayload, mockPort);
|
|
2200
2186
|
});
|
|
2201
2187
|
await executeAfterWait(() => {
|
|
2202
2188
|
expect(getRootEl().innerHTML).toContain('Not logged in');
|
|
2203
|
-
expect(baseInstance.notifyAuthFailure).
|
|
2189
|
+
expect(baseInstance.notifyAuthFailure).toHaveBeenCalledWith(authInstance.AuthFailureType.IDLE_SESSION_TIMEOUT);
|
|
2204
2190
|
expect(loggerSpy).toHaveBeenCalledTimes(1);
|
|
2205
2191
|
});
|
|
2206
2192
|
jest.spyOn(authService, 'verifyTokenService').mockClear();
|
|
@@ -2225,13 +2211,13 @@ describe('Unit test case for ts embed', () => {
|
|
|
2225
2211
|
const mockPort = {
|
|
2226
2212
|
postMessage: jest.fn(),
|
|
2227
2213
|
};
|
|
2228
|
-
const loggerSpy = jest.spyOn(logger, 'error').
|
|
2214
|
+
const loggerSpy = jest.spyOn(logger, 'error').mockImplementation(() => { });
|
|
2229
2215
|
await executeAfterWait(() => {
|
|
2230
2216
|
const iframe = getIFrameEl();
|
|
2231
2217
|
postMessageToParent(iframe.contentWindow, mockEmbedEventPayload, mockPort);
|
|
2232
2218
|
});
|
|
2233
2219
|
await executeAfterWait(() => {
|
|
2234
|
-
expect(baseInstance.notifyAuthFailure).
|
|
2220
|
+
expect(baseInstance.notifyAuthFailure).toHaveBeenCalledWith(authInstance.AuthFailureType.IDLE_SESSION_TIMEOUT);
|
|
2235
2221
|
expect(loggerSpy).toHaveBeenCalledTimes(0);
|
|
2236
2222
|
});
|
|
2237
2223
|
jest.spyOn(authService, 'verifyTokenService').mockClear();
|
|
@@ -2239,7 +2225,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
2239
2225
|
});
|
|
2240
2226
|
});
|
|
2241
2227
|
describe('Renders should wait for init to completed', () => {
|
|
2242
|
-
const errorSpy = jest.spyOn(logger, 'error').
|
|
2228
|
+
const errorSpy = jest.spyOn(logger, 'error').mockImplementation(() => { });
|
|
2243
2229
|
beforeEach(() => {
|
|
2244
2230
|
errorSpy.mockClear();
|
|
2245
2231
|
resetValueFromWindow('initFlagKey');
|
|
@@ -2883,7 +2869,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
2883
2869
|
});
|
|
2884
2870
|
test('should execute callbacks through executeEvent function', async () => {
|
|
2885
2871
|
let capturedExecuteEvent;
|
|
2886
|
-
mockHandleInterceptEvent.mockImplementation((params) => {
|
|
2872
|
+
mockHandleInterceptEvent.mockImplementation(async (params) => {
|
|
2887
2873
|
capturedExecuteEvent = params.executeEvent;
|
|
2888
2874
|
});
|
|
2889
2875
|
const searchEmbed = new SearchEmbed(getRootEl(), defaultViewConfig);
|
|
@@ -2916,7 +2902,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
2916
2902
|
});
|
|
2917
2903
|
test('should call triggerUIPassThrough through getUnsavedAnswerTml function', async () => {
|
|
2918
2904
|
let capturedGetUnsavedAnswerTml;
|
|
2919
|
-
mockHandleInterceptEvent.mockImplementation((params) => {
|
|
2905
|
+
mockHandleInterceptEvent.mockImplementation(async (params) => {
|
|
2920
2906
|
capturedGetUnsavedAnswerTml = params.getUnsavedAnswerTml;
|
|
2921
2907
|
});
|
|
2922
2908
|
const mockTmlResponse = { tml: 'test-tml-content' };
|
|
@@ -3066,7 +3052,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
3066
3052
|
});
|
|
3067
3053
|
test('should pass eventPort to executeCallbacks', async () => {
|
|
3068
3054
|
let capturedExecuteEvent;
|
|
3069
|
-
mockHandleInterceptEvent.mockImplementation((params) => {
|
|
3055
|
+
mockHandleInterceptEvent.mockImplementation(async (params) => {
|
|
3070
3056
|
capturedExecuteEvent = params.executeEvent;
|
|
3071
3057
|
});
|
|
3072
3058
|
const searchEmbed = new SearchEmbed(getRootEl(), defaultViewConfig);
|
|
@@ -3099,7 +3085,7 @@ describe('Unit test case for ts embed', () => {
|
|
|
3099
3085
|
});
|
|
3100
3086
|
test('should handle getUnsavedAnswerTml with empty response', async () => {
|
|
3101
3087
|
let capturedGetUnsavedAnswerTml;
|
|
3102
|
-
mockHandleInterceptEvent.mockImplementation((params) => {
|
|
3088
|
+
mockHandleInterceptEvent.mockImplementation(async (params) => {
|
|
3103
3089
|
capturedGetUnsavedAnswerTml = params.getUnsavedAnswerTml;
|
|
3104
3090
|
});
|
|
3105
3091
|
mockProcessTrigger.mockResolvedValue([]);
|
|
@@ -3220,4 +3206,194 @@ describe('Additional Coverage Tests', () => {
|
|
|
3220
3206
|
expect(removeEventListenerSpy).toHaveBeenCalledWith('message', expect.any(Function));
|
|
3221
3207
|
});
|
|
3222
3208
|
});
|
|
3209
|
+
describe('Trigger method edge cases', () => {
|
|
3210
|
+
beforeAll(() => {
|
|
3211
|
+
init({
|
|
3212
|
+
thoughtSpotHost: 'tshost',
|
|
3213
|
+
authType: AuthType.None,
|
|
3214
|
+
});
|
|
3215
|
+
});
|
|
3216
|
+
beforeEach(() => {
|
|
3217
|
+
document.body.innerHTML = getDocumentBody();
|
|
3218
|
+
});
|
|
3219
|
+
test('should handle error when trigger is called with undefined messageType', async () => {
|
|
3220
|
+
const searchEmbed = new SearchEmbed(getRootEl(), defaultViewConfig);
|
|
3221
|
+
jest.spyOn(logger, 'error');
|
|
3222
|
+
await searchEmbed.render();
|
|
3223
|
+
await executeAfterWait(async () => {
|
|
3224
|
+
const result = await searchEmbed.trigger(undefined);
|
|
3225
|
+
expect(result).toBeNull();
|
|
3226
|
+
expect(logger.error).toHaveBeenCalledWith(expect.objectContaining({
|
|
3227
|
+
errorType: ErrorDetailsTypes.VALIDATION_ERROR,
|
|
3228
|
+
code: EmbedErrorCodes.HOST_EVENT_TYPE_UNDEFINED,
|
|
3229
|
+
}));
|
|
3230
|
+
});
|
|
3231
|
+
});
|
|
3232
|
+
test('should return null when trigger is called before iframe is ready', async () => {
|
|
3233
|
+
jest.spyOn(baseInstance, 'getAuthPromise').mockRejectedValueOnce(new Error('Auth failed'));
|
|
3234
|
+
const searchEmbed = new SearchEmbed(getRootEl(), defaultViewConfig);
|
|
3235
|
+
jest.spyOn(logger, 'debug');
|
|
3236
|
+
await searchEmbed.render();
|
|
3237
|
+
await executeAfterWait(async () => {
|
|
3238
|
+
const result = await searchEmbed.trigger(HostEvent.Reload);
|
|
3239
|
+
expect(result).toBeNull();
|
|
3240
|
+
});
|
|
3241
|
+
});
|
|
3242
|
+
});
|
|
3243
|
+
describe('PreRender replaceExistingPreRender scenarios', () => {
|
|
3244
|
+
beforeAll(() => {
|
|
3245
|
+
init({
|
|
3246
|
+
thoughtSpotHost: 'tshost',
|
|
3247
|
+
authType: AuthType.None,
|
|
3248
|
+
});
|
|
3249
|
+
});
|
|
3250
|
+
afterEach(() => {
|
|
3251
|
+
const rootEle = document.getElementById('myRoot');
|
|
3252
|
+
rootEle === null || rootEle === void 0 ? void 0 : rootEle.remove();
|
|
3253
|
+
});
|
|
3254
|
+
test('should skip re-rendering when preRender already exists and replaceExistingPreRender is false', async () => {
|
|
3255
|
+
createRootEleForEmbed();
|
|
3256
|
+
const embed1 = new LiveboardEmbed('#tsEmbedDiv', {
|
|
3257
|
+
preRenderId: 'no-replace-test',
|
|
3258
|
+
liveboardId: 'lb1',
|
|
3259
|
+
});
|
|
3260
|
+
await embed1.preRender();
|
|
3261
|
+
await waitFor(() => !!getIFrameEl());
|
|
3262
|
+
const embed2 = new LiveboardEmbed('#tsEmbedDiv', {
|
|
3263
|
+
preRenderId: 'no-replace-test',
|
|
3264
|
+
liveboardId: 'lb2',
|
|
3265
|
+
});
|
|
3266
|
+
const result = await embed2.preRender(false, false);
|
|
3267
|
+
expect(result).toBe(embed2);
|
|
3268
|
+
// The original iframe should still have lb1
|
|
3269
|
+
const iframe = getIFrameEl();
|
|
3270
|
+
expect(iframe.src).toContain('lb1');
|
|
3271
|
+
});
|
|
3272
|
+
});
|
|
3273
|
+
describe('Destroy error handling', () => {
|
|
3274
|
+
beforeAll(() => {
|
|
3275
|
+
init({
|
|
3276
|
+
thoughtSpotHost: 'tshost',
|
|
3277
|
+
authType: AuthType.None,
|
|
3278
|
+
});
|
|
3279
|
+
});
|
|
3280
|
+
beforeEach(() => {
|
|
3281
|
+
document.body.innerHTML = getDocumentBody();
|
|
3282
|
+
});
|
|
3283
|
+
test('should handle error gracefully when destroy fails', async () => {
|
|
3284
|
+
const appEmbed = new AppEmbed(getRootEl(), {
|
|
3285
|
+
frameParams: { width: '100%', height: '100%' },
|
|
3286
|
+
});
|
|
3287
|
+
await appEmbed.render();
|
|
3288
|
+
const logSpy = jest.spyOn(logger, 'log').mockImplementation(() => { });
|
|
3289
|
+
jest.spyOn(Node.prototype, 'removeChild').mockImplementationOnce(() => {
|
|
3290
|
+
throw new Error('Remove failed');
|
|
3291
|
+
});
|
|
3292
|
+
expect(() => {
|
|
3293
|
+
appEmbed.destroy();
|
|
3294
|
+
}).not.toThrow();
|
|
3295
|
+
expect(logSpy).toHaveBeenCalledWith('Error destroying TS Embed', expect.any(Error));
|
|
3296
|
+
logSpy.mockRestore();
|
|
3297
|
+
});
|
|
3298
|
+
});
|
|
3299
|
+
describe('Fullscreen change handler behavior', () => {
|
|
3300
|
+
beforeAll(() => {
|
|
3301
|
+
init({
|
|
3302
|
+
thoughtSpotHost: 'tshost',
|
|
3303
|
+
authType: AuthType.None,
|
|
3304
|
+
disableFullscreenPresentation: false,
|
|
3305
|
+
});
|
|
3306
|
+
});
|
|
3307
|
+
beforeEach(() => {
|
|
3308
|
+
document.body.innerHTML = getDocumentBody();
|
|
3309
|
+
});
|
|
3310
|
+
test('should trigger ExitPresentMode when exiting fullscreen', async () => {
|
|
3311
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
3312
|
+
...defaultViewConfig,
|
|
3313
|
+
liveboardId: 'test-lb',
|
|
3314
|
+
});
|
|
3315
|
+
await liveboardEmbed.render();
|
|
3316
|
+
await executeAfterWait(() => {
|
|
3317
|
+
const iframe = getIFrameEl();
|
|
3318
|
+
expect(iframe).toBeTruthy();
|
|
3319
|
+
});
|
|
3320
|
+
mockProcessTrigger.mockResolvedValue({});
|
|
3321
|
+
liveboardEmbed['setupFullscreenChangeHandler']();
|
|
3322
|
+
Object.defineProperty(document, 'fullscreenElement', {
|
|
3323
|
+
value: null,
|
|
3324
|
+
writable: true,
|
|
3325
|
+
configurable: true,
|
|
3326
|
+
});
|
|
3327
|
+
const event = new Event('fullscreenchange');
|
|
3328
|
+
document.dispatchEvent(event);
|
|
3329
|
+
await executeAfterWait(() => {
|
|
3330
|
+
expect(mockProcessTrigger).toHaveBeenCalledWith(expect.any(Object), HostEvent.ExitPresentMode, expect.any(String), expect.any(Object));
|
|
3331
|
+
});
|
|
3332
|
+
});
|
|
3333
|
+
test('should not trigger ExitPresentMode when entering fullscreen', async () => {
|
|
3334
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
3335
|
+
...defaultViewConfig,
|
|
3336
|
+
liveboardId: 'test-lb-fullscreen',
|
|
3337
|
+
});
|
|
3338
|
+
await liveboardEmbed.render();
|
|
3339
|
+
await executeAfterWait(() => {
|
|
3340
|
+
const iframe = getIFrameEl();
|
|
3341
|
+
expect(iframe).toBeTruthy();
|
|
3342
|
+
});
|
|
3343
|
+
mockProcessTrigger.mockClear();
|
|
3344
|
+
mockProcessTrigger.mockResolvedValue({});
|
|
3345
|
+
liveboardEmbed['setupFullscreenChangeHandler']();
|
|
3346
|
+
Object.defineProperty(document, 'fullscreenElement', {
|
|
3347
|
+
value: getIFrameEl(),
|
|
3348
|
+
writable: true,
|
|
3349
|
+
configurable: true,
|
|
3350
|
+
});
|
|
3351
|
+
const event = new Event('fullscreenchange');
|
|
3352
|
+
document.dispatchEvent(event);
|
|
3353
|
+
await executeAfterWait(() => {
|
|
3354
|
+
expect(mockProcessTrigger).not.toHaveBeenCalledWith(expect.any(Object), HostEvent.ExitPresentMode, expect.any(String), expect.any(Object));
|
|
3355
|
+
});
|
|
3356
|
+
});
|
|
3357
|
+
});
|
|
3358
|
+
describe('ShowPreRender with UpdateEmbedParams', () => {
|
|
3359
|
+
beforeAll(() => {
|
|
3360
|
+
init({
|
|
3361
|
+
thoughtSpotHost: 'tshost',
|
|
3362
|
+
authType: AuthType.None,
|
|
3363
|
+
});
|
|
3364
|
+
});
|
|
3365
|
+
afterEach(() => {
|
|
3366
|
+
const rootEle = document.getElementById('myRoot');
|
|
3367
|
+
rootEle === null || rootEle === void 0 ? void 0 : rootEle.remove();
|
|
3368
|
+
});
|
|
3369
|
+
test('should trigger UpdateEmbedParams when showPreRender connects to existing prerendered component', async () => {
|
|
3370
|
+
createRootEleForEmbed();
|
|
3371
|
+
mockMessageChannel();
|
|
3372
|
+
window.ResizeObserver = window.ResizeObserver
|
|
3373
|
+
|| jest.fn().mockImplementation(() => ({
|
|
3374
|
+
disconnect: jest.fn(),
|
|
3375
|
+
observe: jest.fn(),
|
|
3376
|
+
unobserve: jest.fn(),
|
|
3377
|
+
}));
|
|
3378
|
+
const embed1 = new LiveboardEmbed('#tsEmbedDiv', {
|
|
3379
|
+
preRenderId: 'update-params-test',
|
|
3380
|
+
liveboardId: 'original-lb',
|
|
3381
|
+
});
|
|
3382
|
+
await embed1.preRender();
|
|
3383
|
+
await waitFor(() => !!getIFrameEl());
|
|
3384
|
+
embed1.isEmbedContainerLoaded = true;
|
|
3385
|
+
mockProcessTrigger.mockClear();
|
|
3386
|
+
mockProcessTrigger.mockResolvedValue({});
|
|
3387
|
+
const embed2 = new LiveboardEmbed('#tsEmbedDiv', {
|
|
3388
|
+
preRenderId: 'update-params-test',
|
|
3389
|
+
liveboardId: 'updated-lb',
|
|
3390
|
+
});
|
|
3391
|
+
embed2.showPreRender();
|
|
3392
|
+
await executeAfterWait(() => {
|
|
3393
|
+
expect(mockProcessTrigger).toHaveBeenCalledWith(expect.any(Object), HostEvent.UpdateEmbedParams, expect.any(String), expect.objectContaining({
|
|
3394
|
+
liveboardId: 'updated-lb',
|
|
3395
|
+
}));
|
|
3396
|
+
});
|
|
3397
|
+
});
|
|
3398
|
+
});
|
|
3223
3399
|
//# sourceMappingURL=ts-embed.spec.js.map
|