emberflow 1.4.32 → 1.4.34

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.
@@ -31,11 +31,11 @@ const index_1 = require("../../index");
31
31
  const db_structure_1 = require("../../sample-custom/db-structure");
32
32
  const security_1 = require("../../sample-custom/security");
33
33
  const validators_1 = require("../../sample-custom/validators");
34
- var Timestamp = firebase_admin_1.firestore.Timestamp;
35
34
  const viewLogics = __importStar(require("../../logics/view-logics"));
36
35
  const patchLogics = __importStar(require("../../logics/patch-logics"));
37
36
  const indexUtils = __importStar(require("../../index-utils"));
38
37
  const pubsub_1 = require("../../utils/pubsub");
38
+ var Timestamp = firebase_admin_1.firestore.Timestamp;
39
39
  const projectConfig = {
40
40
  projectId: "your-project-id",
41
41
  region: "asia-southeast1",
@@ -85,77 +85,124 @@ describe("versionCompare", () => {
85
85
  expect((0, patch_logics_1.versionCompare)("1", "1")).toBe(0);
86
86
  });
87
87
  it("returns a negative number when first is lower", () => {
88
- expect((0, patch_logics_1.versionCompare)("1.2.3", "1.2.4")).toBeLessThan(0);
89
- expect((0, patch_logics_1.versionCompare)("1.2", "1.2.1")).toBeLessThan(0);
90
- expect((0, patch_logics_1.versionCompare)("1", "1.0.1")).toBeLessThan(0);
88
+ expect((0, patch_logics_1.versionCompare)("1.2.3", "1.2.4")).toBe(-1);
89
+ expect((0, patch_logics_1.versionCompare)("1.2", "1.2.1")).toBe(-1);
90
+ expect((0, patch_logics_1.versionCompare)("1", "1.0.1")).toBe(-1);
91
91
  });
92
92
  it("returns a positive number when first is higher", () => {
93
- expect((0, patch_logics_1.versionCompare)("1.2.5", "1.2.4")).toBeGreaterThan(0);
94
- expect((0, patch_logics_1.versionCompare)("2.0", "1.9.9")).toBeGreaterThan(0);
95
- expect((0, patch_logics_1.versionCompare)("1.0.1", "1")).toBeGreaterThan(0);
93
+ expect((0, patch_logics_1.versionCompare)("1.2.5", "1.2.4")).toBe(1);
94
+ expect((0, patch_logics_1.versionCompare)("2.0", "1.9.9")).toBe(1);
95
+ expect((0, patch_logics_1.versionCompare)("1.0.1", "1")).toBe(1);
96
96
  });
97
97
  it("handles leading zeros correctly", () => {
98
98
  expect((0, patch_logics_1.versionCompare)("01.02.03", "1.2.3")).toBe(0);
99
- expect((0, patch_logics_1.versionCompare)("01.10", "1.2")).toBeGreaterThan(0);
99
+ expect((0, patch_logics_1.versionCompare)("01.10", "1.2")).toBe(1);
100
100
  });
101
101
  it("handles different segment lengths gracefully", () => {
102
102
  expect((0, patch_logics_1.versionCompare)("1.2", "1.2.0.0")).toBe(0);
103
- expect((0, patch_logics_1.versionCompare)("1.2.0.1", "1.2")).toBeGreaterThan(0);
103
+ expect((0, patch_logics_1.versionCompare)("1.2.0.1", "1.2")).toBe(1);
104
104
  });
105
105
  it("treats non-numeric segments as 0", () => {
106
106
  // Because parseInt of non-numeric yields NaN, then || 0 → 0
107
107
  expect((0, patch_logics_1.versionCompare)("1.a.3", "1.0.3")).toBe(0);
108
- expect((0, patch_logics_1.versionCompare)("1.a.4", "1.0.3")).toBeGreaterThan(0);
109
- expect((0, patch_logics_1.versionCompare)("1.a.4", "1.0.3")).toBeGreaterThan(0);
110
- expect((0, patch_logics_1.versionCompare)("1.a.4", "1.0.3")).toBeGreaterThan(0);
108
+ expect((0, patch_logics_1.versionCompare)("1.a.4", "1.0.3")).toBe(1);
109
+ expect((0, patch_logics_1.versionCompare)("1.a.4", "1.0.3")).toBe(1);
110
+ expect((0, patch_logics_1.versionCompare)("1.a.4", "1.0.3")).toBe(1);
111
111
  });
112
112
  });
