tabletcommand-incident 0.6.11 → 0.6.13

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 (121) hide show
  1. package/build/domain.js +17 -7
  2. package/build/domain.js.map +1 -1
  3. package/build/incidentProcessor.js +18 -8
  4. package/build/incidentProcessor.js.map +1 -1
  5. package/build/index.js +2 -2
  6. package/build/index.js.map +1 -1
  7. package/build/ruleLegacy/cleanupComments.js.map +1 -1
  8. package/build/ruleLegacy/cleanupCommentsFilters.js.map +1 -1
  9. package/build/ruleLegacy/cleanupLatLongSantaClaraCity.js.map +1 -1
  10. package/build/ruleLegacy/cleanupNull.js.map +1 -1
  11. package/build/ruleLegacy/cleanupReportNumber.js.map +1 -1
  12. package/build/ruleLegacy/closeIncidentAfterHours.js.map +1 -1
  13. package/build/ruleLegacy/closeIncidentMatchingIncidentNumber.js.map +1 -1
  14. package/build/ruleLegacy/closeIncidentOfCertainType.js.map +1 -1
  15. package/build/ruleLegacy/copyCommandName.js.map +1 -1
  16. package/build/ruleLegacy/mapUnitDatesVerdugo.js.map +1 -1
  17. package/build/ruleLegacy/rebuildUnitDispatchNumber.js.map +1 -1
  18. package/build/ruleLegacy/removeEmptyPersonFromUnit.js.map +1 -1
  19. package/build/ruleLegacy/removeField.js.map +1 -1
  20. package/build/ruleLegacy/setChannelUrlForDepartment.js.map +1 -1
  21. package/build/ruleLegacy/setChannelsFromRadioChannels.js.map +1 -1
  22. package/build/ruleLegacy/setFireMapSantaClaraCity.js.map +1 -1
  23. package/build/ruleLegacy/setFormatUnitsPulsepoint.js.map +1 -1
  24. package/build/ruleLegacy/setLatitudeLongitude.js.map +1 -1
  25. package/build/ruleLegacy/setLegacyPriorIncidentChanged.js.map +1 -1
  26. package/build/ruleLegacy/setLegacyRenameUnit.js.map +1 -1
  27. package/build/ruleLegacy/setLocationPreferenceDerry.js.map +1 -1
  28. package/build/ruleLegacy/setLocationPreferenceTorrance.js.map +1 -1
  29. package/build/ruleLegacy/setMapIncidentTypePulsepoint.js.map +1 -1
  30. package/build/ruleLegacy/setRadioChannelsFromLegacyChannels.js.map +1 -1
  31. package/build/ruleLegacy/setRadioChannelsFromRadioNames.js.map +1 -1
  32. package/build/ruleLegacy/setStreetNumber.js.map +1 -1
  33. package/build/ruleLegacy/setUnitDispatchNumberAsString.js.map +1 -1
  34. package/build/ruleLegacy/setUnitUUID.js.map +1 -1
  35. package/build/ruleProcessor.js +2 -2
  36. package/build/ruleProcessor.js.map +1 -1
  37. package/build/ruleProcessorLegacy.js +1 -1
  38. package/build/ruleProcessorLegacy.js.map +1 -1
  39. package/build/rules/append-priority-description-to-call-type.js +47 -0
  40. package/build/rules/append-priority-description-to-call-type.js.map +1 -0
  41. package/build/rules/clean-up-comments.js.map +1 -1
  42. package/build/rules/clean-up-lat-long.js.map +1 -1
  43. package/build/rules/clear-field.js.map +1 -1
  44. package/build/rules/close-incident-after-hours.js.map +1 -1
  45. package/build/rules/close-incident-matching-incident-number.js.map +1 -1
  46. package/build/rules/close-incident-of-certain-type.js.map +1 -1
  47. package/build/rules/copy-incident-number.js.map +1 -1
  48. package/build/rules/copy-location-comment.js.map +1 -1
  49. package/build/rules/index.js +8 -6
  50. package/build/rules/index.js.map +1 -1
  51. package/build/rules/join-call-type-priority.js.map +1 -1
  52. package/build/rules/join-call-type-sacramento.js.map +1 -1
  53. package/build/rules/map-unit-dates-verdugo.js.map +1 -1
  54. package/build/rules/remove-incident-field.js +92 -0
  55. package/build/rules/remove-incident-field.js.map +1 -0
  56. package/build/rules/remove-person-from-unit.js +2 -2
  57. package/build/rules/remove-person-from-unit.js.map +1 -1
  58. package/build/rules/set-address.js +9 -9
  59. package/build/rules/set-address.js.map +1 -1
  60. package/build/rules/set-channels-from-radio-channels.js.map +1 -1
  61. package/build/rules/set-city-alameda.js.map +1 -1
  62. package/build/rules/set-city-calfire-lnu.js.map +1 -1
  63. package/build/rules/set-city-cleanup.js.map +1 -1
  64. package/build/rules/set-city-southern-marin.js.map +1 -1
  65. package/build/rules/set-city-verdugo.js.map +1 -1
  66. package/build/rules/set-comment-opts-ack-type.js.map +1 -1
  67. package/build/rules/set-common-place-name.js.map +1 -1
  68. package/build/rules/set-communication-channels-from-radio-names.js.map +1 -1
  69. package/build/rules/set-cross-streets.js.map +1 -1
  70. package/build/rules/set-fire-alarm-at-dispatch-from-alarm-level.js.map +1 -1
  71. package/build/rules/set-fire-map-from-map-pages-southern-marin.js.map +1 -1
  72. package/build/rules/set-fire-map-pages-ontario.js.map +1 -1
  73. package/build/rules/set-fire-map-santa-clara-city.js.map +1 -1
  74. package/build/rules/set-format-units-pulsepoint.js.map +1 -1
  75. package/build/rules/set-incident-type-ontario.js.map +1 -1
  76. package/build/rules/set-location-preference.js.map +1 -1
  77. package/build/rules/set-map-incident-type-pulsepoint.js.map +1 -1
  78. package/build/rules/set-prior-incident-comment-field.js.map +1 -1
  79. package/build/rules/set-street-number.js.map +1 -1
  80. package/build/setIncidentType.js.map +1 -1
  81. package/build/store.js +18 -8
  82. package/build/store.js.map +1 -1
  83. package/build/test/domain.js.map +1 -1
  84. package/build/test/incidentProcessor.js +17 -7
  85. package/build/test/incidentProcessor.js.map +1 -1
  86. package/build/test/index.js +63 -22
  87. package/build/test/index.js.map +1 -1
  88. package/build/test/mock.js +70 -12
  89. package/build/test/mock.js.map +1 -1
  90. package/build/test/rules/close-incident-after-hours.js.map +1 -1
  91. package/build/test/rules/close-incident-matching-incident-number.js.map +1 -1
  92. package/build/test/rules/close-incident-of-certain-type.js.map +1 -1
  93. package/build/test/rules/map-unit-dates-verdugo.js.map +1 -1
  94. package/build/test/rules/set-format-units-pulsepoint.js.map +1 -1
  95. package/build/test/rules/set-prior-incident-comment-field.js +1 -1
  96. package/build/test/rules/set-prior-incident-comment-field.js.map +1 -1
  97. package/build/test/rulesLegacy.js +6 -6
  98. package/build/test/rulesLegacy.js.map +1 -1
  99. package/build/verify/correction.js +17 -7
  100. package/build/verify/correction.js.map +1 -1
  101. package/definitions/domain.d.ts +0 -1
  102. package/definitions/domain.d.ts.map +1 -1
  103. package/definitions/incidentProcessor.d.ts.map +1 -1
  104. package/definitions/rules/{set-fire-map-santa-clara-city copy.d.ts → append-priority-description-to-call-type.d.ts} +2 -2
  105. package/definitions/rules/append-priority-description-to-call-type.d.ts.map +1 -0
  106. package/definitions/rules/index.d.ts.map +1 -1
  107. package/definitions/rules/remove-incident-field.d.ts +14 -0
  108. package/definitions/rules/remove-incident-field.d.ts.map +1 -0
  109. package/definitions/store.d.ts +0 -26
  110. package/definitions/store.d.ts.map +1 -1
  111. package/definitions/test/mock.d.ts +1 -0
  112. package/definitions/test/mock.d.ts.map +1 -1
  113. package/gulpfile.js +13 -4
  114. package/package.json +15 -14
  115. package/src/rules/append-priority-description-to-call-type.ts +49 -0
  116. package/src/rules/index.ts +6 -2
  117. package/src/rules/remove-incident-field.ts +104 -0
  118. package/src/rules/set-address.ts +9 -9
  119. package/src/test/index.ts +47 -17
  120. package/src/test/mock.ts +75 -10
  121. package/definitions/rules/set-fire-map-santa-clara-city copy.d.ts.map +0 -1
