remult 0.22.1 → 0.22.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. package/esm/graphql.js +27 -27
  2. package/esm/postgres/schema-builder.js +4 -4
  3. package/esm/remult-knex/index.js +2 -2
  4. package/esm/remult-mongo.js +6 -6
  5. package/esm/src/backend-tests/backend-database-test-setup.backend-spec.js +30 -0
  6. package/esm/src/id-entity.d.ts +4 -0
  7. package/esm/src/id-entity.js +8 -0
  8. package/esm/src/remult3/RepositoryImplementation.js +7 -5
  9. package/esm/src/shared-tests/db-tests.db-tests.js +35 -0
  10. package/package.json +1 -1
  11. package/postgres/postgresColumnSyntax.d.ts +2 -0
  12. package/postgres/postgresColumnSyntax.js +34 -0
  13. package/remult-knex/index.js +2 -2
  14. package/remult-middleware.d.ts +2 -0
  15. package/remult-middleware.js +70 -0
  16. package/remult-mongo.js +6 -6
  17. package/server/register-actions-on-server.d.ts +3 -0
  18. package/server/register-actions-on-server.js +50 -0
  19. package/server/register-entities-on-server.d.ts +3 -0
  20. package/server/register-entities-on-server.js +19 -0
  21. package/src/backend-tests/backend-database-test-setup.backend-spec.js +60 -0
  22. package/{esm/core/src → src}/backend-tests/my-test.backend-spec.d.ts +1 -1
  23. package/src/backend-tests/my-test.backend-spec.js +217 -0
  24. package/src/backend-tests/test-http-server.backend-spec.d.ts +6 -0
  25. package/src/backend-tests/test-http-server.backend-spec.js +342 -0
  26. package/src/id-entity.d.ts +4 -0
  27. package/src/id-entity.js +17 -0
  28. package/src/remult3/RepositoryImplementation.js +15 -13
  29. package/src/shared-tests/db-tests.db-tests.js +64 -0
  30. package/{esm/core/src/valueConverters.d.ts → valueConverters.d.ts} +12 -13
  31. package/valueConverters.js +168 -0
  32. package/esm/angular/interfaces/index.d.ts +0 -1
  33. package/esm/angular/interfaces/index.js +0 -1
  34. package/esm/angular/interfaces/src/column-collection.d.ts +0 -70
  35. package/esm/angular/interfaces/src/column-collection.js +0 -341
  36. package/esm/angular/interfaces/src/data-area-settings.d.ts +0 -15
  37. package/esm/angular/interfaces/src/data-area-settings.js +0 -35
  38. package/esm/angular/interfaces/src/data-control-interfaces.d.ts +0 -36
  39. package/esm/angular/interfaces/src/data-control-interfaces.js +0 -57
  40. package/esm/angular/interfaces/src/dataList.d.ts +0 -13
  41. package/esm/angular/interfaces/src/dataList.js +0 -42
  42. package/esm/angular/interfaces/src/filter-helper.d.ts +0 -13
  43. package/esm/angular/interfaces/src/filter-helper.js +0 -59
  44. package/esm/angular/interfaces/src/grid-settings.d.ts +0 -145
  45. package/esm/angular/interfaces/src/grid-settings.js +0 -387
  46. package/esm/angular/interfaces/src/public_api.d.ts +0 -4
  47. package/esm/angular/interfaces/src/public_api.js +0 -4
  48. package/esm/angular/src/angular/RemultAngularPluginsService.d.ts +0 -4
  49. package/esm/angular/src/angular/RemultAngularPluginsService.js +0 -3
  50. package/esm/angular/src/angular/data-control/data-control2.component.d.ts +0 -49
  51. package/esm/angular/src/angular/data-control/data-control2.component.js +0 -138
  52. package/esm/core/SseSubscriptionServer.d.ts +0 -33
  53. package/esm/core/SseSubscriptionServer.js +0 -107
  54. package/esm/core/assign.d.ts +0 -1
  55. package/esm/core/assign.js +0 -5
  56. package/esm/core/classType.d.ts +0 -3
  57. package/esm/core/classType.js +0 -1
  58. package/esm/core/index.d.ts +0 -27
  59. package/esm/core/index.js +0 -25
  60. package/esm/core/inputTypes.d.ts +0 -9
  61. package/esm/core/inputTypes.js +0 -9
  62. package/esm/core/live-query/data-provider-live-query-storage.d.ts +0 -22
  63. package/esm/core/live-query/data-provider-live-query-storage.js +0 -71
  64. package/esm/core/postgres/index.d.ts +0 -2
  65. package/esm/core/postgres/index.js +0 -2
  66. package/esm/core/postgres/postgres-data-provider.d.ts +0 -36
  67. package/esm/core/postgres/postgres-data-provider.js +0 -120
  68. package/esm/core/postgres/schema-builder.d.ts +0 -17
  69. package/esm/core/postgres/schema-builder.js +0 -153
  70. package/esm/core/remult-fresh.d.ts +0 -17
  71. package/esm/core/remult-fresh.js +0 -29
  72. package/esm/core/remult-knex/index.d.ts +0 -30
  73. package/esm/core/remult-knex/index.js +0 -446
  74. package/esm/core/remult-mongo.d.ts +0 -24
  75. package/esm/core/remult-mongo.js +0 -254
  76. package/esm/core/server/JsonEntityFileStorage.d.ts +0 -10
  77. package/esm/core/server/JsonEntityFileStorage.js +0 -25
  78. package/esm/core/server/core.d.ts +0 -4
  79. package/esm/core/server/core.js +0 -4
  80. package/esm/core/server/expressBridge.d.ts +0 -182
  81. package/esm/core/server/expressBridge.js +0 -938
  82. package/esm/core/server/index.d.ts +0 -6
  83. package/esm/core/server/index.js +0 -9
  84. package/esm/core/server/initAsyncHooks.d.ts +0 -1
  85. package/esm/core/server/initAsyncHooks.js +0 -9
  86. package/esm/core/server/initDataProvider.d.ts +0 -2
  87. package/esm/core/server/initDataProvider.js +0 -14
  88. package/esm/core/src/__EntityValueProvider.d.ts +0 -11
  89. package/esm/core/src/__EntityValueProvider.js +0 -1
  90. package/esm/core/src/__RowsOfDataForTesting.d.ts +0 -3
  91. package/esm/core/src/__RowsOfDataForTesting.js +0 -1
  92. package/esm/core/src/backend-tests/backend-database-test-setup.backend-spec.d.ts +0 -6
  93. package/esm/core/src/backend-tests/backend-database-test-setup.backend-spec.js +0 -147
  94. package/esm/core/src/backend-tests/my-test.backend-spec.js +0 -197
  95. package/esm/core/src/backend-tests/test-http-server.backend-spec.d.ts +0 -1
  96. package/esm/core/src/backend-tests/test-http-server.backend-spec.js +0 -167
  97. package/esm/core/src/buildRestDataProvider.d.ts +0 -31
  98. package/esm/core/src/buildRestDataProvider.js +0 -113
  99. package/esm/core/src/column-interfaces.d.ts +0 -154
  100. package/esm/core/src/column-interfaces.js +0 -7
  101. package/esm/core/src/column.d.ts +0 -58
  102. package/esm/core/src/column.js +0 -174
  103. package/esm/core/src/context.d.ts +0 -134
  104. package/esm/core/src/context.js +0 -286
  105. package/esm/core/src/data-api.d.ts +0 -39
  106. package/esm/core/src/data-api.js +0 -279
  107. package/esm/core/src/data-interfaces.d.ts +0 -41
  108. package/esm/core/src/data-interfaces.js +0 -12
  109. package/esm/core/src/data-providers/array-entity-data-provider.d.ts +0 -22
  110. package/esm/core/src/data-providers/array-entity-data-provider.js +0 -252
  111. package/esm/core/src/data-providers/in-memory-database.d.ts +0 -9
  112. package/esm/core/src/data-providers/in-memory-database.js +0 -14
  113. package/esm/core/src/data-providers/json-data-provider.d.ts +0 -12
  114. package/esm/core/src/data-providers/json-data-provider.js +0 -55
  115. package/esm/core/src/data-providers/rest-data-provider.d.ts +0 -49
  116. package/esm/core/src/data-providers/rest-data-provider.js +0 -256
  117. package/esm/core/src/data-providers/sql-database.d.ts +0 -33
  118. package/esm/core/src/data-providers/sql-database.js +0 -384
  119. package/esm/core/src/data-providers/web-sql-data-provider.d.ts +0 -24
  120. package/esm/core/src/data-providers/web-sql-data-provider.js +0 -143
  121. package/esm/core/src/entity.d.ts +0 -91
  122. package/esm/core/src/entity.js +0 -1
  123. package/esm/core/src/filter/filter-consumer-bridge-to-sql-request.d.ts +0 -50
  124. package/esm/core/src/filter/filter-consumer-bridge-to-sql-request.js +0 -150
  125. package/esm/core/src/filter/filter-consumer-bridge-to-url-builder.d.ts +0 -1
  126. package/esm/core/src/filter/filter-consumer-bridge-to-url-builder.js +0 -1
  127. package/esm/core/src/filter/filter-interfaces.d.ts +0 -85
  128. package/esm/core/src/filter/filter-interfaces.js +0 -477
  129. package/esm/core/src/live-query/LiveQueryClient.d.ts +0 -20
  130. package/esm/core/src/live-query/LiveQueryClient.js +0 -188
  131. package/esm/core/src/live-query/SseSubscriptionClient.d.ts +0 -5
  132. package/esm/core/src/live-query/SseSubscriptionClient.js +0 -86
  133. package/esm/core/src/live-query/SubscriptionChannel.d.ts +0 -72
  134. package/esm/core/src/live-query/SubscriptionChannel.js +0 -123
  135. package/esm/core/src/live-query/SubscriptionServer.d.ts +0 -53
  136. package/esm/core/src/live-query/SubscriptionServer.js +0 -111
  137. package/esm/core/src/live-query/live-query-tests.spec.d.ts +0 -6
  138. package/esm/core/src/live-query/live-query-tests.spec.js +0 -952
  139. package/esm/core/src/remult-proxy.d.ts +0 -35
  140. package/esm/core/src/remult-proxy.js +0 -113
  141. package/esm/core/src/remult3/DecoratorReplacer.d.ts +0 -10
  142. package/esm/core/src/remult3/DecoratorReplacer.js +0 -20
  143. package/esm/core/src/remult3/RepositoryImplementation.d.ts +0 -355
  144. package/esm/core/src/remult3/RepositoryImplementation.js +0 -2109
  145. package/esm/core/src/remult3/index.d.ts +0 -2
  146. package/esm/core/src/remult3/index.js +0 -2
  147. package/esm/core/src/remult3/remult3.d.ts +0 -395
  148. package/esm/core/src/remult3/remult3.js +0 -2
  149. package/esm/core/src/server-action.d.ts +0 -81
  150. package/esm/core/src/server-action.js +0 -394
  151. package/esm/core/src/shared-tests/db-tests-setup.d.ts +0 -32
  152. package/esm/core/src/shared-tests/db-tests-setup.js +0 -78
  153. package/esm/core/src/shared-tests/db-tests.db-tests.d.ts +0 -25
  154. package/esm/core/src/shared-tests/db-tests.db-tests.js +0 -810
  155. package/esm/core/src/shared-tests/deleteAll.d.ts +0 -2
  156. package/esm/core/src/shared-tests/deleteAll.js +0 -4
  157. package/esm/core/src/shared-tests/entityWithValidations.d.ts +0 -14
  158. package/esm/core/src/shared-tests/entityWithValidations.js +0 -43
  159. package/esm/core/src/shared-tests/index.d.ts +0 -4
  160. package/esm/core/src/shared-tests/index.js +0 -4
  161. package/esm/core/src/shared-tests/test-custom-id-column.spec.d.ts +0 -1
  162. package/esm/core/src/shared-tests/test-custom-id-column.spec.js +0 -67
  163. package/esm/core/src/shared-tests/test-special-value.spec.d.ts +0 -10
  164. package/esm/core/src/shared-tests/test-special-value.spec.js +0 -73
  165. package/esm/core/src/shared-tests/test-update-with-null.spec.d.ts +0 -1
  166. package/esm/core/src/shared-tests/test-update-with-null.spec.js +0 -31
  167. package/esm/core/src/sort.d.ts +0 -16
  168. package/esm/core/src/sort.js +0 -103
  169. package/esm/core/src/sql-command.d.ts +0 -19
  170. package/esm/core/src/sql-command.js +0 -1
  171. package/esm/core/src/test.d.ts +0 -3
  172. package/esm/core/src/test.js +0 -12
  173. package/esm/core/src/tests/Done.d.ts +0 -5
  174. package/esm/core/src/tests/Done.js +0 -9
  175. package/esm/core/src/tests/RowProvider.spec.d.ts +0 -16
  176. package/esm/core/src/tests/RowProvider.spec.js +0 -631
  177. package/esm/core/src/tests/TestDataApiResponse.d.ts +0 -10
  178. package/esm/core/src/tests/TestDataApiResponse.js +0 -22
  179. package/esm/core/src/tests/basicRowFunctionality.spec.d.ts +0 -8
  180. package/esm/core/src/tests/basicRowFunctionality.spec.js +0 -2103
  181. package/esm/core/src/tests/c.d.ts +0 -8
  182. package/esm/core/src/tests/c.js +0 -13
  183. package/esm/core/src/tests/createData.d.ts +0 -7
  184. package/esm/core/src/tests/createData.js +0 -22
  185. package/esm/core/src/tests/d.d.ts +0 -6
  186. package/esm/core/src/tests/d.js +0 -11
  187. package/esm/core/src/tests/dWithPrefilter.d.ts +0 -7
  188. package/esm/core/src/tests/dWithPrefilter.js +0 -18
  189. package/esm/core/src/tests/entityForCustomFilter.d.ts +0 -16
  190. package/esm/core/src/tests/entityForCustomFilter.js +0 -33
  191. package/esm/core/src/tests/entityWithValidationsOnColumn.d.ts +0 -5
  192. package/esm/core/src/tests/entityWithValidationsOnColumn.js +0 -13
  193. package/esm/core/src/tests/frontend-database-tests-setup.spec.d.ts +0 -4
  194. package/esm/core/src/tests/frontend-database-tests-setup.spec.js +0 -37
  195. package/esm/core/src/tests/h.d.ts +0 -6
  196. package/esm/core/src/tests/h.js +0 -24
  197. package/esm/core/src/tests/remult-3-basic-tests.spec.d.ts +0 -1
  198. package/esm/core/src/tests/remult-3-basic-tests.spec.js +0 -236
  199. package/esm/core/src/tests/remult-3-entities.d.ts +0 -23
  200. package/esm/core/src/tests/remult-3-entities.js +0 -39
  201. package/esm/core/src/tests/tasks.d.ts +0 -6
  202. package/esm/core/src/tests/tasks.js +0 -10
  203. package/esm/core/src/tests/test-context-as-storage.spec.d.ts +0 -0
  204. package/esm/core/src/tests/test-context-as-storage.spec.js +0 -1
  205. package/esm/core/src/tests/test-data-api/predefined-filter.spec.d.ts +0 -1
  206. package/esm/core/src/tests/test-data-api/predefined-filter.spec.js +0 -389
  207. package/esm/core/src/tests/test-data-api/test-put-with-validation.spec.d.ts +0 -5
  208. package/esm/core/src/tests/test-data-api/test-put-with-validation.spec.js +0 -152
  209. package/esm/core/src/tests/test-decorator-precedence.spec.d.ts +0 -1
  210. package/esm/core/src/tests/test-decorator-precedence.spec.js +0 -38
  211. package/esm/core/src/tests/test-default-value.spec.d.ts +0 -1
  212. package/esm/core/src/tests/test-default-value.spec.js +0 -33
  213. package/esm/core/src/tests/test-entity-inheritance.spec.d.ts +0 -14
  214. package/esm/core/src/tests/test-entity-inheritance.spec.js +0 -82
  215. package/esm/core/src/tests/test-exceptions.spec.d.ts +0 -1
  216. package/esm/core/src/tests/test-exceptions.spec.js +0 -375
  217. package/esm/core/src/tests/test-json.spec.d.ts +0 -1
  218. package/esm/core/src/tests/test-json.spec.js +0 -115
  219. package/esm/core/src/tests/test-many-to-one-relation-in-entity.spec.d.ts +0 -9
  220. package/esm/core/src/tests/test-many-to-one-relation-in-entity.spec.js +0 -809
  221. package/esm/core/src/tests/test-non-active-record.spec.d.ts +0 -1
  222. package/esm/core/src/tests/test-non-active-record.spec.js +0 -66
  223. package/esm/core/src/tests/test-object-column.spec.d.ts +0 -1
  224. package/esm/core/src/tests/test-object-column.spec.js +0 -189
  225. package/esm/core/src/tests/test-paged-foreach.spec.d.ts +0 -1
  226. package/esm/core/src/tests/test-paged-foreach.spec.js +0 -328
  227. package/esm/core/src/tests/test-remult-angular.spec.d.ts +0 -1
  228. package/esm/core/src/tests/test-remult-angular.spec.js +0 -23
  229. package/esm/core/src/tests/test-server-controller.spec.d.ts +0 -7
  230. package/esm/core/src/tests/test-server-controller.spec.js +0 -489
  231. package/esm/core/src/tests/test-server-expressions.spec.d.ts +0 -1
  232. package/esm/core/src/tests/test-server-expressions.spec.js +0 -178
  233. package/esm/core/src/tests/test-server-method-on-entity.spec.d.ts +0 -1
  234. package/esm/core/src/tests/test-server-method-on-entity.spec.js +0 -306
  235. package/esm/core/src/tests/test-sql-expression.spec.d.ts +0 -5
  236. package/esm/core/src/tests/test-sql-expression.spec.js +0 -205
  237. package/esm/core/src/tests/test-sql.spec.d.ts +0 -1
  238. package/esm/core/src/tests/test-sql.spec.js +0 -170
  239. package/esm/core/src/tests/test-subscribe.spec.d.ts +0 -1
  240. package/esm/core/src/tests/test-subscribe.spec.js +0 -135
  241. package/esm/core/src/tests/test-type-recovery.spec.d.ts +0 -1
  242. package/esm/core/src/tests/test-type-recovery.spec.js +0 -49
  243. package/esm/core/src/tests/test-where-api.spec.d.ts +0 -1
  244. package/esm/core/src/tests/test-where-api.spec.js +0 -434
  245. package/esm/core/src/tests/testHelper.spec.d.ts +0 -36
  246. package/esm/core/src/tests/testHelper.spec.js +0 -226
  247. package/esm/core/src/tests/testModel/models.d.ts +0 -16
  248. package/esm/core/src/tests/testModel/models.js +0 -25
  249. package/esm/core/src/validators.d.ts +0 -14
  250. package/esm/core/src/validators.js +0 -33
  251. package/esm/core/src/valueConverters.js +0 -197
  252. package/esm/core/urlBuilder.d.ts +0 -6
  253. package/esm/core/urlBuilder.js +0 -20
  254. package/esm/test-servers/shared/Task.d.ts +0 -9
  255. package/esm/test-servers/shared/Task.js +0 -32
  256. package/esm/test.d.ts +0 -5
  257. package/esm/test.js +0 -6
