@urbanos/react-discovery-ui 2.1.43

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 (316) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +118 -0
  3. package/lib/ReactDiscoveryUI.js +103 -0
  4. package/lib/ReactDiscoveryUI.scss +13 -0
  5. package/lib/assets/arrow.svg +6 -0
  6. package/lib/assets/blk-database.svg +48 -0
  7. package/lib/assets/chart.svg +1 -0
  8. package/lib/assets/down.png +0 -0
  9. package/lib/assets/down.svg +1 -0
  10. package/lib/assets/folder_icon.png +0 -0
  11. package/lib/assets/folder_icon.svg +1 -0
  12. package/lib/assets/ic_arrow.svg +15 -0
  13. package/lib/assets/loadingicon.svg +57 -0
  14. package/lib/assets/no_image.png +0 -0
  15. package/lib/assets/plus.png +0 -0
  16. package/lib/assets/plus.svg +1 -0
  17. package/lib/assets/user.svg +1 -0
  18. package/lib/auth/auth0-client-provider.js +37 -0
  19. package/lib/auth/auth0-client-provider.test.js +33 -0
  20. package/lib/auth/auth0-wrapper.js +155 -0
  21. package/lib/auth/auth0-wrapper.test.js +100 -0
  22. package/lib/components/auth0-login-zone/auth0-login-zone.js +147 -0
  23. package/lib/components/auth0-login-zone/auth0-login-zone.test.js +177 -0
  24. package/lib/components/auth0-login-zone/index.js +9 -0
  25. package/lib/components/code-editor/code-editor.css +173 -0
  26. package/lib/components/code-editor/code-editor.js +64 -0
  27. package/lib/components/code-editor/index.js +9 -0
  28. package/lib/components/collapsable-box/collapsable-box.js +81 -0
  29. package/lib/components/collapsable-box/collapsable-box.scss +39 -0
  30. package/lib/components/collapsable-box/collapsable-box.test.js +87 -0
  31. package/lib/components/collapsable-box/index.js +9 -0
  32. package/lib/components/data-card/data-card.js +63 -0
  33. package/lib/components/data-card/data-card.scss +93 -0
  34. package/lib/components/data-card/data-card.test.js +74 -0
  35. package/lib/components/data-card/index.js +9 -0
  36. package/lib/components/data-view/data-view.js +194 -0
  37. package/lib/components/data-view/data-view.scss +39 -0
  38. package/lib/components/data-view/data-view.test.js +155 -0
  39. package/lib/components/data-view/index.js +9 -0
  40. package/lib/components/dataset-api-doc/api-example.js +120 -0
  41. package/lib/components/dataset-api-doc/api-example.scss +84 -0
  42. package/lib/components/dataset-api-doc/api-example.test.js +88 -0
  43. package/lib/components/dataset-api-doc/dataset-api-doc.js +117 -0
  44. package/lib/components/dataset-api-doc/dataset-api-doc.scss +8 -0
  45. package/lib/components/dataset-api-doc/dataset-api-doc.test.js +42 -0
  46. package/lib/components/dataset-api-doc/index.js +9 -0
  47. package/lib/components/dataset-details/dataset-details.js +64 -0
  48. package/lib/components/dataset-details/dataset-details.scss +58 -0
  49. package/lib/components/dataset-details/dataset-details.test.js +38 -0
  50. package/lib/components/dataset-details/index.js +9 -0
  51. package/lib/components/dataset-dictionary/dataset-dictionary.js +127 -0
  52. package/lib/components/dataset-dictionary/dataset-dictionary.scss +42 -0
  53. package/lib/components/dataset-dictionary/dataset-dictionary.test.js +286 -0
  54. package/lib/components/dataset-dictionary/index.js +9 -0
  55. package/lib/components/dataset-list/dataset-list.js +22 -0
  56. package/lib/components/dataset-list/dataset-list.scss +9 -0
  57. package/lib/components/dataset-list/dataset-list.test.js +16 -0
  58. package/lib/components/dataset-list/index.js +9 -0
  59. package/lib/components/dataset-metadata/dataset-metadata.js +169 -0
  60. package/lib/components/dataset-metadata/dataset-metadata.scss +34 -0
  61. package/lib/components/dataset-metadata/dataset-metadata.test.js +24 -0
  62. package/lib/components/dataset-metadata/index.js +9 -0
  63. package/lib/components/dataset-preview/connector.js +26 -0
  64. package/lib/components/dataset-preview/dataset-preview.js +58 -0
  65. package/lib/components/dataset-preview/dataset-preview.scss +24 -0
  66. package/lib/components/dataset-preview/dataset-preview.test.js +34 -0
  67. package/lib/components/dataset-preview/index.js +9 -0
  68. package/lib/components/dataset-quality/dataset-quality.js +56 -0
  69. package/lib/components/dataset-quality/dataset-quality.scss +24 -0
  70. package/lib/components/dataset-quality/dataset-quality.test.js +34 -0
  71. package/lib/components/dataset-quality/index.js +9 -0
  72. package/lib/components/dataset-recommendations/connector.js +24 -0
  73. package/lib/components/dataset-recommendations/dataset-recommendations.js +47 -0
  74. package/lib/components/dataset-recommendations/dataset-recommendations.scss +17 -0
  75. package/lib/components/dataset-recommendations/dataset-recommendations.test.js +37 -0
  76. package/lib/components/dataset-recommendations/index.js +9 -0
  77. package/lib/components/detail-toggle-icon/detail-toggle-icon.js +41 -0
  78. package/lib/components/detail-toggle-icon/detail-toggle-icon.scss +13 -0
  79. package/lib/components/detail-toggle-icon/detail-toggle-icon.test.js +20 -0
  80. package/lib/components/detail-toggle-icon/index.js +9 -0
  81. package/lib/components/facet-list/facet-list.js +47 -0
  82. package/lib/components/facet-list/facet-list.scss +19 -0
  83. package/lib/components/facet-list/facet-list.test.js +94 -0
  84. package/lib/components/facet-list/index.js +9 -0
  85. package/lib/components/facet-sidebar/facet-sidebar.js +101 -0
  86. package/lib/components/facet-sidebar/facet-sidebar.scss +129 -0
  87. package/lib/components/facet-sidebar/facet-sidebar.test.js +93 -0
  88. package/lib/components/facet-sidebar/index.js +9 -0
  89. package/lib/components/generic-elements/alert-component/alert-component.js +51 -0
  90. package/lib/components/generic-elements/alert-component/alert-component.scss +26 -0
  91. package/lib/components/generic-elements/alert-component/alert-component.test.js +26 -0
  92. package/lib/components/generic-elements/alert-component/index.js +9 -0
  93. package/lib/components/generic-elements/arrow-button/arrow-button.js +30 -0
  94. package/lib/components/generic-elements/arrow-button/index.js +9 -0
  95. package/lib/components/generic-elements/auto-anchoring-popover/index.js +61 -0
  96. package/lib/components/generic-elements/back-button/back-button.js +14 -0
  97. package/lib/components/generic-elements/back-button/back-button.scss +14 -0
  98. package/lib/components/generic-elements/back-button/index.js +9 -0
  99. package/lib/components/generic-elements/call-to-action-button/call-to-action-button.js +118 -0
  100. package/lib/components/generic-elements/call-to-action-button/call-to-action-button.scss +19 -0
  101. package/lib/components/generic-elements/call-to-action-button/call-to-action-button.test.js +68 -0
  102. package/lib/components/generic-elements/call-to-action-button/index.js +9 -0
  103. package/lib/components/generic-elements/chart-icon/index.js +23 -0
  104. package/lib/components/generic-elements/checkbox/checkbox.js +50 -0
  105. package/lib/components/generic-elements/checkbox/checkbox.scss +44 -0
  106. package/lib/components/generic-elements/checkbox/checkbox.test.js +71 -0
  107. package/lib/components/generic-elements/checkbox/index.js +9 -0
  108. package/lib/components/generic-elements/error-component/error-component.js +21 -0
  109. package/lib/components/generic-elements/error-component/error-component.scss +16 -0
  110. package/lib/components/generic-elements/error-component/error-component.test.js +12 -0
  111. package/lib/components/generic-elements/error-component/index.js +9 -0
  112. package/lib/components/generic-elements/folder-icon/index.js +23 -0
  113. package/lib/components/generic-elements/generated-link/generated-link.js +25 -0
  114. package/lib/components/generic-elements/generated-link/index.js +13 -0
  115. package/lib/components/generic-elements/loading-element/index.js +9 -0
  116. package/lib/components/generic-elements/loading-element/loading-element.js +22 -0
  117. package/lib/components/generic-elements/loading-element/loading-element.scss +6 -0
  118. package/lib/components/generic-elements/loading-element/loading-element.test.js +11 -0
  119. package/lib/components/generic-elements/paginator/index.js +9 -0
  120. package/lib/components/generic-elements/paginator/paginator.js +84 -0
  121. package/lib/components/generic-elements/paginator/paginator.scss +38 -0
  122. package/lib/components/generic-elements/paginator/paginator.test.js +140 -0
  123. package/lib/components/generic-elements/plus-icon/index.js +21 -0
  124. package/lib/components/generic-elements/save-indicator/index.js +9 -0
  125. package/lib/components/generic-elements/save-indicator/save-indicator.js +39 -0
  126. package/lib/components/generic-elements/save-indicator/save-indicator.scss +31 -0
  127. package/lib/components/generic-elements/save-indicator/save-indicator.test.js +89 -0
  128. package/lib/components/generic-elements/search/index.js +9 -0
  129. package/lib/components/generic-elements/search/search.js +93 -0
  130. package/lib/components/generic-elements/search/search.scss +90 -0
  131. package/lib/components/generic-elements/search/search.test.js +41 -0
  132. package/lib/components/generic-elements/select/index.js +9 -0
  133. package/lib/components/generic-elements/select/select.js +44 -0
  134. package/lib/components/generic-elements/select/select.scss +22 -0
  135. package/lib/components/generic-elements/select/select.test.js +34 -0
  136. package/lib/components/generic-elements/share-link/index.js +9 -0
  137. package/lib/components/generic-elements/share-link/share-link.js +23 -0
  138. package/lib/components/generic-elements/share-link/share-link.scss +17 -0
  139. package/lib/components/generic-elements/share-link/share-link.test.js +28 -0
  140. package/lib/components/generic-elements/sql-icon/index.js +20 -0
  141. package/lib/components/generic-elements/tab-button/index.js +9 -0
  142. package/lib/components/generic-elements/tab-button/tab-button.js +25 -0
  143. package/lib/components/generic-elements/tab-button/tab-button.scss +27 -0
  144. package/lib/components/generic-elements/visualize-button/index.js +9 -0
  145. package/lib/components/generic-elements/visualize-button/visualize-button.js +37 -0
  146. package/lib/components/generic-elements/visualize-button/visualize-button.scss +14 -0
  147. package/lib/components/login-zone/connector.js +25 -0
  148. package/lib/components/login-zone/index.js +9 -0
  149. package/lib/components/login-zone/login-svgs-and-text.js +39 -0
  150. package/lib/components/login-zone/login-zone.js +21 -0
  151. package/lib/components/login-zone/login-zone.scss +115 -0
  152. package/lib/components/login-zone/login-zone.test.js +17 -0
  153. package/lib/components/login-zone/login.js +48 -0
  154. package/lib/components/login-zone/logout.js +39 -0
  155. package/lib/components/network-loading-element/connector.js +17 -0
  156. package/lib/components/network-loading-element/index.js +9 -0
  157. package/lib/components/network-loading-element/network-loading-element.js +23 -0
  158. package/lib/components/network-loading-element/network-loading-element.scss +21 -0
  159. package/lib/components/network-loading-element/network-loading-element.test.js +34 -0
  160. package/lib/components/organization/index.js +9 -0
  161. package/lib/components/organization/organization.js +27 -0
  162. package/lib/components/organization/organization.scss +32 -0
  163. package/lib/components/protected-route/protected-route.js +101 -0
  164. package/lib/components/protected-route/protected-route.scss +4 -0
  165. package/lib/components/protected-route/protected-route.test.js +63 -0
  166. package/lib/components/query-form/index.js +9 -0
  167. package/lib/components/query-form/query-form.js +262 -0
  168. package/lib/components/query-form/query-form.scss +167 -0
  169. package/lib/components/query-form/query-form.test.js +248 -0
  170. package/lib/components/recommendation-list/index.js +9 -0
  171. package/lib/components/recommendation-list/recommendation-list.js +72 -0
  172. package/lib/components/recommendation-list/recommendation-list.scss +61 -0
  173. package/lib/components/recommendation-list/recommendation-list.test.js +38 -0
  174. package/lib/components/remote-toggle/__snapshots__/remote-toggle.test.js.snap +3 -0
  175. package/lib/components/remote-toggle/index.js +13 -0
  176. package/lib/components/remote-toggle/remote-toggle.js +35 -0
  177. package/lib/components/remote-toggle/remote-toggle.scss +0 -0
  178. package/lib/components/remote-toggle/remote-toggle.test.js +10 -0
  179. package/lib/components/share/index.js +9 -0
  180. package/lib/components/share/share.js +109 -0
  181. package/lib/components/share/share.scss +66 -0
  182. package/lib/components/streaming-api-doc/index.js +9 -0
  183. package/lib/components/streaming-api-doc/streaming-api-doc.js +76 -0
  184. package/lib/components/streaming-api-doc/streaming-api-doc.scss +23 -0
  185. package/lib/components/streaming-api-doc/streaming-api-doc.test.js +24 -0
  186. package/lib/components/tooltip/index.js +9 -0
  187. package/lib/components/tooltip/tooltip.js +17 -0
  188. package/lib/components/tooltip/tooltip.scss +16 -0
  189. package/lib/components/tooltip/tooltip.test.js +19 -0
  190. package/lib/components/visualization-list-menu-item/index.js +9 -0
  191. package/lib/components/visualization-list-menu-item/visualization-list-menu-item.js +53 -0
  192. package/lib/components/visualization-list-menu-item/visualization-list-menu-item.scss +21 -0
  193. package/lib/components/visualization-list-menu-item/visualization-list-menu-item.test.js +42 -0
  194. package/lib/components/visualization-save-menu-item/index.js +9 -0
  195. package/lib/components/visualization-save-menu-item/visualization-save-menu-item.js +101 -0
  196. package/lib/components/visualization-save-menu-item/visualization-save-menu-item.scss +37 -0
  197. package/lib/components/visualization-save-menu-item/visualization-save-menu-item.test.js +185 -0
  198. package/lib/components/visualizations/geojson/connector.js +29 -0
  199. package/lib/components/visualizations/geojson/geojson-visualization.js +151 -0
  200. package/lib/components/visualizations/geojson/geojson-visualization.scss +24 -0
  201. package/lib/components/visualizations/geojson/geojson-visualization.test.js +238 -0
  202. package/lib/components/visualizations/geojson/index.js +9 -0
  203. package/lib/pages/apikey-view/apiKey-view.test.js +204 -0
  204. package/lib/pages/apikey-view/apikey-view.js +166 -0
  205. package/lib/pages/apikey-view/apikey-view.scss +340 -0
  206. package/lib/pages/apikey-view/connector.js +31 -0
  207. package/lib/pages/apikey-view/index.js +9 -0
  208. package/lib/pages/chart-view/chart-view.js +92 -0
  209. package/lib/pages/chart-view/chart-view.scss +35 -0
  210. package/lib/pages/chart-view/chart-view.test.js +206 -0
  211. package/lib/pages/chart-view/connector.js +30 -0
  212. package/lib/pages/chart-view/index.js +9 -0
  213. package/lib/pages/dataset-detail-view/connector.js +38 -0
  214. package/lib/pages/dataset-detail-view/dataset-detail-view-connector.test.js +42 -0
  215. package/lib/pages/dataset-detail-view/dataset-detail-view.js +99 -0
  216. package/lib/pages/dataset-detail-view/dataset-detail-view.scss +190 -0
  217. package/lib/pages/dataset-detail-view/dataset-detail-view.test.js +305 -0
  218. package/lib/pages/dataset-detail-view/index.js +9 -0
  219. package/lib/pages/dataset-list-view/connector.js +30 -0
  220. package/lib/pages/dataset-list-view/dataset-list-view.js +132 -0
  221. package/lib/pages/dataset-list-view/dataset-list-view.scss +242 -0
  222. package/lib/pages/dataset-list-view/dataset-list-view.test.js +162 -0
  223. package/lib/pages/dataset-list-view/index.js +9 -0
  224. package/lib/pages/dataset-view/connector.js +55 -0
  225. package/lib/pages/dataset-view/dataset-view-connector.test.js +78 -0
  226. package/lib/pages/dataset-view/dataset-view.js +175 -0
  227. package/lib/pages/dataset-view/dataset-view.scss +95 -0
  228. package/lib/pages/dataset-view/dataset-view.test.js +157 -0
  229. package/lib/pages/dataset-view/index.js +9 -0
  230. package/lib/pages/login-view/connector.js +25 -0
  231. package/lib/pages/login-view/index.js +9 -0
  232. package/lib/pages/login-view/login-view.js +83 -0
  233. package/lib/pages/login-view/login-view.scss +62 -0
  234. package/lib/pages/login-view/login-view.test.js +23 -0
  235. package/lib/pages/oauth-error-view/index.js +9 -0
  236. package/lib/pages/oauth-error-view/oauth-error-view.js +25 -0
  237. package/lib/pages/oauth-error-view/oauth-error-view.scss +13 -0
  238. package/lib/pages/oauth-error-view/oauth-error-view.test.js +13 -0
  239. package/lib/pages/oauth-view/connector.js +22 -0
  240. package/lib/pages/oauth-view/index.js +9 -0
  241. package/lib/pages/oauth-view/oauth-view.js +124 -0
  242. package/lib/pages/oauth-view/oauth-view.scss +7 -0
  243. package/lib/pages/oauth-view/oauth-view.test.js +195 -0
  244. package/lib/pages/query-view/connector.js +40 -0
  245. package/lib/pages/query-view/index.js +9 -0
  246. package/lib/pages/query-view/query-view.js +80 -0
  247. package/lib/pages/query-view/query-view.scss +39 -0
  248. package/lib/pages/query-view/query-view.test.js +104 -0
  249. package/lib/pages/user-profile-view/connector.js +39 -0
  250. package/lib/pages/user-profile-view/index.js +9 -0
  251. package/lib/pages/user-profile-view/user-profile-view.js +154 -0
  252. package/lib/pages/user-profile-view/user-profile-view.scss +81 -0
  253. package/lib/pages/user-profile-view/user-profile-view.test.js +129 -0
  254. package/lib/pages/visualization-view/connector.js +52 -0
  255. package/lib/pages/visualization-view/index.js +9 -0
  256. package/lib/pages/visualization-view/visualization-view-connector.test.js +62 -0
  257. package/lib/pages/visualization-view/visualization-view.js +128 -0
  258. package/lib/pages/visualization-view/visualization-view.scss +115 -0
  259. package/lib/pages/visualization-view/visualization-view.test.js +188 -0
  260. package/lib/routes.js +18 -0
  261. package/lib/search-params/search-params-manager.js +171 -0
  262. package/lib/search-params/search-params-manager.test.js +490 -0
  263. package/lib/store/actions.js +428 -0
  264. package/lib/store/dataset-selectors.js +47 -0
  265. package/lib/store/dataset-selectors.test.js +154 -0
  266. package/lib/store/query-selectors.js +53 -0
  267. package/lib/store/query-selectors.test.js +153 -0
  268. package/lib/store/reducers/index.js +20 -0
  269. package/lib/store/reducers/query-reducer.js +52 -0
  270. package/lib/store/reducers/query-reducer.test.js +89 -0
  271. package/lib/store/reducers/reducers.js +196 -0
  272. package/lib/store/reducers/reducers.test.js +309 -0
  273. package/lib/store/reducers/visualization-reducer.js +167 -0
  274. package/lib/store/reducers/visualization-reducer.test.js +426 -0
  275. package/lib/store/sagas/api-invoker.js +79 -0
  276. package/lib/store/sagas/api-invoker.test.js +139 -0
  277. package/lib/store/sagas/apiKey-saga.js +81 -0
  278. package/lib/store/sagas/apiKey-saga.test.js +57 -0
  279. package/lib/store/sagas/dataset-download-saga.js +43 -0
  280. package/lib/store/sagas/dataset-list-saga.js +49 -0
  281. package/lib/store/sagas/dataset-list-saga.test.js +72 -0
  282. package/lib/store/sagas/dataset-preview-saga.js +44 -0
  283. package/lib/store/sagas/dataset-query-saga.js +43 -0
  284. package/lib/store/sagas/dataset-recommendation-saga.js +40 -0
  285. package/lib/store/sagas/dataset-saga.js +50 -0
  286. package/lib/store/sagas/freestyle-query-saga.js +127 -0
  287. package/lib/store/sagas/freestyle-query-saga.test.js +145 -0
  288. package/lib/store/sagas/index.js +44 -0
  289. package/lib/store/sagas/login-saga.js +85 -0
  290. package/lib/store/sagas/login-saga.test.js +84 -0
  291. package/lib/store/sagas/logout-saga.js +96 -0
  292. package/lib/store/sagas/oauth-saga.js +78 -0
  293. package/lib/store/sagas/oauth-saga.test.js +51 -0
  294. package/lib/store/sagas/process-login-saga.js +62 -0
  295. package/lib/store/sagas/process-login-saga.test.js +83 -0
  296. package/lib/store/sagas/visualization-saga.js +371 -0
  297. package/lib/store/sagas/visualization-saga.test.js +388 -0
  298. package/lib/store/selectors.js +83 -0
  299. package/lib/store/visualization-selectors.js +85 -0
  300. package/lib/store/visualization-selectors.test.js +195 -0
  301. package/lib/styles/mixins.scss +117 -0
  302. package/lib/styles/variables.scss +41 -0
  303. package/lib/utils/file-type-utils.js +18 -0
  304. package/lib/utils/file-type-utils.test.js +29 -0
  305. package/lib/utils/geojson-utils.js +70 -0
  306. package/lib/utils/geojson-utils.test.js +129 -0
  307. package/lib/utils/http-clients.js +218 -0
  308. package/lib/utils/http-clients.test.js +88 -0
  309. package/lib/utils/index.js +34 -0
  310. package/lib/utils/modified-date-string-builder.js +29 -0
  311. package/lib/utils/modified-date-string-builder.test.js +93 -0
  312. package/lib/utils/query-string-builder.js +38 -0
  313. package/lib/utils/query-string-builder.test.js +33 -0
  314. package/lib/utils/recommendation-utils.js +12 -0
  315. package/lib/utils/recommendation-utils.test.js +9 -0
  316. package/package.json +172 -0