@@ -0,0 +1,104 @@
1
+ import _ from "lodash";
2
+
3
+ import { CADIncident } from "tabletcommand-backend-models";
4
+ import { IncidentRule, IncidentRuleChange } from ".";
5
+ import { CADUnitType } from "tabletcommand-backend-models/definitions/types/cad-incident";
6
+ import { CADPersonSchemaType } from "tabletcommand-backend-models/definitions/types/common-incident";
7
+
8
+ export type FieldToClear = keyof CADIncident;
9
+
10
+ export class IncidentRuleRemovePersonFromUnit implements IncidentRule {
11
+ name = "Remove Person From Unit";
12
+ matched = false;
13
+ changed = false;
14
+ changes: IncidentRuleChange[] = [];
15
+
16
+ constructor() {
17
+ //
18
+ }
19
+
20
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
21
+ apply(item: Partial<CADIncident>, _atDate: Date): Partial<CADIncident> {
22
+ if (!_.isArray(item.Unit)) {
23
+ return item;
24
+ }
25
+
26
+ let ruleMatched = false;
27
+
28
+ _.each(item.Unit as CADUnitType[], function(unit) {
29
+ if (!_.isObject(unit)) {
30
+ return;
31
+ }
32
+
33
+ if (!_.isArray(unit.Personnel) || unit.Personnel.length === 0) {
34
+ return;
35
+ }
36
+
37
+ const revisedItems: CADPersonSchemaType[] = [];
38
+ let personnelCount = (_.isNumber(unit.PersonnelCount) && _.isFinite(unit.PersonnelCount) && unit.PersonnelCount > 0) ? unit.PersonnelCount : 0;
39
+ _.each(unit.Personnel, function(person: CADPersonSchemaType) {
40
+ if (!_.isObject(person) || !_.isString(person.PersonnelName)) {
41
+ return;
42
+ }
43
+
44
+ if (shouldRemovePerson(person) && personnelCount > 0) {
45
+ personnelCount = personnelCount - 1;
46
+ ruleMatched = true;
47
+ } else {
48
+ revisedItems.push(person);
49
+ }
50
+ });
51
+ unit.Personnel = revisedItems;
52
+ unit.PersonnelCount = personnelCount;
53
+ });
54
+
55
+ this.matched = ruleMatched;
56
+ this.changed = ruleMatched;
57
+ this.changes.push({
58
+ name: this.name,
59
+ matched: this.matched,
60
+ changed: this.changed,
61
+ change: {
62
+ Unit: item.Unit,
63
+ }
64
+ });
65
+
66
+ return item;
67
+ }
68
+ }
69
+
70
+ export function shouldRemovePerson(item: Partial<CADPersonSchemaType>): boolean {
71
+ if (!_.isString(item.PersonnelName)) {
72
+ return false;
73
+ }
74
+ const name = item.PersonnelName;
75
+
76
+ // Names have a comma (e.g. Smith, John)
77
+ const hasComma = name.indexOf(",") >= 0;
78
+ if (hasComma) {
79
+ return false;
80
+ }
81
+
82
+ // Names do not have number
83
+ if (/\d/g.test(name)) {
84
+ return true;
85
+ }
86
+
87
+ const apparatus = [
88
+ "battalion",
89
+ "bc",
90
+ "engine",
91
+ "rescue",
92
+ "truck",
93
+ ];
94
+
95
+ let matchedApparatus = false;
96
+ apparatus.forEach((a) => {
97
+ const shouldRemove = name.toLowerCase().indexOf(a.toLowerCase()) >= 0;
98
+ if (shouldRemove) {
99
+ matchedApparatus = true;
100
+ return;
101
+ }
102
+ });
103
+ return matchedApparatus;
104
+ }
@@ -47,28 +47,28 @@ export class IncidentRuleSetAddress implements IncidentRule {
47
47
  }
