remult 0.22.2 → 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 (255) 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/src/backend-tests/backend-database-test-setup.backend-spec.js +10 -0
  5. package/esm/src/id-entity.d.ts +4 -0
  6. package/esm/src/id-entity.js +8 -0
  7. package/esm/src/remult3/RepositoryImplementation.js +7 -5
  8. package/esm/src/shared-tests/db-tests.db-tests.js +35 -0
  9. package/package.json +1 -1
  10. package/postgres/postgresColumnSyntax.d.ts +2 -0
  11. package/postgres/postgresColumnSyntax.js +34 -0
  12. package/remult-knex/index.js +2 -2
  13. package/remult-middleware.d.ts +2 -0
  14. package/remult-middleware.js +70 -0
  15. package/server/register-actions-on-server.d.ts +3 -0
  16. package/server/register-actions-on-server.js +50 -0
  17. package/server/register-entities-on-server.d.ts +3 -0
  18. package/server/register-entities-on-server.js +19 -0
  19. package/src/backend-tests/backend-database-test-setup.backend-spec.js +10 -0
  20. package/{esm/core/src → src}/backend-tests/my-test.backend-spec.d.ts +1 -1
  21. package/src/backend-tests/my-test.backend-spec.js +217 -0
  22. package/src/backend-tests/test-http-server.backend-spec.d.ts +6 -0
  23. package/src/backend-tests/test-http-server.backend-spec.js +342 -0
  24. package/src/id-entity.d.ts +4 -0
  25. package/src/id-entity.js +17 -0
  26. package/src/remult3/RepositoryImplementation.js +15 -13
  27. package/src/shared-tests/db-tests.db-tests.js +64 -0
  28. package/{esm/core/src/valueConverters.d.ts → valueConverters.d.ts} +12 -13
  29. package/valueConverters.js +168 -0
  30. package/esm/angular/interfaces/index.d.ts +0 -1
  31. package/esm/angular/interfaces/index.js +0 -1
  32. package/esm/angular/interfaces/src/column-collection.d.ts +0 -70
  33. package/esm/angular/interfaces/src/column-collection.js +0 -341
  34. package/esm/angular/interfaces/src/data-area-settings.d.ts +0 -15
  35. package/esm/angular/interfaces/src/data-area-settings.js +0 -35
  36. package/esm/angular/interfaces/src/data-control-interfaces.d.ts +0 -36
  37. package/esm/angular/interfaces/src/data-control-interfaces.js +0 -57
  38. package/esm/angular/interfaces/src/dataList.d.ts +0 -13
  39. package/esm/angular/interfaces/src/dataList.js +0 -42
  40. package/esm/angular/interfaces/src/filter-helper.d.ts +0 -13
  41. package/esm/angular/interfaces/src/filter-helper.js +0 -59
  42. package/esm/angular/interfaces/src/grid-settings.d.ts +0 -145
  43. package/esm/angular/interfaces/src/grid-settings.js +0 -387
  44. package/esm/angular/interfaces/src/public_api.d.ts +0 -4
  45. package/esm/angular/interfaces/src/public_api.js +0 -4
  46. package/esm/angular/src/angular/RemultAngularPluginsService.d.ts +0 -4
  47. package/esm/angular/src/angular/RemultAngularPluginsService.js +0 -3
  48. package/esm/angular/src/angular/data-control/data-control2.component.d.ts +0 -49
  49. package/esm/angular/src/angular/data-control/data-control2.component.js +0 -138
  50. package/esm/core/SseSubscriptionServer.d.ts +0 -33
  51. package/esm/core/SseSubscriptionServer.js +0 -107
  52. package/esm/core/assign.d.ts +0 -1
  53. package/esm/core/assign.js +0 -5
  54. package/esm/core/classType.d.ts +0 -3
  55. package/esm/core/classType.js +0 -1
  56. package/esm/core/index.d.ts +0 -27
  57. package/esm/core/index.js +0 -25
  58. package/esm/core/inputTypes.d.ts +0 -9
  59. package/esm/core/inputTypes.js +0 -9
  60. package/esm/core/live-query/data-provider-live-query-storage.d.ts +0 -22
  61. package/esm/core/live-query/data-provider-live-query-storage.js +0 -71
  62. package/esm/core/postgres/index.d.ts +0 -2
  63. package/esm/core/postgres/index.js +0 -2
  64. package/esm/core/postgres/postgres-data-provider.d.ts +0 -36
  65. package/esm/core/postgres/postgres-data-provider.js +0 -120
  66. package/esm/core/postgres/schema-builder.d.ts +0 -17
  67. package/esm/core/postgres/schema-builder.js +0 -153
  68. package/esm/core/remult-fresh.d.ts +0 -17
  69. package/esm/core/remult-fresh.js +0 -29
  70. package/esm/core/remult-knex/index.d.ts +0 -30
  71. package/esm/core/remult-knex/index.js +0 -446
  72. package/esm/core/remult-mongo.d.ts +0 -24
  73. package/esm/core/remult-mongo.js +0 -254
  74. package/esm/core/server/JsonEntityFileStorage.d.ts +0 -10
  75. package/esm/core/server/JsonEntityFileStorage.js +0 -25
  76. package/esm/core/server/core.d.ts +0 -4
  77. package/esm/core/server/core.js +0 -4
  78. package/esm/core/server/expressBridge.d.ts +0 -182
  79. package/esm/core/server/expressBridge.js +0 -938
  80. package/esm/core/server/index.d.ts +0 -6
  81. package/esm/core/server/index.js +0 -9
  82. package/esm/core/server/initAsyncHooks.d.ts +0 -1
  83. package/esm/core/server/initAsyncHooks.js +0 -9
  84. package/esm/core/server/initDataProvider.d.ts +0 -2
  85. package/esm/core/server/initDataProvider.js +0 -14
  86. package/esm/core/src/__EntityValueProvider.d.ts +0 -11
  87. package/esm/core/src/__EntityValueProvider.js +0 -1
  88. package/esm/core/src/__RowsOfDataForTesting.d.ts +0 -3
  89. package/esm/core/src/__RowsOfDataForTesting.js +0 -1
  90. package/esm/core/src/backend-tests/backend-database-test-setup.backend-spec.d.ts +0 -6
  91. package/esm/core/src/backend-tests/backend-database-test-setup.backend-spec.js +0 -147
  92. package/esm/core/src/backend-tests/my-test.backend-spec.js +0 -197
  93. package/esm/core/src/backend-tests/test-http-server.backend-spec.d.ts +0 -1
  94. package/esm/core/src/backend-tests/test-http-server.backend-spec.js +0 -167
  95. package/esm/core/src/buildRestDataProvider.d.ts +0 -31
  96. package/esm/core/src/buildRestDataProvider.js +0 -113
  97. package/esm/core/src/column-interfaces.d.ts +0 -154
  98. package/esm/core/src/column-interfaces.js +0 -7
  99. package/esm/core/src/column.d.ts +0 -58
  100. package/esm/core/src/column.js +0 -174
  101. package/esm/core/src/context.d.ts +0 -134
  102. package/esm/core/src/context.js +0 -286
  103. package/esm/core/src/data-api.d.ts +0 -39
  104. package/esm/core/src/data-api.js +0 -279
  105. package/esm/core/src/data-interfaces.d.ts +0 -41
  106. package/esm/core/src/data-interfaces.js +0 -12
  107. package/esm/core/src/data-providers/array-entity-data-provider.d.ts +0 -22
  108. package/esm/core/src/data-providers/array-entity-data-provider.js +0 -252
  109. package/esm/core/src/data-providers/in-memory-database.d.ts +0 -9
  110. package/esm/core/src/data-providers/in-memory-database.js +0 -14
  111. package/esm/core/src/data-providers/json-data-provider.d.ts +0 -12
  112. package/esm/core/src/data-providers/json-data-provider.js +0 -55
  113. package/esm/core/src/data-providers/rest-data-provider.d.ts +0 -49
  114. package/esm/core/src/data-providers/rest-data-provider.js +0 -256
  115. package/esm/core/src/data-providers/sql-database.d.ts +0 -33
  116. package/esm/core/src/data-providers/sql-database.js +0 -384
  117. package/esm/core/src/data-providers/web-sql-data-provider.d.ts +0 -24
  118. package/esm/core/src/data-providers/web-sql-data-provider.js +0 -143
  119. package/esm/core/src/entity.d.ts +0 -91
  120. package/esm/core/src/entity.js +0 -1
  121. package/esm/core/src/filter/filter-consumer-bridge-to-sql-request.d.ts +0 -50
  122. package/esm/core/src/filter/filter-consumer-bridge-to-sql-request.js +0 -150
  123. package/esm/core/src/filter/filter-consumer-bridge-to-url-builder.d.ts +0 -1
  124. package/esm/core/src/filter/filter-consumer-bridge-to-url-builder.js +0 -1
  125. package/esm/core/src/filter/filter-interfaces.d.ts +0 -85
  126. package/esm/core/src/filter/filter-interfaces.js +0 -477
  127. package/esm/core/src/live-query/LiveQueryClient.d.ts +0 -20
  128. package/esm/core/src/live-query/LiveQueryClient.js +0 -188
  129. package/esm/core/src/live-query/SseSubscriptionClient.d.ts +0 -5
  130. package/esm/core/src/live-query/SseSubscriptionClient.js +0 -86
  131. package/esm/core/src/live-query/SubscriptionChannel.d.ts +0 -72
  132. package/esm/core/src/live-query/SubscriptionChannel.js +0 -123
  133. package/esm/core/src/live-query/SubscriptionServer.d.ts +0 -53
  134. package/esm/core/src/live-query/SubscriptionServer.js +0 -111
  135. package/esm/core/src/live-query/live-query-tests.spec.d.ts +0 -6
  136. package/esm/core/src/live-query/live-query-tests.spec.js +0 -952
  137. package/esm/core/src/remult-proxy.d.ts +0 -35
  138. package/esm/core/src/remult-proxy.js +0 -113
  139. package/esm/core/src/remult3/DecoratorReplacer.d.ts +0 -10
  140. package/esm/core/src/remult3/DecoratorReplacer.js +0 -20
  141. package/esm/core/src/remult3/RepositoryImplementation.d.ts +0 -355
  142. package/esm/core/src/remult3/RepositoryImplementation.js +0 -2109
  143. package/esm/core/src/remult3/index.d.ts +0 -2
  144. package/esm/core/src/remult3/index.js +0 -2
  145. package/esm/core/src/remult3/remult3.d.ts +0 -395
  146. package/esm/core/src/remult3/remult3.js +0 -2
  147. package/esm/core/src/server-action.d.ts +0 -81
  148. package/esm/core/src/server-action.js +0 -394
  149. package/esm/core/src/shared-tests/db-tests-setup.d.ts +0 -32
  150. package/esm/core/src/shared-tests/db-tests-setup.js +0 -78
  151. package/esm/core/src/shared-tests/db-tests.db-tests.d.ts +0 -25
  152. package/esm/core/src/shared-tests/db-tests.db-tests.js +0 -810
  153. package/esm/core/src/shared-tests/deleteAll.d.ts +0 -2
  154. package/esm/core/src/shared-tests/deleteAll.js +0 -4
  155. package/esm/core/src/shared-tests/entityWithValidations.d.ts +0 -14
  156. package/esm/core/src/shared-tests/entityWithValidations.js +0 -43
  157. package/esm/core/src/shared-tests/index.d.ts +0 -4
  158. package/esm/core/src/shared-tests/index.js +0 -4
  159. package/esm/core/src/shared-tests/test-custom-id-column.spec.d.ts +0 -1
  160. package/esm/core/src/shared-tests/test-custom-id-column.spec.js +0 -67
  161. package/esm/core/src/shared-tests/test-special-value.spec.d.ts +0 -10
  162. package/esm/core/src/shared-tests/test-special-value.spec.js +0 -73
  163. package/esm/core/src/shared-tests/test-update-with-null.spec.d.ts +0 -1
  164. package/esm/core/src/shared-tests/test-update-with-null.spec.js +0 -31
  165. package/esm/core/src/sort.d.ts +0 -16
  166. package/esm/core/src/sort.js +0 -103
  167. package/esm/core/src/sql-command.d.ts +0 -19
  168. package/esm/core/src/sql-command.js +0 -1
  169. package/esm/core/src/test.d.ts +0 -3
  170. package/esm/core/src/test.js +0 -12
  171. package/esm/core/src/tests/Done.d.ts +0 -5
  172. package/esm/core/src/tests/Done.js +0 -9
  173. package/esm/core/src/tests/RowProvider.spec.d.ts +0 -16
  174. package/esm/core/src/tests/RowProvider.spec.js +0 -631
  175. package/esm/core/src/tests/TestDataApiResponse.d.ts +0 -10
  176. package/esm/core/src/tests/TestDataApiResponse.js +0 -22
  177. package/esm/core/src/tests/basicRowFunctionality.spec.d.ts +0 -8
  178. package/esm/core/src/tests/basicRowFunctionality.spec.js +0 -2103
  179. package/esm/core/src/tests/c.d.ts +0 -8
  180. package/esm/core/src/tests/c.js +0 -13
  181. package/esm/core/src/tests/createData.d.ts +0 -7
  182. package/esm/core/src/tests/createData.js +0 -22
  183. package/esm/core/src/tests/d.d.ts +0 -6
  184. package/esm/core/src/tests/d.js +0 -11
  185. package/esm/core/src/tests/dWithPrefilter.d.ts +0 -7
  186. package/esm/core/src/tests/dWithPrefilter.js +0 -18
  187. package/esm/core/src/tests/entityForCustomFilter.d.ts +0 -16
  188. package/esm/core/src/tests/entityForCustomFilter.js +0 -33
  189. package/esm/core/src/tests/entityWithValidationsOnColumn.d.ts +0 -5
  190. package/esm/core/src/tests/entityWithValidationsOnColumn.js +0 -13
  191. package/esm/core/src/tests/frontend-database-tests-setup.spec.d.ts +0 -4
  192. package/esm/core/src/tests/frontend-database-tests-setup.spec.js +0 -37
  193. package/esm/core/src/tests/h.d.ts +0 -6
  194. package/esm/core/src/tests/h.js +0 -24
  195. package/esm/core/src/tests/remult-3-basic-tests.spec.d.ts +0 -1
  196. package/esm/core/src/tests/remult-3-basic-tests.spec.js +0 -236
  197. package/esm/core/src/tests/remult-3-entities.d.ts +0 -23
  198. package/esm/core/src/tests/remult-3-entities.js +0 -39
  199. package/esm/core/src/tests/tasks.d.ts +0 -6
  200. package/esm/core/src/tests/tasks.js +0 -10
  201. package/esm/core/src/tests/test-context-as-storage.spec.d.ts +0 -0
  202. package/esm/core/src/tests/test-context-as-storage.spec.js +0 -1
  203. package/esm/core/src/tests/test-data-api/predefined-filter.spec.d.ts +0 -1
  204. package/esm/core/src/tests/test-data-api/predefined-filter.spec.js +0 -389
  205. package/esm/core/src/tests/test-data-api/test-put-with-validation.spec.d.ts +0 -5
  206. package/esm/core/src/tests/test-data-api/test-put-with-validation.spec.js +0 -152
  207. package/esm/core/src/tests/test-decorator-precedence.spec.d.ts +0 -1
  208. package/esm/core/src/tests/test-decorator-precedence.spec.js +0 -38
  209. package/esm/core/src/tests/test-default-value.spec.d.ts +0 -1
  210. package/esm/core/src/tests/test-default-value.spec.js +0 -33
  211. package/esm/core/src/tests/test-entity-inheritance.spec.d.ts +0 -14
  212. package/esm/core/src/tests/test-entity-inheritance.spec.js +0 -82
  213. package/esm/core/src/tests/test-exceptions.spec.d.ts +0 -1
  214. package/esm/core/src/tests/test-exceptions.spec.js +0 -375
  215. package/esm/core/src/tests/test-json.spec.d.ts +0 -1
  216. package/esm/core/src/tests/test-json.spec.js +0 -115
  217. package/esm/core/src/tests/test-many-to-one-relation-in-entity.spec.d.ts +0 -9
  218. package/esm/core/src/tests/test-many-to-one-relation-in-entity.spec.js +0 -809
  219. package/esm/core/src/tests/test-non-active-record.spec.d.ts +0 -1
  220. package/esm/core/src/tests/test-non-active-record.spec.js +0 -66
  221. package/esm/core/src/tests/test-object-column.spec.d.ts +0 -1
  222. package/esm/core/src/tests/test-object-column.spec.js +0 -189
  223. package/esm/core/src/tests/test-paged-foreach.spec.d.ts +0 -1
  224. package/esm/core/src/tests/test-paged-foreach.spec.js +0 -328
  225. package/esm/core/src/tests/test-remult-angular.spec.d.ts +0 -1
  226. package/esm/core/src/tests/test-remult-angular.spec.js +0 -23
  227. package/esm/core/src/tests/test-server-controller.spec.d.ts +0 -7
  228. package/esm/core/src/tests/test-server-controller.spec.js +0 -489
  229. package/esm/core/src/tests/test-server-expressions.spec.d.ts +0 -1
  230. package/esm/core/src/tests/test-server-expressions.spec.js +0 -178
  231. package/esm/core/src/tests/test-server-method-on-entity.spec.d.ts +0 -1
  232. package/esm/core/src/tests/test-server-method-on-entity.spec.js +0 -306
  233. package/esm/core/src/tests/test-sql-expression.spec.d.ts +0 -5
  234. package/esm/core/src/tests/test-sql-expression.spec.js +0 -205
  235. package/esm/core/src/tests/test-sql.spec.d.ts +0 -1
  236. package/esm/core/src/tests/test-sql.spec.js +0 -170
  237. package/esm/core/src/tests/test-subscribe.spec.d.ts +0 -1
  238. package/esm/core/src/tests/test-subscribe.spec.js +0 -135
  239. package/esm/core/src/tests/test-type-recovery.spec.d.ts +0 -1
  240. package/esm/core/src/tests/test-type-recovery.spec.js +0 -49
  241. package/esm/core/src/tests/test-where-api.spec.d.ts +0 -1
  242. package/esm/core/src/tests/test-where-api.spec.js +0 -434
  243. package/esm/core/src/tests/testHelper.spec.d.ts +0 -36
  244. package/esm/core/src/tests/testHelper.spec.js +0 -226
  245. package/esm/core/src/tests/testModel/models.d.ts +0 -16
  246. package/esm/core/src/tests/testModel/models.js +0 -25
  247. package/esm/core/src/validators.d.ts +0 -14
  248. package/esm/core/src/validators.js +0 -33
  249. package/esm/core/src/valueConverters.js +0 -197
  250. package/esm/core/urlBuilder.d.ts +0 -6
  251. package/esm/core/urlBuilder.js +0 -20
  252. package/esm/test-servers/shared/Task.d.ts +0 -9
  253. package/esm/test-servers/shared/Task.js +0 -32
  254. package/esm/test.d.ts +0 -5
  255. 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
- }