@thoughtspot/visual-embed-sdk 1.20.2 → 1.20.3

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.
Files changed (368) hide show
  1. package/README.md +1 -1
  2. package/cjs/package.json +171 -0
  3. package/cjs/src/auth.d.ts +183 -0
  4. package/cjs/src/auth.d.ts.map +1 -0
  5. package/cjs/src/auth.js +457 -0
  6. package/cjs/src/auth.js.map +1 -0
  7. package/cjs/src/auth.spec.d.ts +13 -0
  8. package/cjs/src/auth.spec.d.ts.map +1 -0
  9. package/cjs/src/auth.spec.js +397 -0
  10. package/cjs/src/auth.spec.js.map +1 -0
  11. package/cjs/src/config.d.ts +22 -0
  12. package/cjs/src/config.d.ts.map +1 -0
  13. package/cjs/src/config.js +70 -0
  14. package/cjs/src/config.js.map +1 -0
  15. package/cjs/src/config.spec.d.ts +5 -0
  16. package/cjs/src/config.spec.d.ts.map +1 -0
  17. package/cjs/src/config.spec.js +65 -0
  18. package/cjs/src/config.spec.js.map +1 -0
  19. package/cjs/src/embed/app.d.ts +168 -0
  20. package/cjs/src/embed/app.d.ts.map +1 -0
  21. package/cjs/src/embed/app.js +215 -0
  22. package/cjs/src/embed/app.js.map +1 -0
  23. package/cjs/src/embed/app.spec.d.ts +2 -0
  24. package/cjs/src/embed/app.spec.d.ts.map +1 -0
  25. package/cjs/src/embed/app.spec.js +239 -0
  26. package/cjs/src/embed/app.spec.js.map +1 -0
  27. package/cjs/src/embed/base.d.ts +79 -0
  28. package/cjs/src/embed/base.d.ts.map +1 -0
  29. package/cjs/src/embed/base.js +229 -0
  30. package/cjs/src/embed/base.js.map +1 -0
  31. package/cjs/src/embed/base.spec.d.ts +2 -0
  32. package/cjs/src/embed/base.spec.d.ts.map +1 -0
  33. package/cjs/src/embed/base.spec.js +198 -0
  34. package/cjs/src/embed/base.spec.js.map +1 -0
  35. package/cjs/src/embed/embed.spec.d.ts +2 -0
  36. package/cjs/src/embed/embed.spec.d.ts.map +1 -0
  37. package/cjs/src/embed/embed.spec.js +74 -0
  38. package/cjs/src/embed/embed.spec.js.map +1 -0
  39. package/cjs/src/embed/events.spec.d.ts +2 -0
  40. package/cjs/src/embed/events.spec.d.ts.map +1 -0
  41. package/cjs/src/embed/events.spec.js +238 -0
  42. package/cjs/src/embed/events.spec.js.map +1 -0
  43. package/cjs/src/embed/liveboard.d.ts +150 -0
  44. package/cjs/src/embed/liveboard.d.ts.map +1 -0
  45. package/cjs/src/embed/liveboard.js +168 -0
  46. package/cjs/src/embed/liveboard.js.map +1 -0
  47. package/cjs/src/embed/liveboard.spec.d.ts +2 -0
  48. package/cjs/src/embed/liveboard.spec.d.ts.map +1 -0
  49. package/cjs/src/embed/liveboard.spec.js +229 -0
  50. package/cjs/src/embed/liveboard.spec.js.map +1 -0
  51. package/cjs/src/embed/pinboard.spec.d.ts +2 -0
  52. package/cjs/src/embed/pinboard.spec.d.ts.map +1 -0
  53. package/cjs/src/embed/pinboard.spec.js +148 -0
  54. package/cjs/src/embed/pinboard.spec.js.map +1 -0
  55. package/cjs/src/embed/search-bar.d.ts +50 -0
  56. package/cjs/src/embed/search-bar.d.ts.map +1 -0
  57. package/cjs/src/embed/search-bar.js +63 -0
  58. package/cjs/src/embed/search-bar.js.map +1 -0
  59. package/cjs/src/embed/search.d.ts +129 -0
  60. package/cjs/src/embed/search.d.ts.map +1 -0
  61. package/cjs/src/embed/search.js +121 -0
  62. package/cjs/src/embed/search.js.map +1 -0
  63. package/cjs/src/embed/search.spec.d.ts +2 -0
  64. package/cjs/src/embed/search.spec.d.ts.map +1 -0
  65. package/cjs/src/embed/search.spec.js +238 -0
  66. package/cjs/src/embed/search.spec.js.map +1 -0
  67. package/cjs/src/embed/searchEmbed-basic-auth.spec.d.ts +2 -0
  68. package/cjs/src/embed/searchEmbed-basic-auth.spec.d.ts.map +1 -0
  69. package/cjs/src/embed/searchEmbed-basic-auth.spec.js +103 -0
  70. package/cjs/src/embed/searchEmbed-basic-auth.spec.js.map +1 -0
  71. package/cjs/src/embed/ts-embed.d.ts +323 -0
  72. package/cjs/src/embed/ts-embed.d.ts.map +1 -0
  73. package/cjs/src/embed/ts-embed.js +719 -0
  74. package/cjs/src/embed/ts-embed.js.map +1 -0
  75. package/cjs/src/embed/ts-embed.spec.d.ts +2 -0
  76. package/cjs/src/embed/ts-embed.spec.d.ts.map +1 -0
  77. package/cjs/src/embed/ts-embed.spec.js +771 -0
  78. package/cjs/src/embed/ts-embed.spec.js.map +1 -0
  79. package/cjs/src/errors.d.ts +7 -0
  80. package/cjs/src/errors.d.ts.map +1 -0
  81. package/cjs/src/errors.js +10 -0
  82. package/cjs/src/errors.js.map +1 -0
  83. package/cjs/src/index.d.ts +18 -0
  84. package/cjs/src/index.d.ts.map +1 -0
  85. package/cjs/src/index.js +42 -0
  86. package/cjs/src/index.js.map +1 -0
  87. package/cjs/src/mixpanel-service.d.ts +29 -0
  88. package/cjs/src/mixpanel-service.d.ts.map +1 -0
  89. package/cjs/src/mixpanel-service.js +76 -0
  90. package/cjs/src/mixpanel-service.js.map +1 -0
  91. package/cjs/src/mixpanel-service.spec.d.ts +2 -0
  92. package/cjs/src/mixpanel-service.spec.d.ts.map +1 -0
  93. package/cjs/src/mixpanel-service.spec.js +63 -0
  94. package/cjs/src/mixpanel-service.spec.js.map +1 -0
  95. package/cjs/src/react/all-types-export.d.ts +3 -0
  96. package/cjs/src/react/all-types-export.d.ts.map +1 -0
  97. package/cjs/src/react/all-types-export.js +29 -0
  98. package/cjs/src/react/all-types-export.js.map +1 -0
  99. package/cjs/src/react/all-types-export.spec.d.ts +2 -0
  100. package/cjs/src/react/all-types-export.spec.d.ts.map +1 -0
  101. package/cjs/src/react/all-types-export.spec.js +13 -0
  102. package/cjs/src/react/all-types-export.spec.js.map +1 -0
  103. package/cjs/src/react/index.d.ts +95 -0
  104. package/cjs/src/react/index.d.ts.map +1 -0
  105. package/cjs/src/react/index.js +121 -0
  106. package/cjs/src/react/index.js.map +1 -0
  107. package/cjs/src/react/index.spec.d.ts +3 -0
  108. package/cjs/src/react/index.spec.d.ts.map +1 -0
  109. package/cjs/src/react/index.spec.js +138 -0
  110. package/cjs/src/react/index.spec.js.map +1 -0
  111. package/cjs/src/react/util.d.ts +19 -0
  112. package/cjs/src/react/util.d.ts.map +1 -0
  113. package/cjs/src/react/util.js +25 -0
  114. package/cjs/src/react/util.js.map +1 -0
  115. package/cjs/src/test/test-utils.d.ts +48 -0
  116. package/cjs/src/test/test-utils.d.ts.map +1 -0
  117. package/cjs/src/test/test-utils.js +108 -0
  118. package/cjs/src/test/test-utils.js.map +1 -0
  119. package/cjs/src/types.d.ts +2020 -0
  120. package/cjs/src/types.d.ts.map +1 -0
  121. package/cjs/src/types.js +1543 -0
  122. package/cjs/src/types.js.map +1 -0
  123. package/cjs/src/utils/answerService.d.ts +10 -0
  124. package/cjs/src/utils/answerService.d.ts.map +1 -0
  125. package/cjs/src/utils/answerService.js +61 -0
  126. package/cjs/src/utils/answerService.js.map +1 -0
  127. package/cjs/src/utils/answerService.spec.d.ts +2 -0
  128. package/cjs/src/utils/answerService.spec.d.ts.map +1 -0
  129. package/cjs/src/utils/answerService.spec.js +31 -0
  130. package/cjs/src/utils/answerService.spec.js.map +1 -0
  131. package/cjs/src/utils/authService.d.ts +37 -0
  132. package/cjs/src/utils/authService.d.ts.map +1 -0
  133. package/cjs/src/utils/authService.js +106 -0
  134. package/cjs/src/utils/authService.js.map +1 -0
  135. package/cjs/src/utils/authService.spec.d.ts +2 -0
  136. package/cjs/src/utils/authService.spec.d.ts.map +1 -0
  137. package/cjs/src/utils/authService.spec.js +72 -0
  138. package/cjs/src/utils/authService.spec.js.map +1 -0
  139. package/cjs/src/utils/processData.d.ts +16 -0
  140. package/cjs/src/utils/processData.d.ts.map +1 -0
  141. package/cjs/src/utils/processData.js +110 -0
  142. package/cjs/src/utils/processData.js.map +1 -0
  143. package/cjs/src/utils/processData.spec.d.ts +2 -0
  144. package/cjs/src/utils/processData.spec.d.ts.map +1 -0
  145. package/cjs/src/utils/processData.spec.js +142 -0
  146. package/cjs/src/utils/processData.spec.js.map +1 -0
  147. package/cjs/src/utils/processTrigger.d.ts +10 -0
  148. package/cjs/src/utils/processTrigger.d.ts.map +1 -0
  149. package/cjs/src/utils/processTrigger.js +63 -0
  150. package/cjs/src/utils/processTrigger.js.map +1 -0
  151. package/cjs/src/utils/processTrigger.spec.d.ts +2 -0
  152. package/cjs/src/utils/processTrigger.spec.d.ts.map +1 -0
  153. package/cjs/src/utils/processTrigger.spec.js +58 -0
  154. package/cjs/src/utils/processTrigger.spec.js.map +1 -0
  155. package/cjs/src/utils.d.ts +68 -0
  156. package/cjs/src/utils.d.ts.map +1 -0
  157. package/cjs/src/utils.js +196 -0
  158. package/cjs/src/utils.js.map +1 -0
  159. package/cjs/src/utils.spec.d.ts +5 -0
  160. package/cjs/src/utils.spec.d.ts.map +1 -0
  161. package/cjs/src/utils.spec.js +98 -0
  162. package/cjs/src/utils.spec.js.map +1 -0
  163. package/dist/src/auth.d.ts +54 -5
  164. package/dist/src/auth.d.ts.map +1 -1
  165. package/dist/src/auth.spec.d.ts +3 -0
  166. package/dist/src/auth.spec.d.ts.map +1 -1
  167. package/dist/src/config.d.ts +1 -0
  168. package/dist/src/config.d.ts.map +1 -1
  169. package/dist/src/embed/app.d.ts +35 -6
  170. package/dist/src/embed/app.d.ts.map +1 -1
  171. package/dist/src/embed/base.d.ts +20 -9
  172. package/dist/src/embed/base.d.ts.map +1 -1
  173. package/dist/src/embed/liveboard.d.ts +17 -5
  174. package/dist/src/embed/liveboard.d.ts.map +1 -1
  175. package/dist/src/embed/search-bar.d.ts +3 -0
  176. package/dist/src/embed/search-bar.d.ts.map +1 -1
  177. package/dist/src/embed/search.d.ts +9 -1
  178. package/dist/src/embed/search.d.ts.map +1 -1
  179. package/dist/src/embed/ts-embed.d.ts +65 -7
  180. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  181. package/dist/src/errors.d.ts.map +1 -1
  182. package/dist/src/index.d.ts +2 -2
  183. package/dist/src/index.d.ts.map +1 -1
  184. package/dist/src/mixpanel-service.d.ts +8 -0
  185. package/dist/src/mixpanel-service.d.ts.map +1 -1
  186. package/dist/src/react/all-types-export.d.ts +3 -0
  187. package/dist/src/react/all-types-export.d.ts.map +1 -0
  188. package/dist/src/react/all-types-export.spec.d.ts +2 -0
  189. package/dist/src/react/all-types-export.spec.d.ts.map +1 -0
  190. package/dist/src/react/index.d.ts +72 -0
  191. package/dist/src/react/index.d.ts.map +1 -1
  192. package/dist/src/react/util.d.ts +4 -0
  193. package/dist/src/react/util.d.ts.map +1 -1
  194. package/dist/src/test/test-utils.d.ts +11 -2
  195. package/dist/src/test/test-utils.d.ts.map +1 -1
  196. package/dist/src/types.d.ts +499 -96
  197. package/dist/src/types.d.ts.map +1 -1
  198. package/dist/src/utils/answerService.d.ts +7 -0
  199. package/dist/src/utils/answerService.d.ts.map +1 -1
  200. package/dist/src/utils/authService.d.ts +30 -0
  201. package/dist/src/utils/authService.d.ts.map +1 -1
  202. package/dist/src/utils/processData.d.ts +12 -0
  203. package/dist/src/utils/processData.d.ts.map +1 -1
  204. package/dist/src/utils/processTrigger.d.ts +7 -0
  205. package/dist/src/utils/processTrigger.d.ts.map +1 -1
  206. package/dist/src/utils.d.ts +12 -0
  207. package/dist/src/utils.d.ts.map +1 -1
  208. package/dist/tsembed-react.es.js +28024 -0
  209. package/dist/tsembed-react.js +27966 -0
  210. package/dist/tsembed.es.js +18114 -305
  211. package/dist/tsembed.js +18088 -327
  212. package/dist/visual-embed-sdk-react-full.d.ts +3092 -0
  213. package/dist/visual-embed-sdk-react.d.ts +2781 -0
  214. package/dist/visual-embed-sdk.d.ts +2944 -0
  215. package/lib/package.json +15 -14
  216. package/lib/src/auth.d.ts +54 -5
  217. package/lib/src/auth.d.ts.map +1 -1
  218. package/lib/src/auth.js +91 -31
  219. package/lib/src/auth.js.map +1 -1
  220. package/lib/src/auth.spec.d.ts +3 -0
  221. package/lib/src/auth.spec.d.ts.map +1 -1
  222. package/lib/src/auth.spec.js +37 -6
  223. package/lib/src/auth.spec.js.map +1 -1
  224. package/lib/src/config.d.ts +1 -0
  225. package/lib/src/config.d.ts.map +1 -1
  226. package/lib/src/config.js +5 -3
  227. package/lib/src/config.js.map +1 -1
  228. package/lib/src/config.spec.js.map +1 -1
  229. package/lib/src/embed/app.d.ts +35 -6
  230. package/lib/src/embed/app.d.ts.map +1 -1
  231. package/lib/src/embed/app.js +55 -16
  232. package/lib/src/embed/app.js.map +1 -1
  233. package/lib/src/embed/app.spec.js +41 -12
  234. package/lib/src/embed/app.spec.js.map +1 -1
  235. package/lib/src/embed/base.d.ts +20 -9
  236. package/lib/src/embed/base.d.ts.map +1 -1
  237. package/lib/src/embed/base.js +31 -15
  238. package/lib/src/embed/base.js.map +1 -1
  239. package/lib/src/embed/base.spec.js.map +1 -1
  240. package/lib/src/embed/embed.spec.js +1 -1
  241. package/lib/src/embed/embed.spec.js.map +1 -1
  242. package/lib/src/embed/liveboard.d.ts +17 -5
  243. package/lib/src/embed/liveboard.d.ts.map +1 -1
  244. package/lib/src/embed/liveboard.js +49 -37
  245. package/lib/src/embed/liveboard.js.map +1 -1
  246. package/lib/src/embed/liveboard.spec.js +37 -30
  247. package/lib/src/embed/liveboard.spec.js.map +1 -1
  248. package/lib/src/embed/pinboard.spec.js +14 -26
  249. package/lib/src/embed/pinboard.spec.js.map +1 -1
  250. package/lib/src/embed/search-bar.d.ts +3 -0
  251. package/lib/src/embed/search-bar.d.ts.map +1 -1
  252. package/lib/src/embed/search-bar.js +5 -6
  253. package/lib/src/embed/search-bar.js.map +1 -1
  254. package/lib/src/embed/search.d.ts +9 -1
  255. package/lib/src/embed/search.d.ts.map +1 -1
  256. package/lib/src/embed/search.js +18 -14
  257. package/lib/src/embed/search.js.map +1 -1
  258. package/lib/src/embed/search.spec.js +16 -19
  259. package/lib/src/embed/search.spec.js.map +1 -1
  260. package/lib/src/embed/searchEmbed-basic-auth.spec.js +4 -0
  261. package/lib/src/embed/searchEmbed-basic-auth.spec.js.map +1 -1
  262. package/lib/src/embed/ts-embed.d.ts +65 -7
  263. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  264. package/lib/src/embed/ts-embed.js +154 -77
  265. package/lib/src/embed/ts-embed.js.map +1 -1
  266. package/lib/src/embed/ts-embed.spec.js +46 -24
  267. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  268. package/lib/src/errors.d.ts.map +1 -1
  269. package/lib/src/errors.js.map +1 -1
  270. package/lib/src/index.d.ts +2 -2
  271. package/lib/src/index.d.ts.map +1 -1
  272. package/lib/src/index.js +4 -4
  273. package/lib/src/index.js.map +1 -1
  274. package/lib/src/mixpanel-service.d.ts +8 -0
  275. package/lib/src/mixpanel-service.d.ts.map +1 -1
  276. package/lib/src/mixpanel-service.js +13 -1
  277. package/lib/src/mixpanel-service.js.map +1 -1
  278. package/lib/src/mixpanel-service.spec.js.map +1 -1
  279. package/lib/src/react/all-types-export.d.ts +3 -0
  280. package/lib/src/react/all-types-export.d.ts.map +1 -0
  281. package/lib/src/react/all-types-export.js +5 -0
  282. package/lib/src/react/all-types-export.js.map +1 -0
  283. package/lib/src/react/all-types-export.spec.d.ts +2 -0
  284. package/lib/src/react/all-types-export.spec.d.ts.map +1 -0
  285. package/lib/src/react/all-types-export.spec.js +10 -0
  286. package/lib/src/react/all-types-export.spec.js.map +1 -0
  287. package/lib/src/react/index.d.ts +72 -0
  288. package/lib/src/react/index.d.ts.map +1 -1
  289. package/lib/src/react/index.js +79 -7
  290. package/lib/src/react/index.js.map +1 -1
  291. package/lib/src/react/index.spec.js +27 -6
  292. package/lib/src/react/index.spec.js.map +1 -1
  293. package/lib/src/react/util.d.ts +4 -0
  294. package/lib/src/react/util.d.ts.map +1 -1
  295. package/lib/src/react/util.js +4 -0
  296. package/lib/src/react/util.js.map +1 -1
  297. package/lib/src/test/test-utils.d.ts +11 -2
  298. package/lib/src/test/test-utils.d.ts.map +1 -1
  299. package/lib/src/test/test-utils.js +36 -25
  300. package/lib/src/test/test-utils.js.map +1 -1
  301. package/lib/src/types.d.ts +499 -96
  302. package/lib/src/types.d.ts.map +1 -1
  303. package/lib/src/types.js +374 -68
  304. package/lib/src/types.js.map +1 -1
  305. package/lib/src/utils/answerService.d.ts +7 -0
  306. package/lib/src/utils/answerService.d.ts.map +1 -1
  307. package/lib/src/utils/answerService.js +7 -0
  308. package/lib/src/utils/answerService.js.map +1 -1
  309. package/lib/src/utils/answerService.spec.js.map +1 -1
  310. package/lib/src/utils/authService.d.ts +30 -0
  311. package/lib/src/utils/authService.d.ts.map +1 -1
  312. package/lib/src/utils/authService.js +39 -2
  313. package/lib/src/utils/authService.js.map +1 -1
  314. package/lib/src/utils/authService.spec.js.map +1 -1
  315. package/lib/src/utils/processData.d.ts +12 -0
  316. package/lib/src/utils/processData.d.ts.map +1 -1
  317. package/lib/src/utils/processData.js +33 -5
  318. package/lib/src/utils/processData.js.map +1 -1
  319. package/lib/src/utils/processData.spec.js.map +1 -1
  320. package/lib/src/utils/processTrigger.d.ts +7 -0
  321. package/lib/src/utils/processTrigger.d.ts.map +1 -1
  322. package/lib/src/utils/processTrigger.js +17 -3
  323. package/lib/src/utils/processTrigger.js.map +1 -1
  324. package/lib/src/utils/processTrigger.spec.js.map +1 -1
  325. package/lib/src/utils.d.ts +12 -0
  326. package/lib/src/utils.d.ts.map +1 -1
  327. package/lib/src/utils.js +24 -19
  328. package/lib/src/utils.js.map +1 -1
  329. package/lib/src/utils.spec.js.map +1 -1
  330. package/package.json +15 -14
  331. package/src/auth.spec.ts +83 -133
  332. package/src/auth.ts +148 -115
  333. package/src/config.spec.ts +2 -4
  334. package/src/config.ts +5 -3
  335. package/src/embed/app.spec.ts +57 -14
  336. package/src/embed/app.ts +91 -36
  337. package/src/embed/base.spec.ts +3 -9
  338. package/src/embed/base.ts +51 -53
  339. package/src/embed/embed.spec.ts +5 -6
  340. package/src/embed/liveboard.spec.ts +56 -37
  341. package/src/embed/liveboard.ts +66 -64
  342. package/src/embed/pinboard.spec.ts +26 -29
  343. package/src/embed/search-bar.tsx +10 -8
  344. package/src/embed/search.spec.ts +31 -21
  345. package/src/embed/search.ts +26 -20
  346. package/src/embed/searchEmbed-basic-auth.spec.ts +22 -28
  347. package/src/embed/ts-embed.spec.ts +99 -144
  348. package/src/embed/ts-embed.ts +188 -162
  349. package/src/errors.ts +3 -6
  350. package/src/index.ts +6 -10
  351. package/src/mixpanel-service.spec.ts +1 -3
  352. package/src/mixpanel-service.ts +13 -1
  353. package/src/react/index.spec.tsx +66 -13
  354. package/src/react/index.tsx +111 -62
  355. package/src/react/util.ts +8 -4
  356. package/src/test/test-utils.ts +43 -39
  357. package/src/types.ts +498 -98
  358. package/src/utils/answerService.spec.ts +3 -5
  359. package/src/utils/answerService.ts +21 -17
  360. package/src/utils/authService.spec.ts +26 -41
  361. package/src/utils/authService.ts +47 -21
  362. package/src/utils/processData.spec.ts +26 -59
  363. package/src/utils/processData.ts +36 -14
  364. package/src/utils/processTrigger.spec.ts +1 -6
  365. package/src/utils/processTrigger.ts +18 -9
  366. package/src/utils.spec.ts +8 -12
  367. package/src/utils.ts +25 -26
  368. package/lib/src/visual-embed-sdk.d.ts +0 -2419