113
113
  describe("runPatchLogics", () => {
114
- const logicFn1 = jest.fn().mockResolvedValue({
114
+ let queueRunViewLogicsSpy;
115
+ let runTransactionSpy;
116
+ let createMetricExecutionSpy;
117
+ let distributeFnTransactionalSpy;
118
+ const userLogicFn1 = jest.fn().mockResolvedValue({
115
119
  status: "finished",
116
120
  documents: [],
117
121
  });
118
- const logicFn2 = jest.fn().mockResolvedValue({
122
+ const userLogicFn2Result = {
119
123
  status: "finished",
120
- documents: [],
121
- });
122
- const logicFn2Point5 = jest.fn().mockResolvedValue({
124
+ documents: [{
125
+ "action": "merge",
126
+ "doc": {
127
+ firstName: "John",
128
+ },
129
+ "dstPath": "users/userId",
130
+ }],
131
+ };
132
+ const userLogicFn2 = jest.fn().mockResolvedValue(userLogicFn2Result);
133
+ const additionalUserLogicFn2Result = {
134
+ status: "finished",
135
+ documents: [
136
+ {
137
+ "action": "merge",
138
+ "doc": {
139
+ lastName: "Doe",
140
+ },
141
+ "dstPath": "users/userId",
142
+ },
143
+ ],
144
+ };
145
+ const additionalUserLogicFn2 = jest.fn().mockResolvedValue(additionalUserLogicFn2Result);
146
+ const userLogicFn2p5Result = {
147
+ status: "finished",
148
+ documents: [{
149
+ "action": "merge",
150
+ "doc": {
151
+ fullName: "John Doe",
152
+ },
153
+ "dstPath": "users/userId",
154
+ }],
155
+ };
156
+ const userLogicFn2p5 = jest.fn().mockResolvedValue(userLogicFn2p5Result);
157
+ const topicLogicFn1 = jest.fn().mockResolvedValue({
123
158
  status: "finished",
124
159
  documents: [],
125
160
  });
126
- const logicFn3 = jest.fn().mockResolvedValue({
161
+ const userLogicFn3 = jest.fn().mockResolvedValue({
127
162
  status: "finished",
128
163
  documents: [],
129
164
  });
130
165
  const patchLogics = [
131
166
  {
132
- name: "Patch Version 1",
167
+ name: "User Patch Version 1",
133
168
  entity: "user",
134
- patchLogicFn: logicFn1,
169
+ patchLogicFn: userLogicFn1,
135
170
  version: "1.0.0",
136
171
  },
137
172
  {
138
- name: "Patch Version 2",
173
+ name: "User Patch Version 2",
139
174
  entity: "user",
140
- patchLogicFn: logicFn2,
175
+ patchLogicFn: userLogicFn2,
141
176
  version: "2.0.0",
142
177
  },
143
178
  {
144
- name: "Patch Version 2.5",
179
+ name: "Additional User Patch Version 2",
145
180
  entity: "user",
146
- patchLogicFn: logicFn2Point5,
181
+ patchLogicFn: additionalUserLogicFn2,
182
+ version: "2.0.0",
183
+ },
184
+ {
185
+ name: "User Patch Version 2.5",
186
+ entity: "user",
187
+ patchLogicFn: userLogicFn2p5,
147
188
  version: "2.5.0",
148
189
  },
149
190
  {
150
- name: "Patch Version 3",
191
+ name: "Topic Patch Version 1",
192
+ entity: "topic",
193
+ patchLogicFn: topicLogicFn1,
194
+ version: "1.0.0",
195
+ },
196
+ {
197
+ name: "User Patch Version 3",
151
198
  entity: "user",
152
- patchLogicFn: logicFn3,
199
+ patchLogicFn: userLogicFn3,
153
200
  version: "3.0.0",
154
201
  },
155
202
  ];
156
203
  const dataVersion = "1.0.0";
157
204
  const appVersion = "2.9.0";
158
- const txn = {
205
+ const txnResult1 = {
159
206
  get: jest.fn().mockResolvedValue({
160
207
  data: jest.fn().mockReturnValue({
161
208
  "userId": "userId",
@@ -163,52 +210,133 @@ describe("runPatchLogics", () => {
163
210
  }),
164
211
  }),
165
212
  };
166
- jest.spyOn(paths, "findMatchingDocPathRegex").mockReturnValue({
167
- entity: "user",
168
- regex: /users/,
213
+ const txnResult2 = {
214
+ get: jest.fn().mockResolvedValue({
215
+ data: jest.fn().mockReturnValue({
216
+ "userId": "userId",
217
+ "@dataVersion": "2.0.0",
218
+ "firstName": "John",
219
+ "lastName": "Doe",
220
+ }),
221
+ }),
222
+ };
223
+ beforeEach(() => {
224
+ jest.spyOn(indexUtils, "createMetricLogicDoc").mockResolvedValue();
225
+ jest.spyOn(admin.firestore(), "doc").mockReturnValue({
226
+ get: jest.fn().mockResolvedValue({
227
+ data: jest.fn().mockReturnValue({
228
+ "userId": "userId",
229
+ "@dataVersion": dataVersion,
230
+ }),
231
+ }),
232
+ });
233
+ jest.spyOn(paths, "findMatchingDocPathRegex").mockReturnValue({
234
+ entity: "user",
235
+ regex: /users/,
236
+ });
237
+ createMetricExecutionSpy = jest.spyOn(indexUtils._mockable, "createMetricExecution").mockResolvedValue();
238
+ queueRunViewLogicsSpy = jest.spyOn(viewLogics, "queueRunViewLogics").mockResolvedValue();
239
+ runTransactionSpy = jest.spyOn(index_1.db, "runTransaction")
240
+ .mockImplementationOnce(async (callback) => callback(txnResult1))
241
+ .mockImplementationOnce(async (callback) => callback(txnResult2));
242
+ distributeFnTransactionalSpy = jest.spyOn(indexUtils, "distributeFnTransactional")
243
+ .mockResolvedValueOnce([
244
+ {
245
+ action: "merge",
246
+ dstPath: "users/userId",
247
+ doc: {
248
+ "firstName": "John",
249
+ "lastName": "Doe",
250
+ "@dataVersion": "2.0.0",
251
+ },
252
+ },
253
+ ]).mockResolvedValueOnce([
254
+ {
255
+ action: "merge",
256
+ dstPath: "users/userId",
257
+ doc: {
258
+ "fullName": "John Doe",
259
+ "@dataVersion": "2.5.0",
260
+ },
261
+ },
262
+ ]);
169
263
  });
170
- it("should run the patch logics between dataVersion and appVersion then " +
171
- "update the version of the data", async () => {
264
+ afterEach(() => {
265
+ jest.restoreAllMocks();
266
+ });
267
+ it("should appropriately group the matched logics by version then run transactions for each group", async () => {
172
268
  const dstPath = "users/userId";
173
269
  (0, index_1.initializeEmberFlow)(projectConfig, admin, db_structure_1.dbStructure, db_structure_1.Entity, security_1.securityConfigs, validators_1.validatorConfigs, [], patchLogics);
174
- const result = await (0, patch_logics_1.runPatchLogics)(appVersion, dstPath, txn);
175
- // should run the appropriate logics
176
- expect(logicFn1).not.toHaveBeenCalled();
177
- expect(logicFn2).toHaveBeenCalled();
178
- expect(logicFn2Point5).toHaveBeenCalled();
179
- expect(logicFn3).not.toHaveBeenCalled();
180
- // should run the logics in the correct order
181
- expect(logicFn2.mock.invocationCallOrder[0])
182
- .toBeLessThan(logicFn2Point5.mock.invocationCallOrder[0]);
183
- // should update the data version
184
- expect(result).toEqual([
185
- {
270
+ await (0, patch_logics_1.runPatchLogics)(appVersion, dstPath);
271
+ expect(runTransactionSpy).toHaveBeenCalledTimes(2); // for version 2.0.0 and 2.5.0
272
+ });
273
+ it("should run all patch logics between dataVersion and appVersion", async () => {
274
+ const dstPath = "users/userId";
275
+ (0, index_1.initializeEmberFlow)(projectConfig, admin, db_structure_1.dbStructure, db_structure_1.Entity, security_1.securityConfigs, validators_1.validatorConfigs, [], patchLogics);
276
+ await (0, patch_logics_1.runPatchLogics)(appVersion, dstPath);
277
+ expect(userLogicFn1).not.toHaveBeenCalled(); // below data version
278
+ expect(userLogicFn2).toHaveBeenCalled();
279
+ expect(additionalUserLogicFn2).toHaveBeenCalled();
280
+ expect(userLogicFn2p5).toHaveBeenCalled();
281
+ expect(topicLogicFn1).not.toHaveBeenCalled(); // wrong entity
282
+ expect(userLogicFn3).not.toHaveBeenCalled(); // ahead the app version
283
+ });
284
+ it("should distribute all consolidated logic result docs", async () => {
285
+ const dstPath = "users/userId";
286
+ (0, index_1.initializeEmberFlow)(projectConfig, admin, db_structure_1.dbStructure, db_structure_1.Entity, security_1.securityConfigs, validators_1.validatorConfigs, [], patchLogics);
287
+ await (0, patch_logics_1.runPatchLogics)(appVersion, dstPath);
288
+ expect(distributeFnTransactionalSpy).toHaveBeenCalledTimes(2);
289
+ expect(distributeFnTransactionalSpy).toHaveBeenNthCalledWith(1, txnResult1, [
290
+ Object.assign(Object.assign({}, userLogicFn2Result), { documents: [Object.assign(Object.assign({}, userLogicFn2Result.documents[0]), { "doc": Object.assign(Object.assign({}, userLogicFn2Result.documents[0].doc), { "@dataVersion": "2.0.0" }) })], transactional: true, execTime: expect.any(Number) }),
291
+ Object.assign(Object.assign({}, additionalUserLogicFn2Result), { documents: [
292
+ Object.assign(Object.assign({}, additionalUserLogicFn2Result.documents[0]), { "doc": Object.assign(Object.assign({}, additionalUserLogicFn2Result.documents[0].doc), { "@dataVersion": "2.0.0" }) }),
293
+ ], transactional: true, execTime: expect.any(Number) }),
294
+ ]);
295
+ expect(distributeFnTransactionalSpy).toHaveBeenNthCalledWith(2, txnResult2, [
296
+ Object.assign(Object.assign({}, userLogicFn2p5Result), { documents: [Object.assign(Object.assign({}, userLogicFn2p5Result.documents[0]), { "doc": Object.assign(Object.assign({}, userLogicFn2p5Result.documents[0].doc), { "@dataVersion": "2.5.0" }) })], execTime: expect.any(Number), transactional: true }),
297
+ ]);
298
+ expect(queueRunViewLogicsSpy).toHaveBeenCalledTimes(2);
299
+ });
300
+ it("should run createMetricExecution per group patch", async () => {
301
+ const dstPath = "users/userId";
302
+ (0, index_1.initializeEmberFlow)(projectConfig, admin, db_structure_1.dbStructure, db_structure_1.Entity, security_1.securityConfigs, validators_1.validatorConfigs, [], patchLogics);
303
+ await (0, patch_logics_1.runPatchLogics)(appVersion, dstPath);
304
+ expect(createMetricExecutionSpy).toHaveBeenCalledTimes(2);
305
+ // version 2.0.0
306
+ expect(createMetricExecutionSpy).toHaveBeenNthCalledWith(1, [{
307
+ execTime: expect.any(Number),
186
308
  status: "finished",
187
- documents: [
188
- {
189
- "action": "merge",
190
- "doc": {
191
- "@dataVersion": "2.0.0",
192
- },
193
- "dstPath": "users/userId",
194
- },
195
- ],
309
+ timeFinished: expect.any(Timestamp),
310
+ documents: [{ "action": "merge", "doc": { "firstName": "John", "@dataVersion": "2.0.0" }, "dstPath": "users/userId" }],
311
+ transactional: true,
312
+ },
313
+ {
196
314
  execTime: expect.any(Number),
315
+ status: "finished",
197
316
  timeFinished: expect.any(Timestamp),
317
+ documents: [{ action: "merge", doc: { "lastName": "Doe", "@dataVersion": "2.0.0" }, dstPath: "users/userId" }],
318
+ transactional: true,
198
319
  },
199
320
  {
321
+ execTime: expect.any(Number),
200
322
  status: "finished",
201
- documents: [
202
- {
203
- "action": "merge",
204
- "doc": {
205
- "@dataVersion": "2.5.0",
206
- },
207
- "dstPath": "users/userId",
208
- },
209
- ],
323
+ name: "runPatchLogics",
324
+ documents: [],
325
+ },
326
+ ]);
327
+ // version 2.5.0
328
+ expect(createMetricExecutionSpy).toHaveBeenNthCalledWith(2, [{
210
329
  execTime: expect.any(Number),
330
+ status: "finished",
211
331
  timeFinished: expect.any(Timestamp),
332
+ documents: [{ action: "merge", doc: { "fullName": "John Doe", "@dataVersion": "2.5.0" }, dstPath: "users/userId" }],
333
+ transactional: true,
334
+ },
335
+ {
336
+ execTime: expect.any(Number),
337
+ status: "finished",
338
+ name: "runPatchLogics",
339
+ documents: [],
212
340
  },
213
341
  ]);
214
342
  });
@@ -216,85 +344,8 @@ describe("runPatchLogics", () => {
216
344
  describe("onMessageRunPatchLogicsQueue", () => {
217
345
  let isProcessedSpy;
218
346
  let trackProcessedIdsSpy;
219
- let queueRunViewLogicsSpy;
220
347
  let runPatchLogicsSpy;
221
- let runTransactionSpy;
222
- let expandConsolidateAndGroupByDstPathSpy;
223
- let distributeDocSpy;
224
348
  const dstPath = "users/userId";
225
- const patchLogicResult1 = {
226
- name: "logic1",
227
- status: "finished",
228
- documents: [
229
- {
230
- action: "merge",
231
- doc: { "@dataVersion": "2.0.0" },
232
- dstPath,
233
- },
234
- {
235
- action: "create",
236
- doc: {
237
- "@id": "userId",
238
- "firstName": "Maria",
239
- "lastName": "Doe",
240
- },
241
- dstPath: "users/userId/collaborators/collaboratorId",
242
- },
243
- ],
244
- };
245
- const patchLogicResult2 = {
246
- name: "logic2",
247
- status: "finished",
248
- documents: [
249
- {
250
- action: "merge",
251
- doc: {
252
- firstName: "john",
253
- lastName: "doe",
254
- },
255
- instructions: {
256
- fullName: "del",
257
- },
258
- dstPath,
259
- },
260
- {
261
- action: "merge",
262
- doc: { "@dataVersion": "2.5.0" },
263
- dstPath,
264
- },
265
- ],
266
- };
267
- const patchLogicResults = [patchLogicResult1, patchLogicResult2];
268
- const txnGet = jest.fn();
269
- const fakeTxn = {
270
- get: txnGet,
271
- };
272
- const expandConsolidateResult = new Map([
273
- ["users/doc1", [
274
- {
275
- action: "merge",
276
- priority: "normal",
277
- dstPath: "users/doc1",
278
- doc: {
279
- firstName: "john",
280
- lastName: "doe",
281
- },
282
- instructions: { field2: "--", field4: "--" },
283
- }
284
- ],
285
- ],
286
- ["users/userId/collaborators/collaboratorId", [
287
- {
288
- action: "create",
289
- doc: {
290
- "@id": "userId",
291
- "firstName": "Maria",
292
- "lastName": "Doe",
293
- },
294
- dstPath: "users/userId/collaborators/collaboratorId",
295
- }
296
- ]],
297
- ]);
298
349
  const targetVersion = "2.9.0";
299
350
  const event = {
300
351
  data: {
@@ -309,12 +360,7 @@ describe("onMessageRunPatchLogicsQueue", () => {
309
360
  beforeEach(() => {
310
361
  isProcessedSpy = jest.spyOn(pubsub_1.pubsubUtils, "isProcessed").mockResolvedValue(false);
311
362
  trackProcessedIdsSpy = jest.spyOn(pubsub_1.pubsubUtils, "trackProcessedIds").mockResolvedValue();
312
- queueRunViewLogicsSpy = jest.spyOn(viewLogics, "queueRunViewLogics").mockResolvedValue();
313
- runPatchLogicsSpy = jest.spyOn(patchLogics, "runPatchLogics").mockResolvedValue(patchLogicResults);
314
- runTransactionSpy = jest.spyOn(index_1.db, "runTransaction").mockImplementation(async (callback) => callback(fakeTxn));
315
- expandConsolidateAndGroupByDstPathSpy = jest.spyOn(indexUtils, "expandConsolidateAndGroupByDstPath")
316
- .mockResolvedValue(expandConsolidateResult);
317
- distributeDocSpy = jest.spyOn(indexUtils, "distributeDoc").mockResolvedValue();
363
+ runPatchLogicsSpy = jest.spyOn(patchLogics, "runPatchLogics").mockResolvedValue();
318
364
  });
319
365
  afterEach(() => {
320
366
  jest.restoreAllMocks();
@@ -327,19 +373,9 @@ describe("onMessageRunPatchLogicsQueue", () => {
327
373
  expect(console.log).toHaveBeenCalledWith("Skipping duplicate message");
328
374
  });
329
375
  it("should distribute patch logic result docs", async () => {
330
- var _a, _b;
331
- jest.spyOn(indexUtils._mockable, "createMetricExecution").mockResolvedValue();
332
376
  const result = await (0, patch_logics_1.onMessageRunPatchLogicsQueue)(event);
333
377
  expect(isProcessedSpy).toHaveBeenCalledWith(index_1.PATCH_LOGICS_TOPIC_NAME, event.id);
334
- expect(runTransactionSpy).toHaveBeenCalledTimes(1);
335
- expect(runPatchLogicsSpy).toHaveBeenCalledWith(targetVersion, dstPath, fakeTxn);
336
- const flattenedPatchLogicResults = patchLogicResults.flatMap((result) => result.documents);
337
- expect(expandConsolidateAndGroupByDstPathSpy).toHaveBeenCalledWith(flattenedPatchLogicResults);
338
- const consolidatedLogicResultDoc1 = (_a = expandConsolidateResult.get("users/doc1")) === null || _a === void 0 ? void 0 : _a[0];
339
- expect(distributeDocSpy).toHaveBeenNthCalledWith(1, consolidatedLogicResultDoc1, undefined, fakeTxn);
340
- const consolidatedLogicResultDoc2 = (_b = expandConsolidateResult.get("users/userId/collaborators/collaboratorId")) === null || _b === void 0 ? void 0 : _b[0];
341
- expect(distributeDocSpy).toHaveBeenNthCalledWith(2, consolidatedLogicResultDoc2, undefined, fakeTxn);
342
- expect(queueRunViewLogicsSpy).toHaveBeenCalledWith(targetVersion, consolidatedLogicResultDoc1, consolidatedLogicResultDoc2);
378
+ expect(runPatchLogicsSpy).toHaveBeenCalledWith(targetVersion, dstPath);
343
379
  expect(trackProcessedIdsSpy).toHaveBeenCalledWith(index_1.PATCH_LOGICS_TOPIC_NAME, event.id);
344
380
  expect(result).toEqual("Processed patch logics");
345
381
  });
@@ -1 +1 @@
1
- {"version":3,"file":"patch-logis.test.js","sourceRoot":"","sources":["../../../src/tests/logics/patch-logis.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"patch-logis.test.js","sourceRoot":"","sources":["../../../src/tests/logics/patch-logis.test.ts"],"names":[],"mappings":"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"}
@@ -4,19 +4,19 @@ const db_structure_1 = require("../../utils/db-structure");
4
4
  describe("view", () => {
5
5
  it("uses default version when not provided", () => {
6
6
  const result = (0, db_structure_1.view)("User", ["id", "name"], { syncCreate: true });
7
- expect(result).toBe("View:User@0.0.0:id,name:syncCreate=true");
7
+ expect(result).toBe("View@0.0.0:User:id,name:syncCreate=true");
8
8
  });
9
9
  it("uses provided version", () => {
10
10
  const result = (0, db_structure_1.view)("Order", ["id"], { syncCreate: false }, "1.2.3");
11
- expect(result).toBe("View:Order@1.2.3:id:syncCreate=false");
11
+ expect(result).toBe("View@1.2.3:Order:id:syncCreate=false");
12
12
  });
13
13
  it("should handle multiple options", () => {
14
14
  const result = (0, db_structure_1.view)("Order", ["id"], { syncCreate: true, type: "view-array" }, "1.2.3");
15
- expect(result).toBe("View:Order@1.2.3:id:syncCreate=true,type=view-array");
15
+ expect(result).toBe("View@1.2.3:Order:id:syncCreate=true,type=view-array");
16
16
  });
17
17
  it("should handle no options", () => {
18
18
  const result = (0, db_structure_1.view)("Product", ["sku", "price"], undefined, "1.0.0");
19
- expect(result).toBe("View:Product@1.0.0:sku,price:");
19
+ expect(result).toBe("View@1.0.0:Product:sku,price:");
20
20
  });
21
21
  });
22
22
  describe("propView", () => {
@@ -71,6 +71,7 @@ describe("queueSubmitForm", () => {
71
71
  const formData = {
72
72
  "@docPath": "users/test-uid",
73
73
  "@actionType": "create",
74
+ "@appVersion": "0.0.1",
74
75
  };
75
76
  const result = await forms.queueSubmitForm(formData);
76
77
  expect(publishMessageSpy).toHaveBeenCalledWith({ json: formData });
@@ -1 +1 @@
1
- {"version":3,"file":"forms.test.js","sourceRoot":"","sources":["../../../src/tests/utils/forms.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"forms.test.js","sourceRoot":"","sources":["../../../src/tests/utils/forms.test.ts"],"names":[],"mappings":"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"}
@@ -49,6 +49,35 @@ admin.initializeApp({
49
49
  jest.mock("../../utils/query", () => ({
50
50
  fetchIds: jest.fn(),
51
51
  }));
52
+ describe("findMatchingDocPathRegex", () => {
53
+ beforeEach(() => {
54
+ (0, index_1.initializeEmberFlow)(projectConfig, admin, db_structure_1.dbStructure, db_structure_1.Entity, [], [], [], []);
55
+ });
56
+ it("should return entity and regex for root level path", () => {
57
+ const path = "topics/topicId";
58
+ const res = (0, paths_1.findMatchingDocPathRegex)(path);
59
+ expect(res).toEqual({
60
+ entity: db_structure_1.Entity.Topic,
61
+ regex: /^topics\/([^/]+)$/,
62
+ });
63
+ });
64
+ it("should return entity and regex for second level path", () => {
65
+ const path = "topics/topicId/ingredients/ingredientId";
66
+ const res = (0, paths_1.findMatchingDocPathRegex)(path);
67
+ expect(res).toEqual({
68
+ entity: db_structure_1.Entity.RecipeIngredient,
69
+ regex: /^topics\/([^/]+)\/ingredients\/([^/]+)$/,
70
+ });
71
+ });
72
+ it("should return entity and regex for view document path", () => {
73
+ const path = "topics/topicId/menuItems/menuItemId/ingredients/ingredientId";
74
+ const res = (0, paths_1.findMatchingDocPathRegex)(path);
75
+ expect(res).toEqual({
76
+ entity: db_structure_1.Entity.MenuItemIngredient,
77
+ regex: /^topics\/([^/]+)\/menuItems\/([^/]+)\/ingredients\/([^/]+)$/,
78
+ });
79
+ });
80
+ });
52
81
  describe("hydrateDocPath", () => {
53
82
  beforeEach(() => {
54
83
  // Clear the mock before each test