tabletcommand-incident 0.4.11 → 0.4.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 (291) hide show
  1. package/.cspell/project-words.txt +5 -0
  2. package/build/incidentProcessor.js +5 -1
  3. package/build/incidentProcessor.js.map +1 -1
  4. package/build/ruleLegacy/cleanupCommentsFilters.js +0 -21
  5. package/build/ruleLegacy/cleanupCommentsFilters.js.map +1 -1
  6. package/build/ruleProcessorLegacy.js +0 -73
  7. package/build/ruleProcessorLegacy.js.map +1 -1
  8. package/build/rules/index.js +81 -57
  9. package/build/rules/index.js.map +1 -1
  10. package/build/rules/join-call-type-priority.js +23 -3
  11. package/build/rules/join-call-type-priority.js.map +1 -1
  12. package/build/rules/set-fire-alarm-at-dispatch-from-alarm-level.js +65 -0
  13. package/build/rules/set-fire-alarm-at-dispatch-from-alarm-level.js.map +1 -0
  14. package/build/rules/set-fire-map-santa-clara-city copy.js +51 -0
  15. package/build/rules/set-fire-map-santa-clara-city copy.js.map +1 -0
  16. package/build/test/domain.js +61 -55
  17. package/build/test/domain.js.map +1 -1
  18. package/build/test/index.js +279 -98
  19. package/build/test/index.js.map +1 -1
  20. package/build/test/mock.js +288 -3
  21. package/build/test/mock.js.map +1 -1
  22. package/build/test/rules/clean-up-comments.js +4 -8
  23. package/build/test/rules/clean-up-comments.js.map +1 -1
  24. package/build/test/rules/clean-up-lat-long.js +5 -9
  25. package/build/test/rules/clean-up-lat-long.js.map +1 -1
  26. package/build/test/rules/clear-field.js +4 -8
  27. package/build/test/rules/clear-field.js.map +1 -1
  28. package/build/test/rules/close-incident-after-hours.js +8 -12
  29. package/build/test/rules/close-incident-after-hours.js.map +1 -1
  30. package/build/test/rules/close-incident-matching-incident-number.js +28 -29
  31. package/build/test/rules/close-incident-matching-incident-number.js.map +1 -1
  32. package/build/test/rules/close-incident-of-certain-type.js +8 -12
  33. package/build/test/rules/close-incident-of-certain-type.js.map +1 -1
  34. package/build/test/rules/join-call-type-priority.js +20 -11
  35. package/build/test/rules/join-call-type-priority.js.map +1 -1
  36. package/build/test/rules/map-unit-dates-verdugo.js +8 -9
  37. package/build/test/rules/map-unit-dates-verdugo.js.map +1 -1
  38. package/build/test/rules/remove-person-from-unit.js +6 -7
  39. package/build/test/rules/remove-person-from-unit.js.map +1 -1
  40. package/build/test/rules/set-address.js +5 -9
  41. package/build/test/rules/set-address.js.map +1 -1
  42. package/build/test/rules/set-channels-from-radio-channels.js +19 -13
  43. package/build/test/rules/set-channels-from-radio-channels.js.map +1 -1
  44. package/build/test/rules/set-city-alameda.js +5 -9
  45. package/build/test/rules/set-city-alameda.js.map +1 -1
  46. package/build/test/rules/set-city-calfire-lnu.js +5 -9
  47. package/build/test/rules/set-city-calfire-lnu.js.map +1 -1
  48. package/build/test/rules/set-city-cleanup.js +7 -11
  49. package/build/test/rules/set-city-cleanup.js.map +1 -1
  50. package/build/test/rules/set-city-southern-marin.js +5 -9
  51. package/build/test/rules/set-city-southern-marin.js.map +1 -1
  52. package/build/test/rules/set-city-verdugo.js +4 -8
  53. package/build/test/rules/set-city-verdugo.js.map +1 -1
  54. package/build/test/rules/set-comment-opts-ack-type.js +7 -8
  55. package/build/test/rules/set-comment-opts-ack-type.js.map +1 -1
  56. package/build/test/rules/set-common-place-name.js +4 -8
  57. package/build/test/rules/set-common-place-name.js.map +1 -1
  58. package/build/test/rules/set-communication-channels-from-radio-names.js +6 -10
  59. package/build/test/rules/set-communication-channels-from-radio-names.js.map +1 -1
  60. package/build/test/rules/set-cross-streets.js +16 -20
  61. package/build/test/rules/set-cross-streets.js.map +1 -1
  62. package/build/test/rules/set-fire-map-from-map-pages-southern-marin.js +4 -8
  63. package/build/test/rules/set-fire-map-from-map-pages-southern-marin.js.map +1 -1
  64. package/build/test/rules/set-fire-map-pages-ontario.js +5 -9
  65. package/build/test/rules/set-fire-map-pages-ontario.js.map +1 -1
  66. package/build/test/rules/set-fire-map-santa-clara-city.js +4 -8
  67. package/build/test/rules/set-fire-map-santa-clara-city.js.map +1 -1
  68. package/build/test/rules/set-format-units-pulsepoint.js +6 -7
  69. package/build/test/rules/set-format-units-pulsepoint.js.map +1 -1
  70. package/build/test/rules/set-incident-type-ontario.js +4 -8
  71. package/build/test/rules/set-incident-type-ontario.js.map +1 -1
  72. package/build/test/rules/set-location-preference-derry.js +10 -14
  73. package/build/test/rules/set-location-preference-derry.js.map +1 -1
  74. package/build/test/rules/set-location-preference.js +10 -14
  75. package/build/test/rules/set-location-preference.js.map +1 -1
  76. package/build/test/rules/set-map-incident-type-pulsepoint.js +4 -8
  77. package/build/test/rules/set-map-incident-type-pulsepoint.js.map +1 -1
  78. package/build/test/rules/set-prior-incident-comment-field.js +5 -6
  79. package/build/test/rules/set-prior-incident-comment-field.js.map +1 -1
  80. package/build/test/rules/set-street-number.js +5 -9
  81. package/build/test/rules/set-street-number.js.map +1 -1
  82. package/build/test/rulesLegacy.js +0 -245
  83. package/build/test/rulesLegacy.js.map +1 -1
  84. package/build/test/rulesLegacyCleanupCommentsFilters.js +0 -19
  85. package/build/test/rulesLegacyCleanupCommentsFilters.js.map +1 -1
  86. package/build/test/setIncidentType.js +5 -6
  87. package/build/test/setIncidentType.js.map +1 -1
  88. package/build/verify/correction.js +62 -0
  89. package/build/verify/correction.js.map +1 -0
  90. package/definitions/incidentProcessor.d.ts.map +1 -1
  91. package/definitions/ruleLegacy/cleanupCommentsFilters.d.ts +0 -1
  92. package/definitions/ruleLegacy/cleanupCommentsFilters.d.ts.map +1 -1
  93. package/definitions/ruleProcessorLegacy.d.ts.map +1 -1
  94. package/definitions/rules/index.d.ts.map +1 -1
  95. package/definitions/rules/join-call-type-priority.d.ts +4 -1
  96. package/definitions/rules/join-call-type-priority.d.ts.map +1 -1
  97. package/definitions/rules/set-fire-alarm-at-dispatch-from-alarm-level.d.ts +11 -0
  98. package/definitions/rules/set-fire-alarm-at-dispatch-from-alarm-level.d.ts.map +1 -0
  99. package/definitions/rules/set-fire-map-santa-clara-city copy.d.ts +11 -0
  100. package/definitions/rules/set-fire-map-santa-clara-city copy.d.ts.map +1 -0
  101. package/definitions/test/mock.d.ts +6 -1
  102. package/definitions/test/mock.d.ts.map +1 -1
  103. package/definitions/types.d.ts +1 -0
  104. package/definitions/types.d.ts.map +1 -1
  105. package/definitions/verify/correction.d.ts +2 -0
  106. package/definitions/verify/correction.d.ts.map +1 -0
  107. package/package.json +8 -8
  108. package/src/incidentProcessor.ts +5 -1
  109. package/src/ruleLegacy/cleanupCommentsFilters.js +0 -26
  110. package/src/ruleProcessorLegacy.js +0 -88
  111. package/src/rules/index.ts +92 -65
  112. package/src/rules/join-call-type-priority.ts +28 -3
  113. package/src/rules/set-fire-alarm-at-dispatch-from-alarm-level.ts +67 -0
  114. package/src/test/domain.ts +9 -4
  115. package/src/test/index.ts +295 -62
  116. package/src/test/mock.ts +293 -3
  117. package/src/test/rules/clean-up-comments.ts +1 -2
  118. package/src/test/rules/clean-up-lat-long.ts +1 -2
  119. package/src/test/rules/clear-field.ts +1 -2
  120. package/src/test/rules/close-incident-after-hours.ts +1 -2
  121. package/src/test/rules/close-incident-matching-incident-number.ts +2 -2
  122. package/src/test/rules/close-incident-of-certain-type.ts +1 -2
  123. package/src/test/rules/join-call-type-priority.ts +19 -5
  124. package/src/test/rules/map-unit-dates-verdugo.ts +1 -3
  125. package/src/test/rules/remove-person-from-unit.ts +1 -2
  126. package/src/test/rules/set-address.ts +1 -2
  127. package/src/test/rules/set-channels-from-radio-channels.ts +11 -2
  128. package/src/test/rules/set-city-alameda.ts +1 -2
  129. package/src/test/rules/set-city-calfire-lnu.ts +1 -2
  130. package/src/test/rules/set-city-cleanup.ts +1 -2
  131. package/src/test/rules/set-city-southern-marin.ts +1 -2
  132. package/src/test/rules/set-city-verdugo.ts +1 -2
  133. package/src/test/rules/set-comment-opts-ack-type.ts +1 -2
  134. package/src/test/rules/set-common-place-name.ts +1 -2
  135. package/src/test/rules/set-communication-channels-from-radio-names.ts +1 -2
  136. package/src/test/rules/set-cross-streets.ts +1 -2
  137. package/src/test/rules/set-fire-map-from-map-pages-southern-marin.ts +1 -2
  138. package/src/test/rules/set-fire-map-pages-ontario.ts +1 -2
  139. package/src/test/rules/set-fire-map-santa-clara-city.ts +1 -2
  140. package/src/test/rules/set-format-units-pulsepoint.ts +1 -2
  141. package/src/test/rules/set-incident-type-ontario.ts +1 -2
  142. package/src/test/rules/set-location-preference-derry.ts +1 -2
  143. package/src/test/rules/set-location-preference.ts +1 -2
  144. package/src/test/rules/set-map-incident-type-pulsepoint.ts +1 -2
  145. package/src/test/rules/set-prior-incident-comment-field.ts +2 -3
  146. package/src/test/rules/set-street-number.ts +1 -2
  147. package/src/test/rulesLegacy.js +1 -272
  148. package/src/test/rulesLegacyCleanupCommentsFilters.js +0 -22
  149. package/src/test/setIncidentType.ts +1 -3
  150. package/src/types.ts +1 -0
  151. package/src/verify/correction.ts +55 -0
  152. package/build/ruleLegacy/removePersonFromUnit.js +0 -35
  153. package/build/ruleLegacy/removePersonFromUnit.js.map +0 -1
  154. package/build/ruleLegacy/setAgencyCallTypeClarkCounty.js +0 -18
  155. package/build/ruleLegacy/setAgencyCallTypeClarkCounty.js.map +0 -1
  156. package/build/ruleLegacy/setCommunicationChannelsFromRadioNames.js +0 -50
  157. package/build/ruleLegacy/setCommunicationChannelsFromRadioNames.js.map +0 -1
  158. package/build/ruleLegacy/setFireMapEmptyString.js +0 -15
  159. package/build/ruleLegacy/setFireMapEmptyString.js.map +0 -1
  160. package/definitions/location.d.ts +0 -10
  161. package/definitions/location.d.ts.map +0 -1
  162. package/definitions/rule/cleanupComments.d.ts +0 -3
  163. package/definitions/rule/cleanupComments.d.ts.map +0 -1
  164. package/definitions/rule/cleanupCommentsFilters.d.ts +0 -8
  165. package/definitions/rule/cleanupCommentsFilters.d.ts.map +0 -1
  166. package/definitions/rule/cleanupLatLongSantaClaraCity.d.ts +0 -3
  167. package/definitions/rule/cleanupLatLongSantaClaraCity.d.ts.map +0 -1
  168. package/definitions/rule/cleanupNull.d.ts +0 -3
  169. package/definitions/rule/cleanupNull.d.ts.map +0 -1
  170. package/definitions/rule/cleanupReportNumber.d.ts +0 -3
  171. package/definitions/rule/cleanupReportNumber.d.ts.map +0 -1
  172. package/definitions/rule/closeIncidentAfterHours.d.ts +0 -3
  173. package/definitions/rule/closeIncidentAfterHours.d.ts.map +0 -1
  174. package/definitions/rule/closeIncidentMatchingIncidentNumber.d.ts +0 -3
  175. package/definitions/rule/closeIncidentMatchingIncidentNumber.d.ts.map +0 -1
  176. package/definitions/rule/closeIncidentOfCertainType.d.ts +0 -3
  177. package/definitions/rule/closeIncidentOfCertainType.d.ts.map +0 -1
  178. package/definitions/rule/copyCommandName.d.ts +0 -3
  179. package/definitions/rule/copyCommandName.d.ts.map +0 -1
  180. package/definitions/rule/copyIncidentNumber.d.ts +0 -3
  181. package/definitions/rule/copyIncidentNumber.d.ts.map +0 -1
  182. package/definitions/rule/copyLocationComment.d.ts +0 -3
  183. package/definitions/rule/copyLocationComment.d.ts.map +0 -1
  184. package/definitions/rule/mapUnitDatesVerdugo.d.ts +0 -3
  185. package/definitions/rule/mapUnitDatesVerdugo.d.ts.map +0 -1
  186. package/definitions/rule/rebuildUnitDispatchNumber.d.ts +0 -3
  187. package/definitions/rule/rebuildUnitDispatchNumber.d.ts.map +0 -1
  188. package/definitions/rule/removeEmptyPersonFromUnit.d.ts +0 -3
  189. package/definitions/rule/removeEmptyPersonFromUnit.d.ts.map +0 -1
  190. package/definitions/rule/removeField.d.ts +0 -3
  191. package/definitions/rule/removeField.d.ts.map +0 -1
  192. package/definitions/rule/removePersonFromUnit.d.ts +0 -3
  193. package/definitions/rule/removePersonFromUnit.d.ts.map +0 -1
  194. package/definitions/rule/setAgencyCallTypeClarkCounty.d.ts +0 -3
  195. package/definitions/rule/setAgencyCallTypeClarkCounty.d.ts.map +0 -1
  196. package/definitions/rule/setChannelUrlForDepartment.d.ts +0 -3
  197. package/definitions/rule/setChannelUrlForDepartment.d.ts.map +0 -1
  198. package/definitions/rule/setChannelsFromRadioChannels.d.ts +0 -3
  199. package/definitions/rule/setChannelsFromRadioChannels.d.ts.map +0 -1
  200. package/definitions/rule/setCityAlameda.d.ts +0 -3
  201. package/definitions/rule/setCityAlameda.d.ts.map +0 -1
  202. package/definitions/rule/setCityCalfireLNU.d.ts +0 -3
  203. package/definitions/rule/setCityCalfireLNU.d.ts.map +0 -1
  204. package/definitions/rule/setCitySouthernMarin.d.ts +0 -3
  205. package/definitions/rule/setCitySouthernMarin.d.ts.map +0 -1
  206. package/definitions/rule/setCommonPlaceName.d.ts +0 -3
  207. package/definitions/rule/setCommonPlaceName.d.ts.map +0 -1
  208. package/definitions/rule/setCommunicationChannelsFromRadioNames.d.ts +0 -3
  209. package/definitions/rule/setCommunicationChannelsFromRadioNames.d.ts.map +0 -1
  210. package/definitions/rule/setCrossStreets.d.ts +0 -3
  211. package/definitions/rule/setCrossStreets.d.ts.map +0 -1
  212. package/definitions/rule/setFireMapEmptyString.d.ts +0 -3
  213. package/definitions/rule/setFireMapEmptyString.d.ts.map +0 -1
  214. package/definitions/rule/setFireMapFromMapPagesSouthernMarin.d.ts +0 -3
  215. package/definitions/rule/setFireMapFromMapPagesSouthernMarin.d.ts.map +0 -1
  216. package/definitions/rule/setFireMapSantaClaraCity.d.ts +0 -3
  217. package/definitions/rule/setFireMapSantaClaraCity.d.ts.map +0 -1
  218. package/definitions/rule/setFormatUnitsPulsepoint.d.ts +0 -3
  219. package/definitions/rule/setFormatUnitsPulsepoint.d.ts.map +0 -1
  220. package/definitions/rule/setFullAddress.d.ts +0 -3
  221. package/definitions/rule/setFullAddress.d.ts.map +0 -1
  222. package/definitions/rule/setLatitudeLongitude.d.ts +0 -3
  223. package/definitions/rule/setLatitudeLongitude.d.ts.map +0 -1
  224. package/definitions/rule/setLegacyPriorIncidentChanged.d.ts +0 -3
  225. package/definitions/rule/setLegacyPriorIncidentChanged.d.ts.map +0 -1
  226. package/definitions/rule/setLegacyRenameUnit.d.ts +0 -3
  227. package/definitions/rule/setLegacyRenameUnit.d.ts.map +0 -1
  228. package/definitions/rule/setLocationPreferenceDerry.d.ts +0 -3
  229. package/definitions/rule/setLocationPreferenceDerry.d.ts.map +0 -1
  230. package/definitions/rule/setLocationPreferenceTorrance.d.ts +0 -3
  231. package/definitions/rule/setLocationPreferenceTorrance.d.ts.map +0 -1
  232. package/definitions/rule/setMapIncidentTypePulsepoint.d.ts +0 -3
  233. package/definitions/rule/setMapIncidentTypePulsepoint.d.ts.map +0 -1
  234. package/definitions/rule/setPriorIncidentCommentField.d.ts +0 -3
  235. package/definitions/rule/setPriorIncidentCommentField.d.ts.map +0 -1
  236. package/definitions/rule/setRadioChannelsFromLegacyChannels.d.ts +0 -3
  237. package/definitions/rule/setRadioChannelsFromLegacyChannels.d.ts.map +0 -1
  238. package/definitions/rule/setRadioChannelsFromRadioNames.d.ts +0 -3
  239. package/definitions/rule/setRadioChannelsFromRadioNames.d.ts.map +0 -1
  240. package/definitions/rule/setStreetNumber.d.ts +0 -3
  241. package/definitions/rule/setStreetNumber.d.ts.map +0 -1
  242. package/definitions/rule/setUnitDispatchNumberAsString.d.ts +0 -3
  243. package/definitions/rule/setUnitDispatchNumberAsString.d.ts.map +0 -1
  244. package/definitions/rule/setUnitUUID.d.ts +0 -3
  245. package/definitions/rule/setUnitUUID.d.ts.map +0 -1
  246. package/definitions/rule/translateCityVerdugo.d.ts +0 -3
  247. package/definitions/rule/translateCityVerdugo.d.ts.map +0 -1
  248. package/definitions/rule-processor.d.ts +0 -2
  249. package/definitions/rule-processor.d.ts.map +0 -1
  250. package/definitions/ruleLegacy/copyIncidentNumber.d.ts +0 -3
  251. package/definitions/ruleLegacy/copyIncidentNumber.d.ts.map +0 -1
  252. package/definitions/ruleLegacy/copyLocationComment.d.ts +0 -3
  253. package/definitions/ruleLegacy/copyLocationComment.d.ts.map +0 -1
  254. package/definitions/ruleLegacy/removePersonFromUnit.d.ts +0 -3
  255. package/definitions/ruleLegacy/removePersonFromUnit.d.ts.map +0 -1
  256. package/definitions/ruleLegacy/setAgencyCallTypeClarkCounty.d.ts +0 -3
  257. package/definitions/ruleLegacy/setAgencyCallTypeClarkCounty.d.ts.map +0 -1
  258. package/definitions/ruleLegacy/setCityAlameda.d.ts +0 -3
  259. package/definitions/ruleLegacy/setCityAlameda.d.ts.map +0 -1
  260. package/definitions/ruleLegacy/setCityCalfireLNU.d.ts +0 -3
  261. package/definitions/ruleLegacy/setCityCalfireLNU.d.ts.map +0 -1
  262. package/definitions/ruleLegacy/setCitySouthernMarin.d.ts +0 -3
  263. package/definitions/ruleLegacy/setCitySouthernMarin.d.ts.map +0 -1
  264. package/definitions/ruleLegacy/setCommonPlaceName.d.ts +0 -3
  265. package/definitions/ruleLegacy/setCommonPlaceName.d.ts.map +0 -1
  266. package/definitions/ruleLegacy/setCommunicationChannelsFromRadioNames.d.ts +0 -3
  267. package/definitions/ruleLegacy/setCommunicationChannelsFromRadioNames.d.ts.map +0 -1
  268. package/definitions/ruleLegacy/setCrossStreets.d.ts +0 -3
  269. package/definitions/ruleLegacy/setCrossStreets.d.ts.map +0 -1
  270. package/definitions/ruleLegacy/setFireMapEmptyString.d.ts +0 -3
  271. package/definitions/ruleLegacy/setFireMapEmptyString.d.ts.map +0 -1
  272. package/definitions/ruleLegacy/setFireMapFromMapPagesSouthernMarin.d.ts +0 -3
  273. package/definitions/ruleLegacy/setFireMapFromMapPagesSouthernMarin.d.ts.map +0 -1
  274. package/definitions/ruleLegacy/setFullAddress.d.ts +0 -3
  275. package/definitions/ruleLegacy/setFullAddress.d.ts.map +0 -1
  276. package/definitions/ruleLegacy/setPriorIncidentCommentField.d.ts +0 -3
  277. package/definitions/ruleLegacy/setPriorIncidentCommentField.d.ts.map +0 -1
  278. package/definitions/ruleLegacy/translateCityVerdugo.d.ts +0 -3
  279. package/definitions/ruleLegacy/translateCityVerdugo.d.ts.map +0 -1
  280. package/definitions/set-incident-type.d.ts +0 -20
  281. package/definitions/set-incident-type.d.ts.map +0 -1
  282. package/definitions/test/rules.d.ts +0 -2
  283. package/definitions/test/rules.d.ts.map +0 -1
  284. package/definitions/test/rulesCleanupCommentsFilters.d.ts +0 -2
  285. package/definitions/test/rulesCleanupCommentsFilters.d.ts.map +0 -1
  286. package/definitions/test/set-incident-type.d.ts +0 -2
  287. package/definitions/test/set-incident-type.d.ts.map +0 -1
  288. package/src/ruleLegacy/removePersonFromUnit.js +0 -37
  289. package/src/ruleLegacy/setAgencyCallTypeClarkCounty.js +0 -20
  290. package/src/ruleLegacy/setCommunicationChannelsFromRadioNames.js +0 -58
  291. package/src/ruleLegacy/setFireMapEmptyString.js +0 -15
