@goatlab/fluent 0.7.39 → 0.7.41

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 (276) hide show
  1. package/dist/BaseConnector.d.ts +112 -0
  2. package/dist/BaseConnector.js +347 -0
  3. package/dist/BaseConnector.js.map +1 -0
  4. package/dist/Fluent.d.ts +11 -0
  5. package/dist/Fluent.js +27 -0
  6. package/dist/Fluent.js.map +1 -0
  7. package/dist/FluentConnectorInterface.d.ts +17 -0
  8. package/dist/FluentConnectorInterface.js +3 -0
  9. package/dist/FluentConnectorInterface.js.map +1 -0
  10. package/dist/FluentEntity.d.ts +7 -0
  11. package/dist/FluentEntity.js +34 -0
  12. package/dist/FluentEntity.js.map +1 -0
  13. package/dist/TypeOrmConnector/TypeOrmConnector.d.ts +123 -0
  14. package/dist/TypeOrmConnector/TypeOrmConnector.js +765 -0
  15. package/dist/TypeOrmConnector/TypeOrmConnector.js.map +1 -0
  16. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoBaseAggregations.d.ts +12 -0
  17. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoBaseAggregations.js +167 -0
  18. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoBaseAggregations.js.map +1 -0
  19. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoFindAggregatedQuery.d.ts +11 -0
  20. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoFindAggregatedQuery.js +52 -0
  21. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoFindAggregatedQuery.js.map +1 -0
  22. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoOrderBy.d.ts +4 -0
  23. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoOrderBy.js +20 -0
  24. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoOrderBy.js.map +1 -0
  25. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoSelect.d.ts +7 -0
  26. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoSelect.js +19 -0
  27. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoSelect.js.map +1 -0
  28. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoWhere.d.ts +11 -0
  29. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoWhere.js +173 -0
  30. package/dist/TypeOrmConnector/queryBuilder/mongodb/getMongoWhere.js.map +1 -0
  31. package/dist/TypeOrmConnector/queryBuilder/sql/getQueryBuilderWhere.d.ts +13 -0
  32. package/dist/TypeOrmConnector/queryBuilder/sql/getQueryBuilderWhere.js +207 -0
  33. package/dist/TypeOrmConnector/queryBuilder/sql/getQueryBuilderWhere.js.map +1 -0
  34. package/dist/TypeOrmConnector/queryBuilder/sql/getTypeOrmWhere.d.ts +11 -0
  35. package/dist/TypeOrmConnector/queryBuilder/sql/getTypeOrmWhere.js +214 -0
  36. package/dist/TypeOrmConnector/queryBuilder/sql/getTypeOrmWhere.js.map +1 -0
  37. package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.d.ts +44 -0
  38. package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.js +87 -0
  39. package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.js.map +1 -0
  40. package/dist/TypeOrmConnector/test/basic/goat.entity.d.ts +38 -0
  41. package/dist/TypeOrmConnector/test/basic/goat.entity.js +82 -0
  42. package/dist/TypeOrmConnector/test/basic/goat.entity.js.map +1 -0
  43. package/dist/TypeOrmConnector/test/flock.d.ts +4 -0
  44. package/dist/TypeOrmConnector/test/flock.js +26 -0
  45. package/dist/TypeOrmConnector/test/flock.js.map +1 -0
  46. package/dist/TypeOrmConnector/util/clearEmpties.d.ts +7 -0
  47. package/dist/TypeOrmConnector/util/clearEmpties.js +33 -0
  48. package/dist/TypeOrmConnector/util/clearEmpties.js.map +1 -0
  49. package/dist/TypeOrmConnector/util/extractConditions.d.ts +12 -0
  50. package/dist/TypeOrmConnector/util/extractConditions.js +89 -0
  51. package/dist/TypeOrmConnector/util/extractConditions.js.map +1 -0
  52. package/dist/TypeOrmConnector/util/extractInclude.d.ts +2 -0
  53. package/dist/TypeOrmConnector/util/extractInclude.js +26 -0
  54. package/dist/TypeOrmConnector/util/extractInclude.js.map +1 -0
  55. package/dist/TypeOrmConnector/util/extractMetadataFromKeys.d.ts +12 -0
  56. package/dist/TypeOrmConnector/util/extractMetadataFromKeys.js +49 -0
  57. package/dist/TypeOrmConnector/util/extractMetadataFromKeys.js.map +1 -0
  58. package/dist/TypeOrmConnector/util/extractOrderBy.d.ts +2 -0
  59. package/dist/TypeOrmConnector/util/extractOrderBy.js +24 -0
  60. package/dist/TypeOrmConnector/util/extractOrderBy.js.map +1 -0
  61. package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.d.ts +19 -0
  62. package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.js +27 -0
  63. package/dist/TypeOrmConnector/util/getRelationsFromModelGenerator.js.map +1 -0
  64. package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.d.ts +6 -0
  65. package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.js +29 -0
  66. package/dist/TypeOrmConnector/util/getSelectedKeysFromRawSql.js.map +1 -0
  67. package/dist/TypeOrmConnector/util/isAnyObject.d.ts +1 -0
  68. package/dist/TypeOrmConnector/util/isAnyObject.js +8 -0
  69. package/dist/TypeOrmConnector/util/isAnyObject.js.map +1 -0
  70. package/dist/TypeOrmConnector/util/nestQueryResults.d.ts +2 -0
  71. package/dist/TypeOrmConnector/util/nestQueryResults.js +38 -0
  72. package/dist/TypeOrmConnector/util/nestQueryResults.js.map +1 -0
  73. package/dist/core/Loopback/build-schema.d.ts +148 -0
  74. package/dist/core/Loopback/build-schema.js +443 -0
  75. package/dist/core/Loopback/build-schema.js.map +1 -0
  76. package/dist/core/Loopback/common-types.d.ts +96 -0
  77. package/dist/core/Loopback/common-types.js +24 -0
  78. package/dist/core/Loopback/common-types.js.map +1 -0
  79. package/dist/core/Loopback/json-to-schema.d.ts +41 -0
  80. package/dist/core/Loopback/json-to-schema.js +113 -0
  81. package/dist/core/Loopback/json-to-schema.js.map +1 -0
  82. package/dist/core/Loopback/mapValues.js +2280 -0
  83. package/dist/core/Loopback/metadata.d.ts +16 -0
  84. package/dist/core/Loopback/metadata.js +49 -0
  85. package/dist/core/Loopback/metadata.js.map +1 -0
  86. package/dist/core/Loopback/model.d.ts +233 -0
  87. package/dist/core/Loopback/model.js +394 -0
  88. package/dist/core/Loopback/model.js.map +1 -0
  89. package/dist/core/Loopback/query.d.ts +394 -0
  90. package/dist/core/Loopback/query.js +484 -0
  91. package/dist/core/Loopback/query.js.map +1 -0
  92. package/dist/core/Loopback/relation.types.d.ts +141 -0
  93. package/dist/core/Loopback/relation.types.js +18 -0
  94. package/dist/core/Loopback/relation.types.js.map +1 -0
  95. package/dist/core/Loopback/type-resolver.d.ts +42 -0
  96. package/dist/core/Loopback/type-resolver.js +60 -0
  97. package/dist/core/Loopback/type-resolver.js.map +1 -0
  98. package/dist/core/Loopback/type.d.ts +38 -0
  99. package/dist/core/Loopback/type.js +7 -0
  100. package/dist/core/Loopback/type.js.map +1 -0
  101. package/dist/core/Nestjs/applyDecorators.d.ts +10 -0
  102. package/dist/core/Nestjs/applyDecorators.js +26 -0
  103. package/dist/core/Nestjs/applyDecorators.js.map +1 -0
  104. package/dist/core/Nestjs/types/common.d.ts +16 -0
  105. package/dist/core/Nestjs/types/common.js +38 -0
  106. package/dist/core/Nestjs/types/common.js.map +1 -0
  107. package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.d.ts +1 -0
  108. package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.js +8 -0
  109. package/dist/core/Nestjs/types/decorators/api-hide-property.decorator.js.map +1 -0
  110. package/dist/core/Nestjs/types/decorators/api-property.decorator.d.ts +27 -0
  111. package/dist/core/Nestjs/types/decorators/api-property.decorator.js +66 -0
  112. package/dist/core/Nestjs/types/decorators/api-property.decorator.js.map +1 -0
  113. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.d.ts +5 -0
  114. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.js +136 -0
  115. package/dist/core/Nestjs/types/decorators/apply-is-optional.decorator.js.map +1 -0
  116. package/dist/core/Nestjs/types/decorators/args-type.decorator.d.ts +4 -0
  117. package/dist/core/Nestjs/types/decorators/args-type.decorator.js +24 -0
  118. package/dist/core/Nestjs/types/decorators/args-type.decorator.js.map +1 -0
  119. package/dist/core/Nestjs/types/decorators/create-property.decorator.d.ts +2 -0
  120. package/dist/core/Nestjs/types/decorators/create-property.decorator.js +55 -0
  121. package/dist/core/Nestjs/types/decorators/create-property.decorator.js.map +1 -0
  122. package/dist/core/Nestjs/types/decorators/directive.decorator.d.ts +4 -0
  123. package/dist/core/Nestjs/types/decorators/directive.decorator.js +39 -0
  124. package/dist/core/Nestjs/types/decorators/directive.decorator.js.map +1 -0
  125. package/dist/core/Nestjs/types/decorators/extensions.decorator.d.ts +4 -0
  126. package/dist/core/Nestjs/types/decorators/extensions.decorator.js +28 -0
  127. package/dist/core/Nestjs/types/decorators/extensions.decorator.js.map +1 -0
  128. package/dist/core/Nestjs/types/decorators/field.decorator.d.ts +48 -0
  129. package/dist/core/Nestjs/types/decorators/field.decorator.js +63 -0
  130. package/dist/core/Nestjs/types/decorators/field.decorator.js.map +1 -0
  131. package/dist/core/Nestjs/types/decorators/input-type.decorator.d.ts +25 -0
  132. package/dist/core/Nestjs/types/decorators/input-type.decorator.js +29 -0
  133. package/dist/core/Nestjs/types/decorators/input-type.decorator.js.map +1 -0
  134. package/dist/core/Nestjs/types/decorators/interface-type.decorator.d.ts +33 -0
  135. package/dist/core/Nestjs/types/decorators/interface-type.decorator.js +35 -0
  136. package/dist/core/Nestjs/types/decorators/interface-type.decorator.js.map +1 -0
  137. package/dist/core/Nestjs/types/decorators/partial-type.helper.d.ts +3 -0
  138. package/dist/core/Nestjs/types/decorators/partial-type.helper.js +46 -0
  139. package/dist/core/Nestjs/types/decorators/partial-type.helper.js.map +1 -0
  140. package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.d.ts +3 -0
  141. package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.js +10 -0
  142. package/dist/core/Nestjs/types/errors/cannot-determine-host-type.error.js.map +1 -0
  143. package/dist/core/Nestjs/types/errors/directive-parsing.error.d.ts +3 -0
  144. package/dist/core/Nestjs/types/errors/directive-parsing.error.js +10 -0
  145. package/dist/core/Nestjs/types/errors/directive-parsing.error.js.map +1 -0
  146. package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.d.ts +3 -0
  147. package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.js +10 -0
  148. package/dist/core/Nestjs/types/errors/unable-to-find-fields.error.js.map +1 -0
  149. package/dist/core/Nestjs/types/errors/undefined-type.error.d.ts +3 -0
  150. package/dist/core/Nestjs/types/errors/undefined-type.error.js +11 -0
  151. package/dist/core/Nestjs/types/errors/undefined-type.error.js.map +1 -0
  152. package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.d.ts +3 -0
  153. package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.js +11 -0
  154. package/dist/core/Nestjs/types/interfaces/add-class-type-metadata.util.js.map +1 -0
  155. package/dist/core/Nestjs/types/interfaces/base-type-options.interface.d.ts +11 -0
  156. package/dist/core/Nestjs/types/interfaces/base-type-options.interface.js +3 -0
  157. package/dist/core/Nestjs/types/interfaces/base-type-options.interface.js.map +1 -0
  158. package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.d.ts +5 -0
  159. package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.js +3 -0
  160. package/dist/core/Nestjs/types/interfaces/class-decorator-factory.interface.js.map +1 -0
  161. package/dist/core/Nestjs/types/interfaces/complexity.interface.d.ts +11 -0
  162. package/dist/core/Nestjs/types/interfaces/complexity.interface.js +3 -0
  163. package/dist/core/Nestjs/types/interfaces/complexity.interface.js.map +1 -0
  164. package/dist/core/Nestjs/types/interfaces/field-middleware.interface.d.ts +15 -0
  165. package/dist/core/Nestjs/types/interfaces/field-middleware.interface.js +3 -0
  166. package/dist/core/Nestjs/types/interfaces/field-middleware.interface.js.map +1 -0
  167. package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.d.ts +239 -0
  168. package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.js +7 -0
  169. package/dist/core/Nestjs/types/interfaces/open-api-spec.interface.js.map +1 -0
  170. package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.d.ts +2 -0
  171. package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.js +3 -0
  172. package/dist/core/Nestjs/types/interfaces/resolve-type-fn.interface.js.map +1 -0
  173. package/dist/core/Nestjs/types/interfaces/return-type-func.interface.d.ts +5 -0
  174. package/dist/core/Nestjs/types/interfaces/return-type-func.interface.js +3 -0
  175. package/dist/core/Nestjs/types/interfaces/return-type-func.interface.js.map +1 -0
  176. package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.d.ts +9 -0
  177. package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.js +3 -0
  178. package/dist/core/Nestjs/types/interfaces/schema-object-metadata.interface.js.map +1 -0
  179. package/dist/core/Nestjs/types/interfaces/type-options.interface.d.ts +5 -0
  180. package/dist/core/Nestjs/types/interfaces/type-options.interface.js +3 -0
  181. package/dist/core/Nestjs/types/interfaces/type-options.interface.js.map +1 -0
  182. package/dist/core/Nestjs/types/lazy-metadata.storage.d.ts +15 -0
  183. package/dist/core/Nestjs/types/lazy-metadata.storage.js +66 -0
  184. package/dist/core/Nestjs/types/lazy-metadata.storage.js.map +1 -0
  185. package/dist/core/Nestjs/types/metadata/class.metadata.d.ts +11 -0
  186. package/dist/core/Nestjs/types/metadata/class.metadata.js +3 -0
  187. package/dist/core/Nestjs/types/metadata/class.metadata.js.map +1 -0
  188. package/dist/core/Nestjs/types/metadata/directive.metadata.d.ts +8 -0
  189. package/dist/core/Nestjs/types/metadata/directive.metadata.js +3 -0
  190. package/dist/core/Nestjs/types/metadata/directive.metadata.js.map +1 -0
  191. package/dist/core/Nestjs/types/metadata/enum.metadata.d.ts +11 -0
  192. package/dist/core/Nestjs/types/metadata/enum.metadata.js +3 -0
  193. package/dist/core/Nestjs/types/metadata/enum.metadata.js.map +1 -0
  194. package/dist/core/Nestjs/types/metadata/extensions.metadata.d.ts +8 -0
  195. package/dist/core/Nestjs/types/metadata/extensions.metadata.js +3 -0
  196. package/dist/core/Nestjs/types/metadata/extensions.metadata.js.map +1 -0
  197. package/dist/core/Nestjs/types/metadata/index.d.ts +8 -0
  198. package/dist/core/Nestjs/types/metadata/index.js +12 -0
  199. package/dist/core/Nestjs/types/metadata/index.js.map +1 -0
  200. package/dist/core/Nestjs/types/metadata/interface.metadata.d.ts +6 -0
  201. package/dist/core/Nestjs/types/metadata/interface.metadata.js +3 -0
  202. package/dist/core/Nestjs/types/metadata/interface.metadata.js.map +1 -0
  203. package/dist/core/Nestjs/types/metadata/object-type.metadata.d.ts +4 -0
  204. package/dist/core/Nestjs/types/metadata/object-type.metadata.js +3 -0
  205. package/dist/core/Nestjs/types/metadata/object-type.metadata.js.map +1 -0
  206. package/dist/core/Nestjs/types/metadata/param.metadata.d.ts +18 -0
  207. package/dist/core/Nestjs/types/metadata/param.metadata.js +3 -0
  208. package/dist/core/Nestjs/types/metadata/param.metadata.js.map +1 -0
  209. package/dist/core/Nestjs/types/metadata/property.metadata.d.ts +20 -0
  210. package/dist/core/Nestjs/types/metadata/property.metadata.js +3 -0
  211. package/dist/core/Nestjs/types/metadata/property.metadata.js.map +1 -0
  212. package/dist/core/Nestjs/types/metadata/resolver.metadata.d.ts +34 -0
  213. package/dist/core/Nestjs/types/metadata/resolver.metadata.js +3 -0
  214. package/dist/core/Nestjs/types/metadata/resolver.metadata.js.map +1 -0
  215. package/dist/core/Nestjs/types/metadata/union.metadata.d.ts +9 -0
  216. package/dist/core/Nestjs/types/metadata/union.metadata.js +3 -0
  217. package/dist/core/Nestjs/types/metadata/union.metadata.js.map +1 -0
  218. package/dist/core/Nestjs/types/object-type.decorator.d.ts +32 -0
  219. package/dist/core/Nestjs/types/object-type.decorator.js +33 -0
  220. package/dist/core/Nestjs/types/object-type.decorator.js.map +1 -0
  221. package/dist/core/Nestjs/types/omit-type.d.ts +2 -0
  222. package/dist/core/Nestjs/types/omit-type.js +34 -0
  223. package/dist/core/Nestjs/types/omit-type.js.map +1 -0
  224. package/dist/core/Nestjs/types/reflection.utils.d.ts +15 -0
  225. package/dist/core/Nestjs/types/reflection.utils.js +65 -0
  226. package/dist/core/Nestjs/types/reflection.utils.js.map +1 -0
  227. package/dist/core/Nestjs/types/set-metadata.decorator.d.ts +20 -0
  228. package/dist/core/Nestjs/types/set-metadata.decorator.js +33 -0
  229. package/dist/core/Nestjs/types/set-metadata.decorator.js.map +1 -0
  230. package/dist/core/Nestjs/types/type-metadata.storage.d.ts +73 -0
  231. package/dist/core/Nestjs/types/type-metadata.storage.js +349 -0
  232. package/dist/core/Nestjs/types/type-metadata.storage.js.map +1 -0
  233. package/dist/core/Nestjs/types/utils/enum.utils.d.ts +3 -0
  234. package/dist/core/Nestjs/types/utils/enum.utils.js +31 -0
  235. package/dist/core/Nestjs/types/utils/enum.utils.js.map +1 -0
  236. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.d.ts +13 -0
  237. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.js +72 -0
  238. package/dist/core/Nestjs/types/utils/get-fields-and-decorator.util.js.map +1 -0
  239. package/dist/core/Nestjs/types/utils/mapped-types.utils.d.ts +2 -0
  240. package/dist/core/Nestjs/types/utils/mapped-types.utils.js +38 -0
  241. package/dist/core/Nestjs/types/utils/mapped-types.utils.js.map +1 -0
  242. package/dist/core/Nestjs/types/utils/model-properties-accessor.d.ts +6 -0
  243. package/dist/core/Nestjs/types/utils/model-properties-accessor.js +37 -0
  244. package/dist/core/Nestjs/types/utils/model-properties-accessor.js.map +1 -0
  245. package/dist/core/Nestjs/types/utils/type-helpers.utils.d.ts +2 -0
  246. package/dist/core/Nestjs/types/utils/type-helpers.utils.js +16 -0
  247. package/dist/core/Nestjs/types/utils/type-helpers.utils.js.map +1 -0
  248. package/dist/core/types.d.ts +23 -0
  249. package/dist/core/types.js +31 -0
  250. package/dist/core/types.js.map +1 -0
  251. package/dist/decorators.d.ts +92 -0
  252. package/dist/decorators.js +163 -0
  253. package/dist/decorators.js.map +1 -0
  254. package/dist/generatorDatasource.d.ts +2 -0
  255. package/dist/generatorDatasource.js +13 -0
  256. package/dist/generatorDatasource.js.map +1 -0
  257. package/dist/index.d.ts +34 -0
  258. package/dist/index.js +59 -0
  259. package/dist/index.js.map +1 -0
  260. package/dist/loadRelations.d.ts +12 -0
  261. package/dist/loadRelations.js +139 -0
  262. package/dist/loadRelations.js.map +1 -0
  263. package/dist/outputKeys.d.ts +2 -0
  264. package/dist/outputKeys.js +18 -0
  265. package/dist/outputKeys.js.map +1 -0
  266. package/dist/testing/genericUnifiedTestSuite.d.ts +21 -0
  267. package/dist/testing/genericUnifiedTestSuite.js +256 -0
  268. package/dist/testing/genericUnifiedTestSuite.js.map +1 -0
  269. package/dist/testing/unifiedTestFactory.d.ts +38 -0
  270. package/dist/testing/unifiedTestFactory.js +297 -0
  271. package/dist/testing/unifiedTestFactory.js.map +1 -0
  272. package/dist/tsconfig.tsbuildinfo +1 -0
  273. package/dist/types.d.ts +104 -0
  274. package/dist/types.js +23 -0
  275. package/dist/types.js.map +1 -0
  276. package/package.json +48 -24