@@ -0,0 +1,305 @@
1
+ import { shallow } from 'enzyme'
2
+ import DatasetView from './dataset-detail-view'
3
+ import DatasetDetails from '../../components/dataset-details'
4
+ import DatasetPreview from '../../components/dataset-preview'
5
+ import StreamingApiDoc from '../../components/streaming-api-doc'
6
+ import DatasetApiDoc from '../../components/dataset-api-doc'
7
+ import DatasetQuality from '../../components/dataset-quality'
8
+ import DatasetDictionary from '../../components/dataset-dictionary'
9
+ import DatasetMetadata from '../../components/dataset-metadata'
10
+ import GeoJSONVisualization from '../../components/visualizations/geojson'
11
+
12
+ describe('dataset detail view', () => {
13
+ let subject
14
+ const routingProps = { params: { id: 1 } }
15
+ const dataset = {
16
+ id: '123',
17
+ name: 'COTA Streaming Busses',
18
+ description: '....',
19
+ sourceType: 'ingest',
20
+ fileTypes: ['csv'],
21
+ sourceUrl: 'http://example.com/sweet-data.csv',
22
+ completeness: {
23
+ recordCount: 50,
24
+ completeness: 0.5798
25
+ }
26
+ }
27
+
28
+ const createDatasetView = function (dataset, extraProps = {}) {
29
+ return shallow(
30
+ <DatasetView
31
+ dataset={dataset}
32
+ retrieveDatasetDetails={jest.fn()}
33
+ clearDatasetDetails={jest.fn()}
34
+ clearDatasetPreview={jest.fn()}
35
+ match={routingProps}
36
+ {...extraProps}
37
+ />
38
+ )
39
+ }
40
+
41
+ describe('required items with ingest dataset', () => {
42
+ let retrieveSpy, clearDatasetDetailsSpy, clearDatasetPreviewSpy
43
+
44
+ beforeEach(() => {
45
+ retrieveSpy = jest.fn()
46
+ clearDatasetDetailsSpy = jest.fn()
47
+ clearDatasetPreviewSpy = jest.fn()
48
+ subject = shallow(
49
+ <DatasetView
50
+ dataset={dataset}
51
+ retrieveDatasetDetails={retrieveSpy}
52
+ clearDatasetDetails={clearDatasetDetailsSpy}
53
+ clearDatasetPreview={clearDatasetPreviewSpy}
54
+ match={routingProps}
55
+ isIngest
56
+ isStreaming={false}
57
+ />
58
+ )
59
+ })
60
+
61
+ it('loads dataset details with dataset information', () => {
62
+ expect(subject.find(DatasetDetails).props().dataset).toEqual(
63
+ dataset
64
+ )
65
+ })
66
+
67
+ it('clears dataset when unmounted to prevent caching issues especially with back space', () => {
68
+ subject.unmount()
69
+
70
+ expect(clearDatasetDetailsSpy).toHaveBeenCalled()
71
+ })
72
+
73
+ it('clears out preview when unmounted to prevent issues', () => {
74
+ subject.unmount()
75
+
76
+ expect(clearDatasetPreviewSpy).toHaveBeenCalled()
77
+ })
78
+
79
+ it('includes the component for previewing dataset', () => {
80
+ expect(subject.find(DatasetPreview).props().datasetId).toEqual(
81
+ dataset.id
82
+ )
83
+ })
84
+
85
+ it('should NOT display streaming api doc component', () => {
86
+ expect(subject.find(StreamingApiDoc)).toHaveLength(0)
87
+ })
88
+
89
+ it('should display dataset quality component', () => {
90
+ expect(subject.find(DatasetQuality)).toHaveLength(1)
91
+ })
92
+ })
93
+
94
+ describe('visibility of children with different source types', () => {
95
+ it('should not show hosted explanation when dataset is not remote or hosted', () => {
96
+ const subject = createDatasetView(dataset, {
97
+ isRemote: false,
98
+ isHost: false,
99
+ isGeoJSON: false
100
+ })
101
+
102
+ expect(subject.find('.static-file-explanation')).toHaveLength(0)
103
+ })
104
+
105
+ it('should show hosted explanation when dataset is remote', () => {
106
+ const subject = createDatasetView(dataset, {
107
+ isRemote: true,
108
+ isGeoJSON: false
109
+ })
110
+
111
+ expect(subject.find('.static-file-explanation')).toHaveLength(1)
112
+ })
113
+
114
+ it('should not show preview when hosted', () => {
115
+ const subject = createDatasetView(dataset, {
116
+ isHost: true
117
+ })
118
+
119
+ expect(subject.find(DatasetPreview)).toHaveLength(0)
120
+ })
121
+
122
+ it('should not show preview when remote', () => {
123
+ const subject = createDatasetView(dataset, {
124
+ isRemote: true
125
+ })
126
+
127
+ expect(subject.find(DatasetPreview)).toHaveLength(0)
128
+ })
129
+
130
+ it('should show hosted explanation when dataset is hosted', () => {
131
+ const subject = createDatasetView(dataset, {
132
+ isHost: true
133
+ })
134
+
135
+ expect(subject.find('.static-file-explanation')).toHaveLength(1)
136
+ })
137
+
138
+ it('should NOT display streaming api doc component', () => {
139
+ const subject = createDatasetView(dataset, {
140
+ isStreaming: false
141
+ })
142
+ expect(subject.find(StreamingApiDoc)).toHaveLength(0)
143
+ })
144
+
145
+ it('should NOT display dataset quality component', () => {
146
+ const subject = createDatasetView(dataset, {
147
+ isRemote: true,
148
+ isIngest: false
149
+ })
150
+ expect(subject.find(DatasetQuality)).toHaveLength(0)
151
+ })
152
+ })
153
+
154
+ describe('streaming dataset', () => {
155
+ beforeEach(() => {
156
+ subject = createDatasetView(dataset, {
157
+ isIngest: true,
158
+ isCsv: true,
159
+ isStreaming: true
160
+ })
161
+ })
162
+
163
+ it('includes the component for previewing dataset', () => {
164
+ expect(subject.find(DatasetPreview).props().datasetId).toEqual(
165
+ dataset.id
166
+ )
167
+ })
168
+
169
+ it('should display streaming api doc component when dataset is streaming', () => {
170
+ expect(subject.find(StreamingApiDoc).props().dataset.id).toEqual(
171
+ dataset.id
172
+ )
173
+ })
174
+
175
+ it('should display dataset quality component', () => {
176
+ expect(subject.find(DatasetQuality)).toHaveLength(1)
177
+ })
178
+ })
179
+
180
+ describe('remote dataset', () => {
181
+ beforeEach(() => {
182
+ subject = createDatasetView(dataset, {
183
+ isRemote: true,
184
+ isIngest: false,
185
+ isCsv: true
186
+ })
187
+ })
188
+
189
+ it('does not include component for displaying data preview', () => {
190
+ expect(subject.find(DatasetPreview)).toHaveLength(0)
191
+ })
192
+
193
+ it('does not include component for displaying streaming api example', () => {
194
+ expect(subject.find(StreamingApiDoc)).toHaveLength(0)
195
+ })
196
+ })
197
+
198
+ describe('hosted dataset', () => {
199
+ beforeEach(() => {
200
+ subject = createDatasetView(dataset, {
201
+ isIngest: false,
202
+ isStreaming: false
203
+ })
204
+ })
205
+
206
+ it('does not include component for displaying data preview', () => {
207
+ expect(subject.find(DatasetPreview)).toHaveLength(0)
208
+ })
209
+
210
+ it('does not include component for displaying api documentation', () => {
211
+ expect(subject.find(DatasetApiDoc)).toHaveLength(0)
212
+ })
213
+
214
+ it('does not include component for displaying streaming api example', () => {
215
+ expect(subject.find(StreamingApiDoc)).toHaveLength(0)
216
+ })
217
+
218
+ it('does not include component for displaying quality component', () => {
219
+ expect(subject.find(DatasetQuality)).toHaveLength(0)
220
+ })
221
+ })
222
+
223
+ describe('streaming api doc', () => {
224
+ it('expanded when type is not csv', () => {
225
+ subject = createDatasetView(dataset, {
226
+ isCsv: false,
227
+ isStreaming: true
228
+ })
229
+ expect(subject.find(StreamingApiDoc).props().expanded).toEqual(true)
230
+ })
231
+
232
+ it('is collapsed when source is local csv', () => {
233
+ subject = createDatasetView(dataset, {
234
+ isCsv: true,
235
+ isStreaming: true
236
+ })
237
+ expect(subject.find(StreamingApiDoc).props().expanded).toEqual(false)
238
+ })
239
+ })
240
+
241
+ describe('api doc by default is', () => {
242
+ it('expanded when type is json and source is ingest', () => {
243
+ subject = createDatasetView(dataset, {
244
+ isStreaming: false,
245
+ isIngest: true,
246
+ isCsv: false
247
+ })
248
+ expect(subject.find(DatasetApiDoc).props().expanded).toEqual(true)
249
+ })
250
+
251
+ it('collapsed when type is csv and source is streaming', () => {
252
+ subject = createDatasetView(dataset, {
253
+ isCsv: true,
254
+ isIngest: true,
255
+ isStreaming: true
256
+ })
257
+ expect(subject.find(DatasetApiDoc).props().expanded).toEqual(false)
258
+ })
259
+ })
260
+
261
+ describe('geojson visualization', () => {
262
+ it('should not be displayed by default', () => {
263
+ subject = createDatasetView(dataset, {
264
+ isGeoJSON: false
265
+ })
266
+
267
+ expect(subject.find(GeoJSONVisualization)).toHaveLength(0)
268
+ })
269
+
270
+ it('should be displayed when the dataset is geojson', () => {
271
+ subject = createDatasetView(dataset, {
272
+ isGeoJSON: true
273
+ })
274
+
275
+ expect(subject.find(GeoJSONVisualization)).toHaveLength(1)
276
+ expect(subject.find(GeoJSONVisualization).props().datasetId).toEqual(
277
+ dataset.id
278
+ )
279
+ })
280
+ })
281
+
282
+ describe('dataset dictionary', () => {
283
+ it('has the provided dataset id and schema', () => {
284
+ const schema = { id: 'id' }
285
+ const dataset = Object.assign({}, dataset, { schema })
286
+
287
+ subject = createDatasetView(dataset)
288
+
289
+ const dictionary = subject.find(DatasetDictionary)
290
+ expect(dictionary).toHaveLength(1)
291
+ expect(dictionary.props().datasetId).toEqual(dataset.id)
292
+ expect(dictionary.props().schema).toEqual(schema)
293
+ })
294
+ })
295
+
296
+ describe('dataset metadata', () => {
297
+ it('has the provided dataset', () => {
298
+ subject = createDatasetView(dataset)
299
+
300
+ const metadata = subject.find(DatasetMetadata)
301
+ expect(metadata).toHaveLength(1)
302
+ expect(metadata.props().dataset).toEqual(dataset)
303
+ })
304
+ })
305
+ })
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _connector = _interopRequireDefault(require("./connector"));
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ var _default = exports.default = _connector.default;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _reactRedux = require("react-redux");
8
+ var _datasetListView = _interopRequireDefault(require("./dataset-list-view"));
9
+ var _actions = require("../../store/actions");
10
+ var _searchParamsManager = _interopRequireDefault(require("../../search-params/search-params-manager"));
11
+ var _selectors = require("../../store/selectors");
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ var mapStateToProps = function mapStateToProps(state) {
14
+ return {
15
+ searchResults: (0, _selectors.getSearchResults)(state),
16
+ searchMetadata: (0, _selectors.getSearchMetadata)(state),
17
+ numberOfPages: (0, _selectors.getNumberOfPages)(state),
18
+ isSearchLoading: (0, _selectors.isSearchLoading)(state),
19
+ isGlobalError: (0, _selectors.getGlobalErrorState)(state),
20
+ globalErrorMessage: (0, _selectors.getGlobalErrorMessage)(state)
21
+ };
22
+ };
23
+ var mapDispatchToProps = function mapDispatchToProps(dispatch) {
24
+ return {
25
+ dismissGlobalError: function dismissGlobalError() {
26
+ return dispatch((0, _actions.setGlobalErrorState)(false, ''));
27
+ }
28
+ };
29
+ };
30
+ var _default = exports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)((0, _searchParamsManager.default)(_datasetListView.default));
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ require("./dataset-list-view.scss");
8
+ var _reactRouterDom = require("react-router-dom");
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ var _alertComponent = _interopRequireDefault(require("../../components/generic-elements/alert-component"));
11
+ var _datasetList = _interopRequireDefault(require("../../components/dataset-list"));
12
+ var _paginator = _interopRequireDefault(require("../../components/generic-elements/paginator"));
13
+ var _select = _interopRequireDefault(require("../../components/generic-elements/select"));
14
+ var _search = _interopRequireDefault(require("../../components/generic-elements/search"));
15
+ var _facetSidebar = _interopRequireDefault(require("../../components/facet-sidebar"));
16
+ var _loadingElement = _interopRequireDefault(require("../../components/generic-elements/loading-element"));
17
+ var _checkbox = _interopRequireDefault(require("../../components/generic-elements/checkbox"));
18
+ var _searchParamsManager = require("../../search-params/search-params-manager");
19
+ var _auth0LoginZone = _interopRequireDefault(require("../../components/auth0-login-zone"));
20
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
21
+ var DatasetListView = function DatasetListView(props) {
22
+ var searchParamsManager = props.searchParamsManager,
23
+ searchResults = props.searchResults,
24
+ searchMetadata = props.searchMetadata,
25
+ numberOfPages = props.numberOfPages,
26
+ isSearchLoading = props.isSearchLoading,
27
+ isGlobalError = props.isGlobalError,
28
+ globalErrorMessage = props.globalErrorMessage,
29
+ dismissGlobalError = props.dismissGlobalError;
30
+ var createSortOptions = function createSortOptions() {
31
+ return [{
32
+ value: 'name_asc',
33
+ label: 'Name Ascending',
34
+ default: searchParamsManager.sortOrder === 'name_asc' || searchParamsManager.sortOrder === 'start'
35
+ }, {
36
+ value: 'name_desc',
37
+ label: 'Name Descending',
38
+ default: searchParamsManager.sortOrder === 'name_desc'
39
+ }, {
40
+ value: 'last_mod',
41
+ label: 'Last Modified',
42
+ default: searchParamsManager.sortOrder === 'last_mod'
43
+ }, {
44
+ value: 'relevance',
45
+ label: 'Relevance',
46
+ default: searchParamsManager.sortOrder === 'relevance'
47
+ }];
48
+ };
49
+ var renderDatasetList = function renderDatasetList() {
50
+ if (isSearchLoading) {
51
+ return /*#__PURE__*/React.createElement(_loadingElement.default, null);
52
+ } else {
53
+ document.body.className = 'body-dataset-lists';
54
+ return /*#__PURE__*/React.createElement(_datasetList.default, {
55
+ datasets: searchResults
56
+ });
57
+ }
58
+ };
59
+ var renderResultsCountText = function renderResultsCountText() {
60
+ var resultCountText = isSearchLoading ? '' : "".concat(searchMetadata.totalDatasets || 'No', " datasets found");
61
+ var resultCountQueryText = searchParamsManager.searchText ? " for \"".concat(searchParamsManager.searchText, "\"") : '';
62
+ if (searchMetadata.totalDatasets === 0) {
63
+ return /*#__PURE__*/React.createElement("div", {
64
+ "data-testid": "result-count",
65
+ className: "result-count"
66
+ }, /*#__PURE__*/React.createElement("h1", null, "".concat(resultCountText).concat(resultCountQueryText)), /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement(_reactRouterDom.Link, {
67
+ id: "home",
68
+ to: "/"
69
+ }, "Click here to return home"));
70
+ } else {
71
+ return /*#__PURE__*/React.createElement("div", {
72
+ "data-testid": "result-count",
73
+ className: "result-count"
74
+ }, /*#__PURE__*/React.createElement("h1", null, "".concat(resultCountText).concat(resultCountQueryText)));
75
+ }
76
+ };
77
+ return /*#__PURE__*/React.createElement("dataset-list-view", null, /*#__PURE__*/React.createElement(_search.default, {
78
+ className: "search",
79
+ defaultText: searchParamsManager.searchText,
80
+ placeholder: "Search datasets",
81
+ callback: searchParamsManager.updateSearchText
82
+ }), /*#__PURE__*/React.createElement("div", {
83
+ className: "left-section"
84
+ }, /*#__PURE__*/React.createElement(_auth0LoginZone.default, null), /*#__PURE__*/React.createElement("div", {
85
+ style: {
86
+ height: '0.5rem'
87
+ }
88
+ }, /*#__PURE__*/React.createElement(_checkbox.default, {
89
+ id: "toggleAPIDatasets",
90
+ clickHandler: searchParamsManager.toggleApiAccessible,
91
+ text: "Only Show API Accessible Datasets",
92
+ selected: searchParamsManager.apiAccessible
93
+ })), /*#__PURE__*/React.createElement(_facetSidebar.default, {
94
+ availableFacets: searchMetadata.facets,
95
+ appliedFacets: searchParamsManager.facets,
96
+ clickHandler: searchParamsManager.toggleFacet
97
+ })), /*#__PURE__*/React.createElement("div", {
98
+ className: "right-section"
99
+ }, /*#__PURE__*/React.createElement(_alertComponent.default, {
100
+ errorMessage: globalErrorMessage,
101
+ closeFunction: dismissGlobalError,
102
+ showAlert: isGlobalError
103
+ }), /*#__PURE__*/React.createElement("div", {
104
+ className: "list-header"
105
+ }, renderResultsCountText(), /*#__PURE__*/React.createElement("div", {
106
+ className: "sort-by"
107
+ }, /*#__PURE__*/React.createElement(_select.default, {
108
+ className: "searchParamsManager.sortOrder-select",
109
+ label: "order by",
110
+ options: createSortOptions(),
111
+ selectChangeCallback: searchParamsManager.updateSortOrder,
112
+ testId: "sort-select"
113
+ }))), renderDatasetList(), /*#__PURE__*/React.createElement("div", {
114
+ className: "paginator-container"
115
+ }, /*#__PURE__*/React.createElement(_paginator.default, {
116
+ className: "paginator",
117
+ numberOfPages: numberOfPages,
118
+ currentPage: searchParamsManager.page,
119
+ pageChangeCallback: searchParamsManager.updatePage
120
+ }))));
121
+ };
122
+ DatasetListView.propTypes = {
123
+ searchParamsManager: _propTypes.default.shape(_searchParamsManager.SearchParamsManager.propTypes),
124
+ searchResults: _propTypes.default.array.isRequired,
125
+ searchMetadata: _propTypes.default.object.isRequired,
126
+ numberOfPages: _propTypes.default.number.isRequired,
127
+ isSearchLoading: _propTypes.default.bool.isRequired,
128
+ isGlobalError: _propTypes.default.bool,
129
+ globalErrorMessage: _propTypes.default.string,
130
+ dismissGlobalError: _propTypes.default.func
131
+ };
132
+ var _default = exports.default = DatasetListView;