@gravity-ui/data-source 0.8.2 → 0.9.1-alpha.0

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 (272) hide show
  1. package/build/cjs/core/types/DataSource.d.ts +8 -8
  2. package/build/cjs/core/types/DataSource.js.map +1 -1
  3. package/build/cjs/core/utils/withCatch.d.ts +4 -1
  4. package/build/cjs/core/utils/withCatch.js +2 -0
  5. package/build/cjs/core/utils/withCatch.js.map +1 -1
  6. package/build/cjs/react/components/AsyncBoundary/AsyncBoundary.d.ts +3 -0
  7. package/build/cjs/react/components/AsyncBoundary/AsyncBoundary.js +35 -0
  8. package/build/cjs/react/components/AsyncBoundary/AsyncBoundary.js.map +1 -0
  9. package/build/cjs/react/components/AsyncBoundary/index.d.ts +3 -0
  10. package/build/cjs/react/components/AsyncBoundary/index.js +20 -0
  11. package/build/cjs/react/components/AsyncBoundary/index.js.map +1 -0
  12. package/build/cjs/react/components/AsyncBoundary/types.d.ts +13 -0
  13. package/build/cjs/react/components/AsyncBoundary/types.js +6 -0
  14. package/build/cjs/react/components/AsyncBoundary/types.js.map +1 -0
  15. package/build/cjs/react/components/AsyncBoundary/withAsyncBoundary.d.ts +3 -0
  16. package/build/cjs/react/components/AsyncBoundary/withAsyncBoundary.js +26 -0
  17. package/build/cjs/react/components/AsyncBoundary/withAsyncBoundary.js.map +1 -0
  18. package/build/cjs/react/components/EmptyView/EmptyView.d.ts +2 -0
  19. package/build/cjs/react/components/EmptyView/EmptyView.js +10 -0
  20. package/build/cjs/react/components/EmptyView/EmptyView.js.map +1 -0
  21. package/build/cjs/react/components/EmptyView/index.d.ts +1 -0
  22. package/build/cjs/react/components/EmptyView/index.js +13 -0
  23. package/build/cjs/react/components/EmptyView/index.js.map +1 -0
  24. package/build/cjs/react/components/types.d.ts +1 -1
  25. package/build/cjs/react/components/types.js.map +1 -1
  26. package/build/cjs/react/index.d.ts +5 -3
  27. package/build/cjs/react/index.js +27 -3
  28. package/build/cjs/react/index.js.map +1 -1
  29. package/build/cjs/react-query/components/QueryAsyncBoundary/QueryAsyncBoundary.d.ts +3 -0
  30. package/build/cjs/react-query/components/QueryAsyncBoundary/QueryAsyncBoundary.js +23 -0
  31. package/build/cjs/react-query/components/QueryAsyncBoundary/QueryAsyncBoundary.js.map +1 -0
  32. package/build/cjs/react-query/components/QueryAsyncBoundary/index.d.ts +3 -0
  33. package/build/cjs/react-query/components/QueryAsyncBoundary/index.js +20 -0
  34. package/build/cjs/react-query/components/QueryAsyncBoundary/index.js.map +1 -0
  35. package/build/cjs/react-query/components/QueryAsyncBoundary/types.d.ts +8 -0
  36. package/build/cjs/react-query/components/QueryAsyncBoundary/types.js +6 -0
  37. package/build/cjs/react-query/components/QueryAsyncBoundary/types.js.map +1 -0
  38. package/build/cjs/react-query/components/QueryAsyncBoundary/withQueryAsyncBoundary.d.ts +3 -0
  39. package/build/cjs/react-query/components/QueryAsyncBoundary/withQueryAsyncBoundary.js +26 -0
  40. package/build/cjs/react-query/components/QueryAsyncBoundary/withQueryAsyncBoundary.js.map +1 -0
  41. package/build/cjs/react-query/hooks/useSuspenseQueryData.d.ts +9 -0
  42. package/build/cjs/react-query/hooks/useSuspenseQueryData.js +22 -0
  43. package/build/cjs/react-query/hooks/useSuspenseQueryData.js.map +1 -0
  44. package/build/cjs/react-query/impl/infinite/hooks.js +5 -1
  45. package/build/cjs/react-query/impl/infinite/hooks.js.map +1 -1
  46. package/build/cjs/react-query/impl/infinite/types.d.ts +1 -0
  47. package/build/cjs/react-query/impl/infinite/types.js.map +1 -1
  48. package/build/cjs/react-query/impl/plain/hooks.js +5 -1
  49. package/build/cjs/react-query/impl/plain/hooks.js.map +1 -1
  50. package/build/cjs/react-query/impl/plain/types.d.ts +1 -0
  51. package/build/cjs/react-query/impl/plain/types.js.map +1 -1
  52. package/build/cjs/react-query/index.d.ts +2 -0
  53. package/build/cjs/react-query/index.js +35 -0
  54. package/build/cjs/react-query/index.js.map +1 -1
  55. package/build/cjs/react-query/types/options.d.ts +5 -0
  56. package/build/cjs/react-query/types/options.js.map +1 -1
  57. package/build/cjs/react-query/utils/warn.d.ts +1 -0
  58. package/build/cjs/react-query/utils/warn.js +15 -0
  59. package/build/cjs/react-query/utils/warn.js.map +1 -0
  60. package/build/cjs/react-query/utils/warnDisabledRefetch.d.ts +1 -0
  61. package/build/cjs/react-query/utils/warnDisabledRefetch.js +27 -0
  62. package/build/cjs/react-query/utils/warnDisabledRefetch.js.map +1 -0
  63. package/build/cjs/react-query/utils/wrapRefetch.d.ts +2 -0
  64. package/build/cjs/react-query/utils/wrapRefetch.js +29 -0
  65. package/build/cjs/react-query/utils/wrapRefetch.js.map +1 -0
  66. package/build/esm/core/types/DataSource.d.ts +8 -8
  67. package/build/esm/core/types/DataSource.js.map +1 -1
  68. package/build/esm/core/utils/withCatch.d.ts +4 -1
  69. package/build/esm/core/utils/withCatch.js +2 -0
  70. package/build/esm/core/utils/withCatch.js.map +1 -1
  71. package/build/esm/react/components/AsyncBoundary/AsyncBoundary.d.ts +3 -0
  72. package/build/esm/react/components/AsyncBoundary/AsyncBoundary.js +28 -0
  73. package/build/esm/react/components/AsyncBoundary/AsyncBoundary.js.map +1 -0
  74. package/build/esm/react/components/AsyncBoundary/index.d.ts +3 -0
  75. package/build/esm/react/components/AsyncBoundary/index.js +3 -0
  76. package/build/esm/react/components/AsyncBoundary/index.js.map +1 -0
  77. package/build/esm/react/components/AsyncBoundary/types.d.ts +13 -0
  78. package/build/esm/react/components/AsyncBoundary/types.js +2 -0
  79. package/build/esm/react/components/AsyncBoundary/types.js.map +1 -0
  80. package/build/esm/react/components/AsyncBoundary/withAsyncBoundary.d.ts +3 -0
  81. package/build/esm/react/components/AsyncBoundary/withAsyncBoundary.js +19 -0
  82. package/build/esm/react/components/AsyncBoundary/withAsyncBoundary.js.map +1 -0
  83. package/build/esm/react/components/EmptyView/EmptyView.d.ts +2 -0
  84. package/build/esm/react/components/EmptyView/EmptyView.js +4 -0
  85. package/build/esm/react/components/EmptyView/EmptyView.js.map +1 -0
  86. package/build/esm/react/components/EmptyView/index.d.ts +1 -0
  87. package/build/esm/react/components/EmptyView/index.js +2 -0
  88. package/build/esm/react/components/EmptyView/index.js.map +1 -0
  89. package/build/esm/react/components/types.d.ts +1 -1
  90. package/build/esm/react/components/types.js.map +1 -1
  91. package/build/esm/react/index.d.ts +5 -3
  92. package/build/esm/react/index.js +4 -2
  93. package/build/esm/react/index.js.map +1 -1
  94. package/build/esm/react-query/components/QueryAsyncBoundary/QueryAsyncBoundary.d.ts +3 -0
  95. package/build/esm/react-query/components/QueryAsyncBoundary/QueryAsyncBoundary.js +16 -0
  96. package/build/esm/react-query/components/QueryAsyncBoundary/QueryAsyncBoundary.js.map +1 -0
  97. package/build/esm/react-query/components/QueryAsyncBoundary/index.d.ts +3 -0
  98. package/build/esm/react-query/components/QueryAsyncBoundary/index.js +3 -0
  99. package/build/esm/react-query/components/QueryAsyncBoundary/index.js.map +1 -0
  100. package/build/esm/react-query/components/QueryAsyncBoundary/types.d.ts +8 -0
  101. package/build/esm/react-query/components/QueryAsyncBoundary/types.js +2 -0
  102. package/build/esm/react-query/components/QueryAsyncBoundary/types.js.map +1 -0
  103. package/build/esm/react-query/components/QueryAsyncBoundary/withQueryAsyncBoundary.d.ts +3 -0
  104. package/build/esm/react-query/components/QueryAsyncBoundary/withQueryAsyncBoundary.js +19 -0
  105. package/build/esm/react-query/components/QueryAsyncBoundary/withQueryAsyncBoundary.js.map +1 -0
  106. package/build/esm/react-query/hooks/useSuspenseQueryData.d.ts +9 -0
  107. package/build/esm/react-query/hooks/useSuspenseQueryData.js +15 -0
  108. package/build/esm/react-query/hooks/useSuspenseQueryData.js.map +1 -0
  109. package/build/esm/react-query/impl/infinite/hooks.js +6 -2
  110. package/build/esm/react-query/impl/infinite/hooks.js.map +1 -1
  111. package/build/esm/react-query/impl/infinite/types.d.ts +1 -0
  112. package/build/esm/react-query/impl/infinite/types.js.map +1 -1
  113. package/build/esm/react-query/impl/plain/hooks.js +6 -2
  114. package/build/esm/react-query/impl/plain/hooks.js.map +1 -1
  115. package/build/esm/react-query/impl/plain/types.d.ts +1 -0
  116. package/build/esm/react-query/impl/plain/types.js.map +1 -1
  117. package/build/esm/react-query/index.d.ts +2 -0
  118. package/build/esm/react-query/index.js +2 -0
  119. package/build/esm/react-query/index.js.map +1 -1
  120. package/build/esm/react-query/types/options.d.ts +5 -0
  121. package/build/esm/react-query/types/options.js.map +1 -1
  122. package/build/esm/react-query/utils/warn.d.ts +1 -0
  123. package/build/esm/react-query/utils/warn.js +9 -0
  124. package/build/esm/react-query/utils/warn.js.map +1 -0
  125. package/build/esm/react-query/utils/warnDisabledRefetch.d.ts +1 -0
  126. package/build/esm/react-query/utils/warnDisabledRefetch.js +20 -0
  127. package/build/esm/react-query/utils/warnDisabledRefetch.js.map +1 -0
  128. package/build/esm/react-query/utils/wrapRefetch.d.ts +2 -0
  129. package/build/esm/react-query/utils/wrapRefetch.js +22 -0
  130. package/build/esm/react-query/utils/wrapRefetch.js.map +1 -0
  131. package/build/plugin/esbuild.d.mts +7 -0
  132. package/build/plugin/esbuild.mjs +6 -0
  133. package/build/plugin/factory-2tSt4Rte.mjs +513 -0
  134. package/build/plugin/index-mY40Sgl5.d.mts +24 -0
  135. package/build/plugin/index.d.mts +7 -0
  136. package/build/plugin/index.mjs +6 -0
  137. package/build/plugin/rollup.d.mts +6 -0
  138. package/build/plugin/rollup.mjs +6 -0
  139. package/build/plugin/rspack.d.mts +7 -0
  140. package/build/plugin/rspack.mjs +6 -0
  141. package/build/plugin/typings/client.d.ts +11 -0
  142. package/build/plugin/vite.d.mts +6 -0
  143. package/build/plugin/vite.mjs +6 -0
  144. package/build/plugin/webpack.d.mts +7 -0
  145. package/build/plugin/webpack.mjs +6 -0
  146. package/package.json +54 -5
  147. package/build/cjs/core/utils/__tests__/composeFullKey.test.js +0 -34
  148. package/build/cjs/core/utils/__tests__/composeFullKey.test.js.map +0 -1
  149. package/build/cjs/core/utils/__tests__/composeKey.test.js +0 -32
  150. package/build/cjs/core/utils/__tests__/composeKey.test.js.map +0 -1
  151. package/build/cjs/core/utils/__tests__/getError.test.js +0 -31
  152. package/build/cjs/core/utils/__tests__/getError.test.js.map +0 -1
  153. package/build/cjs/core/utils/__tests__/getStatus.test.js +0 -49
  154. package/build/cjs/core/utils/__tests__/getStatus.test.js.map +0 -1
  155. package/build/cjs/core/utils/__tests__/hasTag.test.js +0 -31
  156. package/build/cjs/core/utils/__tests__/hasTag.test.js.map +0 -1
  157. package/build/cjs/core/utils/__tests__/mergeStatuses.test.js +0 -25
  158. package/build/cjs/core/utils/__tests__/mergeStatuses.test.js.map +0 -1
  159. package/build/cjs/core/utils/__tests__/skipContext.test.js +0 -70
  160. package/build/cjs/core/utils/__tests__/skipContext.test.js.map +0 -1
  161. package/build/cjs/core/utils/__tests__/withCancellation.test.js +0 -106
  162. package/build/cjs/core/utils/__tests__/withCancellation.test.js.map +0 -1
  163. package/build/cjs/core/utils/__tests__/withCatch.test.js +0 -208
  164. package/build/cjs/core/utils/__tests__/withCatch.test.js.map +0 -1
  165. package/build/cjs/react/__tests__/DataManagerContext.test.js +0 -47
  166. package/build/cjs/react/__tests__/DataManagerContext.test.js.map +0 -1
  167. package/build/cjs/react/__tests__/withDataManager.test.js +0 -61
  168. package/build/cjs/react/__tests__/withDataManager.test.js.map +0 -1
  169. package/build/cjs/react/components/DataInfiniteLoader/__tests__/DataInfiniteLoader.test.js +0 -187
  170. package/build/cjs/react/components/DataInfiniteLoader/__tests__/DataInfiniteLoader.test.js.map +0 -1
  171. package/build/cjs/react/components/DataLoader/__tests__/DataLoader.test.js +0 -119
  172. package/build/cjs/react/components/DataLoader/__tests__/DataLoader.test.js.map +0 -1
  173. package/build/cjs/react-query/__tests__/createQueryNormalizer.test.js +0 -177
  174. package/build/cjs/react-query/__tests__/createQueryNormalizer.test.js.map +0 -1
  175. package/build/cjs/react-query/__tests__/normalizationEdgeCases.test.js +0 -100
  176. package/build/cjs/react-query/__tests__/normalizationEdgeCases.test.js.map +0 -1
  177. package/build/cjs/react-query/__tests__/subscriptions.test.js +0 -1180
  178. package/build/cjs/react-query/__tests__/subscriptions.test.js.map +0 -1
  179. package/build/cjs/react-query/__tests__/threeLevelIntegration.test.js +0 -659
  180. package/build/cjs/react-query/__tests__/threeLevelIntegration.test.js.map +0 -1
  181. package/build/cjs/react-query/__tests__/updateQueriesFromMutationData.test.js +0 -229
  182. package/build/cjs/react-query/__tests__/updateQueriesFromMutationData.test.js.map +0 -1
  183. package/build/cjs/react-query/hooks/__tests__/useQueryContext.test.js +0 -55
  184. package/build/cjs/react-query/hooks/__tests__/useQueryContext.test.js.map +0 -1
  185. package/build/cjs/react-query/hooks/__tests__/useQueryData.test.js +0 -97
  186. package/build/cjs/react-query/hooks/__tests__/useQueryData.test.js.map +0 -1
  187. package/build/cjs/react-query/hooks/__tests__/useQueryResponses.test.js +0 -77
  188. package/build/cjs/react-query/hooks/__tests__/useQueryResponses.test.js.map +0 -1
  189. package/build/cjs/react-query/hooks/__tests__/useRefetchAll.test.js +0 -79
  190. package/build/cjs/react-query/hooks/__tests__/useRefetchAll.test.js.map +0 -1
  191. package/build/cjs/react-query/hooks/__tests__/useRefetchErrored.test.js +0 -117
  192. package/build/cjs/react-query/hooks/__tests__/useRefetchErrored.test.js.map +0 -1
  193. package/build/cjs/react-query/hooks/__tests__/useRefetchInterval.test.js +0 -156
  194. package/build/cjs/react-query/hooks/__tests__/useRefetchInterval.test.js.map +0 -1
  195. package/build/cjs/react-query/utils/__tests__/checkMutationObjectsKeys.test.js +0 -295
  196. package/build/cjs/react-query/utils/__tests__/checkMutationObjectsKeys.test.js.map +0 -1
  197. package/build/cjs/react-query/utils/__tests__/formatNullableValue.test.js +0 -27
  198. package/build/cjs/react-query/utils/__tests__/formatNullableValue.test.js.map +0 -1
  199. package/build/cjs/react-query/utils/__tests__/getProgressiveRefetch.test.js +0 -76
  200. package/build/cjs/react-query/utils/__tests__/getProgressiveRefetch.test.js.map +0 -1
  201. package/build/cjs/react-query/utils/__tests__/normalizeStatus.test.js +0 -30
  202. package/build/cjs/react-query/utils/__tests__/normalizeStatus.test.js.map +0 -1
  203. package/build/cjs/react-query/utils/__tests__/notReachable.test.js +0 -35
  204. package/build/cjs/react-query/utils/__tests__/notReachable.test.js.map +0 -1
  205. package/build/cjs/react-query/utils/__tests__/parseNullableValue.test.js +0 -27
  206. package/build/cjs/react-query/utils/__tests__/parseNullableValue.test.js.map +0 -1
  207. package/build/cjs/setupTests.d.ts +0 -1
  208. package/build/cjs/setupTests.js +0 -4
  209. package/build/cjs/setupTests.js.map +0 -1
  210. package/build/esm/core/utils/__tests__/composeFullKey.test.js +0 -32
  211. package/build/esm/core/utils/__tests__/composeFullKey.test.js.map +0 -1
  212. package/build/esm/core/utils/__tests__/composeKey.test.js +0 -30
  213. package/build/esm/core/utils/__tests__/composeKey.test.js.map +0 -1
  214. package/build/esm/core/utils/__tests__/getError.test.js +0 -29
  215. package/build/esm/core/utils/__tests__/getError.test.js.map +0 -1
  216. package/build/esm/core/utils/__tests__/getStatus.test.js +0 -47
  217. package/build/esm/core/utils/__tests__/getStatus.test.js.map +0 -1
  218. package/build/esm/core/utils/__tests__/hasTag.test.js +0 -29
  219. package/build/esm/core/utils/__tests__/hasTag.test.js.map +0 -1
  220. package/build/esm/core/utils/__tests__/mergeStatuses.test.js +0 -23
  221. package/build/esm/core/utils/__tests__/mergeStatuses.test.js.map +0 -1
  222. package/build/esm/core/utils/__tests__/skipContext.test.js +0 -67
  223. package/build/esm/core/utils/__tests__/skipContext.test.js.map +0 -1
  224. package/build/esm/core/utils/__tests__/withCancellation.test.js +0 -104
  225. package/build/esm/core/utils/__tests__/withCancellation.test.js.map +0 -1
  226. package/build/esm/core/utils/__tests__/withCatch.test.js +0 -205
  227. package/build/esm/core/utils/__tests__/withCatch.test.js.map +0 -1
  228. package/build/esm/react/__tests__/DataManagerContext.test.js +0 -44
  229. package/build/esm/react/__tests__/DataManagerContext.test.js.map +0 -1
  230. package/build/esm/react/__tests__/withDataManager.test.js +0 -58
  231. package/build/esm/react/__tests__/withDataManager.test.js.map +0 -1
  232. package/build/esm/react/components/DataInfiniteLoader/__tests__/DataInfiniteLoader.test.js +0 -184
  233. package/build/esm/react/components/DataInfiniteLoader/__tests__/DataInfiniteLoader.test.js.map +0 -1
  234. package/build/esm/react/components/DataLoader/__tests__/DataLoader.test.js +0 -116
  235. package/build/esm/react/components/DataLoader/__tests__/DataLoader.test.js.map +0 -1
  236. package/build/esm/react-query/__tests__/createQueryNormalizer.test.js +0 -174
  237. package/build/esm/react-query/__tests__/createQueryNormalizer.test.js.map +0 -1
  238. package/build/esm/react-query/__tests__/normalizationEdgeCases.test.js +0 -98
  239. package/build/esm/react-query/__tests__/normalizationEdgeCases.test.js.map +0 -1
  240. package/build/esm/react-query/__tests__/subscriptions.test.js +0 -1176
  241. package/build/esm/react-query/__tests__/subscriptions.test.js.map +0 -1
  242. package/build/esm/react-query/__tests__/threeLevelIntegration.test.js +0 -656
  243. package/build/esm/react-query/__tests__/threeLevelIntegration.test.js.map +0 -1
  244. package/build/esm/react-query/__tests__/updateQueriesFromMutationData.test.js +0 -227
  245. package/build/esm/react-query/__tests__/updateQueriesFromMutationData.test.js.map +0 -1
  246. package/build/esm/react-query/hooks/__tests__/useQueryContext.test.js +0 -52
  247. package/build/esm/react-query/hooks/__tests__/useQueryContext.test.js.map +0 -1
  248. package/build/esm/react-query/hooks/__tests__/useQueryData.test.js +0 -95
  249. package/build/esm/react-query/hooks/__tests__/useQueryData.test.js.map +0 -1
  250. package/build/esm/react-query/hooks/__tests__/useQueryResponses.test.js +0 -74
  251. package/build/esm/react-query/hooks/__tests__/useQueryResponses.test.js.map +0 -1
  252. package/build/esm/react-query/hooks/__tests__/useRefetchAll.test.js +0 -77
  253. package/build/esm/react-query/hooks/__tests__/useRefetchAll.test.js.map +0 -1
  254. package/build/esm/react-query/hooks/__tests__/useRefetchErrored.test.js +0 -115
  255. package/build/esm/react-query/hooks/__tests__/useRefetchErrored.test.js.map +0 -1
  256. package/build/esm/react-query/hooks/__tests__/useRefetchInterval.test.js +0 -154
  257. package/build/esm/react-query/hooks/__tests__/useRefetchInterval.test.js.map +0 -1
  258. package/build/esm/react-query/utils/__tests__/checkMutationObjectsKeys.test.js +0 -292
  259. package/build/esm/react-query/utils/__tests__/checkMutationObjectsKeys.test.js.map +0 -1
  260. package/build/esm/react-query/utils/__tests__/formatNullableValue.test.js +0 -25
  261. package/build/esm/react-query/utils/__tests__/formatNullableValue.test.js.map +0 -1
  262. package/build/esm/react-query/utils/__tests__/getProgressiveRefetch.test.js +0 -74
  263. package/build/esm/react-query/utils/__tests__/getProgressiveRefetch.test.js.map +0 -1
  264. package/build/esm/react-query/utils/__tests__/normalizeStatus.test.js +0 -28
  265. package/build/esm/react-query/utils/__tests__/normalizeStatus.test.js.map +0 -1
  266. package/build/esm/react-query/utils/__tests__/notReachable.test.js +0 -33
  267. package/build/esm/react-query/utils/__tests__/notReachable.test.js.map +0 -1
  268. package/build/esm/react-query/utils/__tests__/parseNullableValue.test.js +0 -25
  269. package/build/esm/react-query/utils/__tests__/parseNullableValue.test.js.map +0 -1
  270. package/build/esm/setupTests.d.ts +0 -1
  271. package/build/esm/setupTests.js +0 -2
  272. package/build/esm/setupTests.js.map +0 -1