package/src/test/index.ts CHANGED
@@ -1,11 +1,10 @@
1
- import chai from "chai";
1
+ import { assert } from "chai";
2
2
  import "mocha";
3
3
  import _ from "lodash";
4
4
  import * as modelsModule from "tabletcommand-backend-models";
5
5
 
6
- const assert = chai.assert;
7
-
8
6
  import {
7
+ CADUnit,
9
8
  HandleProcessIncidentRequestResult,
10
9
  } from "../types";
11
10
 
@@ -110,8 +109,6 @@ describe("index", function() {
110
109
 
111
110
  const sut = await incidentProcessor.handleProcessIncidentRequestLegacy(streamItem, mock.departmentDemoRTS, atDate);
112
111
  validateRulesResult(sut);
113
- // console.log(typeof incidentProcessor);
114
- // assert.isTrue(true);
115
112
  });
116
113
 
117
114
  it("process stream through correction", async function() {
@@ -125,13 +122,12 @@ describe("index", function() {
125
122
 
126
123
  const sut = await incidentProcessor.handleProcessIncidentRequestCorrection(streamItem.incidentNumber, mock.departmentDemoRTS, atDate);
127
124
  validateRulesResult(sut);
128
- // assert.isTrue(true);
129
125
  });
130
126
  });