@@ -0,0 +1,21 @@
1
+ interface TestConnector {
2
+ insert(data: any): Promise<any>;
3
+ insertMany(data: any[]): Promise<any[]>;
4
+ findById(id: string, query?: any): Promise<any>;
5
+ findByIds(ids: string[], query?: any): Promise<any[]>;
6
+ findMany(query?: any): Promise<any[]>;
7
+ findFirst(query?: any): Promise<any>;
8
+ requireFirst(query?: any): Promise<any>;
9
+ updateById(id: string, data: any): Promise<any>;
10
+ replaceById(id: string, data: any): Promise<any>;
11
+ deleteById(id: string): Promise<string>;
12
+ clear(): Promise<boolean>;
13
+ pluck(field: string): Promise<any[]>;
14
+ }
15
+ export interface GenericUnifiedTestOptions {
16
+ createGoatConnector: () => TestConnector;
17
+ createTypeOrmConnector: () => TestConnector;
18
+ dbType: 'mysql' | 'postgresql' | 'mongodb' | 'sqlite' | 'firebase' | 'formio' | 'loki' | 'pouchdb';
19
+ }
20
+ export declare const genericUnifiedTestSuite: (options: GenericUnifiedTestOptions) => void;
21
+ export {};
@@ -0,0 +1,256 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.genericUnifiedTestSuite = void 0;
4
+ const vitest_1 = require("vitest");
5
+ const flock_1 = require("../TypeOrmConnector/test/flock");
6
+ const genericUnifiedTestSuite = (options) => {
7
+ const { createGoatConnector, createTypeOrmConnector, dbType } = options;
8
+ let GoatRepo;
9
+ let TypeOrmRepo;
10
+ (0, vitest_1.beforeAll)(() => {
11
+ GoatRepo = createGoatConnector();
12
+ TypeOrmRepo = createTypeOrmConnector();
13
+ });
14
+ (0, vitest_1.describe)('Basic Tests', () => {
15
+ (0, vitest_1.beforeEach)(async () => {
16
+ // Clear data before each test to ensure clean state
17
+ await GoatRepo.clear();
18
+ });
19
+ (0, vitest_1.it)('insert - Should insert data', async () => {
20
+ const a = await GoatRepo.insert({ name: 'myGoat', age: 13 });
21
+ (0, vitest_1.expect)(typeof a.id).toBe('string');
22
+ (0, vitest_1.expect)(a.name).toBe('myGoat');
23
+ });
24
+ (0, vitest_1.it)('insert - Should insert data with customId', async () => {
25
+ const customId = dbType === 'postgresql'
26
+ ? '550e8400-e29b-41d4-a716-446655440000'
27
+ : '631ce4304f9183f61ffb613a';
28
+ const a = await GoatRepo.insert({
29
+ id: customId,
30
+ name: 'myGoat',
31
+ age: 13
32
+ });
33
+ (0, vitest_1.expect)(typeof a.id).toBe('string');
34
+ (0, vitest_1.expect)(a.id).toBe(customId);
35
+ });
36
+ (0, vitest_1.it)('insertMany - Should insert Multiple elements', async () => {
37
+ const insertedFlock = await GoatRepo.insertMany(flock_1.flock);
38
+ (0, vitest_1.expect)(insertedFlock[0].name).toBe('Goatee');
39
+ });
40
+ (0, vitest_1.it)('findById - Should GET an object by its ID', async () => {
41
+ const goats = await GoatRepo.insertMany(flock_1.flock);
42
+ const goat = await GoatRepo.findById(goats[0].id);
43
+ (0, vitest_1.expect)(goat?.id).toBe(goats[0].id);
44
+ (0, vitest_1.expect)(typeof goat?.id).toBe('string');
45
+ const anotherGoat = await GoatRepo.findById('507f1f77bcf86cd799439011');
46
+ (0, vitest_1.expect)(anotherGoat).toBe(null);
47
+ });
48
+ (0, vitest_1.it)('findById - Should GET selected Data', async () => {
49
+ const goats = await GoatRepo.insertMany(flock_1.flock);
50
+ const goat = await GoatRepo.findById(goats[0].id, {
51
+ select: { name: true }
52
+ });
53
+ (0, vitest_1.expect)(goat?.name).toBe(goats[0].name);
54
+ (0, vitest_1.expect)(goat?.age).toBeUndefined();
55
+ });
56
+ (0, vitest_1.it)('findByIds - Should GET data', async () => {
57
+ const goats = await GoatRepo.insertMany(flock_1.flock);
58
+ const storedGoats = await GoatRepo.findByIds([goats[0].id, goats[1].id]);
59
+ (0, vitest_1.expect)(storedGoats.length).toBe(2);
60
+ });
61
+ (0, vitest_1.it)('findByIds - Should GET selectedData', async () => {
62
+ const goats = await GoatRepo.insertMany(flock_1.flock);
63
+ const storedGoats = await GoatRepo.findByIds([goats[0].id, goats[1].id], { select: { name: true } });
64
+ (0, vitest_1.expect)(storedGoats[0]?.name).toBe(goats[0].name);
65
+ (0, vitest_1.expect)(storedGoats[0]?.age).toBeUndefined();
66
+ });
67
+ (0, vitest_1.it)('findMany - Should GET data', async () => {
68
+ await GoatRepo.insertMany(flock_1.flock);
69
+ const goats = await GoatRepo.findMany();
70
+ (0, vitest_1.expect)(goats.length).toBeGreaterThanOrEqual(flock_1.flock.length);
71
+ });
72
+ (0, vitest_1.it)('findMany - Should FILTER data', async () => {
73
+ await GoatRepo.insertMany(flock_1.flock);
74
+ const goats = await GoatRepo.findMany({
75
+ where: { breed: { family: 'Angora' } }
76
+ });
77
+ (0, vitest_1.expect)(goats.length).toBe(2);
78
+ });
79
+ (0, vitest_1.it)('findMany - Should FILTER not existing data', async () => {
80
+ await GoatRepo.insertMany(flock_1.flock);
81
+ const goats = await GoatRepo.findMany({
82
+ where: { name: 'TESTESTEST' }
83
+ });
84
+ (0, vitest_1.expect)(goats.length).toBe(0);
85
+ });
86
+ (0, vitest_1.it)('findMany - Should SELECT attributes', async () => {
87
+ await GoatRepo.insertMany(flock_1.flock);
88
+ const goats = await GoatRepo.findMany({
89
+ select: { name: true }
90
+ });
91
+ (0, vitest_1.expect)(goats[0]?.name).toBeDefined();
92
+ (0, vitest_1.expect)(goats[0]?.age).toBeUndefined();
93
+ });
94
+ (0, vitest_1.it)('findFirst - Should get only 1 object back', async () => {
95
+ await GoatRepo.insertMany(flock_1.flock);
96
+ const goat = await GoatRepo.findFirst();
97
+ (0, vitest_1.expect)(goat).toBeDefined();
98
+ (0, vitest_1.expect)(goat?.name).toBeDefined();
99
+ });
100
+ (0, vitest_1.it)('findFirst - Should FILTER AND SELECT DATA', async () => {
101
+ await GoatRepo.insertMany(flock_1.flock);
102
+ const goat = await GoatRepo.findFirst({
103
+ where: { breed: { family: 'Angora' } },
104
+ select: { name: true }
105
+ });
106
+ (0, vitest_1.expect)(goat?.name).toBeDefined();
107
+ (0, vitest_1.expect)(goat?.age).toBeUndefined();
108
+ });
109
+ (0, vitest_1.it)('requireFirst - Should fail if not found', async () => {
110
+ await (0, vitest_1.expect)(GoatRepo.requireFirst()).rejects.toThrow();
111
+ });
112
+ (0, vitest_1.it)('requireFirst - Should find first item', async () => {
113
+ await GoatRepo.insertMany(flock_1.flock);
114
+ const goat = await GoatRepo.requireFirst();
115
+ (0, vitest_1.expect)(goat).toBeDefined();
116
+ (0, vitest_1.expect)(goat.name).toBeDefined();
117
+ });
118
+ (0, vitest_1.it)('UpdateById - Should Update a single element', async () => {
119
+ const goats = await GoatRepo.insertMany(flock_1.flock);
120
+ await GoatRepo.updateById(goats[0].id, { name: 'MyNewName' });
121
+ const goat = await GoatRepo.findById(goats[0].id);
122
+ (0, vitest_1.expect)(goat?.name).toBe('MyNewName');
123
+ });
124
+ (0, vitest_1.it)('ReplaceById - Should Update a single element', async () => {
125
+ const goats = await GoatRepo.insertMany(flock_1.flock);
126
+ await GoatRepo.replaceById(goats[0].id, { name: 'MyNewName' });
127
+ const goat = await GoatRepo.findById(goats[0].id);
128
+ (0, vitest_1.expect)(goat?.name).toBe('MyNewName');
129
+ (0, vitest_1.expect)(goat?.age).toBeUndefined();
130
+ });
131
+ (0, vitest_1.it)('deleteById - Should delete an item', async () => {
132
+ const goats = await GoatRepo.insertMany(flock_1.flock);
133
+ const id = await GoatRepo.deleteById(goats[0].id);
134
+ (0, vitest_1.expect)(id).toBe(goats[0].id);
135
+ const findDeleted = await GoatRepo.findById(goats[0].id);
136
+ (0, vitest_1.expect)(findDeleted).toBe(null);
137
+ });
138
+ });
139
+ (0, vitest_1.describe)('Advanced Tests', () => {
140
+ (0, vitest_1.beforeEach)(async () => {
141
+ await TypeOrmRepo.clear();
142
+ });
143
+ (0, vitest_1.it)('Should get local data', async () => {
144
+ await TypeOrmRepo.insert({ test: true });
145
+ const value = await TypeOrmRepo.findFirst();
146
+ (0, vitest_1.expect)(value?.test).toBe(true);
147
+ });
148
+ (0, vitest_1.it)('pluck() should return a single array', async () => {
149
+ await TypeOrmRepo.insertMany([
150
+ { test: true, order: 2 },
151
+ { test: false, order: 3 },
152
+ { test: true, order: 1 }
153
+ ]);
154
+ const plucked = await TypeOrmRepo.pluck('order');
155
+ (0, vitest_1.expect)(Array.isArray(plucked)).toBe(true);
156
+ (0, vitest_1.expect)(plucked).toContain(1);
157
+ (0, vitest_1.expect)(plucked).toContain(2);
158
+ (0, vitest_1.expect)(plucked).toContain(3);
159
+ });
160
+ (0, vitest_1.it)('limit() should limit the amount of results', async () => {
161
+ await TypeOrmRepo.insertMany([
162
+ { test: true },
163
+ { test: false },
164
+ { test: true }
165
+ ]);
166
+ const results = await TypeOrmRepo.findMany({ limit: 2 });
167
+ (0, vitest_1.expect)(results.length).toBe(2);
168
+ });
169
+ (0, vitest_1.it)('offset() should start at the given position', async () => {
170
+ const inserted = await TypeOrmRepo.insertMany([
171
+ { test: true, order: 1 },
172
+ { test: false, order: 2 },
173
+ { test: true, order: 3 }
174
+ ]);
175
+ const results = await TypeOrmRepo.findMany({
176
+ offset: 1,
177
+ orderBy: [{ order: 'asc' }]
178
+ });
179
+ (0, vitest_1.expect)(results.length).toBe(2);
180
+ (0, vitest_1.expect)(results[0].order).toBe(2);
181
+ });
182
+ (0, vitest_1.it)('orWhere() should filter the data', async () => {
183
+ await TypeOrmRepo.insertMany([
184
+ { test: true, order: 1 },
185
+ { test: false, order: 2 },
186
+ { test: true, order: 3 }
187
+ ]);
188
+ const results = await TypeOrmRepo.findMany({
189
+ where: {
190
+ OR: [
191
+ { test: true },
192
+ { order: 2 }
193
+ ]
194
+ }
195
+ });
196
+ (0, vitest_1.expect)(results.length).toBe(3);
197
+ });
198
+ (0, vitest_1.it)('orderBy() should order results desc', async () => {
199
+ await TypeOrmRepo.insertMany([
200
+ { test: true, order: 2 },
201
+ { test: false, order: 3 },
202
+ { test: true, order: 1 }
203
+ ]);
204
+ const results = await TypeOrmRepo.findMany({
205
+ orderBy: [{ order: 'desc' }]
206
+ });
207
+ (0, vitest_1.expect)(results[0].order).toBe(3);
208
+ (0, vitest_1.expect)(results[1].order).toBe(2);
209
+ (0, vitest_1.expect)(results[2].order).toBe(1);
210
+ });
211
+ (0, vitest_1.it)('orderBy() should order results asc', async () => {
212
+ await TypeOrmRepo.insertMany([
213
+ { test: true, order: 2 },
214
+ { test: false, order: 3 },
215
+ { test: true, order: 1 }
216
+ ]);
217
+ const results = await TypeOrmRepo.findMany({
218
+ orderBy: [{ order: 'asc' }]
219
+ });
220
+ (0, vitest_1.expect)(results[0].order).toBe(1);
221
+ (0, vitest_1.expect)(results[1].order).toBe(2);
222
+ (0, vitest_1.expect)(results[2].order).toBe(3);
223
+ });
224
+ (0, vitest_1.it)('orderBy() should order by Dates with Select()', async () => {
225
+ await new Promise(resolve => setTimeout(resolve, 10));
226
+ const first = await TypeOrmRepo.insert({ test: true });
227
+ await new Promise(resolve => setTimeout(resolve, 10));
228
+ const second = await TypeOrmRepo.insert({ test: true });
229
+ await new Promise(resolve => setTimeout(resolve, 10));
230
+ const third = await TypeOrmRepo.insert({ test: true });
231
+ const results = await TypeOrmRepo.findMany({
232
+ orderBy: [{ created: 'desc' }],
233
+ select: { id: true, created: true }
234
+ });
235
+ (0, vitest_1.expect)(results[0]?.id).toBe(third.id);
236
+ (0, vitest_1.expect)(results[1]?.id).toBe(second.id);
237
+ (0, vitest_1.expect)(results[2]?.id).toBe(first.id);
238
+ });
239
+ (0, vitest_1.it)('orderBy() should order by Dates without Select()', async () => {
240
+ await new Promise(resolve => setTimeout(resolve, 10));
241
+ const first = await TypeOrmRepo.insert({ test: true });
242
+ await new Promise(resolve => setTimeout(resolve, 10));
243
+ const second = await TypeOrmRepo.insert({ test: true });
244
+ await new Promise(resolve => setTimeout(resolve, 10));
245
+ const third = await TypeOrmRepo.insert({ test: true });
246
+ const results = await TypeOrmRepo.findMany({
247
+ orderBy: [{ created: 'desc' }]
248
+ });
249
+ (0, vitest_1.expect)(results[0]?.id).toBe(third.id);
250
+ (0, vitest_1.expect)(results[1]?.id).toBe(second.id);
251
+ (0, vitest_1.expect)(results[2]?.id).toBe(first.id);
252
+ });
253
+ });
254
+ };
255
+ exports.genericUnifiedTestSuite = genericUnifiedTestSuite;
256
+ //# sourceMappingURL=genericUnifiedTestSuite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genericUnifiedTestSuite.js","sourceRoot":"","sources":["../../src/testing/genericUnifiedTestSuite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ export interface TestConnector {
2
+ insert(data: any): Promise<any>;
3
+ insertMany(data: any[]): Promise<any[]>;
4
+ findById(id: string, query?: any): Promise<any>;
5
+ findByIds(ids: string[], query?: any): Promise<any[]>;
6
+ findMany(query?: any): Promise<any[]>;
7
+ findFirst(query?: any): Promise<any>;
8
+ requireFirst(query?: any): Promise<any>;
9
+ updateById(id: string, data: any): Promise<any>;
10
+ replaceById(id: string, data: any): Promise<any>;
11
+ deleteById(id: string): Promise<string>;
12
+ clear(): Promise<boolean>;
13
+ pluck(field: string): Promise<any[]>;
14
+ }
15
+ export interface UnifiedTestOptions {
16
+ createGoatConnector: () => TestConnector;
17
+ createTypeOrmConnector: () => TestConnector;
18
+ dbType: 'mysql' | 'postgresql' | 'mongodb' | 'sqlite' | 'firebase' | 'formio' | 'loki' | 'pouchdb';
19
+ }
20
+ export declare const flock: {
21
+ name: string;
22
+ age: number;
23
+ type: string;
24
+ active: boolean;
25
+ weight: number;
26
+ balance: {
27
+ id: number;
28
+ value: number;
29
+ };
30
+ breed: {
31
+ type: string;
32
+ family: string;
33
+ };
34
+ }[];
35
+ export declare function createUnifiedTests(options: UnifiedTestOptions): {
36
+ runBasicTests: (describe: any, it: any, expect: any, beforeAll: any, beforeEach: any) => void;
37
+ runAdvancedTests: (describe: any, it: any, expect: any, beforeAll: any, beforeEach: any) => void;
38
+ };
@@ -0,0 +1,297 @@
1
+ "use strict";
2
+ // Factory for creating unified tests that work with any test framework
3
+ // This avoids the CommonJS/ESM issues with vitest
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.flock = void 0;
6
+ exports.createUnifiedTests = createUnifiedTests;
7
+ exports.flock = [
8
+ {
9
+ name: 'Goatee',
10
+ age: 11,
11
+ type: 'sheep',
12
+ active: true,
13
+ weight: 110.5,
14
+ balance: { id: 1234, value: 200 },
15
+ breed: { type: 'Sheep', family: 'Sheep' }
16
+ },
17
+ {
18
+ name: 'Baaah',
19
+ age: 12,
20
+ type: 'sheep',
21
+ active: true,
22
+ weight: 130.5,
23
+ balance: { id: 1235, value: 200 },
24
+ breed: { type: 'Sheep', family: 'Sheep' }
25
+ },
26
+ {
27
+ name: 'Angor',
28
+ age: 13,
29
+ type: 'goat',
30
+ active: true,
31
+ weight: 105.5,
32
+ balance: { id: 1236, value: 200 },
33
+ breed: { type: 'Angora', family: 'Angora' }
34
+ },
35
+ {
36
+ name: 'Billy',
37
+ age: 10,
38
+ type: 'goat',
39
+ active: true,
40
+ weight: 140.0,
41
+ balance: { id: 1237, value: 200 },
42
+ breed: { type: 'Angora', family: 'Angora' }
43
+ }
44
+ ];
45
+ function createUnifiedTests(options) {
46
+ const { createGoatConnector, createTypeOrmConnector, dbType } = options;
47
+ return {
48
+ runBasicTests: (describe, it, expect, beforeAll, beforeEach) => {
49
+ let GoatRepo;
50
+ beforeAll(() => {
51
+ GoatRepo = createGoatConnector();
52
+ });
53
+ beforeEach(async () => {
54
+ await GoatRepo.clear();
55
+ });
56
+ it('insert - Should insert data', async () => {
57
+ const a = await GoatRepo.insert({ name: 'myGoat', age: 13 });
58
+ expect(typeof a.id).toBe('string');
59
+ expect(a.name).toBe('myGoat');
60
+ });
61
+ it('insert - Should insert data with customId', async () => {
62
+ const customId = dbType === 'postgresql'
63
+ ? '550e8400-e29b-41d4-a716-446655440000'
64
+ : '631ce4304f9183f61ffb613a';
65
+ const a = await GoatRepo.insert({
66
+ id: customId,
67
+ name: 'myGoat',
68
+ age: 13
69
+ });
70
+ expect(typeof a.id).toBe('string');
71
+ expect(a.id).toBe(customId);
72
+ });
73
+ it('insertMany - Should insert Multiple elements', async () => {
74
+ const insertedFlock = await GoatRepo.insertMany(exports.flock);
75
+ expect(insertedFlock[0].name).toBe('Goatee');
76
+ });
77
+ it('findById - Should GET an object by its ID', async () => {
78
+ const goats = await GoatRepo.insertMany(exports.flock);
79
+ const goat = await GoatRepo.findById(goats[0].id);
80
+ expect(goat?.id).toBe(goats[0].id);
81
+ expect(typeof goat?.id).toBe('string');
82
+ const anotherGoat = await GoatRepo.findById('507f1f77bcf86cd799439011');
83
+ expect(anotherGoat).toBe(null);
84
+ });
85
+ it('findById - Should GET selected Data', async () => {
86
+ const goats = await GoatRepo.insertMany(exports.flock);
87
+ const goat = await GoatRepo.findById(goats[0].id, {
88
+ select: { name: true }
89
+ });
90
+ expect(goat?.name).toBe(goats[0].name);
91
+ expect(goat?.age).toBeUndefined();
92
+ });
93
+ it('findByIds - Should GET data', async () => {
94
+ const goats = await GoatRepo.insertMany(exports.flock);
95
+ const storedGoats = await GoatRepo.findByIds([goats[0].id, goats[1].id]);
96
+ expect(storedGoats.length).toBe(2);
97
+ });
98
+ it('findByIds - Should GET selectedData', async () => {
99
+ const goats = await GoatRepo.insertMany(exports.flock);
100
+ const storedGoats = await GoatRepo.findByIds([goats[0].id, goats[1].id], { select: { name: true } });
101
+ expect(storedGoats[0]?.name).toBe(goats[0].name);
102
+ expect(storedGoats[0]?.age).toBeUndefined();
103
+ });
104
+ it('findMany - Should GET data', async () => {
105
+ await GoatRepo.insertMany(exports.flock);
106
+ const goats = await GoatRepo.findMany();
107
+ expect(goats.length).toBeGreaterThanOrEqual(exports.flock.length);
108
+ });
109
+ it('findMany - Should FILTER data', async () => {
110
+ await GoatRepo.insertMany(exports.flock);
111
+ const goats = await GoatRepo.findMany({
112
+ where: { breed: { family: 'Angora' } }
113
+ });
114
+ expect(goats.length).toBe(2);
115
+ });
116
+ it('findMany - Should FILTER not existing data', async () => {
117
+ await GoatRepo.insertMany(exports.flock);
118
+ const goats = await GoatRepo.findMany({
119
+ where: { name: 'TESTESTEST' }
120
+ });
121
+ expect(goats.length).toBe(0);
122
+ });
123
+ it('findMany - Should SELECT attributes', async () => {
124
+ await GoatRepo.insertMany(exports.flock);
125
+ const goats = await GoatRepo.findMany({
126
+ select: { name: true }
127
+ });
128
+ expect(goats[0]?.name).toBeDefined();
129
+ expect(goats[0]?.age).toBeUndefined();
130
+ });
131
+ it('findFirst - Should get only 1 object back', async () => {
132
+ await GoatRepo.insertMany(exports.flock);
133
+ const goat = await GoatRepo.findFirst();
134
+ expect(goat).toBeDefined();
135
+ expect(goat?.name).toBeDefined();
136
+ });
137
+ it('findFirst - Should FILTER AND SELECT DATA', async () => {
138
+ await GoatRepo.insertMany(exports.flock);
139
+ const goat = await GoatRepo.findFirst({
140
+ where: { breed: { family: 'Angora' } },
141
+ select: { name: true }
142
+ });
143
+ expect(goat?.name).toBeDefined();
144
+ expect(goat?.age).toBeUndefined();
145
+ });
146
+ it('requireFirst - Should fail if not found', async () => {
147
+ await expect(GoatRepo.requireFirst()).rejects.toThrow();
148
+ });
149
+ it('requireFirst - Should find first item', async () => {
150
+ await GoatRepo.insertMany(exports.flock);
151
+ const goat = await GoatRepo.requireFirst();
152
+ expect(goat).toBeDefined();
153
+ expect(goat.name).toBeDefined();
154
+ });
155
+ it('UpdateById - Should Update a single element', async () => {
156
+ const goats = await GoatRepo.insertMany(exports.flock);
157
+ await GoatRepo.updateById(goats[0].id, { name: 'MyNewName' });
158
+ const goat = await GoatRepo.findById(goats[0].id);
159
+ expect(goat?.name).toBe('MyNewName');
160
+ });
161
+ it('ReplaceById - Should Update a single element', async () => {
162
+ const goats = await GoatRepo.insertMany(exports.flock);
163
+ await GoatRepo.replaceById(goats[0].id, { name: 'MyNewName' });
164
+ const goat = await GoatRepo.findById(goats[0].id);
165
+ expect(goat?.name).toBe('MyNewName');
166
+ expect(goat?.age).toBeUndefined();
167
+ });
168
+ it('deleteById - Should delete an item', async () => {
169
+ const goats = await GoatRepo.insertMany(exports.flock);
170
+ const id = await GoatRepo.deleteById(goats[0].id);
171
+ expect(id).toBe(goats[0].id);
172
+ const findDeleted = await GoatRepo.findById(goats[0].id);
173
+ expect(findDeleted).toBe(null);
174
+ });
175
+ },
176
+ runAdvancedTests: (describe, it, expect, beforeAll, beforeEach) => {
177
+ let TypeOrmRepo;
178
+ beforeAll(() => {
179
+ TypeOrmRepo = createTypeOrmConnector();
180
+ });
181
+ beforeEach(async () => {
182
+ await TypeOrmRepo.clear();
183
+ });
184
+ it('Should get local data', async () => {
185
+ await TypeOrmRepo.insert({ test: true });
186
+ const value = await TypeOrmRepo.findFirst();
187
+ expect(value?.test).toBe(true);
188
+ });
189
+ it('pluck() should return a single array', async () => {
190
+ await TypeOrmRepo.insertMany([
191
+ { test: true, order: 2 },
192
+ { test: false, order: 3 },
193
+ { test: true, order: 1 }
194
+ ]);
195
+ const plucked = await TypeOrmRepo.pluck('order');
196
+ expect(Array.isArray(plucked)).toBe(true);
197
+ expect(plucked).toContain(1);
198
+ expect(plucked).toContain(2);
199
+ expect(plucked).toContain(3);
200
+ });
201
+ it('limit() should limit the amount of results', async () => {
202
+ await TypeOrmRepo.insertMany([
203
+ { test: true },
204
+ { test: false },
205
+ { test: true }
206
+ ]);
207
+ const results = await TypeOrmRepo.findMany({ limit: 2 });
208
+ expect(results.length).toBe(2);
209
+ });
210
+ it('offset() should start at the given position', async () => {
211
+ const inserted = await TypeOrmRepo.insertMany([
212
+ { test: true, order: 1 },
213
+ { test: false, order: 2 },
214
+ { test: true, order: 3 }
215
+ ]);
216
+ const results = await TypeOrmRepo.findMany({
217
+ offset: 1,
218
+ orderBy: [{ order: 'asc' }]
219
+ });
220
+ expect(results.length).toBe(2);
221
+ expect(results[0].order).toBe(2);
222
+ });
223
+ it('orWhere() should filter the data', async () => {
224
+ await TypeOrmRepo.insertMany([
225
+ { test: true, order: 1 },
226
+ { test: false, order: 2 },
227
+ { test: true, order: 3 }
228
+ ]);
229
+ const results = await TypeOrmRepo.findMany({
230
+ where: {
231
+ OR: [
232
+ { test: true },
233
+ { order: 2 }
234
+ ]
235
+ }
236
+ });
237
+ expect(results.length).toBe(3);
238
+ });
239
+ it('orderBy() should order results desc', async () => {
240
+ await TypeOrmRepo.insertMany([
241
+ { test: true, order: 2 },
242
+ { test: false, order: 3 },
243
+ { test: true, order: 1 }
244
+ ]);
245
+ const results = await TypeOrmRepo.findMany({
246
+ orderBy: [{ order: 'desc' }]
247
+ });
248
+ expect(results[0].order).toBe(3);
249
+ expect(results[1].order).toBe(2);
250
+ expect(results[2].order).toBe(1);
251
+ });
252
+ it('orderBy() should order results asc', async () => {
253
+ await TypeOrmRepo.insertMany([
254
+ { test: true, order: 2 },
255
+ { test: false, order: 3 },
256
+ { test: true, order: 1 }
257
+ ]);
258
+ const results = await TypeOrmRepo.findMany({
259
+ orderBy: [{ order: 'asc' }]
260
+ });
261
+ expect(results[0].order).toBe(1);
262
+ expect(results[1].order).toBe(2);
263
+ expect(results[2].order).toBe(3);
264
+ });
265
+ it('orderBy() should order by Dates with Select()', async () => {
266
+ await new Promise(resolve => setTimeout(resolve, 10));
267
+ const first = await TypeOrmRepo.insert({ test: true });
268
+ await new Promise(resolve => setTimeout(resolve, 10));
269
+ const second = await TypeOrmRepo.insert({ test: true });
270
+ await new Promise(resolve => setTimeout(resolve, 10));
271
+ const third = await TypeOrmRepo.insert({ test: true });
272
+ const results = await TypeOrmRepo.findMany({
273
+ orderBy: [{ created: 'desc' }],
274
+ select: { id: true, created: true }
275
+ });
276
+ expect(results[0]?.id).toBe(third.id);
277
+ expect(results[1]?.id).toBe(second.id);
278
+ expect(results[2]?.id).toBe(first.id);
279
+ });
280
+ it('orderBy() should order by Dates without Select()', async () => {
281
+ await new Promise(resolve => setTimeout(resolve, 10));
282
+ const first = await TypeOrmRepo.insert({ test: true });
283
+ await new Promise(resolve => setTimeout(resolve, 10));
284
+ const second = await TypeOrmRepo.insert({ test: true });
285
+ await new Promise(resolve => setTimeout(resolve, 10));
286
+ const third = await TypeOrmRepo.insert({ test: true });
287
+ const results = await TypeOrmRepo.findMany({
288
+ orderBy: [{ created: 'desc' }]
289
+ });
290
+ expect(results[0]?.id).toBe(third.id);
291
+ expect(results[1]?.id).toBe(second.id);
292
+ expect(results[2]?.id).toBe(first.id);
293
+ });
294
+ }
295
+ };
296
+ }
297
+ //# sourceMappingURL=unifiedTestFactory.js.map