emberflow 1.4.81 → 1.4.83

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patch-logics.test.js","sourceRoot":"","sources":["../../../src/tests/logics/patch-logics.test.ts"],"names":[],"mappings":"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"}
@@ -221,6 +221,7 @@ describe("createViewLogicFn", () => {
221
221
  });
222
222
  });
223
223
  const targetVersion = "1.0.0";
224
+ const appVersion = "1.0.0";
224
225
  it("should log error document does not have @id", async () => {
225
226
  jest.spyOn(console, "error").mockImplementation();
226
227
  const logicFn = viewLogics.createViewLogicFn(vd4);
@@ -232,7 +233,7 @@ describe("createViewLogicFn", () => {
232
233
  },
233
234
  priority: "normal",
234
235
  };
235
- const result = await logicFn[1](logicResultDoc, targetVersion);
236
+ const result = await logicFn[1](logicResultDoc, targetVersion, appVersion);
236
237
  expect(result.documents.length).toEqual(0);
237
238
  expect(console.error).toHaveBeenCalledWith("Document does not have an @id attribute");
238
239
  });
@@ -248,13 +249,13 @@ describe("createViewLogicFn", () => {
248
249
  },
249
250
  priority: "normal",
250
251
  };
251
- const result = await logicFn[1](logicResultDoc, targetVersion);
252
+ const result = await logicFn[1](logicResultDoc, targetVersion, appVersion);
252
253
  expect(result.documents.length).toEqual(0);
253
254
  expect(console.error).toHaveBeenCalledWith("srcPath should not have a placeholder");
254
255
  });