@@ -1,389 +0,0 @@
1
- import { TestDataApiResponse } from "../TestDataApiResponse";
2
- import { Done } from "../Done";
3
- import { createData } from "../createData";
4
- import { DataApi } from '../../data-api';
5
- import { isBackend, Remult } from '../../context';
6
- import { Categories as newCategories } from '../remult-3-entities';
7
- import { Entity as EntityDecorator } from '../../remult3';
8
- import { testAsIfOnBackend } from "../testHelper.spec";
9
- import { Filter } from "../../filter/filter-interfaces";
10
- describe("data api", () => {
11
- let remult = new Remult();
12
- it("getArray works with predefined filter", async () => {
13
- let [c, remult] = await createData(async (i) => {
14
- await i(1, 'noam', 'a');
15
- await i(2, 'yael', 'b');
16
- await i(3, 'yoni', 'a');
17
- }, CategoriesForThisTest);
18
- var api = new DataApi(c, remult);
19
- let t = new TestDataApiResponse();
20
- let d = new Done();
21
- t.success = data => {
22
- expect(data.length).toBe(1);
23
- expect(data[0].id).toBe(2);
24
- d.ok();
25
- };
26
- await api.getArray(t, undefined);
27
- d.test();
28
- });
29
- it("get works with predefined filter", async () => {
30
- let [c, remult] = await createData(async (i) => {
31
- await i(1, 'noam', 'a');
32
- await i(2, 'yael', 'b');
33
- await i(3, 'yoni', 'a');
34
- });
35
- var api = new DataApi(c, remult);
36
- let t = new TestDataApiResponse();
37
- let d = new Done();
38
- t.success = data => {
39
- expect(data.id).toBe(2);
40
- d.ok();
41
- };
42
- await api.get(t, 2);
43
- d.test();
44
- });
45
- it("get id works with predefined filterand shouldnt return anything", async () => {
46
- let [c, remult] = await createData(async (i) => {
47
- await i(1, 'noam', 'a');
48
- await i(2, 'yael', 'b');
49
- await i(3, 'yoni', 'a');
50
- }, CategoriesForThisTest);
51
- var api = new DataApi(c, remult);
52
- let t = new TestDataApiResponse();
53
- let d = new Done();
54
- t.notFound = () => {
55
- d.ok();
56
- };
57
- await api.get(t, 1);
58
- d.test();
59
- });
60
- it("delete id works with predefined filterand shouldnt return anything", async () => {
61
- let [c, remult] = await createData(async (i) => {
62
- await i(1, 'noam', 'a');
63
- await i(2, 'yael', 'b');
64
- await i(3, 'yoni', 'a');
65
- }, CategoriesForThisTest);
66
- var api = new DataApi(c, remult);
67
- let t = new TestDataApiResponse();
68
- let d = new Done();
69
- t.notFound = () => {
70
- d.ok();
71
- };
72
- await api.delete(t, 1);
73
- d.test();
74
- });
75
- it("delete id works with predefined filterand shouldnt return anything", async () => {
76
- let [c, remult] = await createData(async (i) => {
77
- await i(1, 'noam', 'a');
78
- await i(2, 'yael', 'b');
79
- await i(3, 'yoni', 'a');
80
- }, CategoriesForThisTest);
81
- var api = new DataApi(c, remult);
82
- let t = new TestDataApiResponse();
83
- let d = new Done();
84
- t.deleted = () => {
85
- d.ok();
86
- };
87
- await api.delete(t, 2);
88
- d.test();
89
- });
90
- it("put id works with predefined filterand shouldnt return anything", async () => {
91
- let [c, remult] = await createData(async (i) => {
92
- await i(1, 'noam', 'a');
93
- await i(2, 'yael', 'b');
94
- await i(3, 'yoni', 'a');
95
- }, CategoriesForThisTest);
96
- var api = new DataApi(c, remult);
97
- let t = new TestDataApiResponse();
98
- let d = new Done();
99
- t.success = () => {
100
- d.ok();
101
- };
102
- await api.put(t, 2, { name: 'YAEL' });
103
- d.test();
104
- });
105
- it("put id 1 works with predefined filterand shouldnt return anything", async () => {
106
- let [c, remult] = await createData(async (i) => {
107
- await i(1, 'noam', 'a');
108
- await i(2, 'yael', 'b');
109
- await i(3, 'yoni', 'a');
110
- }, CategoriesForThisTest);
111
- var api = new DataApi(c, remult);
112
- let t = new TestDataApiResponse();
113
- let d = new Done();
114
- t.notFound = () => {
115
- d.ok();
116
- };
117
- await api.put(t, 1, { name: 'YAEL' });
118
- d.test();
119
- });
120
- it("put id 1 works with predefined filterand shouldnt return anything", async () => {
121
- let [c, remult] = await createData(async (i) => {
122
- await i(1, 'noam', 'a');
123
- await i(2, 'yael', 'b');
124
- await i(3, 'yoni', 'a');
125
- }, CategoriesForThisTest2);
126
- var api = new DataApi(c, remult);
127
- let t = new TestDataApiResponse();
128
- let d = new Done();
129
- t.notFound = () => {
130
- d.ok();
131
- };
132
- await api.put(t, 1, { name: 'YAEL' });
133
- d.test();
134
- });
135
- it("getArray works with predefined filter", async () => {
136
- let [c, remult] = await createData(async (i) => {
137
- await i(1, 'noam', 'a');
138
- await i(2, 'yael', 'b');
139
- await i(3, 'yoni', 'a');
140
- }, CategoriesForThisTest);
141
- var api = new DataApi(c, remult);
142
- let t = new TestDataApiResponse();
143
- let d = new Done();
144
- t.success = data => {
145
- expect(data.length).toBe(0);
146
- d.ok();
147
- };
148
- await api.getArray(t, {
149
- get: x => {
150
- if (x == c.create()._.fields.description.metadata.key)
151
- return "a";
152
- return undefined;
153
- }
154
- });
155
- d.test();
156
- });
157
- it("getArray works with predefined filter1 ", async () => {
158
- let [c, remult] = await createData(async (i) => {
159
- await i(1, 'noam', 'a');
160
- await i(2, 'yael', 'b');
161
- await i(3, 'yoni', 'a');
162
- }, CategoriesForThisTest);
163
- var api = new DataApi(c, remult);
164
- let t = new TestDataApiResponse();
165
- let d = new Done();
166
- t.success = data => {
167
- expect(data.length).toBe(1);
168
- d.ok();
169
- };
170
- await api.getArray(t, {
171
- get: x => {
172
- return undefined;
173
- }
174
- });
175
- d.test();
176
- });
177
- it("getArray works with predefined filter 2", async () => {
178
- let [c, remult] = await createData(async (i) => {
179
- await i(1, 'noam', 'a');
180
- await i(2, 'yael', 'b');
181
- await i(3, 'yoni', 'a');
182
- }, CategoriesForThisTest2);
183
- var api = new DataApi(c, remult);
184
- let t = new TestDataApiResponse();
185
- let d = new Done();
186
- t.success = data => {
187
- expect(data.length).toBe(1);
188
- d.ok();
189
- };
190
- await api.getArray(t, {
191
- get: x => {
192
- return undefined;
193
- }
194
- });
195
- d.test();
196
- });
197
- it("getArray works with predefined filter 3", async () => {
198
- let [c, remult] = await createData(async (i) => {
199
- await i(1, 'noam', 'a');
200
- await i(2, 'yael', 'b');
201
- await i(3, 'yoni', 'a');
202
- }, CategoriesForThisTest3);
203
- var api = new DataApi(c, remult);
204
- let t = new TestDataApiResponse();
205
- let d = new Done();
206
- t.success = data => {
207
- expect(data.length).toBe(1);
208
- d.ok();
209
- };
210
- await api.getArray(t, {
211
- get: x => {
212
- return undefined;
213
- }
214
- });
215
- d.test();
216
- });
217
- it("getArray works with predefined filter 3 inherit", async () => {
218
- let [c, remult] = await createData(async (i) => {
219
- await i(1, 'noam', 'a');
220
- await i(2, 'yael', 'b');
221
- await i(3, 'yoni', 'a');
222
- }, CategoriesForThisTest3Inherit);
223
- var api = new DataApi(c, remult);
224
- let t = new TestDataApiResponse();
225
- let d = new Done();
226
- t.success = data => {
227
- expect(data.length).toBe(1);
228
- d.ok();
229
- };
230
- await api.getArray(t, {
231
- get: x => {
232
- return undefined;
233
- }
234
- });
235
- d.test();
236
- });
237
- it("getArray works with predefined filter 4", async () => {
238
- let [c, remult] = await createData(async (i) => {
239
- await i(1, 'noam', 'a');
240
- await i(2, 'yael', 'b');
241
- await i(3, 'yoni', 'a');
242
- }, CategoriesForThisTest4);
243
- var api = new DataApi(c, remult);
244
- let t = new TestDataApiResponse();
245
- let d = new Done();
246
- t.success = data => {
247
- expect(data.length).toBe(1);
248
- d.ok();
249
- };
250
- await api.getArray(t, {
251
- get: x => {
252
- return undefined;
253
- }
254
- });
255
- d.test();
256
- });
257
- it("getArray works with predefined filter and inheritance", async () => {
258
- let [c, remult] = await createData(async (i) => {
259
- await i(1, 'noam', 'a');
260
- await i(2, 'yael', 'b');
261
- await i(3, 'yoni', 'a');
262
- }, CategoriesForThisTestThatInherits);
263
- var api = new DataApi(c, remult);
264
- let t = new TestDataApiResponse();
265
- let d = new Done();
266
- t.success = data => {
267
- expect(data.length).toBe(1);
268
- d.ok();
269
- };
270
- await api.getArray(t, {
271
- get: x => {
272
- return undefined;
273
- }
274
- });
275
- d.test();
276
- });
277
- it("works with predefined Entity Filter", async () => {
278
- let [c] = await createData(async (i) => {
279
- await i(1, 'noam', 'a');
280
- await i(2, 'yael', 'b');
281
- await i(3, 'yoni', 'a');
282
- });
283
- expect((await c.findFirst({ id: 1 })).categoryName).toBe('noam');
284
- expect((await c.findId(1)).categoryName).toBe('noam');
285
- });
286
- });
287
- @EntityDecorator('categories', {
288
- backendPrefilter: { description: 'b' }
289
- })
290
- class stam1 extends newCategories {
291
- }
292
- describe("", () => {
293
- it("works with predefined Entity Filter", async () => {
294
- testAsIfOnBackend(async () => {
295
- let [c] = await createData(async (i) => {
296
- await i(1, 'noam', 'a');
297
- await i(2, 'yael', 'b');
298
- await i(3, 'yoni', 'a');
299
- }, stam1);
300
- let r = await c.find();
301
- expect(r.length).toBe(1, 'array length');
302
- expect(r[0].id).toBe(2, 'value of first row');
303
- expect(await c.count()).toBe(1, 'count');
304
- expect(await c.findFirst({ id: 1 })).toBe(undefined, 'find first');
305
- expect((await c.findFirst({ id: 1 }, { createIfNotFound: true }))._.isNew()).toBe(true, 'lookup ');
306
- });
307
- });
308
- });
309
- @EntityDecorator('categories', {
310
- backendPrefilter: async () => ({ description: 'b' })
311
- })
312
- class stam2 extends newCategories {
313
- }
314
- describe("", () => {
315
- it("works with predefined Entity Filter lambda", async () => {
316
- testAsIfOnBackend(async () => {
317
- let [c] = await createData(async (i) => {
318
- await i(1, 'noam', 'a');
319
- await i(2, 'yael', 'b');
320
- await i(3, 'yoni', 'a');
321
- }, stam2);
322
- let r = await c.find();
323
- expect(r.length).toBe(1, 'array length');
324
- expect(r[0].id).toBe(2, 'value of first row');
325
- expect(await c.count()).toBe(1, 'count');
326
- expect(await c.findFirst({ id: 1 })).toBe(undefined, 'find first');
327
- expect((await c.findFirst({ id: 1 }, { createIfNotFound: true }))._.isNew()).toBe(true, 'lookup ');
328
- });
329
- });
330
- });
331
- @EntityDecorator('categories', {
332
- backendPrefilter: async () => ({ description: 'b' })
333
- })
334
- class stam3 extends newCategories {
335
- }
336
- it("backend filter only works on backend", async () => {
337
- let [c] = await createData(async (i) => {
338
- await i(1, 'noam', 'a');
339
- await i(2, 'yael', 'b');
340
- await i(3, 'yoni', 'a');
341
- }, stam3);
342
- expect(isBackend()).toBe(false);
343
- let r = await c.find();
344
- expect(r.length).toBe(3, 'array length');
345
- expect(await c.count()).toBe(3, 'count');
346
- await testAsIfOnBackend(async () => {
347
- expect(await c.count()).toBe(1, 'count');
348
- expect(await c.findFirst({ id: 1 })).toBe(undefined, 'find first');
349
- expect((await c.findFirst({ id: 1 }, { createIfNotFound: true }))._.isNew()).toBe(true, 'lookup ');
350
- });
351
- });
352
- @EntityDecorator(undefined, {
353
- allowApiUpdate: true,
354
- allowApiDelete: true,
355
- apiPrefilter: { description: 'b' }
356
- })
357
- class CategoriesForThisTest extends newCategories {
358
- }
359
- @EntityDecorator(undefined, {
360
- allowApiUpdate: true,
361
- allowApiDelete: true,
362
- apiPrefilter: () => ({ description: 'b' })
363
- })
364
- class CategoriesForThisTest2 extends newCategories {
365
- }
366
- @EntityDecorator(undefined, {
367
- backendPrefilter: () => ({ categoryName: { $contains: 'a' } })
368
- })
369
- class CategoriesForThisTestThatInherits extends CategoriesForThisTest2 {
370
- }
371
- @EntityDecorator(undefined, {
372
- allowApiUpdate: true,
373
- allowApiDelete: true,
374
- apiPrefilter: CategoriesForThisTest3.myFilter()
375
- })
376
- class CategoriesForThisTest3 extends newCategories {
377
- static myFilter = Filter.createCustom(async (remult) => ({ description: 'b' }), "key");
378
- }
379
- @EntityDecorator(undefined, {})
380
- class CategoriesForThisTest3Inherit extends CategoriesForThisTest3 {
381
- }
382
- @EntityDecorator(undefined, {
383
- allowApiUpdate: true,
384
- allowApiDelete: true,
385
- apiPrefilter: () => CategoriesForThisTest4.myFilter()
386
- })
387
- class CategoriesForThisTest4 extends newCategories {
388
- static myFilter = Filter.createCustom(async (remult) => ({ description: 'b' }));
389
- }
@@ -1,5 +0,0 @@
1
- export declare class ExceptionValidation {
2
- id: number;
3
- name: string;
4
- name2: string;
5
- }
@@ -1,152 +0,0 @@
1
- import { TestDataApiResponse } from "../TestDataApiResponse";
2
- import { Done } from "../Done";
3
- import { createData } from "../createData";
4
- import { DataApi } from '../../data-api';
5
- import { Remult } from '../../context';
6
- import { Categories } from "../remult-3-entities";
7
- import { Entity, EntityBase, ValueListInfo, Fields, getEntityRef } from "../../remult3";
8
- import { InMemoryDataProvider } from "../../..";
9
- import { Status } from "../testModel/models";
10
- describe("data api", () => {
11
- it("put with validations fails", async () => {
12
- let [c, remult] = await createData(async (insert) => insert(1, 'noam'), CategoriesForThisTest);
13
- var api = new DataApi(c, remult);
14
- let t = new TestDataApiResponse();
15
- let d = new Done();
16
- t.error = async (data) => {
17
- expect(data.modelState.categoryName).toBe('invalid');
18
- d.ok();
19
- };
20
- await api.put(t, 1, {
21
- categoryName: 'noam 1'
22
- });
23
- d.test();
24
- var x = await c.find({ where: { id: 1 } });
25
- expect(x[0].categoryName).toBe('noam');
26
- });
27
- it("post with validation fails", async () => {
28
- let [c, remult] = await createData(async () => { }, CategoriesForThisTest);
29
- var api = new DataApi(c, remult);
30
- let t = new TestDataApiResponse();
31
- let d = new Done();
32
- t.error = async (data) => {
33
- expect(data.modelState.categoryName).toBe('invalid');
34
- d.ok();
35
- };
36
- await api.post(t, { id: 1, categoryName: 'noam 1' });
37
- d.test();
38
- expect((await c.find()).length).toBe(0);
39
- });
40
- it("allow column update based on new row only", async () => {
41
- let type = class extends EntityBase {
42
- id;
43
- val;
44
- };
45
- Entity('allowcolumnupdatetest', { allowApiCrud: true })(type);
46
- Fields.integer()(type.prototype, 'id');
47
- Fields.string({
48
- allowApiUpdate: (x, c) => x._.isNew()
49
- })(type.prototype, 'val');
50
- let remult = new Remult();
51
- remult.dataProvider = (new InMemoryDataProvider());
52
- let c = remult.repo(type);
53
- var api = new DataApi(c, remult);
54
- let t = new TestDataApiResponse();
55
- t.success = () => { };
56
- t.created = () => { };
57
- let d = new Done();
58
- await api.post(t, {
59
- id: 1,
60
- val: 'noam'
61
- });
62
- await api.put(t, 1, {
63
- val: 'yael'
64
- });
65
- var x = await c.find({ where: { id: 1 } });
66
- expect(x[0].val).toBe('noam');
67
- });
68
- it("allow column update based on specific value", async () => {
69
- let type = class extends EntityBase {
70
- id;
71
- val;
72
- };
73
- Entity('allowcolumnupdatetest', { allowApiCrud: true })(type);
74
- Fields.integer()(type.prototype, 'id');
75
- Fields.string({
76
- allowApiUpdate: (x, c) => x.val != "yael"
77
- })(type.prototype, 'val');
78
- let remult = new Remult();
79
- remult.dataProvider = (new InMemoryDataProvider());
80
- let c = remult.repo(type);
81
- expect(c.fields.val.apiUpdateAllowed({ val: 'yael' })).toBe(false);
82
- expect(c.fields.val.apiUpdateAllowed({ val: 'yae' })).toBe(true);
83
- var api = new DataApi(c, remult);
84
- let t = new TestDataApiResponse();
85
- t.success = () => { };
86
- t.created = () => { };
87
- let d = new Done();
88
- await api.post(t, {
89
- id: 1,
90
- val: 'noam'
91
- });
92
- await api.put(t, 1, {
93
- val: 'yael'
94
- });
95
- var x = await c.find({ where: { id: 1 } });
96
- expect(x[0].val).toBe('yael');
97
- await api.put(t, 1, {
98
- val: 'yoni'
99
- });
100
- var x = await c.find({ where: { id: 1 } });
101
- expect(x[0].val).toBe('yael');
102
- });
103
- it("test value list type", () => {
104
- let x = ValueListInfo.get(Status);
105
- expect(x.fieldTypeInDb).toBe("integer");
106
- });
107
- });
108
- @Entity(undefined, {
109
- allowApiUpdate: true,
110
- allowApiInsert: true,
111
- saving: (t) => {
112
- if (t.categoryName.indexOf('1') >= 0)
113
- t._.fields.categoryName.error = 'invalid';
114
- }
115
- })
116
- class CategoriesForThisTest extends Categories {
117
- }
118
- describe("Test validation with exception", () => {
119
- it("", async () => {
120
- const repo = new Remult(new InMemoryDataProvider()).repo(ExceptionValidation);
121
- let e = repo.create({ name: 'a', name2: 'b' });
122
- try {
123
- await repo.save(e);
124
- }
125
- catch (err) {
126
- const info = err;
127
- expect(info.modelState.name).toBe("say what?");
128
- expect(getEntityRef(e).fields.name.error).toBe("say what?");
129
- expect(info.modelState.name2).toBe("say what?2");
130
- expect(getEntityRef(e).fields.name2.error).toBe("say what?2");
131
- }
132
- });
133
- });
134
- @Entity(undefined, {})
135
- export class ExceptionValidation {
136
- @Fields.number()
137
- id = 0;
138
- @Fields.string({
139
- validate: self => {
140
- if (self.name.length < 5)
141
- throw "say what?";
142
- }
143
- })
144
- name = '';
145
- @Fields.string({
146
- validate: self => {
147
- if (self.name.length < 5)
148
- throw new Error("say what?2");
149
- }
150
- })
151
- name2 = '';
152
- }
@@ -1,38 +0,0 @@
1
- import { Remult } from '../context';
2
- import { Entity, EntityBase, Fields } from '../remult3';
3
- @Entity('my entity')
4
- class myEntity extends EntityBase {
5
- @Fields.string()
6
- @Fields.string({ caption: '123' })
7
- a;
8
- @Fields.string({ caption: '123' })
9
- @Fields.string()
10
- b;
11
- @Fields.string((o, c) => o.caption = "456")
12
- c;
13
- }
14
- describe("test decorator precedence", () => {
15
- it("test basics", async () => {
16
- let c = new Remult();
17
- let r = c.repo(myEntity);
18
- expect([...r.metadata.fields].length).toBe(3);
19
- expect(r.metadata.fields.a.caption).toBe('123');
20
- expect(r.metadata.fields.b.caption).toBe('123');
21
- expect(r.metadata.fields.c.caption).toBe('456');
22
- });
23
- it("testit", () => {
24
- let c = new Remult();
25
- let r = c.repo(user).create();
26
- expect(r.$.username.metadata.caption).toBe("Username");
27
- });
28
- });
29
- @Entity('profile')
30
- class profile extends EntityBase {
31
- @Fields.string()
32
- username;
33
- }
34
- @Entity('user')
35
- class user extends profile {
36
- @Fields.string()
37
- email;
38
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,33 +0,0 @@
1
- import { Remult } from '../context';
2
- import { InMemoryDataProvider } from '../data-providers/in-memory-database';
3
- import { EntityBase, Entity, Fields } from '../remult3';
4
- describe("test default value", () => {
5
- it("test basics", async () => {
6
- let c = new Remult();
7
- c.dataProvider = (new InMemoryDataProvider());
8
- testDefaultValue.testVal = 1;
9
- let r = c.repo(testDefaultValue).create();
10
- expect(r.test).toBe(1);
11
- expect(testDefaultValue.testVal).toBe(2);
12
- });
13
- it("test create without querying the value", async () => {
14
- let c = new Remult();
15
- c.dataProvider = (new InMemoryDataProvider());
16
- testDefaultValue.testVal = 1;
17
- let r = c.repo(testDefaultValue).create();
18
- await r._.save();
19
- let res = await c.repo(testDefaultValue).find({});
20
- expect(res.length).toBe(1);
21
- expect(testDefaultValue.testVal).toBe(2);
22
- expect(res[0].test).toBe(1);
23
- });
24
- });
25
- @Entity('testDefaultValue')
26
- class testDefaultValue extends EntityBase {
27
- static testVal = 0;
28
- code;
29
- @Fields.integer({
30
- defaultValue: () => testDefaultValue.testVal++
31
- })
32
- test;
33
- }
@@ -1,14 +0,0 @@
1
- import { EntityBase } from "../remult3";
2
- export declare class parent extends EntityBase {
3
- id: number;
4
- myField: string;
5
- autoSavedField: string;
6
- }
7
- export declare class child extends parent {
8
- }
9
- export declare class child2 extends parent {
10
- }
11
- export declare class anError extends EntityBase {
12
- id: number;
13
- name: string;
14
- }