48
48
  }
49
49
 
50
- function keyIsValid(object: Record<string, unknown> | undefined, key: string): boolean {
50
+ function strValueForKey(object: Record<string, unknown> | undefined, key: string): string {
51
51
  if (!_.isObject(object)) {
52
- return false;
52
+ return "";
53
53
  }
54
54
 
55
- if (_.isString(object[key]) && (object[key] as string).length > 0) {
56
- return true;
55
+ if (_.isString(object[key])) {
56
+ return object[key].trim();
57
57
  }
58
58
 
59
59
  if (_.isNumber(object[key]) && _.isFinite(object[key])) {
60
- return true;
60
+ return `${object[key]}`;
61
61
  }
62
62
 
63
- return false;
63
+ return "";
64
64
  }
65
65
 
66
66
  function buildLineOutOfParts(object: Partial<CADIncident>, parts: string[]): string {
67
67
  const pieces: string[] = [];
68
68
  _.forEach(parts, function(part) {
69
- const isKeyValid = keyIsValid(object, part);
70
- if (object && object[part] && isKeyValid) {
71
- pieces.push(`${object[part]}`);
69
+ const value = strValueForKey(object, part);
70
+ if (object && object[part] && value !== "") {
71
+ pieces.push(value);
72
72
  }
73
73
  });
74
74
 
package/src/test/index.ts CHANGED
@@ -2,6 +2,7 @@ import { assert } from "chai";
2
2
  import "mocha";
3
3
  import _ from "lodash";
4
4
  import * as modelsModule from "tabletcommand-backend-models";
5
+ import { BackendModels } from "tabletcommand-backend-models";
5
6
 
6
7
  import {
7
8
  HandleProcessIncidentRequestResult,
@@ -14,6 +15,7 @@ import {
14
15
  import mockModule from "./mock";
15
16
  import { CADUnitType } from "tabletcommand-backend-models/definitions/types/cad-incident";
16
17
 
18
+ let modelsLib: BackendModels;
17
19
  let mock: ReturnType<typeof mockModule>;
18
20
  let incidentProcessor: IncidentProcessorModule;
19
21
 
@@ -24,6 +26,7 @@ describe("index", function() {
24
26
  mongoose,
25
27
  models
26
28
  } = await modelsModule.connect(process.env.NODE_MONGO_URL || "");
29
+ modelsLib = models;
27
30
 
28
31
  mock = mockModule({
29
32
  mongoose,
@@ -693,7 +696,7 @@ describe("index", function() {
693
696
  const atDate = new Date();
694
697
  const sampleIncidentNumber = "Yolo-Communications-0001";
695
698
 
696
- function validateRulesResult(sut: HandleProcessIncidentRequestResult) {
699
+ function validateRulesResult(sut: HandleProcessIncidentRequestResult, step: number) {
697
700
  if ("error" in sut) {
698
701
  assert.fail(sut.error.toString());
699
702
  } else {
@@ -702,37 +705,64 @@ describe("index", function() {
702
705
  } = sut;
703
706
 
704
707
  assert.strictEqual(incident?.TacticalChannel, "BROWN/ECHO6/VFIRE25");
708
+ switch (step) {
709
+ case 0:
710
+ assert.equal(incident?.AgencyIncidentCallTypeDescription, "*MEDAID Medical Incident - C2"); // cspell: words MEDAID
711
+ break;
712
+ case 1:
713
+ assert.equal(incident?.AgencyIncidentCallTypeDescription, "Traumatic Injuries - A - C2");
714
+ break;
715
+ case 2:
716
+ assert.equal(incident?.AgencyIncidentCallTypeDescription, "*MEDAID Medical Incident - C3");
717
+ break;
718
+ case 3:
719
+ assert.equal(incident?.AgencyIncidentCallTypeDescription, "BURN Control Burn");
720
+ break;
721
+ default:
722
+ assert.fail(`Unhandled step ${step}.`);
723
+ // break;
724
+ }
705
725
  }
706
726
  }
707
727
 
708
728
  it("process stream through legacy", async function() {
709
729
  const department = mock.departmentYolo;
710
730
  const departmentId = department._id.toString();
711
- const existingStreamItems = await mock.getIncidentStreamItems(departmentId, sampleIncidentNumber);
712
- const streamItem = _.first(existingStreamItems);
713
731
 
714
- if (!streamItem) {
715
- assert.fail("Expecting a stream item");
716
- return;
732
+ // Clear incident stream
733
+ await mock.clearTestIncidentStream(departmentId, sampleIncidentNumber);
734
+ const candidateStreamItems = mock.incidentStreamItems.filter((x) => {
735
+ return x.departmentId === departmentId && x.incidentNumber === sampleIncidentNumber;
736
+ });
737
+ // Hack to process incident requests one by one
738
+ let step = 0;
739
+ for (const streamItem of candidateStreamItems) {
740
+ // Save each stream item then run legacy processor
741
+ const s = await new modelsLib.CADIncidentStream(streamItem).save();
742
+ const sut = await incidentProcessor.handleProcessIncidentRequestLegacy(s, department, atDate);
743
+ validateRulesResult(sut, step);
744
+ step = step + 1;
717
745
  }
718
-
719
- const sut = await incidentProcessor.handleProcessIncidentRequestLegacy(streamItem, department, atDate);
720
- validateRulesResult(sut);
721
746
  });
722
747
 
723
748
  it("process stream through correction", async function() {
724
749
  const department = mock.departmentYolo;
725
750
  const departmentId = department._id.toString();
726
- const existingStreamItems = await mock.getIncidentStreamItems(departmentId, sampleIncidentNumber);
727
- const streamItem = _.first(existingStreamItems);
728
751
 
729
- if (!streamItem) {
730
- assert.fail("Expecting a stream item");
731
- return;
752
+ // Clear incident stream
753
+ await mock.clearTestIncidentStream(departmentId, sampleIncidentNumber);
754
+ const candidateStreamItems = mock.incidentStreamItems.filter((x) => {
755
+ return x.departmentId === departmentId && x.incidentNumber === sampleIncidentNumber;
756
+ });
757
+ // Hack to process incident requests one by one
758
+ let step = 0;
759
+ for (const streamItem of candidateStreamItems) {
760
+ // Save each stream item then run legacy processor
761
+ const s = await new modelsLib.CADIncidentStream(streamItem).save();
762
+ const sut = await incidentProcessor.handleProcessIncidentRequestCorrection(s.incidentNumber, department, atDate);
763
+ validateRulesResult(sut, step);
764
+ step = step + 1;
732
765
  }
733
-
734
- const sut = await incidentProcessor.handleProcessIncidentRequestCorrection(streamItem.incidentNumber, department, atDate);
735
- validateRulesResult(sut);
736
766
  });
737
767
  });
738
768
  });
package/src/test/mock.ts CHANGED
@@ -6,6 +6,9 @@ import {
6
6
  Department,
7
7
  MongooseModule,
8
8
  } from "tabletcommand-backend-models";
9
+ import {
10
+ FilterQuery,
11
+ } from "mongoose";
9
12
 
10
13
  export default function({
11
14
  models,
@@ -707,7 +710,7 @@ export default function({
707
710
  "incidentNumber": "Verdugo-0001",
708
711
  "uuid": "d3d23200-e0fa-443f-b647-5f18d150b5c0",
709
712
  "tag": "871e3d05-1572-4d81-ba29-0ab01b4e6d91",
710
- "createdAt": new Date("2024-01-22T10:11:47.617+0000"),
713
+ "createdAt": new Date("2024-01-22T10:11:47.617Z"),
711
714
  "payload": {
712
715
  "AgencyID": "EMS1143",
713
716
  "IncidentNumber": "Verdugo-0001",
@@ -768,7 +771,7 @@ export default function({
768
771
  "incidentNumber": "Yolo-Communications-0001",
769
772
  "uuid": "d3d23200-e0fa-443f-b647-5f18d150b5c0",
770
773
  "tag": "871e3d05-1572-4d81-ba29-0ab01b4e6d91",
771
- "createdAt": new Date("2024-01-22T10:11:47.617+0000"),
774
+ "createdAt": new Date("2024-01-22T10:11:47.617Z"),
772
775
  "payload": {
773
776
  "AgencyID": "EMS1143",
774
777
  "IncidentNumber": "Yolo-Communications-0001",
@@ -776,10 +779,8 @@ export default function({
776
779
  "EntryDateTime": "2024-01-22T02:08:06-08:00",
777
780
  "CallReceivedDateTime": "2024-01-22T02:11:20-08:00",
778
781
  "ReportNumber": "PAS",
779
- "CallSource": "9",
780
782
  "CallerNumber": "213-326-3434",
781
783
  "AlarmLevel": "1",
782
- "Priority": "3",
783
784
  "LocationComment": "BACK HOUSE",
784
785
  "StreetNumber": "2019",
785
786
  "Predirectional": "E",
@@ -792,8 +793,8 @@ export default function({
792
793
  "Longitude": "-118.108744",
793
794
  "Latitude": "34.154423",
794
795
  "AgencyIncidentCallType": "BREATH",
795
- "AgencyIncidentCallTypeDescription": "SHORTNESS OF BREATH",
796
- "DispatchDateTime": "2024-01-22T02:11:46-08:00",
796
+ "AgencyIncidentCallTypeDescription": "*MEDAID Medical Incident", // cspell: words MEDAID
797
+ "AgencyIncidentPriorityDescription": "Code 2 Response",
797
798
  "ClosedDateTime": "",
798
799
  "Comment": [
799
800
  {
@@ -826,12 +827,66 @@ export default function({
826
827
  ],
827
828
  },
828
829
  },
830
+ {
831
+ departmentId: departmentYolo._id.toString(),
832
+ "incidentNumber": "Yolo-Communications-0001",
833
+ "uuid": "28b01a6e-472d-4c36-92b9-38fecd6dbb70",
834
+ "tag": "dc1e6118-b34f-432a-91f9-66c7ee298bbd",
835
+ "createdAt": new Date("2024-01-22T10:12:00.000Z"),
836
+ "payload": {
837
+ "AgencyID": "EMS1143",
838
+ "IncidentNumber": "Yolo-Communications-0001",
839
+ "AgencyIncidentCallTypeDescription": "Traumatic Injuries - A",
840
+ "AgencyIncidentPriorityDescription": "Code 2 Response",
841
+ "ClosedDateTime": "",
842
+ "Longitude": -118.108744,
843
+ "Latitude": 34.154423,
844
+ "Unit": [
845
+ ],
846
+ },
847
+ },
848
+ {
849
+ departmentId: departmentYolo._id.toString(),
850
+ "incidentNumber": "Yolo-Communications-0001",
851
+ "uuid": "4d50c25e-8cd3-4bca-8713-abb97ee997f1",
852
+ "tag": "72e299c0-7686-4ebf-a822-2a71b633be89",
853
+ "createdAt": new Date("2024-01-22T10:13:00.000Z"),
854
+ "payload": {
855
+ "AgencyID": "EMS1143",
856
+ "IncidentNumber": "Yolo-Communications-0001",
857
+ "AgencyIncidentCallTypeDescription": "*MEDAID Medical Incident",
858
+ "AgencyIncidentPriorityDescription": "Code 3 Response",
859
+ "ClosedDateTime": "",
860
+ "Longitude": -118.108744,
861
+ "Latitude": 34.154423,
862
+ "Unit": [
863
+ ],
864
+ },
865
+ },
866
+ {
867
+ departmentId: departmentYolo._id.toString(),
868
+ "incidentNumber": "Yolo-Communications-0001",
869
+ "uuid": "b471088c-8fea-4a20-9435-e65d596d7511",
870
+ "tag": "06c40396-d92d-43d0-8a6e-d6a2b729ec0f",
871
+ "createdAt": new Date("2024-01-22T10:14:00.000Z"),
872
+ "payload": {
873
+ "AgencyID": "EMS1143",
874
+ "IncidentNumber": "Yolo-Communications-0001",
875
+ "AgencyIncidentCallTypeDescription": "BURN Control Burn",
876
+ "AgencyIncidentPriorityDescription": "3 Minor Incidents",
877
+ "ClosedDateTime": "",
878
+ "Longitude": -118.108744,
879
+ "Latitude": 34.154423,
880
+ "Unit": [
881
+ ],
882
+ },
883
+ },
829
884
  {
830
885
  departmentId: departmentConfire._id.toString(),
831
886
  "incidentNumber": "Confire-SB-0001",
832
887
  "uuid": "d3d23200-e0fa-443f-b647-5f18d15bbccc",
833
888
  "tag": "871e3d05-1572-4d81-ba29-0ab01b4e6d91",
834
- "createdAt": new Date("2024-01-22T10:11:47.617+0000"),
889
+ "createdAt": new Date("2024-01-22T10:11:47.617Z"),
835
890
  "payload": {
836
891
  "AgencyID": "EMS1143",
837
892
  "IncidentNumber": "Confire-SB-0001",
@@ -853,7 +908,7 @@ export default function({
853
908
  "incidentNumber": "Sacramento-SB-0001",
854
909
  "uuid": "d3d23200-e0fa-443f-b647-5f18daabbccc",
855
910
  "tag": "871e3d05-1572-4d81-ba29-0ab01b4e6d91",
856
- "createdAt": new Date("2024-01-22T10:11:47.617+0000"),
911
+ "createdAt": new Date("2024-01-22T10:11:47.617Z"),
857
912
  "payload": {
858
913
  "AgencyID": "EMS1143",
859
914
  "IncidentNumber": "Sacramento-SB-0001",
@@ -985,15 +1040,24 @@ export default function({
985
1040
  }
986
1041
 
987
1042
  async function getIncidentStreamItems(departmentId: string, incidentNumber: string): Promise<CADIncidentStream[]> {
988
- const items = await models.CADIncidentStream.find({
1043
+ const query: FilterQuery<CADIncidentStream> = {
989
1044
  departmentId,
990
1045
  incidentNumber,
991
- }).sort({
1046
+ };
1047
+ const items = await models.CADIncidentStream.find(query).sort({
992
1048
  createdAt: 1,
993
1049
  });
994
1050
  return items;
995
1051
  }
996
1052
 
1053
+ async function clearTestIncidentStream(departmentId: string, incidentNumber: string) {
1054
+ const deleteQuery: FilterQuery<CADIncidentStream> = {
1055
+ departmentId,
1056
+ incidentNumber,
1057
+ };
1058
+ await models.CADIncidentStream.deleteMany(deleteQuery);
1059
+ }
1060
+
997
1061
  return {
998
1062
  departmentId,
999
1063
 
@@ -1013,6 +1077,7 @@ export default function({
1013
1077
 
1014
1078
  incidentStreamItems,
1015
1079
  getIncidentStreamItems,
1080
+ clearTestIncidentStream,
1016
1081
 
1017
1082
  shouldRun,
1018
1083
  prepareTestData,
@@ -1 +0,0 @@
1
- {"version":3,"file":"set-fire-map-santa-clara-city copy.d.ts","sourceRoot":"","sources":["../../src/rules/set-fire-map-santa-clara-city copy.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,GAAG,CAAC;AAErD,qBAAa,oCAAqC,YAAW,YAAY;IACvE,IAAI,SAAmC;IACvC,OAAO,UAAS;IAChB,OAAO,UAAS;IAChB,OAAO,EAAE,kBAAkB,EAAE,CAAM;;IAOnC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC;CAoCvE"}