255
256
  it("should create @views doc", async () => {
256
257
  let logicFn = viewLogics.createViewLogicFn(vd1);
257
- let result = await logicFn[1](createLogicResultDoc, targetVersion);
258
+ let result = await logicFn[1](createLogicResultDoc, targetVersion, appVersion);
258
259
  expect(result.documents.length).toEqual(1);
259
260
  expect(result.documents[0]).toHaveProperty("action", "merge");
260
261
  expect(result.documents[0]).toHaveProperty("dstPath", "users/1234/@views/users+1234");
@@ -264,7 +265,7 @@ describe("createViewLogicFn", () => {
264
265
  "destEntity": "friend",
265
266
  });
266
267
  logicFn = viewLogics.createViewLogicFn(vd2);
267
- result = await logicFn[1](Object.assign(Object.assign({}, createLogicResultDoc), { dstPath: "users/1234/posts/987#followers[1234]" }), targetVersion);
268
+ result = await logicFn[1](Object.assign(Object.assign({}, createLogicResultDoc), { dstPath: "users/1234/posts/987#followers[1234]" }), targetVersion, appVersion);
268
269
  expect(result.documents.length).toEqual(2);
269
270
  expect(result.documents[0]).toHaveProperty("action", "merge");
270
271
  expect(result.documents[0])
@@ -281,7 +282,7 @@ describe("createViewLogicFn", () => {
281
282
  "@followers": "arr(+1234)",
282
283
  });
283
284
  logicFn = viewLogics.createViewLogicFn(vd3);
284
- result = await logicFn[1](Object.assign(Object.assign({}, createLogicResultDoc), { dstPath: "servers/123#createdBy" }), targetVersion);
285
+ result = await logicFn[1](Object.assign(Object.assign({}, createLogicResultDoc), { dstPath: "servers/123#createdBy" }), targetVersion, appVersion);
285
286
  expect(result.documents.length).toEqual(1);
286
287
  expect(result.documents[0]).toHaveProperty("action", "merge");
287
288
  expect(result.documents[0])
@@ -295,12 +296,12 @@ describe("createViewLogicFn", () => {
295
296
  });
296
297
  it("should delete @views doc", async () => {
297
298
  let logicFn = viewLogics.createViewLogicFn(vd1);
298
- let result = await logicFn[1](deleteLogicResultDoc, targetVersion);
299
+ let result = await logicFn[1](deleteLogicResultDoc, targetVersion, appVersion);
299
300
  expect(result.documents.length).toEqual(1);
300
301
  expect(result.documents[0]).toHaveProperty("action", "delete");
301
302
  expect(result.documents[0]).toHaveProperty("dstPath", "users/1234/@views/users+1234");
302
303
  logicFn = viewLogics.createViewLogicFn(vd2);
303
- result = await logicFn[1](Object.assign(Object.assign({}, deleteLogicResultDoc), { dstPath: "users/1234/posts/987#followers[1234]" }), targetVersion);
304
+ result = await logicFn[1](Object.assign(Object.assign({}, deleteLogicResultDoc), { dstPath: "users/1234/posts/987#followers[1234]" }), targetVersion, appVersion);
304
305
  expect(result.documents.length).toEqual(2);
305
306
  expect(result.documents[0]).toHaveProperty("action", "delete");
306
307
  expect(result.documents[0])
@@ -311,7 +312,7 @@ describe("createViewLogicFn", () => {
311
312
  "@followers": "arr(-1234)",
312
313
  });
313
314
  logicFn = viewLogics.createViewLogicFn(vd3);
314
- result = await logicFn[1](Object.assign(Object.assign({}, deleteLogicResultDoc), { dstPath: "servers/123#createdBy" }), targetVersion);
315
+ result = await logicFn[1](Object.assign(Object.assign({}, deleteLogicResultDoc), { dstPath: "servers/123#createdBy" }), targetVersion, appVersion);
315
316
  expect(result.documents.length).toEqual(1);
316
317
  expect(result.documents[0]).toHaveProperty("action", "delete");
317
318
  expect(result.documents[0])
@@ -331,7 +332,7 @@ describe("createViewLogicFn", () => {
331
332
  // Create the logic function using the viewDefinition
332
333
  const logicFn = viewLogics.createViewLogicFn(vd1);
333
334
  // Call the logic function with the test action
334
- const result = await logicFn[0](mergeLogicResultDoc, targetVersion);
335
+ const result = await logicFn[0](mergeLogicResultDoc, targetVersion, appVersion);
335
336
  expect(colGetMock).toHaveBeenCalledTimes(1);
336
337
  expect(docUpdateMock).not.toHaveBeenCalled();
337
338
  expect(result).toBeDefined();
@@ -353,7 +354,7 @@ describe("createViewLogicFn", () => {
353
354
  // Create the logic function using the viewDefinition
354
355
  const logicFn = viewLogics.createViewLogicFn(vd1);
355
356
  // Call the logic function with the test action
356
- const result = await logicFn[0](newDeleteLogicResultDoc, targetVersion);
357
+ const result = await logicFn[0](newDeleteLogicResultDoc, targetVersion, appVersion);
357
358
  expect(colGetMock).toHaveBeenCalledTimes(1);
358
359
  expect(docUpdateMock).not.toHaveBeenCalled();
359
360
  expect(result).toBeDefined();
@@ -389,7 +390,7 @@ describe("createViewLogicFn", () => {
389
390
  // Create the logic function using the viewDefinition
390
391
  const logicFn = viewLogics.createViewLogicFn(vd1);
391
392
  // Call the logic function with the test action
392
- const result = await logicFn[0](mergeLogicResultDoc, targetVersion);
393
+ const result = await logicFn[0](mergeLogicResultDoc, targetVersion, appVersion);
393
394
  expect(colGetMock).toHaveBeenCalledTimes(1);
394
395
  expect(docSpy).toHaveBeenCalledWith("users/1234/@views/users+456+friends+1234");
395
396
  expect(docSpy).toHaveBeenCalledWith("users/1234/@views/users+789+friends+1234");
@@ -530,7 +531,7 @@ describe("createViewLogicFn", () => {
530
531
  // Create the logic function using the viewDefinition
531
532
  const logicFn = viewLogics.createViewLogicFn(vd1);
532
533
  // Call the logic function with the test action
533
- const result = await logicFn[0](mergeLogicResultDoc, targetVersion);
534
+ const result = await logicFn[0](mergeLogicResultDoc, targetVersion, appVersion);
534
535
  expect(result).toBeDefined();
535
536
  expect(result.documents).toBeDefined();
536
537
  expect(result.documents.length).toEqual(2);
@@ -547,7 +548,7 @@ describe("createViewLogicFn", () => {
547
548
  // Create the logic function using the viewDefinition
548
549
  const logicFn2 = viewLogics.createViewLogicFn(vd2);
549
550
  // Call the logic function with the test action
550
- const result2 = await logicFn2[0](mergeLogicResultDoc, targetVersion);
551
+ const result2 = await logicFn2[0](mergeLogicResultDoc, targetVersion, appVersion);
551
552
  // Add your expectations here, e.g., result.documents should have the correct properties and values
552
553
  expect(result2).toBeDefined();
553
554
  expect(result2.documents).toBeDefined();
@@ -568,7 +569,7 @@ describe("createViewLogicFn", () => {
568
569
  expect(document).toHaveProperty("action", "merge");
569
570
  expect(document).toHaveProperty("dstPath", "users/890/posts/654+followers[1234]");
570
571
  expect(document.doc).toEqual({ "name": "John Doe", "@updatedByViewDefinitionAt": expect.any(Timestamp) });
571
- const resultDelete = await logicFn[0](deleteLogicResultDoc, targetVersion);
572
+ const resultDelete = await logicFn[0](deleteLogicResultDoc, targetVersion, appVersion);
572
573
  expect(resultDelete).toBeDefined();
573
574
  expect(resultDelete.documents).toBeDefined();
574
575
  expect(resultDelete.documents.length).toEqual(2);
@@ -581,7 +582,7 @@ describe("createViewLogicFn", () => {
581
582
  // Create the logic function using the viewDefinition
582
583
  const logicFn3 = viewLogics.createViewLogicFn(vd3);
583
584
  // Call the logic function with the test action
584
- const result3 = await logicFn3[0](userLogicResultDoc, targetVersion);
585
+ const result3 = await logicFn3[0](userLogicResultDoc, targetVersion, appVersion);
585
586
  expect(result3).toBeDefined();
586
587
  expect(result3.documents).toBeDefined();
587
588
  expect(result3.documents.length).toEqual(2);
@@ -616,7 +617,7 @@ describe("createViewLogicFn", () => {
616
617
  },
617
618
  priority: "normal",
618
619
  };
619
- const result = await logicFn[1](logicResultDoc, targetVersion);
620
+ const result = await logicFn[1](logicResultDoc, targetVersion, appVersion);
620
621
  expect(result.documents[0].dstPath).toBe("topics/topic21/orders/order123/menus/menuItem789/@views/topics+topic21+prepAreas+prepArea2+menus+prepAreaMenuItem34");
621
622
  });
622
623
  it("should correctly map placeholders from dstPath into srcPath", async () => {
@@ -640,7 +641,7 @@ describe("createViewLogicFn", () => {
640
641
  "topicId": "topic22",
641
642
  },
642
643
  };
643
- const result = await logicFn[1](logicResultDoc, targetVersion);
644
+ const result = await logicFn[1](logicResultDoc, targetVersion, appVersion);
644
645
  expect(result.documents[0].dstPath).toBe("topics/topic22/prepAreas/prepArea2/menus/menuItem789/@views/topics+topic21+prepAreas+prepArea2+menus+prepAreaMenuItem34+orderItem");
645
646
  });
646
647
  it("should return an error if srcPath has a placeholder", async () => {
@@ -663,7 +664,7 @@ describe("createViewLogicFn", () => {
663
664
  "@id": "menuItem789",
664
665
  },
665
666
  };
666
- const result = await logicFn[1](logicResultDoc, targetVersion);
667
+ const result = await logicFn[1](logicResultDoc, targetVersion, appVersion);
667
668
  expect(result.status).toBe("error");
668
669
  expect(result.message).toBe("srcPath should not have a placeholder");
669
670
  });
@@ -795,7 +796,7 @@ describe("createViewLogicFn", () => {
795
796
  }],
796
797
  });
797
798
  const logicFn = viewLogics.createViewLogicFn(vd1);
798
- const result = await logicFn[0](mergeLogicResultDoc, targetVersion);
799
+ const result = await logicFn[0](mergeLogicResultDoc, targetVersion, appVersion);
799
800
  expect(result).toBeDefined();
800
801
  expect(result.documents).toBeDefined();
801
802
  expect(result.documents.length).toEqual(2);
@@ -820,6 +821,11 @@ describe("createViewLogicFn", () => {
820
821
  id: "users+456+friends+1234+prop1",
821
822
  ref: {
822
823
  path: "users/1234/@views/users+456+friends+1234",
824
+ parent: {
825
+ parent: {
826
+ id: "1234",
827
+ },
828
+ },
823
829
  },
824
830
  data: () => {
825
831
  return {
@@ -831,6 +837,11 @@ describe("createViewLogicFn", () => {
831
837
  id: "users+789+friends+1234+prop1[propId1]",
832
838
  ref: {
833
839
  path: "users/1234/@views/users+789+friends+1234",
840
+ parent: {
841
+ parent: {
842
+ id: "1234",
843
+ },
844
+ },
834
845
  },
835
846
  data: () => {
836
847
  return {
@@ -841,7 +852,7 @@ describe("createViewLogicFn", () => {
841
852
  }],
842
853
  });
843
854
  const logicFn = viewLogics.createViewLogicFn(vd1);
844
- const result = await logicFn[0](mergeLogicResultDoc, targetVersion);
855
+ const result = await logicFn[0](mergeLogicResultDoc, targetVersion, appVersion);
845
856
  expect(result).toBeDefined();
846
857
  expect(result.documents).toBeDefined();
847
858
  expect(result.documents.length).toEqual(2);
@@ -852,6 +863,57 @@ describe("createViewLogicFn", () => {
852
863
  expect(document).toHaveProperty("action", "delete");
853
864
  expect(document).toHaveProperty("dstPath", "users/1234/@views/users+789+friends+1234");
854
865
  });
866
+ it("should create delete logicDoc if viewDoc path destProp id is not equal to source id", async () => {
867
+ docGetMock.mockResolvedValue({
868
+ data: () => {
869
+ return {
870
+ "@viewsAlreadyBuilt+friend": false,
871
+ };
872
+ },
873
+ exists: true,
874
+ });
875
+ dbGetAllMock = jest.fn().mockImplementation((...refs) => {
876
+ return Promise.resolve(refs.map((ref) => ({
877
+ exists: true,
878
+ data: () => ({
879
+ "prop1": {
880
+ "@id": "5678",
881
+ "age": 20,
882
+ "name": "John Doe",
883
+ },
884
+ }),
885
+ ref: ref,
886
+ })));
887
+ });
888
+ jest.spyOn(admin.firestore(), "getAll").mockImplementation(dbGetAllMock);
889
+ colGetMock.mockResolvedValueOnce({
890
+ docs: [{
891
+ id: "users+456+friends+1234+prop1",
892
+ ref: {
893
+ path: "users/1234/@views/users+456+friends+1234",
894
+ parent: {
895
+ parent: {
896
+ id: "1234",
897
+ },
898
+ },
899
+ },
900
+ data: () => {
901
+ return {
902
+ "path": "users/456/friends/1234#prop1",
903
+ "srcProps": ["age", "avatar", "name"],
904
+ };
905
+ },
906
+ }],
907
+ });
908
+ const logicFn = viewLogics.createViewLogicFn(vd1);
909
+ const result = await logicFn[0](mergeLogicResultDoc, targetVersion, appVersion);
910
+ expect(result).toBeDefined();
911
+ expect(result.documents).toBeDefined();
912
+ expect(result.documents.length).toEqual(1);
913
+ const document = result.documents[0];
914
+ expect(document).toHaveProperty("action", "delete");
915
+ expect(document).toHaveProperty("dstPath", "users/1234/@views/users+456+friends+1234");
916
+ });
855
917
  it("should only execute 50 @views per batch, then queue the succeeding ones", async () => {
856
918
  docGetMock.mockResolvedValue({
857
919
  data: () => {
@@ -894,12 +956,12 @@ describe("createViewLogicFn", () => {
894
956
  });
895
957
  const queueRunViewLogicsSpy = jest.spyOn(viewLogics, "queueRunViewLogics").mockResolvedValue();
896
958
  const logicFn = viewLogics.createViewLogicFn(vd1);
897
- const result = await logicFn[0](mergeLogicResultDoc, targetVersion);
959
+ const result = await logicFn[0](mergeLogicResultDoc, targetVersion, appVersion);
898
960
  expect(result).toBeDefined();
899
961
  expect(result.documents).toBeDefined();
900
962
  expect(result.documents.length).toEqual(50);
901
963
  expect(queueRunViewLogicsSpy).toHaveBeenCalledTimes(1);
902
- expect(queueRunViewLogicsSpy).toHaveBeenNthCalledWith(1, targetVersion, [mergeLogicResultDoc], "50thViewId");
964
+ expect(queueRunViewLogicsSpy).toHaveBeenNthCalledWith(1, targetVersion, appVersion, [mergeLogicResultDoc], "50thViewId");
903
965
  });
904
966
  it("should be able to process succeeding batches of @views", async () => {
905
967
  docGetMock.mockResolvedValueOnce({
@@ -925,6 +987,11 @@ describe("createViewLogicFn", () => {
925
987
  id: "users+456+friends+1234+prop1",
926
988
  ref: {
927
989
  path: "users/1234/@views/users+456+friends+1234",
990
+ parent: {
991
+ parent: {
992
+ id: "1234",
993
+ },
994
+ },
928
995
  },
929
996
  data: () => {
930
997
  return {
@@ -936,6 +1003,11 @@ describe("createViewLogicFn", () => {
936
1003
  id: "users+789+friends+1234+prop1[propId1]",
937
1004
  ref: {
938
1005
  path: "users/1234/@views/users+789+friends+1234",
1006
+ parent: {
1007
+ parent: {
1008
+ id: "1234",
1009
+ },
1010
+ },
939
1011
  },
940
1012
  data: () => {
941
1013
  return {
@@ -976,14 +1048,14 @@ describe("createViewLogicFn", () => {
976
1048
  });
977
1049
  it("should return finished logicResult with 2 documents", async () => {
978
1050
  jest.spyOn(paths_1._mockable, "doesPathExists").mockResolvedValue(false);
979
- const result = await logicFn[1](logicResultDoc, targetVersion);
1051
+ const result = await logicFn[1](logicResultDoc, targetVersion, appVersion);
980
1052
  expect(result.name).toBe("menuItemIngredient Dst-to-Src");
981
1053
  expect(result.status).toBe("finished");
982
1054
  expect(result.timeFinished).toBe(undefined);
983
1055
  });
984
1056
  it("should create @syncCreateView in global collection", async () => {
985
1057
  jest.spyOn(paths_1._mockable, "doesPathExists").mockResolvedValue(false);
986
- const result = await logicFn[1](logicResultDoc, targetVersion);
1058
+ const result = await logicFn[1](logicResultDoc, targetVersion, appVersion);
987
1059
  expect(result.documents[1].dstPath).toBe("@syncCreateViews/topics+topic21+menus+menu1+ingredients");
988
1060
  expect(result.documents[1].doc).toEqual({
989
1061
  "destEntity": "menuItemIngredient",
@@ -996,7 +1068,7 @@ describe("createViewLogicFn", () => {
996
1068
  const invalidLogicResultDoc = Object.assign(Object.assign({}, logicResultDoc), { dstPath: invalidPath });
997
1069
  jest.spyOn(paths_1._mockable, "doesPathExists").mockResolvedValue(false);
998
1070
  const errorSpy = jest.spyOn(console, "error").mockImplementation();
999
- const result = await logicFn[1](invalidLogicResultDoc, targetVersion);
1071
+ const result = await logicFn[1](invalidLogicResultDoc, targetVersion, appVersion);
1000
1072
  expect(errorSpy).toHaveBeenCalledWith("invalid syncCreate dstPath, topics/topic21/menus/menu1#ingredients");
1001
1073
  expect(result.documents.length).toEqual(1);
1002
1074
  expect(result.documents[0].dstPath).not.toBe("@syncCreateViews/topics+topic21+menus+menu1+ingredients");
@@ -1004,7 +1076,7 @@ describe("createViewLogicFn", () => {
1004
1076
  it("should not create @syncCreateView in global collection if the a doc with same docId is already created", async () => {
1005
1077
  const infoSpy = jest.spyOn(console, "info").mockImplementation();
1006
1078
  jest.spyOn(paths_1._mockable, "doesPathExists").mockResolvedValue(true);
1007
- const result = await logicFn[1](logicResultDoc, targetVersion);
1079
+ const result = await logicFn[1](logicResultDoc, targetVersion, appVersion);
1008
1080
  expect(infoSpy).toHaveBeenCalledWith("@syncCreateViews/topics+topic21+menus+menu1+ingredients already exists — skipping creation.");
1009
1081
  expect(result.documents.length).toEqual(1);
1010
1082
  expect(result.documents[0].dstPath).not.toBe("@syncCreateViews/topics+topic21+menus+menu1+ingredients");
@@ -1060,13 +1132,13 @@ describe("createViewLogicFn", () => {
1060
1132
  .mockResolvedValueOnce(true);
1061
1133
  paths_1._mockable.doesPathExists = doesPathExistsMock;
1062
1134
  it("should auto create source document if there is a matching path in @syncCreateViews", async () => {
1063
- const result = await logicFn[0](logicResultDoc, targetVersion);
1135
+ const result = await logicFn[0](logicResultDoc, targetVersion, appVersion);
1064
1136
  expect(result.documents.length).toBe(2);
1065
1137
  expect(result.documents[0].dstPath).toBe(`${dstPath1}/ingredient1`);
1066
1138
  expect(result.documents[0].doc).toBe(logicResultDoc.doc);
1067
1139
  });
1068
1140
  it("should manually create @view document for each newly created views", async () => {
1069
- const result = await logicFn[0](logicResultDoc, targetVersion);
1141
+ const result = await logicFn[0](logicResultDoc, targetVersion, appVersion);
1070
1142
  const atViewsCollectionPath = `${srcCollection}/ingredient1/@views`;
1071
1143
  expect(result.documents[1].dstPath).toBe(`${atViewsCollectionPath}/topics+topic21+menus+menu1+ingredients+ingredient1`);
1072
1144
  expect(result.documents[1].doc).toEqual({
@@ -1084,7 +1156,7 @@ describe("createViewLogicFn", () => {
1084
1156
  options: { syncCreate: true },
1085
1157
  version: "1.0.0",
1086
1158
  });
1087
- const result = await logicFnPropView[0](logicResultDoc, targetVersion);
1159
+ const result = await logicFnPropView[0](logicResultDoc, targetVersion, appVersion);
1088
1160
  expect(result.documents.length).toBe(3);
1089
1161
  expect(result.documents[2].dstPath).toBe("topics/topic21/preparationAreas/prepArea1/menus/menu1");
1090
1162
  expect(result.documents[2].instructions).toEqual({
@@ -1110,6 +1182,7 @@ describe("queueRunViewLogics", () => {
1110
1182
  ]));
1111
1183
  });
1112
1184
  const targetVersion = "1.0.0";
1185
+ const appVersion = "1.0.0";
1113
1186
  it("should queue docs to run view logics", async () => {
1114
1187
  const doc1 = {
1115
1188
  action: "merge",
@@ -1117,9 +1190,9 @@ describe("queueRunViewLogics", () => {
1117
1190
  doc: { name: "test-doc-name-merge" },
1118
1191
  dstPath: "users/test-user-id/documents/doc1",
1119
1192
  };
1120
- await viewLogics.queueRunViewLogics(targetVersion, [doc1]);
1193
+ await viewLogics.queueRunViewLogics(targetVersion, appVersion, [doc1]);
1121
1194
  expect(findMatchingViewLogicsSpy).toHaveBeenCalled();
1122
- expect(publishMessageSpy).toHaveBeenCalledWith({ json: { "doc": doc1, "targetVersion": targetVersion } });
1195
+ expect(publishMessageSpy).toHaveBeenCalledWith({ json: { "doc": doc1, targetVersion, appVersion } });
1123
1196
  });
1124
1197
  });
1125
1198
  describe("onMessageViewLogicsQueue", () => {
@@ -1190,12 +1263,15 @@ describe("onMessageViewLogicsQueue", () => {
1190
1263
  doc: { name: "test-doc-name-updated" },
1191
1264
  dstPath: `users/${userId}`,
1192
1265
  };
1266
+ const targetVersion = "1.0.0";
1267
+ const appVersion = "1.0.0";
1193
1268
  const event = {
1194
1269
  data: {
1195
1270
  message: {
1196
1271
  json: {
1197
1272
  doc: doc1,
1198
- targetVersion: "1.0.0",
1273
+ targetVersion,
1274
+ appVersion,
1199
1275
  },
1200
1276
  },
1201
1277
  },
@@ -1221,7 +1297,7 @@ describe("onMessageViewLogicsQueue", () => {
1221
1297
  execTime: expect.any(Number),
1222
1298
  };
1223
1299
  const result = await viewLogics.onMessageViewLogicsQueue(event);
1224
- expect(runViewLogicsSpy).toHaveBeenCalledWith(doc1, "1.0.0", undefined);
1300
+ expect(runViewLogicsSpy).toHaveBeenCalledWith(doc1, targetVersion, appVersion, undefined);
1225
1301
  const expectedMetricExecutions = (0, index_utils_1.convertLogicResultsToMetricExecutions)([...viewLogicsResult, distributeFnLogicResult]);
1226
1302
  expect(createMetricExecutionSpy).toHaveBeenCalledWith(expectedMetricExecutions);
1227
1303
  expect(expandConsolidateAndGroupByDstPathSpy).toHaveBeenCalled();
@@ -1229,7 +1305,7 @@ describe("onMessageViewLogicsQueue", () => {
1229
1305
  // Since the array is cleared in the function, we can't check its content directly if it's the same reference
1230
1306
  // But we know it was called with the flattened documents
1231
1307
  expect(calledWith).toBeDefined();
1232
- expect(distributeSpy).toHaveBeenCalledWith(expandConsolidateResult, true);
1308
+ expect(distributeSpy).toHaveBeenCalledWith(expandConsolidateResult, appVersion, true);
1233
1309
  expect(trackProcessedIdsMock).toHaveBeenCalledWith(index_1.VIEW_LOGICS_TOPIC_NAME, event.id);
1234
1310
  expect(result).toEqual("Processed view logics");
1235
1311
  });