131
127
 
132
- context("Southern Marin", function() {
128
+ context("Alameda", function() {
133
129
  const atDate = new Date();
134
- const sampleIncidentNumber = "Southern-Marin-0001";
130
+ const sampleIncidentNumber = "Alameda-0001";
135
131
 
136
132
  function validateRulesResult(sut: HandleProcessIncidentRequestResult) {
137
133
  if ("error" in sut) {
@@ -141,21 +137,14 @@ describe("index", function() {
141
137
  incident
142
138
  } = sut;
143
139
 
144
- assert.equal(incident?.full_address, "190 BARN AVE, BLDG: B22 # S1, Fairfax", "Should match full_address");
145
- assert.equal(incident?.CityOrLocality, "Fairfax");
146
- assert.equal(incident?.FireMap, "ROT_31");
147
- assert.equal(incident?.ClosedDateTime, "");
148
- assert.isNotNull(incident?.expiration_date, "Should have expiration date");
149
-
150
- const u10 = _.first((incident?.units ?? []).filter((u) => u.UnitID === "M10"));
151
- assert.isObject(u10);
152
- assert.isArray(u10?.Personnel);
153
- assert.equal(u10?.Personnel?.length, 0);
140
+ // console.log(incident?.full_address);
141
+ assert.equal(incident?.full_address, "22593 SIERRA AV, Hayward", "Should match full_address");
142
+ assert.equal(incident?.CityOrLocality, "Hayward");
154
143
  }
155
144
  }
156
145
 
157
146
  it("process stream through legacy", async function() {
158
- const departmentId = mock.departmentSouthernMarin._id as string;
147
+ const departmentId = mock.departmentAlameda._id as string;
159
148
  const existingStreamItems = await mock.getIncidentStreamItems(departmentId, sampleIncidentNumber);
160
149
  const streamItem = _.first(existingStreamItems);
161
150
 
@@ -164,14 +153,12 @@ describe("index", function() {
164
153
  return;
165
154
  }
166
155
 
167
- const sut = await incidentProcessor.handleProcessIncidentRequestLegacy(streamItem, mock.departmentSouthernMarin, atDate);
156
+ const sut = await incidentProcessor.handleProcessIncidentRequestLegacy(streamItem, mock.departmentAlameda, atDate);
168
157
  validateRulesResult(sut);
169
- // console.log(typeof incidentProcessor);
170
- // assert.isTrue(true);
171
158
  });
172
159
 
173
160
  it("process stream through correction", async function() {
174
- const departmentId = mock.departmentSouthernMarin._id as string;
161
+ const departmentId = mock.departmentAlameda._id as string;
175
162
  const existingStreamItems = await mock.getIncidentStreamItems(departmentId, sampleIncidentNumber);
176
163
  const streamItem = _.first(existingStreamItems);
177
164
 
@@ -180,15 +167,14 @@ describe("index", function() {
180
167
  return;
181
168
  }
182
169
 
183
- const sut = await incidentProcessor.handleProcessIncidentRequestCorrection(streamItem.incidentNumber, mock.departmentSouthernMarin, atDate);
170
+ const sut = await incidentProcessor.handleProcessIncidentRequestCorrection(streamItem.incidentNumber, mock.departmentAlameda, atDate);
184
171
  validateRulesResult(sut);
185
- // assert.isTrue(true);
186
172
  });
187
173
  });
188
174
 
189
- context("Alameda", function() {
175
+ context("Calfire CZU", function() {
190
176
  const atDate = new Date();
191
- const sampleIncidentNumber = "Alameda-0001";
177
+ const sampleIncidentNumber = "Calfire-CZU-0001";
192
178
 
193
179
  function validateRulesResult(sut: HandleProcessIncidentRequestResult) {
194
180
  if ("error" in sut) {
@@ -199,13 +185,13 @@ describe("index", function() {
199
185
  } = sut;
200
186
 
201
187
  // console.log(incident?.full_address);
202
- assert.equal(incident?.full_address, "22593 SIERRA AV, Hayward", "Should match full_address");
203
- assert.equal(incident?.CityOrLocality, "Hayward");
188
+ assert.equal(incident?.full_address, "801 ARNOLD WY, # 306, HALF MOON BAY CA", "Should match full_address");
189
+ assert.equal(incident?.CityOrLocality, "HALF MOON BAY");
204
190
  }
205
191
  }
206
192
 
207
193
  it("process stream through legacy", async function() {
208
- const departmentId = mock.departmentAlameda._id as string;
194
+ const departmentId = mock.departmentCalfireCZU._id as string;
209
195
  const existingStreamItems = await mock.getIncidentStreamItems(departmentId, sampleIncidentNumber);
210
196
  const streamItem = _.first(existingStreamItems);
211
197
 
@@ -214,14 +200,12 @@ describe("index", function() {
214
200
  return;
215
201
  }
216
202
 
217
- const sut = await incidentProcessor.handleProcessIncidentRequestLegacy(streamItem, mock.departmentAlameda, atDate);
203
+ const sut = await incidentProcessor.handleProcessIncidentRequestLegacy(streamItem, mock.departmentCalfireCZU, atDate);
218
204
  validateRulesResult(sut);
219
- // console.log(typeof incidentProcessor);
220
- // assert.isTrue(true);
221
205
  });
222
206
 
223
207
  it("process stream through correction", async function() {
224
- const departmentId = mock.departmentAlameda._id as string;
208
+ const departmentId = mock.departmentCalfireCZU._id as string;
225
209
  const existingStreamItems = await mock.getIncidentStreamItems(departmentId, sampleIncidentNumber);
226
210
  const streamItem = _.first(existingStreamItems);
227
211
 
@@ -230,15 +214,14 @@ describe("index", function() {
230
214
  return;
231
215
  }
232
216
 
233
- const sut = await incidentProcessor.handleProcessIncidentRequestCorrection(streamItem.incidentNumber, mock.departmentAlameda, atDate);
217
+ const sut = await incidentProcessor.handleProcessIncidentRequestCorrection(streamItem.incidentNumber, mock.departmentCalfireCZU, atDate);
234
218
  validateRulesResult(sut);
235
- // assert.isTrue(true);
236
219
  });
237
220
  });
238
221
 
239
- context("Calfire CZU", function() {
222
+ context("Calfire LNU", function() {
240
223
  const atDate = new Date();
241
- const sampleIncidentNumber = "Calfire-CZU-0001";
224
+ const sampleIncidentNumber = "Calfire-LNU-0001";
242
225
 
243
226
  function validateRulesResult(sut: HandleProcessIncidentRequestResult) {
244
227
  if ("error" in sut) {
@@ -249,13 +232,13 @@ describe("index", function() {
249
232
  } = sut;
250
233
 
251
234
  // console.log(incident?.full_address);
252
- assert.equal(incident?.full_address, "801 ARNOLD WY, # 306, HALF MOON BAY CA", "Should match full_address");
253
- assert.equal(incident?.CityOrLocality, "HALF MOON BAY");
235
+ assert.equal(incident?.full_address, "1659 ATLAS PEAK RD, NAPA CA", "Should match full_address");
236
+ assert.equal(incident?.CityOrLocality, "NAPA");
254
237
  }
255
238
  }
256
239
 
257
240
  it("process stream through legacy", async function() {
258
- const departmentId = mock.departmentCalfireCZU._id as string;
241
+ const departmentId = mock.departmentCalfireLNU._id as string;
259
242
  const existingStreamItems = await mock.getIncidentStreamItems(departmentId, sampleIncidentNumber);
260
243
  const streamItem = _.first(existingStreamItems);
261
244
 
@@ -264,14 +247,12 @@ describe("index", function() {
264
247
  return;
265
248
  }
266
249
 
267
- const sut = await incidentProcessor.handleProcessIncidentRequestLegacy(streamItem, mock.departmentCalfireCZU, atDate);
250
+ const sut = await incidentProcessor.handleProcessIncidentRequestLegacy(streamItem, mock.departmentCalfireLNU, atDate);
268
251
  validateRulesResult(sut);
269
- // console.log(typeof incidentProcessor);
270
- // assert.isTrue(true);
271
252
  });
272
253
 
273
254
  it("process stream through correction", async function() {
274
- const departmentId = mock.departmentCalfireCZU._id as string;
255
+ const departmentId = mock.departmentCalfireLNU._id as string;
275
256
  const existingStreamItems = await mock.getIncidentStreamItems(departmentId, sampleIncidentNumber);
276
257
  const streamItem = _.first(existingStreamItems);
277
258
 
@@ -280,15 +261,14 @@ describe("index", function() {
280
261
  return;
281
262
  }
282
263
 
283
- const sut = await incidentProcessor.handleProcessIncidentRequestCorrection(streamItem.incidentNumber, mock.departmentCalfireCZU, atDate);
264
+ const sut = await incidentProcessor.handleProcessIncidentRequestCorrection(streamItem.incidentNumber, mock.departmentCalfireLNU, atDate);
284
265
  validateRulesResult(sut);
285
- // assert.isTrue(true);
286
266
  });
287
267
  });
288
268
 
289
- context("Calfire LNU", function() {
269
+ context("Clark County", function() {
290
270
  const atDate = new Date();
291
- const sampleIncidentNumber = "Calfire-LNU-0001";
271
+ const sampleIncidentNumber = "Clark-County-0001";
292
272
 
293
273
  function validateRulesResult(sut: HandleProcessIncidentRequestResult) {
294
274
  if ("error" in sut) {
@@ -298,14 +278,13 @@ describe("index", function() {
298
278
  incident
299
279
  } = sut;
300
280
 
301
- // console.log(incident?.full_address);
302
- assert.equal(incident?.full_address, "1659 ATLAS PEAK RD, NAPA CA", "Should match full_address");
303
- assert.equal(incident?.CityOrLocality, "NAPA");
281
+ assert.equal(incident?.AgencyIncidentCallTypeDescription, "P2 High F3H-Building Fire", "Should match call type description");
304
282
  }
305
283
  }
306
284
 
307
285
  it("process stream through legacy", async function() {
308
- const departmentId = mock.departmentCalfireLNU._id as string;
286
+ const department = mock.departmentClarkCounty;
287
+ const departmentId = department._id as string;
309
288
  const existingStreamItems = await mock.getIncidentStreamItems(departmentId, sampleIncidentNumber);
310
289
  const streamItem = _.first(existingStreamItems);
311
290
 
@@ -314,14 +293,13 @@ describe("index", function() {
314
293
  return;
315
294
  }
316
295
 
317
- const sut = await incidentProcessor.handleProcessIncidentRequestLegacy(streamItem, mock.departmentCalfireLNU, atDate);
296
+ const sut = await incidentProcessor.handleProcessIncidentRequestLegacy(streamItem, department, atDate);
318
297
  validateRulesResult(sut);
319
- // console.log(typeof incidentProcessor);
320
- // assert.isTrue(true);
321
298
  });
322
299
 
323
300
  it("process stream through correction", async function() {
324
- const departmentId = mock.departmentCalfireLNU._id as string;
301
+ const department = mock.departmentClarkCounty;
302
+ const departmentId = department._id as string;
325
303
  const existingStreamItems = await mock.getIncidentStreamItems(departmentId, sampleIncidentNumber);
326
304
  const streamItem = _.first(existingStreamItems);
327
305
 
@@ -330,9 +308,220 @@ describe("index", function() {
330
308
  return;
331
309
  }
332
310
 
333
- const sut = await incidentProcessor.handleProcessIncidentRequestCorrection(streamItem.incidentNumber, mock.departmentCalfireLNU, atDate);
311
+ const sut = await incidentProcessor.handleProcessIncidentRequestCorrection(streamItem.incidentNumber, department, atDate);
312
+ validateRulesResult(sut);
313
+ });
314
+ });
315
+
316
+ context("Jackson County - Testing", function() {
317
+ const atDate = new Date();
318
+ const sampleIncidentNumber = "Jackson-County-Test-0001";
319
+
320
+ function validateRulesResult(sut: HandleProcessIncidentRequestResult) {
321
+ if ("error" in sut) {
322
+ assert.fail(sut.error.toString());
323
+ } else {
324
+ const {
325
+ incident
326
+ } = sut;
327
+
328
+ assert.equal(incident?.AgencyIncidentCallTypeDescription, "Structure Fire - 2A", "Should match call type description");
329
+ const unitT13 = _.first((incident?.units ?? []).filter((u: CADUnit) => u.UnitID === "T13"));
330
+ assert.isObject(unitT13);
331
+ assert.equal(unitT13?.AlarmAtDispatch, incident?.AlarmLevel);
332
+
333
+ const unitBC2 = _.first((incident?.units ?? []).filter((u: CADUnit) => u.UnitID === "BC2"));
334
+ assert.isObject(unitBC2);
335
+ assert.equal(unitBC2?.AlarmAtDispatch, "1");
336
+ }
337
+ }
338
+
339
+ it("process stream through legacy", async function() {
340
+ const department = mock.departmentJacksonCountyTest;
341
+ const departmentId = department._id as string;
342
+ const existingStreamItems = await mock.getIncidentStreamItems(departmentId, sampleIncidentNumber);
343
+ const streamItem = _.first(existingStreamItems);
344
+
345
+ if (!streamItem) {
346
+ assert.fail("Expecting a stream item");
347
+ return;
348
+ }
349
+
350
+ const sut = await incidentProcessor.handleProcessIncidentRequestLegacy(streamItem, department, atDate);
351
+ validateRulesResult(sut);
352
+ });
353
+
354
+ it("process stream through correction", async function() {
355
+ const department = mock.departmentJacksonCountyTest;
356
+ const departmentId = department._id as string;
357
+ const existingStreamItems = await mock.getIncidentStreamItems(departmentId, sampleIncidentNumber);
358
+ const streamItem = _.first(existingStreamItems);
359
+
360
+ if (!streamItem) {
361
+ assert.fail("Expecting a stream item");
362
+ return;
363
+ }
364
+
365
+ const sut = await incidentProcessor.handleProcessIncidentRequestCorrection(streamItem.incidentNumber, department, atDate);
366
+ validateRulesResult(sut);
367
+ });
368
+ });
369
+
370
+ context("San Mateo County", function() {
371
+ const atDate = new Date();
372
+ const sampleIncidentNumber = "San-Mateo-0001";
373
+
374
+ function validateRulesResult(sut: HandleProcessIncidentRequestResult) {
375
+ if ("error" in sut) {
376
+ assert.fail(sut.error.toString());
377
+ } else {
378
+ const {
379
+ incident
380
+ } = sut;
381
+
382
+ // console.log(incident);
383
+ assert.equal(incident?.FireMap, "");
384
+
385
+ const unitT9 = _.first((incident?.units ?? []).filter((u) => u.UnitID === "T9"));
386
+ assert.isObject(unitT9, "Expecting unit T9");
387
+ assert.strictEqual(unitT9?.Personnel.length, 6);
388
+ assert.strictEqual(unitT9?.PersonnelCount, 6);
389
+
390
+ assert.strictEqual(incident?.TacticalChannel, "TAC15");
391
+ assert.strictEqual(incident?.CommandChannel, "CM41X3");
392
+
393
+ const noDateComment = _.first((incident?.Comment ?? []).filter((c) => c.CommentSource === "no-date-source"));
394
+ assert.isObject(noDateComment);
395
+ assert.equal(noDateComment?.CommentDateTime, "2000-01-01T19:04:05-0800");
396
+ }
397
+ }
398
+
399
+ it("process stream through legacy", async function() {
400
+ const departmentId = mock.departmentSanMateoCounty._id as string;
401
+ const existingStreamItems = await mock.getIncidentStreamItems(departmentId, sampleIncidentNumber);
402
+ const streamItem = _.first(existingStreamItems);
403
+
404
+ if (!streamItem) {
405
+ assert.fail("Expecting a stream item");
406
+ return;
407
+ }
408
+
409
+ const sut = await incidentProcessor.handleProcessIncidentRequestLegacy(streamItem, mock.departmentSanMateoCounty, atDate);
410
+ validateRulesResult(sut);
411
+ });
412
+
413
+ it("process stream through correction", async function() {
414
+ const departmentId = mock.departmentSanMateoCounty._id as string;
415
+ const existingStreamItems = await mock.getIncidentStreamItems(departmentId, sampleIncidentNumber);
416
+ const streamItem = _.first(existingStreamItems);
417
+
418
+ if (!streamItem) {
419
+ assert.fail("Expecting a stream item");
420
+ return;
421
+ }
422
+
423
+ const sut = await incidentProcessor.handleProcessIncidentRequestCorrection(streamItem.incidentNumber, mock.departmentSanMateoCounty, atDate);
424
+ validateRulesResult(sut);
425
+ });
426
+ });
427
+
428
+ context("Santa Cruz Regional Communications", function() {
429
+ const atDate = new Date();
430
+ const sampleIncidentNumber = "Santa-Cruz-Regional-0001";
431
+
432
+ function validateRulesResult(sut: HandleProcessIncidentRequestResult) {
433
+ if ("error" in sut) {
434
+ assert.fail(sut.error.toString());
435
+ } else {
436
+ const {
437
+ incident
438
+ } = sut;
439
+
440
+ assert.strictEqual(incident?.TacticalChannel, "FBLK/FBLK2/FORNG");
441
+ assert.strictEqual(incident?.CommandChannel, "FRED1/FCZU");
442
+ }
443
+ }
444
+
445
+ it("process stream through legacy", async function() {
446
+ const departmentId = mock.departmentSantaCruzRegional._id as string;
447
+ const existingStreamItems = await mock.getIncidentStreamItems(departmentId, sampleIncidentNumber);
448
+ const streamItem = _.first(existingStreamItems);
449
+
450
+ if (!streamItem) {
451
+ assert.fail("Expecting a stream item");
452
+ return;
453
+ }
454
+
455
+ const sut = await incidentProcessor.handleProcessIncidentRequestLegacy(streamItem, mock.departmentSantaCruzRegional, atDate);
456
+ validateRulesResult(sut);
457
+ });
458
+
459
+ it("process stream through correction", async function() {
460
+ const departmentId = mock.departmentSantaCruzRegional._id as string;
461
+ const existingStreamItems = await mock.getIncidentStreamItems(departmentId, sampleIncidentNumber);
462
+ const streamItem = _.first(existingStreamItems);
463
+
464
+ if (!streamItem) {
465
+ assert.fail("Expecting a stream item");
466
+ return;
467
+ }
468
+
469
+ const sut = await incidentProcessor.handleProcessIncidentRequestCorrection(streamItem.incidentNumber, mock.departmentSantaCruzRegional, atDate);
470
+ validateRulesResult(sut);
471
+ });
472
+ });
473
+
474
+ context("Southern Marin", function() {
475
+ const atDate = new Date();
476
+ const sampleIncidentNumber = "Southern-Marin-0001";
477
+
478
+ function validateRulesResult(sut: HandleProcessIncidentRequestResult) {
479
+ if ("error" in sut) {
480
+ assert.fail(sut.error.toString());
481
+ } else {
482
+ const {
483
+ incident
484
+ } = sut;
485
+
486
+ assert.equal(incident?.full_address, "190 BARN AVE, BLDG: B22 # S1, Fairfax", "Should match full_address");
487
+ assert.equal(incident?.CityOrLocality, "Fairfax");
488
+ assert.equal(incident?.FireMap, "ROT_31");
489
+ assert.equal(incident?.ClosedDateTime, "");
490
+ assert.isNotNull(incident?.expiration_date, "Should have expiration date");
491
+
492
+ const u10 = _.first((incident?.units ?? []).filter((u) => u.UnitID === "M10"));
493
+ assert.isObject(u10);
494
+ assert.isArray(u10?.Personnel);
495
+ assert.equal(u10?.Personnel?.length, 0);
496
+ }
497
+ }
498
+
499
+ it("process stream through legacy", async function() {
500
+ const departmentId = mock.departmentSouthernMarin._id as string;
501
+ const existingStreamItems = await mock.getIncidentStreamItems(departmentId, sampleIncidentNumber);
502
+ const streamItem = _.first(existingStreamItems);
503
+
504
+ if (!streamItem) {
505
+ assert.fail("Expecting a stream item");
506
+ return;
507
+ }
508
+
509
+ const sut = await incidentProcessor.handleProcessIncidentRequestLegacy(streamItem, mock.departmentSouthernMarin, atDate);
510
+ validateRulesResult(sut);
511
+ });
512
+
513
+ it("process stream through correction", async function() {
514
+ const departmentId = mock.departmentSouthernMarin._id as string;
515
+ const existingStreamItems = await mock.getIncidentStreamItems(departmentId, sampleIncidentNumber);
516
+ const streamItem = _.first(existingStreamItems);
517
+
518
+ if (!streamItem) {
519
+ assert.fail("Expecting a stream item");
520
+ return;
521
+ }
522
+
523
+ const sut = await incidentProcessor.handleProcessIncidentRequestCorrection(streamItem.incidentNumber, mock.departmentSouthernMarin, atDate);
334
524
  validateRulesResult(sut);
335
- // assert.isTrue(true);
336
525
  });
337
526
  });
338
527
 
@@ -366,8 +555,6 @@ describe("index", function() {
366
555
 
367
556
  const sut = await incidentProcessor.handleProcessIncidentRequestLegacy(streamItem, mock.departmentVerdugo, atDate);
368
557
  validateRulesResult(sut);
369
- // console.log(typeof incidentProcessor);
370
- // assert.isTrue(true);
371
558
  });
372
559
 
373
560
  it("process stream through correction", async function() {
@@ -382,7 +569,53 @@ describe("index", function() {
382
569
 
383
570
  const sut = await incidentProcessor.handleProcessIncidentRequestCorrection(streamItem.incidentNumber, mock.departmentVerdugo, atDate);
384
571
  validateRulesResult(sut);
385
- // assert.isTrue(true);
572
+ });
573
+ });
574
+
575
+ context("Yolo Emergency Communications Agency", function() {
576
+ const atDate = new Date();
577
+ const sampleIncidentNumber = "Yolo-Communications-0001";
578
+
579
+ function validateRulesResult(sut: HandleProcessIncidentRequestResult) {
580
+ if ("error" in sut) {
581
+ assert.fail(sut.error.toString());
582
+ } else {
583
+ const {
584
+ incident
585
+ } = sut;
586
+
587
+ assert.strictEqual(incident?.TacticalChannel, "BROWN/ECHO6/VFIRE25");
588
+ }
589
+ }
590
+
591
+ it("process stream through legacy", async function() {
592
+ const department = mock.departmentYolo;
593
+ const departmentId = department._id as string;
594
+ const existingStreamItems = await mock.getIncidentStreamItems(departmentId, sampleIncidentNumber);
595
+ const streamItem = _.first(existingStreamItems);
596
+
597
+ if (!streamItem) {
598
+ assert.fail("Expecting a stream item");
599
+ return;
600
+ }
601
+
602
+ const sut = await incidentProcessor.handleProcessIncidentRequestLegacy(streamItem, department, atDate);
603
+ validateRulesResult(sut);
604
+ });
605
+
606
+ it("process stream through correction", async function() {
607
+ const department = mock.departmentYolo;
608
+ const departmentId = department._id as string;
609
+ const existingStreamItems = await mock.getIncidentStreamItems(departmentId, sampleIncidentNumber);
610
+ const streamItem = _.first(existingStreamItems);
611
+
612
+ if (!streamItem) {
613
+ assert.fail("Expecting a stream item");
614
+ return;
615
+ }
616
+
617
+ const sut = await incidentProcessor.handleProcessIncidentRequestCorrection(streamItem.incidentNumber, department, atDate);
618
+ validateRulesResult(sut);
386
619
  });
387
620
  });
388
621
  });