@@ -1,44 +0,0 @@
1
- import React from 'react';
2
- import { renderHook } from '@testing-library/react';
3
- import { DataManagerContext, useDataManager } from '../DataManagerContext';
4
- import { jsx as _jsx } from "react/jsx-runtime";
5
- describe('useDataManager', function () {
6
- it('should return dataManager from context', function () {
7
- var mockDataManager = {
8
- normalizer: undefined,
9
- optimisticUpdate: jest.fn(),
10
- invalidateData: jest.fn(),
11
- invalidateTag: jest.fn(),
12
- invalidateTags: jest.fn(),
13
- invalidateSource: jest.fn(),
14
- resetSource: jest.fn(),
15
- invalidateParams: jest.fn(),
16
- resetParams: jest.fn(),
17
- invalidateSourceTags: jest.fn()
18
- };
19
- var wrapper = function wrapper(_ref) {
20
- var children = _ref.children;
21
- return /*#__PURE__*/_jsx(DataManagerContext.Provider, {
22
- value: mockDataManager,
23
- children: children
24
- });
25
- };
26
- var _renderHook = renderHook(function () {
27
- return useDataManager();
28
- }, {
29
- wrapper: wrapper
30
- }),
31
- result = _renderHook.result;
32
- expect(result.current).toBe(mockDataManager);
33
- });
34
- it('should throw an error when dataManager is not provided', function () {
35
- var consoleSpy = jest.spyOn(console, 'error').mockImplementation();
36
- expect(function () {
37
- renderHook(function () {
38
- return useDataManager();
39
- });
40
- }).toThrow('DataManager is not provided by context. Use DataManagerContext.Provider to do it');
41
- consoleSpy.mockRestore();
42
- });
43
- });
44
- // #sourceMappingURL=DataManagerContext.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["React","renderHook","DataManagerContext","useDataManager","jsx","_jsx","describe","it","mockDataManager","normalizer","undefined","optimisticUpdate","jest","fn","invalidateData","invalidateTag","invalidateTags","invalidateSource","resetSource","invalidateParams","resetParams","invalidateSourceTags","wrapper","_ref","children","Provider","value","_renderHook","result","expect","current","toBe","consoleSpy","spyOn","console","mockImplementation","toThrow","mockRestore"],"sources":["DataManagerContext.test.tsx"],"sourcesContent":["import React from 'react';\n\nimport {renderHook} from '@testing-library/react';\n\nimport type {DataManager} from '../../core';\nimport {DataManagerContext, useDataManager} from '../DataManagerContext';\n\ndescribe('useDataManager', () => {\n it('should return dataManager from context', () => {\n const mockDataManager: DataManager = {\n normalizer: undefined,\n optimisticUpdate: jest.fn(),\n invalidateData: jest.fn(),\n invalidateTag: jest.fn(),\n invalidateTags: jest.fn(),\n invalidateSource: jest.fn(),\n resetSource: jest.fn(),\n invalidateParams: jest.fn(),\n resetParams: jest.fn(),\n invalidateSourceTags: jest.fn(),\n };\n\n const wrapper: React.FC<{children: React.ReactNode}> = ({children}) => (\n <DataManagerContext.Provider value={mockDataManager}>\n {children}\n </DataManagerContext.Provider>\n );\n\n const {result} = renderHook(() => useDataManager(), {wrapper});\n\n expect(result.current).toBe(mockDataManager);\n });\n\n it('should throw an error when dataManager is not provided', () => {\n const consoleSpy = jest.spyOn(console, 'error').mockImplementation();\n\n expect(() => {\n renderHook(() => useDataManager());\n }).toThrow(\n 'DataManager is not provided by context. Use DataManagerContext.Provider to do it',\n );\n\n consoleSpy.mockRestore();\n });\n});\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAAQC,UAAU,QAAO,wBAAwB;AAGjD,SAAQC,kBAAkB,EAAEC,cAAc,QAAO,uBAAuB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEzEC,QAAQ,CAAC,gBAAgB,EAAE,YAAM;EAC7BC,EAAE,CAAC,wCAAwC,EAAE,YAAM;IAC/C,IAAMC,eAA4B,GAAG;MACjCC,UAAU,EAAEC,SAAS;MACrBC,gBAAgB,EAAEC,IAAI,CAACC,EAAE,CAAC,CAAC;MAC3BC,cAAc,EAAEF,IAAI,CAACC,EAAE,CAAC,CAAC;MACzBE,aAAa,EAAEH,IAAI,CAACC,EAAE,CAAC,CAAC;MACxBG,cAAc,EAAEJ,IAAI,CAACC,EAAE,CAAC,CAAC;MACzBI,gBAAgB,EAAEL,IAAI,CAACC,EAAE,CAAC,CAAC;MAC3BK,WAAW,EAAEN,IAAI,CAACC,EAAE,CAAC,CAAC;MACtBM,gBAAgB,EAAEP,IAAI,CAACC,EAAE,CAAC,CAAC;MAC3BO,WAAW,EAAER,IAAI,CAACC,EAAE,CAAC,CAAC;MACtBQ,oBAAoB,EAAET,IAAI,CAACC,EAAE,CAAC;IAClC,CAAC;IAED,IAAMS,OAA8C,GAAG,SAAjDA,OAA8CA,CAAAC,IAAA;MAAA,IAAKC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;MAAA,oBAC7DnB,IAAA,CAACH,kBAAkB,CAACuB,QAAQ;QAACC,KAAK,EAAElB,eAAgB;QAAAgB,QAAA,EAC/CA;MAAQ,CACgB,CAAC;IAAA,CACjC;IAED,IAAAG,WAAA,GAAiB1B,UAAU,CAAC;QAAA,OAAME,cAAc,CAAC,CAAC;MAAA,GAAE;QAACmB,OAAO,EAAPA;MAAO,CAAC,CAAC;MAAvDM,MAAM,GAAAD,WAAA,CAANC,MAAM;IAEbC,MAAM,CAACD,MAAM,CAACE,OAAO,CAAC,CAACC,IAAI,CAACvB,eAAe,CAAC;EAChD,CAAC,CAAC;EAEFD,EAAE,CAAC,wDAAwD,EAAE,YAAM;IAC/D,IAAMyB,UAAU,GAAGpB,IAAI,CAACqB,KAAK,CAACC,OAAO,EAAE,OAAO,CAAC,CAACC,kBAAkB,CAAC,CAAC;IAEpEN,MAAM,CAAC,YAAM;MACT5B,UAAU,CAAC;QAAA,OAAME,cAAc,CAAC,CAAC;MAAA,EAAC;IACtC,CAAC,CAAC,CAACiC,OAAO,CACN,kFACJ,CAAC;IAEDJ,UAAU,CAACK,WAAW,CAAC,CAAC;EAC5B,CAAC,CAAC;AACN,CAAC,CAAC","ignoreList":[]}
@@ -1,58 +0,0 @@
1
- import _objectSpread from "@babel/runtime/helpers/objectSpread2";
2
- import React from 'react';
3
- import { render, screen } from '@testing-library/react';
4
- import { useDataManager } from '../DataManagerContext';
5
- import { withDataManager } from '../withDataManager';
6
- import { jsx as _jsx } from "react/jsx-runtime";
7
- jest.mock('../DataManagerContext', function () {
8
- var originalModule = jest.requireActual('../DataManagerContext');
9
- return _objectSpread(_objectSpread({}, originalModule), {}, {
10
- useDataManager: jest.fn()
11
- });
12
- });
13
- describe('withDataManager', function () {
14
- var mockDataManager = {
15
- normalizer: undefined,
16
- optimisticUpdate: jest.fn(),
17
- invalidateData: jest.fn(),
18
- invalidateTag: jest.fn(),
19
- invalidateTags: jest.fn(),
20
- invalidateSource: jest.fn(),
21
- resetSource: jest.fn(),
22
- invalidateParams: jest.fn(),
23
- resetParams: jest.fn(),
24
- invalidateSourceTags: jest.fn()
25
- };
26
- beforeEach(function () {
27
- jest.clearAllMocks();
28
- useDataManager.mockReturnValue(mockDataManager);
29
- });
30
- it('should pass dataManager to wrapped component', function () {
31
- var TestComponent = function TestComponent(_ref) {
32
- var dataManager = _ref.dataManager;
33
- return /*#__PURE__*/_jsx("div", {
34
- "data-testid": "test-component",
35
- children: dataManager ? 'DataManager provided' : 'No DataManager'
36
- });
37
- };
38
- var WrappedComponent = withDataManager(TestComponent);
39
- render(/*#__PURE__*/_jsx(WrappedComponent, {}));
40
- expect(screen.getByTestId('test-component')).toHaveTextContent('DataManager provided');
41
- });
42
- it('should pass through additional props', function () {
43
- var TestComponent = function TestComponent(_ref2) {
44
- var dataManager = _ref2.dataManager,
45
- testProp = _ref2.testProp;
46
- return /*#__PURE__*/_jsx("div", {
47
- "data-testid": "test-component",
48
- children: dataManager ? "DataManager provided, testProp: ".concat(testProp) : 'No DataManager'
49
- });
50
- };
51
- var WrappedComponent = withDataManager(TestComponent);
52
- render(/*#__PURE__*/_jsx(WrappedComponent, {
53
- testProp: "test value"
54
- }));
55
- expect(screen.getByTestId('test-component')).toHaveTextContent('DataManager provided, testProp: test value');
56
- });
57
- });
58
- // #sourceMappingURL=withDataManager.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["React","render","screen","useDataManager","withDataManager","jsx","_jsx","jest","mock","originalModule","requireActual","_objectSpread","fn","describe","mockDataManager","normalizer","undefined","optimisticUpdate","invalidateData","invalidateTag","invalidateTags","invalidateSource","resetSource","invalidateParams","resetParams","invalidateSourceTags","beforeEach","clearAllMocks","mockReturnValue","it","TestComponent","_ref","dataManager","children","WrappedComponent","expect","getByTestId","toHaveTextContent","_ref2","testProp","concat"],"sources":["withDataManager.test.tsx"],"sourcesContent":["import React from 'react';\n\nimport {render, screen} from '@testing-library/react';\n\nimport type {DataManager} from '../../core';\nimport {useDataManager} from '../DataManagerContext';\nimport type {WithDataManagerProps} from '../withDataManager';\nimport {withDataManager} from '../withDataManager';\n\njest.mock('../DataManagerContext', () => {\n const originalModule = jest.requireActual('../DataManagerContext');\n return {\n ...originalModule,\n useDataManager: jest.fn(),\n };\n});\n\ndescribe('withDataManager', () => {\n const mockDataManager: DataManager = {\n normalizer: undefined,\n optimisticUpdate: jest.fn(),\n invalidateData: jest.fn(),\n invalidateTag: jest.fn(),\n invalidateTags: jest.fn(),\n invalidateSource: jest.fn(),\n resetSource: jest.fn(),\n invalidateParams: jest.fn(),\n resetParams: jest.fn(),\n invalidateSourceTags: jest.fn(),\n };\n\n beforeEach(() => {\n jest.clearAllMocks();\n\n (useDataManager as jest.Mock).mockReturnValue(mockDataManager);\n });\n\n it('should pass dataManager to wrapped component', () => {\n const TestComponent: React.FC<WithDataManagerProps> = ({dataManager}) => (\n <div data-testid=\"test-component\">\n {dataManager ? 'DataManager provided' : 'No DataManager'}\n </div>\n );\n const WrappedComponent = withDataManager(TestComponent);\n\n render(<WrappedComponent />);\n\n expect(screen.getByTestId('test-component')).toHaveTextContent('DataManager provided');\n });\n\n it('should pass through additional props', () => {\n const TestComponent: React.FC<WithDataManagerProps & {testProp: string}> = ({\n dataManager,\n testProp,\n }) => (\n <div data-testid=\"test-component\">\n {dataManager ? `DataManager provided, testProp: ${testProp}` : 'No DataManager'}\n </div>\n );\n const WrappedComponent = withDataManager(TestComponent);\n\n render(<WrappedComponent testProp=\"test value\" />);\n\n expect(screen.getByTestId('test-component')).toHaveTextContent(\n 'DataManager provided, testProp: test value',\n );\n });\n});\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAAQC,MAAM,EAAEC,MAAM,QAAO,wBAAwB;AAGrD,SAAQC,cAAc,QAAO,uBAAuB;AAEpD,SAAQC,eAAe,QAAO,oBAAoB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEnDC,IAAI,CAACC,IAAI,CAAC,uBAAuB,EAAE,YAAM;EACrC,IAAMC,cAAc,GAAGF,IAAI,CAACG,aAAa,CAAC,uBAAuB,CAAC;EAClE,OAAAC,aAAA,CAAAA,aAAA,KACOF,cAAc;IACjBN,cAAc,EAAEI,IAAI,CAACK,EAAE,CAAC;EAAC;AAEjC,CAAC,CAAC;AAEFC,QAAQ,CAAC,iBAAiB,EAAE,YAAM;EAC9B,IAAMC,eAA4B,GAAG;IACjCC,UAAU,EAAEC,SAAS;IACrBC,gBAAgB,EAAEV,IAAI,CAACK,EAAE,CAAC,CAAC;IAC3BM,cAAc,EAAEX,IAAI,CAACK,EAAE,CAAC,CAAC;IACzBO,aAAa,EAAEZ,IAAI,CAACK,EAAE,CAAC,CAAC;IACxBQ,cAAc,EAAEb,IAAI,CAACK,EAAE,CAAC,CAAC;IACzBS,gBAAgB,EAAEd,IAAI,CAACK,EAAE,CAAC,CAAC;IAC3BU,WAAW,EAAEf,IAAI,CAACK,EAAE,CAAC,CAAC;IACtBW,gBAAgB,EAAEhB,IAAI,CAACK,EAAE,CAAC,CAAC;IAC3BY,WAAW,EAAEjB,IAAI,CAACK,EAAE,CAAC,CAAC;IACtBa,oBAAoB,EAAElB,IAAI,CAACK,EAAE,CAAC;EAClC,CAAC;EAEDc,UAAU,CAAC,YAAM;IACbnB,IAAI,CAACoB,aAAa,CAAC,CAAC;IAEnBxB,cAAc,CAAeyB,eAAe,CAACd,eAAe,CAAC;EAClE,CAAC,CAAC;EAEFe,EAAE,CAAC,8CAA8C,EAAE,YAAM;IACrD,IAAMC,aAA6C,GAAG,SAAhDA,aAA6CA,CAAAC,IAAA;MAAA,IAAKC,WAAW,GAAAD,IAAA,CAAXC,WAAW;MAAA,oBAC/D1B,IAAA;QAAK,eAAY,gBAAgB;QAAA2B,QAAA,EAC5BD,WAAW,GAAG,sBAAsB,GAAG;MAAgB,CACvD,CAAC;IAAA,CACT;IACD,IAAME,gBAAgB,GAAG9B,eAAe,CAAC0B,aAAa,CAAC;IAEvD7B,MAAM,cAACK,IAAA,CAAC4B,gBAAgB,IAAE,CAAC,CAAC;IAE5BC,MAAM,CAACjC,MAAM,CAACkC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAACC,iBAAiB,CAAC,sBAAsB,CAAC;EAC1F,CAAC,CAAC;EAEFR,EAAE,CAAC,sCAAsC,EAAE,YAAM;IAC7C,IAAMC,aAAkE,GAAG,SAArEA,aAAkEA,CAAAQ,KAAA;MAAA,IACpEN,WAAW,GAAAM,KAAA,CAAXN,WAAW;QACXO,QAAQ,GAAAD,KAAA,CAARC,QAAQ;MAAA,oBAERjC,IAAA;QAAK,eAAY,gBAAgB;QAAA2B,QAAA,EAC5BD,WAAW,sCAAAQ,MAAA,CAAsCD,QAAQ,IAAK;MAAgB,CAC9E,CAAC;IAAA,CACT;IACD,IAAML,gBAAgB,GAAG9B,eAAe,CAAC0B,aAAa,CAAC;IAEvD7B,MAAM,cAACK,IAAA,CAAC4B,gBAAgB;MAACK,QAAQ,EAAC;IAAY,CAAE,CAAC,CAAC;IAElDJ,MAAM,CAACjC,MAAM,CAACkC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAACC,iBAAiB,CAC1D,4CACJ,CAAC;EACL,CAAC,CAAC;AACN,CAAC,CAAC","ignoreList":[]}
@@ -1,184 +0,0 @@
1
- import _objectSpread from "@babel/runtime/helpers/objectSpread2";
2
- import React from 'react';
3
- import { fireEvent, render, screen } from '@testing-library/react';
4
- import { DataInfiniteLoader } from '../DataInfiniteLoader';
5
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
- var MockLoadingView = function MockLoadingView() {
7
- return /*#__PURE__*/_jsx("div", {
8
- "data-testid": "loading-view",
9
- children: "Loading..."
10
- });
11
- };
12
- var MockErrorView = function MockErrorView(_ref) {
13
- var error = _ref.error,
14
- action = _ref.action;
15
- return /*#__PURE__*/_jsxs("div", {
16
- "data-testid": "error-view",
17
- children: [error ? "Error: ".concat(error.message) : 'No error', action ? /*#__PURE__*/_jsx("button", {
18
- "data-testid": "error-action",
19
- onClick: action.handler,
20
- children: action.children || 'Retry'
21
- }) : null]
22
- });
23
- };
24
- var MockMoreView = function MockMoreView(_ref2) {
25
- var isLoading = _ref2.isLoading,
26
- onClick = _ref2.onClick;
27
- return /*#__PURE__*/_jsx("div", {
28
- "data-testid": "more-view",
29
- children: isLoading ? /*#__PURE__*/_jsx("span", {
30
- "data-testid": "more-view-loading",
31
- children: "Loading more..."
32
- }) : /*#__PURE__*/_jsx("button", {
33
- "data-testid": "more-view-button",
34
- onClick: onClick,
35
- children: "Load more"
36
- })
37
- });
38
- };
39
- describe('DataInfiniteLoader', function () {
40
- var renderDataInfiniteLoader = function renderDataInfiniteLoader() {
41
- var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
42
- var fetchNextPage = jest.fn();
43
- var defaultProps = {
44
- status: 'success',
45
- error: null,
46
- hasNextPage: true,
47
- fetchNextPage: fetchNextPage,
48
- isFetchingNextPage: false,
49
- LoadingView: MockLoadingView,
50
- ErrorView: MockErrorView,
51
- MoreView: MockMoreView,
52
- children: /*#__PURE__*/_jsx("div", {
53
- "data-testid": "content",
54
- children: "Content"
55
- })
56
- };
57
- return _objectSpread(_objectSpread({}, render(/*#__PURE__*/_jsx(DataInfiniteLoader, _objectSpread(_objectSpread({}, defaultProps), props)))), {}, {
58
- fetchNextPage: fetchNextPage
59
- });
60
- };
61
- it('should render children and MoreView when status is success and hasNextPage is true', function () {
62
- renderDataInfiniteLoader({
63
- status: 'success',
64
- hasNextPage: true
65
- });
66
- expect(screen.getByTestId('content')).toBeInTheDocument();
67
- expect(screen.getByTestId('more-view')).toBeInTheDocument();
68
- expect(screen.queryByTestId('loading-view')).not.toBeInTheDocument();
69
- expect(screen.queryByTestId('error-view')).not.toBeInTheDocument();
70
- });
71
- it('should render only children when status is success and hasNextPage is false', function () {
72
- renderDataInfiniteLoader({
73
- status: 'success',
74
- hasNextPage: false
75
- });
76
- expect(screen.getByTestId('content')).toBeInTheDocument();
77
- expect(screen.queryByTestId('more-view')).not.toBeInTheDocument();
78
- expect(screen.queryByTestId('loading-view')).not.toBeInTheDocument();
79
- expect(screen.queryByTestId('error-view')).not.toBeInTheDocument();
80
- });
81
- it('should render LoadingView when status is loading', function () {
82
- renderDataInfiniteLoader({
83
- status: 'loading'
84
- });
85
- expect(screen.getByTestId('loading-view')).toBeInTheDocument();
86
- expect(screen.queryByTestId('content')).not.toBeInTheDocument();
87
- expect(screen.queryByTestId('more-view')).not.toBeInTheDocument();
88
- expect(screen.queryByTestId('error-view')).not.toBeInTheDocument();
89
- });
90
- it('should render ErrorView when status is error', function () {
91
- var error = new Error('Test error');
92
- renderDataInfiniteLoader({
93
- status: 'error',
94
- error: error
95
- });
96
- expect(screen.getByTestId('error-view')).toBeInTheDocument();
97
- expect(screen.queryByTestId('content')).not.toBeInTheDocument();
98
- expect(screen.queryByTestId('more-view')).not.toBeInTheDocument();
99
- expect(screen.queryByTestId('loading-view')).not.toBeInTheDocument();
100
- expect(screen.getByText(/Test error/)).toBeInTheDocument();
101
- });
102
- it('should call fetchNextPage when clicking on load more button', function () {
103
- var _renderDataInfiniteLo = renderDataInfiniteLoader({
104
- status: 'success',
105
- hasNextPage: true,
106
- isFetchingNextPage: false
107
- }),
108
- fetchNextPage = _renderDataInfiniteLo.fetchNextPage;
109
- fireEvent.click(screen.getByTestId('more-view-button'));
110
- expect(fetchNextPage).toHaveBeenCalledTimes(1);
111
- });
112
- it('should show loading state in MoreView when isFetchingNextPage is true', function () {
113
- renderDataInfiniteLoader({
114
- status: 'success',
115
- hasNextPage: true,
116
- isFetchingNextPage: true
117
- });
118
- expect(screen.getByTestId('more-view-loading')).toBeInTheDocument();
119
- expect(screen.queryByTestId('more-view-button')).not.toBeInTheDocument();
120
- });
121
- it('should pass errorAction to ErrorView', function () {
122
- var error = new Error('Test error');
123
- var errorAction = jest.fn();
124
- renderDataInfiniteLoader({
125
- status: 'error',
126
- error: error,
127
- errorAction: errorAction
128
- });
129
- expect(screen.getByTestId('error-action')).toBeInTheDocument();
130
- });
131
- it('should pass errorAction with custom children to ErrorView', function () {
132
- var error = new Error('Test error');
133
- var errorAction = {
134
- handler: jest.fn(),
135
- children: 'Custom action'
136
- };
137
- renderDataInfiniteLoader({
138
- status: 'error',
139
- error: error,
140
- errorAction: errorAction
141
- });
142
- expect(screen.getByText('Custom action')).toBeInTheDocument();
143
- });
144
- it('should pass loadingViewProps to LoadingView', function () {
145
- var LoadingView = jest.fn(MockLoadingView);
146
- var loadingViewProps = {
147
- customProp: 'test'
148
- };
149
- renderDataInfiniteLoader({
150
- status: 'loading',
151
- LoadingView: LoadingView,
152
- loadingViewProps: loadingViewProps
153
- });
154
- expect(LoadingView).toHaveBeenCalledWith(expect.objectContaining(loadingViewProps), undefined);
155
- });
156
- it('should pass errorViewProps to ErrorView', function () {
157
- var ErrorView = jest.fn(MockErrorView);
158
- var errorViewProps = {
159
- customProp: 'test'
160
- };
161
- var error = new Error('Test error');
162
- renderDataInfiniteLoader({
163
- status: 'error',
164
- error: error,
165
- ErrorView: ErrorView,
166
- errorViewProps: errorViewProps
167
- });
168
- expect(ErrorView).toHaveBeenCalledWith(expect.objectContaining(errorViewProps), undefined);
169
- });
170
- it('should pass moreViewProps to MoreView', function () {
171
- var MoreView = jest.fn(MockMoreView);
172
- var moreViewProps = {
173
- customProp: 'test'
174
- };
175
- renderDataInfiniteLoader({
176
- status: 'success',
177
- hasNextPage: true,
178
- MoreView: MoreView,
179
- moreViewProps: moreViewProps
180
- });
181
- expect(MoreView).toHaveBeenCalledWith(expect.objectContaining(moreViewProps), undefined);
182
- });
183
- });
184
- // #sourceMappingURL=DataInfiniteLoader.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["React","fireEvent","render","screen","DataInfiniteLoader","jsx","_jsx","jsxs","_jsxs","MockLoadingView","children","MockErrorView","_ref","error","action","concat","message","onClick","handler","MockMoreView","_ref2","isLoading","describe","renderDataInfiniteLoader","props","arguments","length","undefined","fetchNextPage","jest","fn","defaultProps","status","hasNextPage","isFetchingNextPage","LoadingView","ErrorView","MoreView","_objectSpread","it","expect","getByTestId","toBeInTheDocument","queryByTestId","not","Error","getByText","_renderDataInfiniteLo","click","toHaveBeenCalledTimes","errorAction","loadingViewProps","customProp","toHaveBeenCalledWith","objectContaining","errorViewProps","moreViewProps"],"sources":["DataInfiniteLoader.test.tsx"],"sourcesContent":["import React from 'react';\n\nimport {fireEvent, render, screen} from '@testing-library/react';\n\nimport type {ErrorViewProps} from '../../types';\nimport {DataInfiniteLoader} from '../DataInfiniteLoader';\nimport type {DataInfiniteLoaderProps, MoreViewProps} from '../types';\n\nconst MockLoadingView = () => <div data-testid=\"loading-view\">Loading...</div>;\nconst MockErrorView: React.FC<ErrorViewProps<Error>> = ({error, action}) => (\n <div data-testid=\"error-view\">\n {error ? `Error: ${error.message}` : 'No error'}\n {action ? (\n <button data-testid=\"error-action\" onClick={action.handler}>\n {action.children || 'Retry'}\n </button>\n ) : null}\n </div>\n);\nconst MockMoreView: React.FC<MoreViewProps> = ({isLoading, onClick}) => (\n <div data-testid=\"more-view\">\n {isLoading ? (\n <span data-testid=\"more-view-loading\">Loading more...</span>\n ) : (\n <button data-testid=\"more-view-button\" onClick={onClick}>\n Load more\n </button>\n )}\n </div>\n);\n\ndescribe('DataInfiniteLoader', () => {\n const renderDataInfiniteLoader = (props: Partial<DataInfiniteLoaderProps<Error>> = {}) => {\n const fetchNextPage = jest.fn();\n const defaultProps: DataInfiniteLoaderProps<Error> = {\n status: 'success',\n error: null,\n hasNextPage: true,\n fetchNextPage,\n isFetchingNextPage: false,\n LoadingView: MockLoadingView,\n ErrorView: MockErrorView,\n MoreView: MockMoreView,\n children: <div data-testid=\"content\">Content</div>,\n };\n\n return {\n ...render(<DataInfiniteLoader {...defaultProps} {...props} />),\n fetchNextPage,\n };\n };\n\n it('should render children and MoreView when status is success and hasNextPage is true', () => {\n renderDataInfiniteLoader({status: 'success', hasNextPage: true});\n expect(screen.getByTestId('content')).toBeInTheDocument();\n expect(screen.getByTestId('more-view')).toBeInTheDocument();\n expect(screen.queryByTestId('loading-view')).not.toBeInTheDocument();\n expect(screen.queryByTestId('error-view')).not.toBeInTheDocument();\n });\n\n it('should render only children when status is success and hasNextPage is false', () => {\n renderDataInfiniteLoader({status: 'success', hasNextPage: false});\n expect(screen.getByTestId('content')).toBeInTheDocument();\n expect(screen.queryByTestId('more-view')).not.toBeInTheDocument();\n expect(screen.queryByTestId('loading-view')).not.toBeInTheDocument();\n expect(screen.queryByTestId('error-view')).not.toBeInTheDocument();\n });\n\n it('should render LoadingView when status is loading', () => {\n renderDataInfiniteLoader({status: 'loading'});\n expect(screen.getByTestId('loading-view')).toBeInTheDocument();\n expect(screen.queryByTestId('content')).not.toBeInTheDocument();\n expect(screen.queryByTestId('more-view')).not.toBeInTheDocument();\n expect(screen.queryByTestId('error-view')).not.toBeInTheDocument();\n });\n\n it('should render ErrorView when status is error', () => {\n const error = new Error('Test error');\n renderDataInfiniteLoader({status: 'error', error});\n expect(screen.getByTestId('error-view')).toBeInTheDocument();\n expect(screen.queryByTestId('content')).not.toBeInTheDocument();\n expect(screen.queryByTestId('more-view')).not.toBeInTheDocument();\n expect(screen.queryByTestId('loading-view')).not.toBeInTheDocument();\n expect(screen.getByText(/Test error/)).toBeInTheDocument();\n });\n\n it('should call fetchNextPage when clicking on load more button', () => {\n const {fetchNextPage} = renderDataInfiniteLoader({\n status: 'success',\n hasNextPage: true,\n isFetchingNextPage: false,\n });\n fireEvent.click(screen.getByTestId('more-view-button'));\n expect(fetchNextPage).toHaveBeenCalledTimes(1);\n });\n\n it('should show loading state in MoreView when isFetchingNextPage is true', () => {\n renderDataInfiniteLoader({\n status: 'success',\n hasNextPage: true,\n isFetchingNextPage: true,\n });\n expect(screen.getByTestId('more-view-loading')).toBeInTheDocument();\n expect(screen.queryByTestId('more-view-button')).not.toBeInTheDocument();\n });\n\n it('should pass errorAction to ErrorView', () => {\n const error = new Error('Test error');\n const errorAction = jest.fn();\n renderDataInfiniteLoader({\n status: 'error',\n error,\n errorAction,\n });\n expect(screen.getByTestId('error-action')).toBeInTheDocument();\n });\n\n it('should pass errorAction with custom children to ErrorView', () => {\n const error = new Error('Test error');\n const errorAction = {\n handler: jest.fn(),\n children: 'Custom action',\n };\n renderDataInfiniteLoader({\n status: 'error',\n error,\n errorAction,\n });\n expect(screen.getByText('Custom action')).toBeInTheDocument();\n });\n\n it('should pass loadingViewProps to LoadingView', () => {\n const LoadingView = jest.fn(MockLoadingView);\n const loadingViewProps = {customProp: 'test'};\n renderDataInfiniteLoader({\n status: 'loading',\n LoadingView,\n loadingViewProps,\n });\n expect(LoadingView).toHaveBeenCalledWith(\n expect.objectContaining(loadingViewProps),\n undefined,\n );\n });\n\n it('should pass errorViewProps to ErrorView', () => {\n const ErrorView = jest.fn(MockErrorView);\n const errorViewProps = {customProp: 'test'};\n const error = new Error('Test error');\n renderDataInfiniteLoader({\n status: 'error',\n error,\n ErrorView,\n errorViewProps,\n });\n expect(ErrorView).toHaveBeenCalledWith(expect.objectContaining(errorViewProps), undefined);\n });\n\n it('should pass moreViewProps to MoreView', () => {\n const MoreView = jest.fn(MockMoreView);\n const moreViewProps = {customProp: 'test'};\n renderDataInfiniteLoader({\n status: 'success',\n hasNextPage: true,\n MoreView,\n moreViewProps,\n });\n expect(MoreView).toHaveBeenCalledWith(expect.objectContaining(moreViewProps), undefined);\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1,116 +0,0 @@
1
- import _objectSpread from "@babel/runtime/helpers/objectSpread2";
2
- import React from 'react';
3
- import { render, screen } from '@testing-library/react';
4
- import { DataLoader } from '../DataLoader';
5
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
- var MockLoadingView = function MockLoadingView() {
7
- return /*#__PURE__*/_jsx("div", {
8
- "data-testid": "loading-view",
9
- children: "Loading..."
10
- });
11
- };
12
- var MockErrorView = function MockErrorView(_ref) {
13
- var error = _ref.error,
14
- action = _ref.action;
15
- return /*#__PURE__*/_jsxs("div", {
16
- "data-testid": "error-view",
17
- children: [error ? "Error: ".concat(error.message) : 'No error', action ? /*#__PURE__*/_jsx("button", {
18
- "data-testid": "error-action",
19
- onClick: action.handler,
20
- children: action.children || 'Retry'
21
- }) : null]
22
- });
23
- };
24
- describe('DataLoader', function () {
25
- var renderDataLoader = function renderDataLoader() {
26
- var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
27
- var defaultProps = {
28
- status: 'success',
29
- error: null,
30
- LoadingView: MockLoadingView,
31
- ErrorView: MockErrorView,
32
- children: /*#__PURE__*/_jsx("div", {
33
- "data-testid": "content",
34
- children: "Content"
35
- })
36
- };
37
- return render(/*#__PURE__*/_jsx(DataLoader, _objectSpread(_objectSpread({}, defaultProps), props)));
38
- };
39
- it('should render children when status is success', function () {
40
- renderDataLoader({
41
- status: 'success'
42
- });
43
- expect(screen.getByTestId('content')).toBeInTheDocument();
44
- expect(screen.queryByTestId('loading-view')).not.toBeInTheDocument();
45
- expect(screen.queryByTestId('error-view')).not.toBeInTheDocument();
46
- });
47
- it('should render LoadingView when status is loading', function () {
48
- renderDataLoader({
49
- status: 'loading'
50
- });
51
- expect(screen.getByTestId('loading-view')).toBeInTheDocument();
52
- expect(screen.queryByTestId('content')).not.toBeInTheDocument();
53
- expect(screen.queryByTestId('error-view')).not.toBeInTheDocument();
54
- });
55
- it('should render ErrorView when status is error', function () {
56
- var error = new Error('Test error');
57
- renderDataLoader({
58
- status: 'error',
59
- error: error
60
- });
61
- expect(screen.getByTestId('error-view')).toBeInTheDocument();
62
- expect(screen.queryByTestId('content')).not.toBeInTheDocument();
63
- expect(screen.queryByTestId('loading-view')).not.toBeInTheDocument();
64
- expect(screen.getByText(/Test error/)).toBeInTheDocument();
65
- });
66
- it('should pass errorAction to ErrorView', function () {
67
- var error = new Error('Test error');
68
- var errorAction = jest.fn();
69
- renderDataLoader({
70
- status: 'error',
71
- error: error,
72
- errorAction: errorAction
73
- });
74
- expect(screen.getByTestId('error-action')).toBeInTheDocument();
75
- });
76
- it('should pass errorAction with custom children to ErrorView', function () {
77
- var error = new Error('Test error');
78
- var errorAction = {
79
- handler: jest.fn(),
80
- children: 'Custom action'
81
- };
82
- renderDataLoader({
83
- status: 'error',
84
- error: error,
85
- errorAction: errorAction
86
- });
87
- expect(screen.getByText('Custom action')).toBeInTheDocument();
88
- });
89
- it('should pass loadingViewProps to LoadingView', function () {
90
- var LoadingView = jest.fn(MockLoadingView);
91
- var loadingViewProps = {
92
- customProp: 'test'
93
- };
94
- renderDataLoader({
95
- status: 'loading',
96
- LoadingView: LoadingView,
97
- loadingViewProps: loadingViewProps
98
- });
99
- expect(LoadingView).toHaveBeenCalledWith(expect.objectContaining(loadingViewProps), undefined);
100
- });
101
- it('should pass errorViewProps to ErrorView', function () {
102
- var ErrorView = jest.fn(MockErrorView);
103
- var errorViewProps = {
104
- customProp: 'test'
105
- };
106
- var error = new Error('Test error');
107
- renderDataLoader({
108
- status: 'error',
109
- error: error,
110
- ErrorView: ErrorView,
111
- errorViewProps: errorViewProps
112
- });
113
- expect(ErrorView).toHaveBeenCalledWith(expect.objectContaining(errorViewProps), undefined);
114
- });
115
- });
116
- // #sourceMappingURL=DataLoader.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["React","render","screen","DataLoader","jsx","_jsx","jsxs","_jsxs","MockLoadingView","children","MockErrorView","_ref","error","action","concat","message","onClick","handler","describe","renderDataLoader","props","arguments","length","undefined","defaultProps","status","LoadingView","ErrorView","_objectSpread","it","expect","getByTestId","toBeInTheDocument","queryByTestId","not","Error","getByText","errorAction","jest","fn","loadingViewProps","customProp","toHaveBeenCalledWith","objectContaining","errorViewProps"],"sources":["DataLoader.test.tsx"],"sourcesContent":["import React from 'react';\n\nimport {render, screen} from '@testing-library/react';\n\nimport type {ErrorViewProps} from '../../types';\nimport {DataLoader} from '../DataLoader';\nimport type {DataLoaderProps} from '../types';\n\nconst MockLoadingView = () => <div data-testid=\"loading-view\">Loading...</div>;\nconst MockErrorView: React.FC<ErrorViewProps<Error>> = ({error, action}) => (\n <div data-testid=\"error-view\">\n {error ? `Error: ${error.message}` : 'No error'}\n {action ? (\n <button data-testid=\"error-action\" onClick={action.handler}>\n {action.children || 'Retry'}\n </button>\n ) : null}\n </div>\n);\n\ndescribe('DataLoader', () => {\n const renderDataLoader = (props: Partial<DataLoaderProps<Error>> = {}) => {\n const defaultProps: DataLoaderProps<Error> = {\n status: 'success',\n error: null,\n LoadingView: MockLoadingView,\n ErrorView: MockErrorView,\n children: <div data-testid=\"content\">Content</div>,\n };\n\n return render(<DataLoader {...defaultProps} {...props} />);\n };\n\n it('should render children when status is success', () => {\n renderDataLoader({status: 'success'});\n expect(screen.getByTestId('content')).toBeInTheDocument();\n expect(screen.queryByTestId('loading-view')).not.toBeInTheDocument();\n expect(screen.queryByTestId('error-view')).not.toBeInTheDocument();\n });\n\n it('should render LoadingView when status is loading', () => {\n renderDataLoader({status: 'loading'});\n expect(screen.getByTestId('loading-view')).toBeInTheDocument();\n expect(screen.queryByTestId('content')).not.toBeInTheDocument();\n expect(screen.queryByTestId('error-view')).not.toBeInTheDocument();\n });\n\n it('should render ErrorView when status is error', () => {\n const error = new Error('Test error');\n renderDataLoader({status: 'error', error});\n expect(screen.getByTestId('error-view')).toBeInTheDocument();\n expect(screen.queryByTestId('content')).not.toBeInTheDocument();\n expect(screen.queryByTestId('loading-view')).not.toBeInTheDocument();\n expect(screen.getByText(/Test error/)).toBeInTheDocument();\n });\n\n it('should pass errorAction to ErrorView', () => {\n const error = new Error('Test error');\n const errorAction = jest.fn();\n renderDataLoader({\n status: 'error',\n error,\n errorAction,\n });\n expect(screen.getByTestId('error-action')).toBeInTheDocument();\n });\n\n it('should pass errorAction with custom children to ErrorView', () => {\n const error = new Error('Test error');\n const errorAction = {\n handler: jest.fn(),\n children: 'Custom action',\n };\n renderDataLoader({\n status: 'error',\n error,\n errorAction,\n });\n expect(screen.getByText('Custom action')).toBeInTheDocument();\n });\n\n it('should pass loadingViewProps to LoadingView', () => {\n const LoadingView = jest.fn(MockLoadingView);\n const loadingViewProps = {customProp: 'test'};\n renderDataLoader({\n status: 'loading',\n LoadingView,\n loadingViewProps,\n });\n expect(LoadingView).toHaveBeenCalledWith(\n expect.objectContaining(loadingViewProps),\n undefined,\n );\n });\n\n it('should pass errorViewProps to ErrorView', () => {\n const ErrorView = jest.fn(MockErrorView);\n const errorViewProps = {customProp: 'test'};\n const error = new Error('Test error');\n renderDataLoader({\n status: 'error',\n error,\n ErrorView,\n errorViewProps,\n });\n expect(ErrorView).toHaveBeenCalledWith(expect.objectContaining(errorViewProps), undefined);\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1,174 +0,0 @@
1
- import _typeof from "@babel/runtime/helpers/typeof";
2
- import { ClientDataManager } from '../ClientDataManager';
3
- describe('QueryNormalizer API', function () {
4
- var dataManager;
5
- beforeEach(function () {
6
- dataManager = new ClientDataManager({
7
- defaultOptions: {
8
- queries: {
9
- retry: false
10
- },
11
- mutations: {
12
- retry: false
13
- }
14
- },
15
- normalizerConfig: {
16
- devLogging: false
17
- }
18
- });
19
- });
20
- afterEach(function () {
21
- dataManager.queryClient.clear();
22
- });
23
- it('should create queryNormalizer with required methods', function () {
24
- var _dataManager$queryNor, _dataManager$queryNor2, _dataManager$queryNor3, _dataManager$queryNor4, _dataManager$queryNor5, _dataManager$queryNor6, _dataManager$queryNor7, _dataManager$queryNor8, _dataManager$queryNor9;
25
- expect(dataManager.queryNormalizer).toBeDefined();
26
- expect((_dataManager$queryNor = dataManager.queryNormalizer) === null || _dataManager$queryNor === void 0 ? void 0 : _dataManager$queryNor.getNormalizedData).toBeDefined();
27
- expect((_dataManager$queryNor2 = dataManager.queryNormalizer) === null || _dataManager$queryNor2 === void 0 ? void 0 : _dataManager$queryNor2.setNormalizedData).toBeDefined();
28
- expect((_dataManager$queryNor3 = dataManager.queryNormalizer) === null || _dataManager$queryNor3 === void 0 ? void 0 : _dataManager$queryNor3.clear).toBeDefined();
29
- expect((_dataManager$queryNor4 = dataManager.queryNormalizer) === null || _dataManager$queryNor4 === void 0 ? void 0 : _dataManager$queryNor4.getObjectById).toBeDefined();
30
- expect((_dataManager$queryNor5 = dataManager.queryNormalizer) === null || _dataManager$queryNor5 === void 0 ? void 0 : _dataManager$queryNor5.getQueryFragment).toBeDefined();
31
- expect((_dataManager$queryNor6 = dataManager.queryNormalizer) === null || _dataManager$queryNor6 === void 0 ? void 0 : _dataManager$queryNor6.getDependentQueries).toBeDefined();
32
- expect((_dataManager$queryNor7 = dataManager.queryNormalizer) === null || _dataManager$queryNor7 === void 0 ? void 0 : _dataManager$queryNor7.getDependentQueriesByIds).toBeDefined();
33
- expect((_dataManager$queryNor8 = dataManager.queryNormalizer) === null || _dataManager$queryNor8 === void 0 ? void 0 : _dataManager$queryNor8.subscribe).toBeDefined();
34
- expect((_dataManager$queryNor9 = dataManager.queryNormalizer) === null || _dataManager$queryNor9 === void 0 ? void 0 : _dataManager$queryNor9.unsubscribe).toBeDefined();
35
- });
36
- it('getNormalizedData should return normalized data', function () {
37
- expect(dataManager.queryNormalizer).toBeDefined();
38
- var data = dataManager.queryNormalizer.getNormalizedData();
39
- expect(data).toBeDefined();
40
- expect(data.objects).toBeDefined();
41
- expect(data.queries).toBeDefined();
42
- });
43
- it('setNormalizedData should update queries', function () {
44
- expect(dataManager.normalizer).toBeDefined();
45
- expect(dataManager.queryNormalizer).toBeDefined();
46
- var queryKey = ['users'];
47
- dataManager.queryClient.setQueryData(queryKey, [{
48
- id: '1',
49
- name: 'Old'
50
- }]);
51
- dataManager.normalizer.setQuery(JSON.stringify(queryKey), [{
52
- id: '1',
53
- name: 'Old'
54
- }]);
55
- dataManager.queryNormalizer.setNormalizedData({
56
- id: '1',
57
- name: 'New'
58
- });
59
- var data = dataManager.queryClient.getQueryData(queryKey);
60
- expect(data[0].name).toBe('New');
61
- });
62
- it('clear should clear normalized data', function () {
63
- expect(dataManager.normalizer).toBeDefined();
64
- expect(dataManager.queryNormalizer).toBeDefined();
65
- var queryKey = ['users'];
66
- dataManager.queryClient.setQueryData(queryKey, [{
67
- id: '1',
68
- name: 'User'
69
- }]);
70
- dataManager.normalizer.setQuery(JSON.stringify(queryKey), [{
71
- id: '1',
72
- name: 'User'
73
- }]);
74
- dataManager.queryNormalizer.clear();
75
- var data = dataManager.queryNormalizer.getNormalizedData();
76
- expect(Object.keys(data.objects)).toHaveLength(0);
77
- });
78
- it('getObjectById should return object by ID', function () {
79
- expect(dataManager.normalizer).toBeDefined();
80
- expect(dataManager.queryNormalizer).toBeDefined();
81
- var queryKey = ['users'];
82
- var userData = [{
83
- id: '1',
84
- name: 'User 1'
85
- }];
86
-
87
- // Add to normalizer
88
- dataManager.normalizer.setQuery(JSON.stringify(queryKey), userData);
89
-
90
- // Get normalized data
91
- var normalized = dataManager.queryNormalizer.getNormalizedData();
92
- expect(Object.keys(normalized.objects).length).toBeGreaterThan(0);
93
-
94
- // getObjectById should be defined and available
95
- expect(dataManager.queryNormalizer.getObjectById).toBeDefined();
96
- expect(_typeof(dataManager.queryNormalizer.getObjectById)).toBe('function');
97
- });
98
- it('getDependentQueries should return dependent queries', function () {
99
- expect(dataManager.normalizer).toBeDefined();
100
- expect(dataManager.queryNormalizer).toBeDefined();
101
- var queryKey1 = ['users'];
102
- var queryKey2 = ['user', '1'];
103
- dataManager.queryClient.setQueryData(queryKey1, [{
104
- id: '1',
105
- name: 'User'
106
- }]);
107
- dataManager.queryClient.setQueryData(queryKey2, {
108
- id: '1',
109
- name: 'User'
110
- });
111
- dataManager.normalizer.setQuery(JSON.stringify(queryKey1), [{
112
- id: '1',
113
- name: 'User'
114
- }]);
115
- dataManager.normalizer.setQuery(JSON.stringify(queryKey2), {
116
- id: '1',
117
- name: 'User'
118
- });
119
- var dependentQueries = dataManager.queryNormalizer.getDependentQueries({
120
- id: '1',
121
- name: 'Updated'
122
- });
123
- expect(dependentQueries.length).toBeGreaterThan(0);
124
- });
125
- it('getDependentQueriesByIds should be available', function () {
126
- expect(dataManager.queryNormalizer).toBeDefined();
127
-
128
- // getDependentQueriesByIds should be defined and available
129
- expect(dataManager.queryNormalizer.getDependentQueriesByIds).toBeDefined();
130
- expect(_typeof(dataManager.queryNormalizer.getDependentQueriesByIds)).toBe('function');
131
-
132
- // Call with empty array should not throw
133
- var result = dataManager.queryNormalizer.getDependentQueriesByIds([]);
134
- expect(Array.isArray(result)).toBe(true);
135
- });
136
- it('should not create queryNormalizer when normalizerConfig is false', function () {
137
- var dmWithoutNormalizer = new ClientDataManager({
138
- normalizerConfig: false
139
- });
140
- expect(dmWithoutNormalizer.normalizer).toBeUndefined();
141
- expect(dmWithoutNormalizer.queryNormalizer).toBeUndefined();
142
- });
143
- it('should not create queryNormalizer when normalizerConfig is undefined', function () {
144
- var dmWithoutNormalizer = new ClientDataManager({});
145
- expect(dmWithoutNormalizer.normalizer).toBeUndefined();
146
- expect(dmWithoutNormalizer.queryNormalizer).toBeUndefined();
147
- });
148
- it('should create queryNormalizer when normalizerConfig is true', function () {
149
- var dmWithNormalizer = new ClientDataManager({
150
- normalizerConfig: true
151
- });
152
- expect(dmWithNormalizer.normalizer).toBeDefined();
153
- expect(dmWithNormalizer.queryNormalizer).toBeDefined();
154
- });
155
- it('should work correctly with optimisticUpdate via setNormalizedData', function () {
156
- expect(dataManager.normalizer).toBeDefined();
157
- expect(dataManager.queryNormalizer).toBeDefined();
158
- var queryKey = ['users'];
159
- var initialData = [{
160
- id: '1',
161
- name: 'Old Name'
162
- }];
163
- dataManager.queryClient.setQueryData(queryKey, initialData);
164
- dataManager.normalizer.setQuery(JSON.stringify(queryKey), initialData);
165
- var mutationData = {
166
- id: '1',
167
- name: 'New Name'
168
- };
169
- dataManager.queryNormalizer.setNormalizedData(mutationData);
170
- var updatedData = dataManager.queryClient.getQueryData(queryKey);
171
- expect(updatedData[0].name).toBe('New Name');
172
- });
173
- });
174
- // #sourceMappingURL=createQueryNormalizer.test.js.map