@@ -15,6 +15,10 @@ import {
15
15
  getRootEl,
16
16
  defaultParams,
17
17
  defaultParamsWithoutHiddenActions,
18
+ expectUrlMatchesWithParams,
19
+ postMessageToParent,
20
+ getIFrameEl,
21
+ mockMessageChannel,
18
22
  } from '../test/test-utils';
19
23
  import { version } from '../../package.json';
20
24
  import * as processTriggerInstance from '../utils/processTrigger';
@@ -51,7 +55,8 @@ describe('Liveboard/viz embed tests', () => {
51
55
  } as LiveboardViewConfig);
52
56
  liveboardEmbed.render();
53
57
  await executeAfterWait(() => {
54
- expect(getIFrameSrc()).toBe(
58
+ expectUrlMatchesWithParams(
59
+ getIFrameSrc(),
55
60
  `http://${thoughtSpotHost}/?embedApp=true${defaultParams}${prefixParams}#/embed/viz/${liveboardId}`,
56
61
  );
57
62
  });
@@ -59,18 +64,15 @@ describe('Liveboard/viz embed tests', () => {
59
64
 
60
65
  test('should set disabled actions', async () => {
61
66
  const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
62
- disabledActions: [
63
- Action.DownloadAsCsv,
64
- Action.DownloadAsPdf,
65
- Action.DownloadAsXlsx,
66
- ],
67
+ disabledActions: [Action.DownloadAsCsv, Action.DownloadAsPdf, Action.DownloadAsXlsx],
67
68
  disabledActionReason: 'Action denied',
68
69
  ...defaultViewConfig,
69
70
  liveboardId,
70
71
  } as LiveboardViewConfig);
71
72
  liveboardEmbed.render();
72
73
  await executeAfterWait(() => {
73
- expect(getIFrameSrc()).toBe(
74
+ expectUrlMatchesWithParams(
75
+ getIFrameSrc(),
74
76
  `http://${thoughtSpotHost}/?embedApp=true&${defaultParamsWithoutHiddenActions}&disableAction=[%22${Action.DownloadAsCsv}%22,%22${Action.DownloadAsPdf}%22,%22${Action.DownloadAsXlsx}%22]&disableHint=Action%20denied&hideAction=[%22${Action.ReportError}%22]${prefixParams}#/embed/viz/${liveboardId}`,
75
77
  );
76
78
  });
@@ -78,17 +80,14 @@ describe('Liveboard/viz embed tests', () => {
78
80
 
79
81
  test('should set hidden actions', async () => {
80
82
  const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
81
- hiddenActions: [
82
- Action.DownloadAsCsv,
83
- Action.DownloadAsPdf,
84
- Action.DownloadAsXlsx,
85
- ],
83
+ hiddenActions: [Action.DownloadAsCsv, Action.DownloadAsPdf, Action.DownloadAsXlsx],
86
84
  ...defaultViewConfig,
87
85
  liveboardId,
88
86
  } as LiveboardViewConfig);
89
87
  liveboardEmbed.render();
90
88
  await executeAfterWait(() => {
91
- expect(getIFrameSrc()).toBe(
89
+ expectUrlMatchesWithParams(
90
+ getIFrameSrc(),
92
91
  `http://${thoughtSpotHost}/?embedApp=true&${defaultParamsWithoutHiddenActions}&hideAction=[%22${Action.ReportError}%22,%22${Action.DownloadAsCsv}%22,%22${Action.DownloadAsPdf}%22,%22${Action.DownloadAsXlsx}%22]${prefixParams}#/embed/viz/${liveboardId}`,
93
92
  );
94
93
  });
@@ -96,17 +95,14 @@ describe('Liveboard/viz embed tests', () => {
96
95
 
97
96
  test('should set visible actions', async () => {
98
97
  const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
99
- visibleActions: [
100
- Action.DownloadAsCsv,
101
- Action.DownloadAsPdf,
102
- Action.DownloadAsXlsx,
103
- ],
98
+ visibleActions: [Action.DownloadAsCsv, Action.DownloadAsPdf, Action.DownloadAsXlsx],
104
99
  ...defaultViewConfig,
105
100
  liveboardId,
106
101
  } as LiveboardViewConfig);
107
102
  liveboardEmbed.render();
108
103
  await executeAfterWait(() => {
109
- expect(getIFrameSrc()).toBe(
104
+ expectUrlMatchesWithParams(
105
+ getIFrameSrc(),
110
106
  `http://${thoughtSpotHost}/?embedApp=true${defaultParams}&visibleAction=[%22${Action.DownloadAsCsv}%22,%22${Action.DownloadAsPdf}%22,%22${Action.DownloadAsXlsx}%22]${prefixParams}#/embed/viz/${liveboardId}`,
111
107
  );
112
108
  });
@@ -120,7 +116,8 @@ describe('Liveboard/viz embed tests', () => {
120
116
  } as LiveboardViewConfig);
121
117
  liveboardEmbed.render();
122
118
  await executeAfterWait(() => {
123
- expect(getIFrameSrc()).toBe(
119
+ expectUrlMatchesWithParams(
120
+ getIFrameSrc(),
124
121
  `http://${thoughtSpotHost}/?embedApp=true${defaultParams}&visibleAction=[]${prefixParams}#/embed/viz/${liveboardId}`,
125
122
  );
126
123
  });
@@ -134,7 +131,8 @@ describe('Liveboard/viz embed tests', () => {
134
131
  } as LiveboardViewConfig);
135
132
  liveboardEmbed.render();
136
133
  await executeAfterWait(() => {
137
- expect(getIFrameSrc()).toBe(
134
+ expectUrlMatchesWithParams(
135
+ getIFrameSrc(),
138
136
  `http://${thoughtSpotHost}/?embedApp=true${defaultParams}&enableVizTransform=true${prefixParams}#/embed/viz/${liveboardId}`,
139
137
  );
140
138
  });
@@ -148,7 +146,8 @@ describe('Liveboard/viz embed tests', () => {
148
146
  } as LiveboardViewConfig);
149
147
  liveboardEmbed.render();
150
148
  await executeAfterWait(() => {
151
- expect(getIFrameSrc()).toBe(
149
+ expectUrlMatchesWithParams(
150
+ getIFrameSrc(),
152
151
  `http://${thoughtSpotHost}/?embedApp=true${defaultParams}&enableVizTransform=false${prefixParams}#/embed/viz/${liveboardId}`,
153
152
  );
154
153
  });
@@ -162,7 +161,8 @@ describe('Liveboard/viz embed tests', () => {
162
161
  } as LiveboardViewConfig);
163
162
  liveboardEmbed.render();
164
163
  await executeAfterWait(() => {
165
- expect(getIFrameSrc()).toBe(
164
+ expectUrlMatchesWithParams(
165
+ getIFrameSrc(),
166
166
  `http://${thoughtSpotHost}/?embedApp=true${defaultParams}${prefixParamsVizEmbed}#/embed/viz/${liveboardId}/${vizId}`,
167
167
  );
168
168
  });
@@ -183,13 +183,15 @@ describe('Liveboard/viz embed tests', () => {
183
183
  } as LiveboardViewConfig);
184
184
  liveboardEmbed.render();
185
185
  await executeAfterWait(() => {
186
- expect(getIFrameSrc()).toBe(
186
+ expectUrlMatchesWithParams(
187
+ getIFrameSrc(),
187
188
  `http://${thoughtSpotHost}/?embedApp=true&col1=sales&op1=EQ&val1=1000${defaultParams}${prefixParamsVizEmbed}#/embed/viz/${liveboardId}/${vizId}`,
188
189
  );
189
190
  });
190
191
  });
191
192
 
192
193
  test('should register event handler to adjust iframe height', async () => {
194
+ const onSpy = jest.spyOn(LiveboardEmbed.prototype, 'on');
193
195
  const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
194
196
  ...defaultViewConfig,
195
197
  fullHeight: true,
@@ -197,14 +199,10 @@ describe('Liveboard/viz embed tests', () => {
197
199
  vizId,
198
200
  } as LiveboardViewConfig);
199
201
 
200
- const onSpy = jest.spyOn(liveboardEmbed, 'on');
201
202
  liveboardEmbed.render();
202
203
 
203
204
  executeAfterWait(() => {
204
- expect(onSpy).toHaveBeenCalledWith(
205
- EmbedEvent.EmbedHeight,
206
- expect.anything(),
207
- );
205
+ expect(onSpy).toHaveBeenCalledWith(EmbedEvent.EmbedHeight, expect.anything());
208
206
  });
209
207
  });
210
208
  test('Should set the visible vizs', async () => {
@@ -215,16 +213,14 @@ describe('Liveboard/viz embed tests', () => {
215
213
  } as LiveboardViewConfig);
216
214
  liveboardEmbed.render();
217
215
  await executeAfterWait(() => {
218
- expect(getIFrameSrc()).toBe(
216
+ expectUrlMatchesWithParams(
217
+ getIFrameSrc(),
219
218
  `http://${thoughtSpotHost}/?embedApp=true${defaultParams}&pinboardVisibleVizs=[%22abcd%22,%22pqrs%22]${prefixParams}#/embed/viz/${liveboardId}`,
220
219
  );
221
220
  });
222
221
  });
223
222
  test('should process the trigger, for vizEmbed', async () => {
224
- const mockProcessTrigger = spyOn(
225
- processTriggerInstance,
226
- 'processTrigger',
227
- );
223
+ const mockProcessTrigger = spyOn(processTriggerInstance, 'processTrigger');
228
224
  const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
229
225
  enableVizTransformations: true,
230
226
  ...defaultViewConfig,
@@ -244,7 +240,8 @@ describe('Liveboard/viz embed tests', () => {
244
240
  } as LiveboardViewConfig);
245
241
  liveboardEmbed.render();
246
242
  await executeAfterWait(() => {
247
- expect(getIFrameSrc()).toBe(
243
+ expectUrlMatchesWithParams(
244
+ getIFrameSrc(),
248
245
  `http://${thoughtSpotHost}/?embedApp=true${defaultParams}&isLiveboardEmbed=true&isPinboardV2Enabled=true#/embed/viz/${liveboardId}/tab/${activeTabId}`,
249
246
  );
250
247
  });
@@ -259,7 +256,8 @@ describe('Liveboard/viz embed tests', () => {
259
256
  } as LiveboardViewConfig);
260
257
  liveboardEmbed.render();
261
258
  await executeAfterWait(() => {
262
- expect(getIFrameSrc()).toBe(
259
+ expectUrlMatchesWithParams(
260
+ getIFrameSrc(),
263
261
  `http://${thoughtSpotHost}/?embedApp=true${defaultParams}&preventPinboardFilterRemoval=true&isLiveboardEmbed=true&isPinboardV2Enabled=true#/embed/viz/${liveboardId}/tab/${activeTabId}`,
264
262
  );
265
263
  });
@@ -273,9 +271,30 @@ describe('Liveboard/viz embed tests', () => {
273
271
  } as LiveboardViewConfig);
274
272
  liveboardEmbed.render();
275
273
  await executeAfterWait(() => {
276
- expect(getIFrameSrc()).toBe(
274
+ expectUrlMatchesWithParams(
275
+ getIFrameSrc(),
277
276
  `http://${thoughtSpotHost}/?embedApp=true${defaultParams}&isContextMenuEnabledOnLeftClick=true&isLiveboardEmbed=true&isPinboardV2Enabled=true#/embed/viz/${liveboardId}/tab/${activeTabId}`,
278
277
  );
279
278
  });
280
279
  });
280
+
281
+ test('navigateToLiveboard should trigger the navigate event with the correct path', (done) => {
282
+ mockMessageChannel();
283
+ const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
284
+ ...defaultViewConfig,
285
+ } as LiveboardViewConfig);
286
+ const onSpy = jest.spyOn(liveboardEmbed, 'trigger');
287
+ liveboardEmbed.prerenderGeneric();
288
+ executeAfterWait(() => {
289
+ const iframe = getIFrameEl();
290
+ postMessageToParent(iframe.contentWindow, {
291
+ type: EmbedEvent.APP_INIT,
292
+ });
293
+ });
294
+ executeAfterWait(() => {
295
+ liveboardEmbed.navigateToLiveboard('lb1', 'viz1');
296
+ expect(onSpy).toHaveBeenCalledWith(HostEvent.Navigate, 'embed/viz/lb1/viz1');
297
+ done();
298
+ });
299
+ });
281
300
  });
@@ -19,17 +19,20 @@ import {
19
19
  HostEvent,
20
20
  ViewConfig,
21
21
  } from '../types';
22
- import { getFilterQuery, getQueryParamString } from '../utils';
22
+ import { getQueryParamString } from '../utils';
23
+ import { getAuthPromise } from './base';
23
24
  import { V1Embed } from './ts-embed';
24
25
 
25
26
  /**
26
27
  * The configuration for the embedded Liveboard or visualization page view.
28
+ *
27
29
  * @group Embed components
28
30
  */
29
31
  export interface LiveboardViewConfig extends ViewConfig {
30
32
  /**
31
33
  * If set to true, the embedded object container dynamically resizes
32
34
  * according to the height of the Liveboard.
35
+ *
33
36
  * @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 7.2.1
34
37
  */
35
38
  fullHeight?: boolean;
@@ -37,6 +40,7 @@ export interface LiveboardViewConfig extends ViewConfig {
37
40
  * This is the minimum height(in pixels) for a full height Liveboard.
38
41
  * Setting this height helps resolves issues with empty Liveboards and
39
42
  * other screens navigable from a Liveboard.
43
+ *
40
44
  * @version SDK: 1.5.0 | ThoughtSpot: ts7.oct.cl, 7.2.1
41
45
  * @default 500
42
46
  */
@@ -48,11 +52,13 @@ export interface LiveboardViewConfig extends ViewConfig {
48
52
  /**
49
53
  * The Liveboard to display in the embedded view.
50
54
  * Use either of liveboardId or pinboardId to reference the Liveboard to embed.
55
+ *
51
56
  * @version SDK: 1.3.0 | ThoughtSpot ts7.aug.cl, 7.2.1
52
57
  */
53
58
  liveboardId?: string;
54
59
  /**
55
60
  * To support backward compatibility
61
+ *
56
62
  * @hidden
57
63
  */
58
64
  pinboardId?: string;
@@ -63,6 +69,7 @@ export interface LiveboardViewConfig extends ViewConfig {
63
69
  /**
64
70
  * If set to true, all filter chips from a
65
71
  * Liveboard page will be read-only (no X buttons)
72
+ *
66
73
  * @version SDK: 1.3.0 | ThoughtSpot ts7.aug.cl, 7.2.1
67
74
  */
68
75
  preventLiveboardFilterRemoval?: boolean;
@@ -70,21 +77,25 @@ export interface LiveboardViewConfig extends ViewConfig {
70
77
  * Array of viz ids which should be visible when the liveboard
71
78
  * first renders. This can be changed by triggering the "SetVisibleVizs"
72
79
  * event.
80
+ *
73
81
  * @version SDK: 1.9.1 | ThoughtSpot: 8.1.0.cl, 8.4.1-sw
74
82
  */
75
83
  visibleVizs?: string[];
76
84
  /**
77
85
  * To support backward compatibilty
86
+ *
78
87
  * @hidden
79
88
  */
80
89
  preventPinboardFilterRemoval?: boolean;
81
90
  /**
82
91
  * Render embedded Liveboards and visualizations in the new Liveboard experience mode
92
+ *
83
93
  * @version SDK: 1.14.0 | ThoughtSpot: 8.6.0.cl, 8.8.1-sw
84
94
  */
85
95
  liveboardV2?: boolean;
86
96
  /**
87
97
  * Tab Id of the Liveboard that is supposed to be active
98
+ *
88
99
  * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1-sw
89
100
  */
90
101
  activeTabId?: string;
@@ -93,6 +104,7 @@ export interface LiveboardViewConfig extends ViewConfig {
93
104
  /**
94
105
  * Embed a ThoughtSpot Liveboard or a Thoughtspot visualization. When rendered it already
95
106
  * waits for the authentication to complete, so no need to wait for AuthStatus.SUCCESS.
107
+ *
96
108
  * @example
97
109
  * ```js
98
110
  * import { .. } from '@thoughtspot/visual-embed-sdk';
@@ -112,14 +124,21 @@ export class LiveboardEmbed extends V1Embed {
112
124
  // eslint-disable-next-line no-useless-constructor
113
125
  constructor(domSelector: DOMSelector, viewConfig: LiveboardViewConfig) {
114
126
  super(domSelector, viewConfig);
127
+ if (this.viewConfig.fullHeight === true) {
128
+ this.on(EmbedEvent.RouteChange, this.setIframeHeightForNonEmbedLiveboard);
129
+ this.on(EmbedEvent.EmbedHeight, this.updateIFrameHeight);
130
+ this.on(EmbedEvent.EmbedIframeCenter, this.embedIframeCenter);
131
+ }
115
132
  }
116
133
 
117
134
  /**
118
135
  * Construct a map of params to be passed on to the
119
136
  * embedded Liveboard or visualization.
120
137
  */
121
- private getEmbedParams() {
122
- const params = this.getBaseQueryParams();
138
+ protected getEmbedParams() {
139
+ let params = {};
140
+ params[Param.EmbedApp] = true;
141
+ params = this.getBaseQueryParams(params);
123
142
  const {
124
143
  enableVizTransformations,
125
144
  fullHeight,
@@ -130,9 +149,8 @@ export class LiveboardEmbed extends V1Embed {
130
149
  activeTabId,
131
150
  } = this.viewConfig;
132
151
 
133
- const preventLiveboardFilterRemoval =
134
- this.viewConfig.preventLiveboardFilterRemoval ||
135
- this.viewConfig.preventPinboardFilterRemoval;
152
+ const preventLiveboardFilterRemoval = this.viewConfig.preventLiveboardFilterRemoval
153
+ || this.viewConfig.preventPinboardFilterRemoval;
136
154
 
137
155
  if (fullHeight === true) {
138
156
  params[Param.fullHeight] = true;
@@ -141,9 +159,7 @@ export class LiveboardEmbed extends V1Embed {
141
159
  this.defaultHeight = defaultHeight;
142
160
  }
143
161
  if (enableVizTransformations !== undefined) {
144
- params[
145
- Param.EnableVizTransformations
146
- ] = enableVizTransformations.toString();
162
+ params[Param.EnableVizTransformations] = enableVizTransformations.toString();
147
163
  }
148
164
  if (preventLiveboardFilterRemoval) {
149
165
  params[Param.preventLiveboardFilterRemoval] = true;
@@ -163,47 +179,41 @@ export class LiveboardEmbed extends V1Embed {
163
179
  return queryParams;
164
180
  }
165
181
 
166
- /**
167
- * Construct the URL of the embedded ThoughtSpot Liveboard or visualization
168
- * to be loaded within the iframe.
169
- * @param liveboardId The GUID of the Liveboard.
170
- * @param vizId The optional GUID of a visualization within the Liveboard.
171
- * @param runtimeFilters A list of runtime filters to be applied to
172
- * the Liveboard or visualization on load.
173
- */
174
- private getIFrameSrc(
175
- liveboardId: string,
176
- vizId?: string,
177
- runtimeFilters?: RuntimeFilter[],
178
- activeTabId?: string,
179
- ) {
180
- const filterQuery = getFilterQuery(runtimeFilters || []);
181
- const queryParams = this.getEmbedParams();
182
- const queryString = [filterQuery, queryParams]
183
- .filter(Boolean)
184
- .join('&');
185
- let url = `${this.getV1EmbedBasePath(
186
- queryString,
187
- true,
188
- false,
189
- false,
190
- )}/viz/${liveboardId}`;
182
+ private getIframeSuffixSrc(liveboardId: string, vizId: string, activeTabId: string) {
183
+ let suffix = `/embed/viz/${liveboardId}`;
191
184
  if (activeTabId) {
192
- url = `${url}/tab/${activeTabId}`;
185
+ suffix = `${suffix}/tab/${activeTabId} `;
193
186
  }
194
187
  if (vizId) {
195
- url = `${url}/${vizId}`;
188
+ suffix = `${suffix}/${vizId}`;
196
189
  }
197
-
198
190
  const tsPostHashParams = this.getThoughtSpotPostUrlParams();
199
- url = `${url}${tsPostHashParams}`;
191
+ suffix = `${suffix}${tsPostHashParams}`;
192
+ return suffix;
193
+ }
194
+
195
+ /**
196
+ * Construct the URL of the embedded ThoughtSpot Liveboard or visualization
197
+ * to be loaded within the iframe.
198
+ */
199
+ private getIFrameSrc() {
200
+ const { vizId, activeTabId } = this.viewConfig;
201
+ const liveboardId = this.viewConfig.liveboardId ?? this.viewConfig.pinboardId;
200
202
 
201
- return url;
203
+ if (!liveboardId) {
204
+ this.handleError(ERROR_MESSAGE.LIVEBOARD_VIZ_ID_VALIDATION);
205
+ }
206
+ return `${this.getRootIframeSrc()}${this.getIframeSuffixSrc(
207
+ liveboardId,
208
+ vizId,
209
+ activeTabId,
210
+ )}`;
202
211
  }
203
212
 
204
213
  /**
205
214
  * Set the iframe height as per the computed height received
206
215
  * from the ThoughtSpot app.
216
+ *
207
217
  * @param data The event payload
208
218
  */
209
219
  private updateIFrameHeight = (data: MessagePayload) => {
@@ -223,12 +233,13 @@ export class LiveboardEmbed extends V1Embed {
223
233
 
224
234
  /**
225
235
  * Triggers an event to the embedded app
236
+ *
226
237
  * @param messageType The event type
227
238
  * @param data The payload to send with the message
228
239
  */
229
240
  public trigger(messageType: HostEvent, data: any = {}): Promise<any> {
230
241
  const dataWithVizId = data;
231
- if (this.viewConfig.vizId) {
242
+ if (typeof dataWithVizId === 'object' && this.viewConfig.vizId) {
232
243
  dataWithVizId.vizId = this.viewConfig.vizId;
233
244
  }
234
245
  return super.trigger(messageType, dataWithVizId);
@@ -236,42 +247,33 @@ export class LiveboardEmbed extends V1Embed {
236
247
 
237
248
  /**
238
249
  * Render an embedded ThoughtSpot Liveboard or visualization
250
+ *
239
251
  * @param renderOptions An object specifying the Liveboard ID,
240
252
  * visualization ID and the runtime filters.
241
253
  */
242
254
  public render(): LiveboardEmbed {
243
- const { vizId, activeTabId, runtimeFilters } = this.viewConfig;
244
- const liveboardId =
245
- this.viewConfig.liveboardId ?? this.viewConfig.pinboardId;
246
-
247
- if (!liveboardId) {
248
- this.handleError(ERROR_MESSAGE.LIVEBOARD_VIZ_ID_VALIDATION);
249
- }
250
-
251
- if (this.viewConfig.fullHeight === true) {
252
- this.on(
253
- EmbedEvent.RouteChange,
254
- this.setIframeHeightForNonEmbedLiveboard,
255
- );
256
- this.on(EmbedEvent.EmbedHeight, this.updateIFrameHeight);
257
- this.on(EmbedEvent.EmbedIframeCenter, this.embedIframeCenter);
258
- }
259
-
260
255
  super.render();
261
256
 
262
- const src = this.getIFrameSrc(
263
- liveboardId,
264
- vizId,
265
- runtimeFilters,
266
- activeTabId,
267
- );
257
+ const src = this.getIFrameSrc();
268
258
  this.renderV1Embed(src);
269
259
 
270
260
  return this;
271
261
  }
262
+
263
+ public navigateToLiveboard(liveboardId: string, vizId?: string, activeTabId?: string) {
264
+ const path = this.getIframeSuffixSrc(liveboardId, vizId, activeTabId);
265
+ this.viewConfig.liveboardId = liveboardId;
266
+ this.viewConfig.activeTabId = activeTabId;
267
+ this.viewConfig.vizId = vizId;
268
+ if (this.isAppInitialized) {
269
+ this.trigger(HostEvent.Navigate, path.substring(1));
270
+ } else {
271
+ this.render();
272
+ }
273
+ }
272
274
  }
273
275
 
274
276
  /**
275
277
  * @hidden
276
278
  */
277
- export class PinboardEmbed extends LiveboardEmbed {}
279
+ export class PinboardEmbed extends LiveboardEmbed { }
@@ -1,6 +1,8 @@
1
1
  import { PinboardEmbed, LiveboardViewConfig } from './liveboard';
2
2
  import { init } from '../index';
3
- import { Action, AuthType, EmbedEvent, RuntimeFilterOp } from '../types';
3
+ import {
4
+ Action, AuthType, EmbedEvent, RuntimeFilterOp,
5
+ } from '../types';
4
6
  import {
5
7
  executeAfterWait,
6
8
  getDocumentBody,
@@ -8,6 +10,7 @@ import {
8
10
  getRootEl,
9
11
  defaultParams,
10
12
  defaultParamsWithoutHiddenActions,
13
+ expectUrlMatchesWithParams,
11
14
  } from '../test/test-utils';
12
15
  import { version } from '../../package.json';
13
16
 
@@ -41,7 +44,8 @@ describe('Pinboard/viz embed tests', () => {
41
44
  } as LiveboardViewConfig);
42
45
  pinboardEmbed.render();
43
46
  await executeAfterWait(() => {
44
- expect(getIFrameSrc()).toBe(
47
+ expectUrlMatchesWithParams(
48
+ getIFrameSrc(),
45
49
  `http://${thoughtSpotHost}/?embedApp=true${defaultParams}${prefixParams}#/embed/viz/${pinboardId}`,
46
50
  );
47
51
  });
@@ -49,18 +53,15 @@ describe('Pinboard/viz embed tests', () => {
49
53
 
50
54
  test('should set disabled actions', async () => {
51
55
  const pinboardEmbed = new PinboardEmbed(getRootEl(), {
52
- disabledActions: [
53
- Action.DownloadAsCsv,
54
- Action.DownloadAsPdf,
55
- Action.DownloadAsXlsx,
56
- ],
56
+ disabledActions: [Action.DownloadAsCsv, Action.DownloadAsPdf, Action.DownloadAsXlsx],
57
57
  disabledActionReason: 'Action denied',
58
58
  ...defaultViewConfig,
59
59
  pinboardId,
60
60
  } as LiveboardViewConfig);
61
61
  pinboardEmbed.render();
62
62
  await executeAfterWait(() => {
63
- expect(getIFrameSrc()).toBe(
63
+ expectUrlMatchesWithParams(
64
+ getIFrameSrc(),
64
65
  `http://${thoughtSpotHost}/?embedApp=true&${defaultParamsWithoutHiddenActions}&disableAction=[%22${Action.DownloadAsCsv}%22,%22${Action.DownloadAsPdf}%22,%22${Action.DownloadAsXlsx}%22]&disableHint=Action%20denied&hideAction=[%22${Action.ReportError}%22]${prefixParams}#/embed/viz/${pinboardId}`,
65
66
  );
66
67
  });
@@ -68,17 +69,14 @@ describe('Pinboard/viz embed tests', () => {
68
69
 
69
70
  test('should set hidden actions', async () => {
70
71
  const pinboardEmbed = new PinboardEmbed(getRootEl(), {
71
- hiddenActions: [
72
- Action.DownloadAsCsv,
73
- Action.DownloadAsPdf,
74
- Action.DownloadAsXlsx,
75
- ],
72
+ hiddenActions: [Action.DownloadAsCsv, Action.DownloadAsPdf, Action.DownloadAsXlsx],
76
73
  ...defaultViewConfig,
77
74
  pinboardId,
78
75
  } as LiveboardViewConfig);
79
76
  pinboardEmbed.render();
80
77
  await executeAfterWait(() => {
81
- expect(getIFrameSrc()).toBe(
78
+ expectUrlMatchesWithParams(
79
+ getIFrameSrc(),
82
80
  `http://${thoughtSpotHost}/?embedApp=true&${defaultParamsWithoutHiddenActions}&hideAction=[%22${Action.ReportError}%22,%22${Action.DownloadAsCsv}%22,%22${Action.DownloadAsPdf}%22,%22${Action.DownloadAsXlsx}%22]${prefixParams}#/embed/viz/${pinboardId}`,
83
81
  );
84
82
  });
@@ -86,17 +84,14 @@ describe('Pinboard/viz embed tests', () => {
86
84
 
87
85
  test('should set visible actions', async () => {
88
86
  const pinboardEmbed = new PinboardEmbed(getRootEl(), {
89
- visibleActions: [
90
- Action.DownloadAsCsv,
91
- Action.DownloadAsPdf,
92
- Action.DownloadAsXlsx,
93
- ],
87
+ visibleActions: [Action.DownloadAsCsv, Action.DownloadAsPdf, Action.DownloadAsXlsx],
94
88
  ...defaultViewConfig,
95
89
  pinboardId,
96
90
  } as LiveboardViewConfig);
97
91
  pinboardEmbed.render();
98
92
  await executeAfterWait(() => {
99
- expect(getIFrameSrc()).toBe(
93
+ expectUrlMatchesWithParams(
94
+ getIFrameSrc(),
100
95
  `http://${thoughtSpotHost}/?embedApp=true${defaultParams}&visibleAction=[%22${Action.DownloadAsCsv}%22,%22${Action.DownloadAsPdf}%22,%22${Action.DownloadAsXlsx}%22]${prefixParams}#/embed/viz/${pinboardId}`,
101
96
  );
102
97
  });
@@ -110,7 +105,8 @@ describe('Pinboard/viz embed tests', () => {
110
105
  } as LiveboardViewConfig);
111
106
  pinboardEmbed.render();
112
107
  await executeAfterWait(() => {
113
- expect(getIFrameSrc()).toBe(
108
+ expectUrlMatchesWithParams(
109
+ getIFrameSrc(),
114
110
  `http://${thoughtSpotHost}/?embedApp=true${defaultParams}&visibleAction=[]${prefixParams}#/embed/viz/${pinboardId}`,
115
111
  );
116
112
  });
@@ -124,7 +120,8 @@ describe('Pinboard/viz embed tests', () => {
124
120
  } as LiveboardViewConfig);
125
121
  pinboardEmbed.render();
126
122
  await executeAfterWait(() => {
127
- expect(getIFrameSrc()).toBe(
123
+ expectUrlMatchesWithParams(
124
+ getIFrameSrc(),
128
125
  `http://${thoughtSpotHost}/?embedApp=true${defaultParams}&enableVizTransform=true${prefixParams}#/embed/viz/${pinboardId}`,
129
126
  );
130
127
  });
@@ -138,7 +135,8 @@ describe('Pinboard/viz embed tests', () => {
138
135
  } as LiveboardViewConfig);
139
136
  pinboardEmbed.render();
140
137
  await executeAfterWait(() => {
141
- expect(getIFrameSrc()).toBe(
138
+ expectUrlMatchesWithParams(
139
+ getIFrameSrc(),
142
140
  `http://${thoughtSpotHost}/?embedApp=true${defaultParams}&enableVizTransform=false${prefixParams}#/embed/viz/${pinboardId}`,
143
141
  );
144
142
  });
@@ -152,7 +150,8 @@ describe('Pinboard/viz embed tests', () => {
152
150
  } as LiveboardViewConfig);
153
151
  pinboardEmbed.render();
154
152
  await executeAfterWait(() => {
155
- expect(getIFrameSrc()).toBe(
153
+ expectUrlMatchesWithParams(
154
+ getIFrameSrc(),
156
155
  `http://${thoughtSpotHost}/?embedApp=true${defaultParams}${prefixParamsVizEmbed}#/embed/viz/${pinboardId}/${vizId}`,
157
156
  );
158
157
  });
@@ -173,7 +172,8 @@ describe('Pinboard/viz embed tests', () => {
173
172
  } as LiveboardViewConfig);
174
173
  pinboardEmbed.render();
175
174
  await executeAfterWait(() => {
176
- expect(getIFrameSrc()).toBe(
175
+ expectUrlMatchesWithParams(
176
+ getIFrameSrc(),
177
177
  `http://${thoughtSpotHost}/?embedApp=true&col1=sales&op1=EQ&val1=1000${defaultParams}${prefixParamsVizEmbed}#/embed/viz/${pinboardId}/${vizId}`,
178
178
  );
179
179
  });
@@ -191,10 +191,7 @@ describe('Pinboard/viz embed tests', () => {
191
191
  pinboardEmbed.render();
192
192
 
193
193
  executeAfterWait(() => {
194
- expect(onSpy).toHaveBeenCalledWith(
195
- EmbedEvent.EmbedHeight,
196
- expect.anything(),
197
- );
194
+ expect(onSpy).toHaveBeenCalledWith(EmbedEvent.EmbedHeight, expect.anything());
198
195
  });
199
196
  });
200
197
  });