tabletcommand-backend-models 7.0.12 → 7.0.14

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 (299) hide show
  1. package/build/constants.js +14 -1
  2. package/build/constants.js.map +1 -1
  3. package/build/index.js +3 -1
  4. package/build/index.js.map +1 -1
  5. package/build/models/cad-incident-block.js +0 -6
  6. package/build/models/cad-incident-block.js.map +1 -1
  7. package/build/models/department.js +5 -0
  8. package/build/models/department.js.map +1 -1
  9. package/build/models/device-mapping.js +4 -0
  10. package/build/models/device-mapping.js.map +1 -1
  11. package/build/models/schema/cad-incident.js +1 -0
  12. package/build/models/schema/cad-incident.js.map +1 -1
  13. package/build/models/user.js +6 -1
  14. package/build/models/user.js.map +1 -1
  15. package/build/test/0index.js +72 -0
  16. package/build/test/0index.js.map +1 -0
  17. package/build/test/action-log.js +40 -0
  18. package/build/test/action-log.js.map +1 -0
  19. package/build/test/agency.js +41 -0
  20. package/build/test/agency.js.map +1 -0
  21. package/build/test/arcgis-group.js +48 -85
  22. package/build/test/arcgis-group.js.map +1 -1
  23. package/build/test/assignment.js +39 -0
  24. package/build/test/assignment.js.map +1 -0
  25. package/build/test/battalion.js +45 -0
  26. package/build/test/battalion.js.map +1 -0
  27. package/build/test/cad-incident-block.js +43 -0
  28. package/build/test/cad-incident-block.js.map +1 -0
  29. package/build/test/cad-incident.js +159 -0
  30. package/build/test/cad-incident.js.map +1 -0
  31. package/build/test/cad-simulation.js +32 -0
  32. package/build/test/cad-simulation.js.map +1 -0
  33. package/build/test/cad-status-map.js +41 -0
  34. package/build/test/cad-status-map.js.map +1 -0
  35. package/build/test/cad-status.js +57 -0
  36. package/build/test/cad-status.js.map +1 -0
  37. package/build/test/cad-vehicle-status-history.js +36 -0
  38. package/build/test/cad-vehicle-status-history.js.map +1 -0
  39. package/build/test/cad-vehicle-status.js +42 -0
  40. package/build/test/cad-vehicle-status.js.map +1 -0
  41. package/build/test/cad-vehicle.js +38 -0
  42. package/build/test/cad-vehicle.js.map +1 -0
  43. package/build/test/checklist-item.js +42 -0
  44. package/build/test/checklist-item.js.map +1 -0
  45. package/build/test/checklist.js +43 -0
  46. package/build/test/checklist.js.map +1 -0
  47. package/build/test/config.js +2 -1
  48. package/build/test/config.js.map +1 -1
  49. package/build/test/csv-import.js +44 -0
  50. package/build/test/csv-import.js.map +1 -0
  51. package/build/test/department.js +99 -0
  52. package/build/test/department.js.map +1 -0
  53. package/build/test/device-mapping.js +51 -0
  54. package/build/test/device-mapping.js.map +1 -0
  55. package/build/test/esri.js +67 -0
  56. package/build/test/esri.js.map +1 -0
  57. package/build/test/gst-mapping.js +37 -0
  58. package/build/test/gst-mapping.js.map +1 -0
  59. package/build/test/helpers.js +14 -0
  60. package/build/test/helpers.js.map +1 -0
  61. package/build/test/incident-event.js +52 -0
  62. package/build/test/incident-event.js.map +1 -0
  63. package/build/test/incident-notified.js +42 -0
  64. package/build/test/incident-notified.js.map +1 -0
  65. package/build/test/incident-takeover.js +38 -0
  66. package/build/test/incident-takeover.js.map +1 -0
  67. package/build/test/job-log.js +36 -0
  68. package/build/test/job-log.js.map +1 -0
  69. package/build/test/location.js +76 -0
  70. package/build/test/location.js.map +1 -0
  71. package/build/test/mail-log.js +52 -0
  72. package/build/test/mail-log.js.map +1 -0
  73. package/build/test/managed-incident.js +107 -0
  74. package/build/test/managed-incident.js.map +1 -0
  75. package/build/test/mark43-incident-retry.js +33 -0
  76. package/build/test/mark43-incident-retry.js.map +1 -0
  77. package/build/test/message.js +38 -0
  78. package/build/test/message.js.map +1 -0
  79. package/build/test/mock.js +1280 -910
  80. package/build/test/mock.js.map +1 -1
  81. package/build/test/monitor.js +34 -0
  82. package/build/test/monitor.js.map +1 -0
  83. package/build/test/personnel-import.js +55 -0
  84. package/build/test/personnel-import.js.map +1 -0
  85. package/build/test/rate-limit.js +32 -0
  86. package/build/test/rate-limit.js.map +1 -0
  87. package/build/test/release-note.js +34 -0
  88. package/build/test/release-note.js.map +1 -0
  89. package/build/test/session.js +42 -0
  90. package/build/test/session.js.map +1 -0
  91. package/build/test/template.js +43 -0
  92. package/build/test/template.js.map +1 -0
  93. package/build/test/user-device.js +69 -0
  94. package/build/test/user-device.js.map +1 -0
  95. package/build/test/user-registration.js +44 -0
  96. package/build/test/user-registration.js.map +1 -0
  97. package/build/test/user.js +51 -0
  98. package/build/test/user.js.map +1 -0
  99. package/build/test/validation-report.js +33 -0
  100. package/build/test/validation-report.js.map +1 -0
  101. package/cspell.json +11 -8
  102. package/definitions/constants.d.ts +11 -0
  103. package/definitions/constants.d.ts.map +1 -1
  104. package/definitions/index.d.ts +2 -2
  105. package/definitions/index.d.ts.map +1 -1
  106. package/definitions/models/cad-incident-block.d.ts.map +1 -1
  107. package/definitions/models/department.d.ts.map +1 -1
  108. package/definitions/models/device-mapping.d.ts.map +1 -1
  109. package/definitions/models/schema/cad-incident.d.ts.map +1 -1
  110. package/definitions/models/user.d.ts.map +1 -1
  111. package/definitions/test/0index.d.ts +2 -0
  112. package/definitions/test/0index.d.ts.map +1 -0
  113. package/definitions/test/action-log.d.ts +2 -0
  114. package/definitions/test/action-log.d.ts.map +1 -0
  115. package/definitions/test/agency.d.ts +2 -0
  116. package/definitions/test/agency.d.ts.map +1 -0
  117. package/definitions/test/arcgis-group.d.ts.map +1 -1
  118. package/definitions/test/assignment.d.ts +2 -0
  119. package/definitions/test/assignment.d.ts.map +1 -0
  120. package/definitions/test/battalion.d.ts +2 -0
  121. package/definitions/test/battalion.d.ts.map +1 -0
  122. package/definitions/test/cad-incident-block.d.ts +2 -0
  123. package/definitions/test/cad-incident-block.d.ts.map +1 -0
  124. package/definitions/test/cad-incident.d.ts +2 -0
  125. package/definitions/test/cad-incident.d.ts.map +1 -0
  126. package/definitions/test/cad-simulation.d.ts +2 -0
  127. package/definitions/test/cad-simulation.d.ts.map +1 -0
  128. package/definitions/test/cad-status-map.d.ts +2 -0
  129. package/definitions/test/cad-status-map.d.ts.map +1 -0
  130. package/definitions/test/cad-status.d.ts +2 -0
  131. package/definitions/test/cad-status.d.ts.map +1 -0
  132. package/definitions/test/cad-vehicle-status-history.d.ts +2 -0
  133. package/definitions/test/cad-vehicle-status-history.d.ts.map +1 -0
  134. package/definitions/test/cad-vehicle-status.d.ts +2 -0
  135. package/definitions/test/cad-vehicle-status.d.ts.map +1 -0
  136. package/definitions/test/cad-vehicle.d.ts +2 -0
  137. package/definitions/test/cad-vehicle.d.ts.map +1 -0
  138. package/definitions/test/checklist-item.d.ts +2 -0
  139. package/definitions/test/checklist-item.d.ts.map +1 -0
  140. package/definitions/test/checklist.d.ts +2 -0
  141. package/definitions/test/checklist.d.ts.map +1 -0
  142. package/definitions/test/config.d.ts.map +1 -1
  143. package/definitions/test/csv-import.d.ts +2 -0
  144. package/definitions/test/csv-import.d.ts.map +1 -0
  145. package/definitions/test/department.d.ts +2 -0
  146. package/definitions/test/department.d.ts.map +1 -0
  147. package/definitions/test/device-mapping.d.ts +2 -0
  148. package/definitions/test/device-mapping.d.ts.map +1 -0
  149. package/definitions/test/esri.d.ts +2 -0
  150. package/definitions/test/esri.d.ts.map +1 -0
  151. package/definitions/test/gst-mapping.d.ts +2 -0
  152. package/definitions/test/gst-mapping.d.ts.map +1 -0
  153. package/definitions/test/helpers.d.ts +2 -0
  154. package/definitions/test/helpers.d.ts.map +1 -0
  155. package/definitions/test/incident-event.d.ts +2 -0
  156. package/definitions/test/incident-event.d.ts.map +1 -0
  157. package/definitions/test/incident-notified.d.ts +2 -0
  158. package/definitions/test/incident-notified.d.ts.map +1 -0
  159. package/definitions/test/incident-takeover.d.ts +2 -0
  160. package/definitions/test/incident-takeover.d.ts.map +1 -0
  161. package/definitions/test/job-log.d.ts +2 -0
  162. package/definitions/test/job-log.d.ts.map +1 -0
  163. package/definitions/test/location.d.ts +2 -0
  164. package/definitions/test/location.d.ts.map +1 -0
  165. package/definitions/test/mail-log.d.ts +2 -0
  166. package/definitions/test/mail-log.d.ts.map +1 -0
  167. package/definitions/test/managed-incident.d.ts +2 -0
  168. package/definitions/test/managed-incident.d.ts.map +1 -0
  169. package/definitions/test/mark43-incident-retry.d.ts +2 -0
  170. package/definitions/test/mark43-incident-retry.d.ts.map +1 -0
  171. package/definitions/test/message.d.ts +2 -0
  172. package/definitions/test/message.d.ts.map +1 -0
  173. package/definitions/test/mock.d.ts +1056 -3
  174. package/definitions/test/mock.d.ts.map +1 -1
  175. package/definitions/test/monitor.d.ts +2 -0
  176. package/definitions/test/monitor.d.ts.map +1 -0
  177. package/definitions/test/personnel-import.d.ts +2 -0
  178. package/definitions/test/personnel-import.d.ts.map +1 -0
  179. package/definitions/test/rate-limit.d.ts +2 -0
  180. package/definitions/test/rate-limit.d.ts.map +1 -0
  181. package/definitions/test/release-note.d.ts +2 -0
  182. package/definitions/test/release-note.d.ts.map +1 -0
  183. package/definitions/test/session.d.ts +2 -0
  184. package/definitions/test/session.d.ts.map +1 -0
  185. package/definitions/test/template.d.ts +2 -0
  186. package/definitions/test/template.d.ts.map +1 -0
  187. package/definitions/test/user-device.d.ts +2 -0
  188. package/definitions/test/user-device.d.ts.map +1 -0
  189. package/definitions/test/user-registration.d.ts +2 -0
  190. package/definitions/test/user-registration.d.ts.map +1 -0
  191. package/definitions/test/user.d.ts +2 -0
  192. package/definitions/test/user.d.ts.map +1 -0
  193. package/definitions/test/validation-report.d.ts +2 -0
  194. package/definitions/test/validation-report.d.ts.map +1 -0
  195. package/definitions/types/cad.d.ts +2 -4
  196. package/definitions/types/cad.d.ts.map +1 -1
  197. package/definitions/types/department.d.ts +1 -0
  198. package/definitions/types/department.d.ts.map +1 -1
  199. package/definitions/types/user.d.ts +39 -38
  200. package/definitions/types/user.d.ts.map +1 -1
  201. package/package.json +4 -4
  202. package/src/constants.ts +13 -0
  203. package/src/index.ts +4 -0
  204. package/src/models/cad-incident-block.ts +0 -10
  205. package/src/models/department.ts +6 -0
  206. package/src/models/device-mapping.ts +4 -0
  207. package/src/models/schema/cad-incident.ts +2 -0
  208. package/src/models/user.ts +7 -1
  209. package/src/test/0index.ts +71 -0
  210. package/src/test/action-log.ts +41 -0
  211. package/src/test/agency.ts +41 -0
  212. package/src/test/arcgis-group.ts +25 -63
  213. package/src/test/assignment.ts +41 -0
  214. package/src/test/battalion.ts +45 -0
  215. package/src/test/cad-incident-block.ts +44 -0
  216. package/src/test/cad-incident.ts +168 -0
  217. package/src/test/cad-simulation.ts +33 -0
  218. package/src/test/cad-status-map.ts +41 -0
  219. package/src/test/cad-status.ts +57 -0
  220. package/src/test/cad-vehicle-status-history.ts +37 -0
  221. package/src/test/cad-vehicle-status.ts +43 -0
  222. package/src/test/cad-vehicle.ts +38 -0
  223. package/src/test/checklist-item.ts +43 -0
  224. package/src/test/checklist.ts +44 -0
  225. package/src/test/config.ts +3 -3
  226. package/src/test/csv-import.ts +44 -0
  227. package/src/test/department.ts +95 -0
  228. package/src/test/device-mapping.ts +53 -0
  229. package/src/test/esri.ts +69 -0
  230. package/src/test/gst-mapping.ts +38 -0
  231. package/src/test/helpers.ts +15 -0
  232. package/src/test/incident-event.ts +53 -0
  233. package/src/test/incident-notified.ts +41 -0
  234. package/src/test/incident-takeover.ts +39 -0
  235. package/src/test/job-log.ts +37 -0
  236. package/src/test/location.ts +79 -0
  237. package/src/test/mail-log.ts +51 -0
  238. package/src/test/managed-incident.ts +116 -0
  239. package/src/test/mark43-incident-retry.ts +34 -0
  240. package/src/test/message.ts +39 -0
  241. package/src/test/mock.ts +590 -163
  242. package/src/test/monitor.ts +35 -0
  243. package/src/test/personnel-import.ts +55 -0
  244. package/src/test/rate-limit.ts +33 -0
  245. package/src/test/release-note.ts +36 -0
  246. package/src/test/session.ts +43 -0
  247. package/src/test/template.ts +44 -0
  248. package/src/test/user-device.ts +66 -0
  249. package/src/test/user-registration.ts +45 -0
  250. package/src/test/user.ts +51 -0
  251. package/src/test/validation-report.ts +33 -0
  252. package/src/tsconfig.json +13 -3
  253. package/src/types/cad.ts +2 -4
  254. package/src/types/department.ts +1 -0
  255. package/src/types/user.ts +40 -39
  256. package/tslint.json +0 -28
  257. /package/{test → test-legacy}/0index.js +0 -0
  258. /package/{test → test-legacy}/action-log.js +0 -0
  259. /package/{test → test-legacy}/agency.js +0 -0
  260. /package/{test → test-legacy}/arcgis-group.js +0 -0
  261. /package/{test → test-legacy}/assignment.js +0 -0
  262. /package/{test → test-legacy}/battalion.js +0 -0
  263. /package/{test → test-legacy}/cad-incident-block.js +0 -0
  264. /package/{test → test-legacy}/cad-incident.js +0 -0
  265. /package/{test → test-legacy}/cad-simulation.js +0 -0
  266. /package/{test → test-legacy}/cad-status-map.js +0 -0
  267. /package/{test → test-legacy}/cad-status.js +0 -0
  268. /package/{test → test-legacy}/cad-vehicle-status-history.js +0 -0
  269. /package/{test → test-legacy}/cad-vehicle-status.js +0 -0
  270. /package/{test → test-legacy}/cad-vehicle.js +0 -0
  271. /package/{test → test-legacy}/checklist-item.js +0 -0
  272. /package/{test → test-legacy}/checklist.js +0 -0
  273. /package/{test → test-legacy}/config.js +0 -0
  274. /package/{test → test-legacy}/csv-import.js +0 -0
  275. /package/{test → test-legacy}/department.js +0 -0
  276. /package/{test → test-legacy}/device-mapping.js +0 -0
  277. /package/{test → test-legacy}/esri.js +0 -0
  278. /package/{test → test-legacy}/gst-mapping.js +0 -0
  279. /package/{test → test-legacy}/helpers.js +0 -0
  280. /package/{test → test-legacy}/incident-event.js +0 -0
  281. /package/{test → test-legacy}/incident-notified.js +0 -0
  282. /package/{test → test-legacy}/incident-takeover.js +0 -0
  283. /package/{test → test-legacy}/job-log.js +0 -0
  284. /package/{test → test-legacy}/location.js +0 -0
  285. /package/{test → test-legacy}/mail-log.js +0 -0
  286. /package/{test → test-legacy}/managed-incident.js +0 -0
  287. /package/{test → test-legacy}/mark43-incident-retry.js +0 -0
  288. /package/{test → test-legacy}/message.js +0 -0
  289. /package/{test → test-legacy}/mock.js +0 -0
  290. /package/{test → test-legacy}/monitor.js +0 -0
  291. /package/{test → test-legacy}/personnel-import.js +0 -0
  292. /package/{test → test-legacy}/rate-limit.js +0 -0
  293. /package/{test → test-legacy}/release-note.js +0 -0
  294. /package/{test → test-legacy}/session.js +0 -0
  295. /package/{test → test-legacy}/template.js +0 -0
  296. /package/{test → test-legacy}/user-device.js +0 -0
  297. /package/{test → test-legacy}/user-registration.js +0 -0
  298. /package/{test → test-legacy}/user.js +0 -0
  299. /package/{test → test-legacy}/validation-report.js +0 -0
@@ -0,0 +1,41 @@
1
+ import { assert } from "chai";
2
+ import "mocha";
3
+ import * as m from "../index";
4
+ import * as config from "./config";
5
+ import mockModule from "./mock";
6
+
7
+ describe("Agency", function() {
8
+ let models: m.BackendModels, mongoose: m.MongooseModule;
9
+ let testItem: Partial<m.Agency>;
10
+ beforeEach(async function() {
11
+ const c = await m.connect(config.url);
12
+ models = c.models;
13
+ mongoose = c.mongoose;
14
+
15
+ const mock = mockModule({
16
+ mongoose
17
+ });
18
+ testItem = mock.agency;
19
+ });
20
+ afterEach(async function() {
21
+ await mongoose.disconnect();
22
+ });
23
+
24
+ it("is saved", async function() {
25
+ const item = new models.Agency(testItem);
26
+ const sut = await item.save();
27
+
28
+ assert.isNotNull(testItem._id);
29
+ assert.equal(testItem.departmentId, sut.departmentId);
30
+ assert.equal(testItem.active, sut.active);
31
+ assert.equal(testItem.code, sut.code);
32
+ assert.equal(testItem.name, sut.name);
33
+ assert.equal(testItem.administrators?.length, 1);
34
+ assert.equal(testItem.personnelIntegration, sut.personnelIntegration);
35
+ assert.equal(testItem.personnelMonitorHours, sut.personnelMonitorHours);
36
+ assert.equal(testItem.crossStaffing?.length, 1);
37
+ const expectedDate = new Date().valueOf() / 1000.0;
38
+ const timeDelta = expectedDate - sut.modified_unix_date;
39
+ assert.isTrue(timeDelta < 1);
40
+ });
41
+ });
@@ -1,58 +1,22 @@
1
-
2
1
  import { assert } from "chai";
3
2
  import "mocha";
4
- // import * as _ from "lodash";
5
-
6
- import { url as mongoURL } from "./config";
7
-
8
- import { connect } from "..";
9
- // import MockModule from "./mock";
10
-
11
- describe("ArcGISGroup", function() {
12
- // let models,
13
- // mongoose: typeof import("mongoose"),
14
- // mock;
15
-
16
- beforeEach(async function() {
17
- const result = await connect(mongoURL);
18
- console.log(result);
19
- // models = result.models;
20
- // mongoose = result.mongoose;
21
-
22
- // mock = MockModule({
23
- // models,
24
- // });
25
- // await mock.cleanup();
26
-
27
- // console.log("x", result);
28
- console.log(mongoURL);
29
- });
30
-
31
- afterEach(async function() {
32
- // await mongoose.disconnect();
33
- });
34
-
35
- it("is saved", async function() {
36
- assert.isTrue(true);
37
- });
38
- });
39
-
40
-
41
- /*
42
-
43
- const m = require("..");
3
+ import * as _ from "lodash";
4
+ import * as m from "../index";
5
+ import * as config from "./config";
6
+ import mockModule from "./mock";
44
7
 
45
8
  describe("ArcGISGroup", function() {
46
- let models, mongoose, mock;
9
+ let models: m.BackendModels, mongoose: m.MongooseModule;
10
+ let testItem: Partial<m.ArcGISGroup>;
47
11
 
48
12
  beforeEach(async function() {
49
13
  const c = await m.connect(config.url);
50
14
  models = c.models;
51
15
  mongoose = c.mongoose;
52
- mock = require("./mock")({
53
- models,
54
- mongoose,
16
+ const mock = mockModule({
17
+ mongoose
55
18
  });
19
+ testItem = mock.arcGISGroup;
56
20
  await mock.cleanup();
57
21
  });
58
22
 
@@ -61,7 +25,6 @@ describe("ArcGISGroup", function() {
61
25
  });
62
26
 
63
27
  it("is saved", async function() {
64
- const testItem = mock.arcGISGroup;
65
28
  assert.isObject(testItem);
66
29
  const item = new models.ArcGISGroup(testItem);
67
30
  const sut = await item.save();
@@ -78,29 +41,28 @@ describe("ArcGISGroup", function() {
78
41
 
79
42
  assert.equal(sut.linkedDepartments.length, 1);
80
43
  const dept = _.first(sut.linkedDepartments);
81
- assert.equal(dept.department, "Demo RTS Fire Department");
82
- assert.equal(dept.departmentId, "558365a198b2fa4278000053");
83
- assert.equal(dept.authUsername, "tabletcmd");
44
+ assert.equal(dept?.department, "Demo RTS Fire Department");
45
+ assert.equal(dept?.departmentId, "558365a198b2fa4278000053");
46
+ assert.equal(dept?.authUsername, "tabletcmd");
84
47
 
85
- assert.equal(dept.users.length, 1);
86
- const deptUser = _.first(dept.users);
87
- assert.equal(deptUser.username, "tc_someone");
88
- assert.equal(deptUser.email, "hello@tc.com");
89
- assert.equal(deptUser.userId, "558365a198a2aa42780000aa");
48
+ assert.equal(dept?.users.length, 1);
49
+ const deptUser = _.first(dept?.users);
50
+ assert.equal(deptUser?.username, "tc_someone");
51
+ assert.equal(deptUser?.email, "hello@tc.com");
52
+ assert.equal(deptUser?.userId, "558365a198a2aa42780000aa");
90
53
 
91
54
  assert.equal(sut.outsiders.length, 1);
92
55
  const outsider = _.first(sut.outsiders);
93
- assert.equal(outsider.username, "Michael_Kallum");
94
- assert.equal(outsider.fullName, "Michael Kallum");
95
- assert.equal(outsider.memberType, "member");
96
- assert.equal(outsider.orgId, "MyTOuXKXZoizaaa");
56
+ assert.equal(outsider?.username, "Michael_Kallum");
57
+ assert.equal(outsider?.fullName, "Michael Kallum");
58
+ assert.equal(outsider?.memberType, "member");
59
+ assert.equal(outsider?.orgId, "MyTOuXKXZoizaaa");
97
60
 
98
61
  assert.equal(sut.users.length, 1);
99
62
  const user = _.first(sut.users);
100
- assert.equal(user.username, "jane_tabletcommand");
101
- assert.equal(user.fullName, "Jane Serrano");
102
- assert.equal(user.memberType, "admin");
103
- assert.equal(user.orgId, "zGXMcUaDlMGoAAAg");
63
+ assert.equal(user?.username, "jane_tabletcommand");
64
+ assert.equal(user?.fullName, "Jane Serrano");
65
+ assert.equal(user?.memberType, "admin");
66
+ assert.equal(user?.orgId, "zGXMcUaDlMGoAAAg");
104
67
  });
105
68
  });
106
- */
@@ -0,0 +1,41 @@
1
+ import { assert } from "chai";
2
+ import "mocha";
3
+ import * as m from "../index";
4
+ import * as config from "./config";
5
+ import mockModule from "./mock";
6
+
7
+ describe("Assignment", function() {
8
+ let models: m.BackendModels, mongoose: m.MongooseModule;
9
+ let testItem: Partial<m.Assignment>;
10
+ beforeEach(async function() {
11
+ const c = await m.connect(config.url);
12
+ models = c.models;
13
+ mongoose = c.mongoose;
14
+
15
+ const mock = mockModule({
16
+ mongoose
17
+ });
18
+ testItem = mock.assignment;
19
+ });
20
+ afterEach(async function() {
21
+ await mongoose.disconnect();
22
+ });
23
+
24
+ it("is saved", async function() {
25
+ const item = new models.Assignment(testItem);
26
+ const sut = await item.save();
27
+
28
+ assert.isNotNull(testItem._id);
29
+ assert.equal(sut._id.toString(), sut.id);
30
+
31
+ assert.equal(testItem.position, sut.position);
32
+ assert.equal(testItem.active, sut.active);
33
+ assert.equal(testItem.name, sut.name);
34
+ assert.equal(testItem.userId, sut.userId);
35
+ assert.equal(testItem.departmentId, sut.departmentId);
36
+ assert.equal(testItem.isMandatory, sut.isMandatory);
37
+ const expectedDate = new Date().valueOf() / 1000.0;
38
+ const timeDelta = expectedDate - sut.modified_unix_date;
39
+ assert.isTrue(timeDelta < 1);
40
+ });
41
+ });
@@ -0,0 +1,45 @@
1
+ import { assert } from "chai";
2
+ import "mocha";
3
+ import * as m from "../index";
4
+ import * as config from "./config";
5
+ import mockModule from "./mock";
6
+
7
+ describe("Battalion", function() {
8
+ let models: m.BackendModels, mongoose: m.MongooseModule;
9
+ let testItem: Partial<m.Battalion>;
10
+ beforeEach(async function() {
11
+ const c = await m.connect(config.url);
12
+ models = c.models;
13
+ mongoose = c.mongoose;
14
+
15
+ const mock = mockModule({
16
+ mongoose
17
+ });
18
+ testItem = mock.battalion;
19
+ });
20
+ afterEach(async function() {
21
+ await mongoose.disconnect();
22
+ });
23
+
24
+ it("is saved", async function() {
25
+ const item = new models.Battalion(testItem);
26
+ const sut = await item.save();
27
+
28
+ assert.isNotNull(testItem._id);
29
+ assert.equal(testItem.departmentId, sut.departmentId);
30
+ assert.equal(testItem.active, sut.active);
31
+ assert.equal(testItem.isMandatory, sut.isMandatory);
32
+ assert.equal(testItem.name, sut.name);
33
+ assert.equal(testItem.userId, sut.userId);
34
+ assert.equal(testItem.position, sut.position);
35
+ assert.equal(testItem.agencyId, sut.agencyId);
36
+ assert.equal(testItem.local_id, sut.local_id);
37
+ assert.equal(testItem.units?.length, 1);
38
+ const expectedDate = new Date().valueOf() / 1000.0;
39
+ let timeDelta = 1;
40
+ if (sut.modified_unix_date) {
41
+ timeDelta = expectedDate - sut.modified_unix_date;
42
+ }
43
+ assert.isTrue(timeDelta < 1);
44
+ });
45
+ });
@@ -0,0 +1,44 @@
1
+ import { assert } from "chai";
2
+ import "mocha";
3
+ import * as _ from "lodash";
4
+ import * as m from "../index";
5
+ import * as config from "./config";
6
+ import mockModule from "./mock";
7
+
8
+ describe("CADIncidentBlock", function() {
9
+ let models: m.BackendModels, mongoose: m.MongooseModule;
10
+ let testItem: Partial<m.CADIncidentBlock>;
11
+ beforeEach(async function() {
12
+ const c = await m.connect(config.url);
13
+ models = c.models;
14
+ mongoose = c.mongoose;
15
+
16
+ const mock = mockModule({
17
+ mongoose
18
+ });
19
+ testItem = mock.cadIncidentBlock;
20
+ await mock.beforeEach();
21
+ });
22
+ afterEach(async function() {
23
+ await mongoose.disconnect();
24
+ });
25
+
26
+ it("is saved", async function() {
27
+ const item = new models.CADIncidentBlock(testItem);
28
+ const sut = await item.save();
29
+
30
+ assert.isNotNull(testItem._id);
31
+ assert.equal(sut.EntryDateTime, testItem.EntryDateTime);
32
+ assert.equal(sut.ClosedDateTime, testItem.ClosedDateTime);
33
+ assert.equal(sut.source, testItem.source);
34
+ assert.equal(sut.IncidentNumber, testItem.IncidentNumber);
35
+ assert.equal(sut.departmentId, testItem.departmentId);
36
+ assert.equal(sut.AgencyIncidentCallTypeDescription, testItem.AgencyIncidentCallTypeDescription);
37
+ // No longer in models? EntryDateTime seems replacement
38
+ // assert.equal(sut.createdAt.toISOString(), new Date(testItem.createdAt).toISOString());
39
+ assert.equal(sut.ReportNumber.length, 1);
40
+ const rn = _.first(sut.ReportNumber);
41
+ assert.equal(rn?.name, "Incident");
42
+ assert.equal(rn?.number, "CA68");
43
+ });
44
+ });
@@ -0,0 +1,168 @@
1
+ import { assert } from "chai";
2
+ import * as _ from "lodash";
3
+ import * as m from "../index";
4
+ import * as config from "./config";
5
+ import mockModule from "./mock";
6
+ import "mocha";
7
+
8
+ describe("CADIncident", function() {
9
+ let models: m.BackendModels, mongoose: m.MongooseModule;
10
+ let testItem: Partial<m.CADIncident>;
11
+ beforeEach(async function() {
12
+ const c = await m.connect(config.url);
13
+ models = c.models;
14
+ mongoose = c.mongoose;
15
+
16
+ const mock = mockModule({
17
+ mongoose
18
+ });
19
+ testItem = mock.cadIncident;
20
+ await mock.beforeEach();
21
+ });
22
+ afterEach(async function() {
23
+ await mongoose.disconnect();
24
+ });
25
+
26
+ it("is saved", async function() {
27
+ const item = new models.CADIncident(testItem);
28
+ const sut = await item.save();
29
+
30
+ assert.isNotNull(testItem._id);
31
+ assert.equal(sut.uuid, testItem.uuid);
32
+ assert.equal(sut.departmentId, testItem.departmentId);
33
+ assert.equal(sut.AgencyID, testItem.AgencyID);
34
+ assert.equal(sut.IncidentNumber, testItem.IncidentNumber);
35
+ assert.equal(sut.TransactionID, testItem.TransactionID);
36
+ assert.equal(sut.AgencyIncidentCallTypeDescription, testItem.AgencyIncidentCallTypeDescription);
37
+ assert.equal(sut.StreetName, testItem.StreetName);
38
+ assert.equal(sut.StreetSuffix, testItem.StreetSuffix);
39
+ assert.equal(sut.Predirectional, testItem.Predirectional);
40
+ assert.equal(sut.Postdirectional, testItem.Postdirectional);
41
+ assert.equal(sut.CityOrLocality, testItem.CityOrLocality);
42
+ assert.equal(sut.Floor, testItem.Floor);
43
+ assert.equal(sut.Suite, testItem.Suite);
44
+ assert.equal(sut.City, testItem.City);
45
+ assert.equal(sut.Building, testItem.Building);
46
+ assert.equal(sut.StateOrProvince, testItem.StateOrProvince);
47
+ assert.equal(sut.CommonPlaceName, testItem.CommonPlaceName);
48
+ assert.equal(sut.LocationComment, testItem.LocationComment);
49
+ assert.equal(sut.CrossStreet1, testItem.CrossStreet1);
50
+ assert.equal(sut.CrossStreet2, testItem.CrossStreet2);
51
+ assert.equal(sut.cross_streets, testItem.cross_streets);
52
+ assert.equal(sut.PostalCode, testItem.PostalCode);
53
+ assert.equal(sut.CallerNumber, testItem.CallerNumber);
54
+ assert.equal(sut.Latitude, testItem.Latitude);
55
+ assert.equal(sut.Longitude, testItem.Longitude);
56
+ assert.equal(sut.preference_location, testItem.preference_location);
57
+ assert.equal(sut.EntryDateTime, testItem.EntryDateTime);
58
+ assert.equal(sut.ClosedDateTime, testItem.ClosedDateTime);
59
+ assert.equal(sut.closed_unix_date, testItem.closed_unix_date);
60
+ assert.equal(sut.start_unix_date, testItem.start_unix_date);
61
+ assert.equal(sut.modified_unix_date, testItem.modified_unix_date);
62
+
63
+ assert.isTrue(sut.PriorIncidentChanged);
64
+ assert.equal(sut.PriorIncidentChanged, testItem.PriorIncidentChanged);
65
+ assert.equal(sut.PriorIncident.length, 1);
66
+ if (sut.PriorIncident.length === 1) {
67
+ const pi = sut.PriorIncident[0];
68
+ const pid = testItem.PriorIncident?.length ? testItem.PriorIncident[0] : null;
69
+ assert.isNotNull(pid);
70
+ assert.equal(pi?.IncidentNumber, pid?.IncidentNumber);
71
+ assert.equal(pi?.IncidentDateTime, pid?.IncidentDateTime);
72
+ assert.equal(pi?.Problem, pid?.Problem);
73
+ assert.equal(pi?.Address, pid?.Address);
74
+ assert.equal(pi?.Suite, pid?.Suite);
75
+ assert.equal(pi?.Jurisdiction, pid?.Jurisdiction);
76
+ assert.equal(pi?.Comment[0]?.Comment, pid?.Comment[0]?.Comment);
77
+ assert.equal(pi?.Comment[0]?.CommentSource, pid?.Comment[0]?.CommentSource);
78
+ assert.equal(pi?.Comment[0]?.CommentDateTime, pid?.Comment[0]?.CommentDateTime);
79
+ }
80
+
81
+ if (testItem.units?.length) {
82
+ assert.equal(sut?.units[0]?.UnitDispatchNumber, testItem?.units[0]?.UnitDispatchNumber);
83
+ assert.equal(sut?.units[0]?.UnitID, testItem?.units[0]?.UnitID);
84
+ assert.equal(sut?.units[0]?.TimeDispatched, testItem?.units[0]?.TimeDispatched);
85
+ } else {
86
+ assert.equal(sut.units.length, 1);
87
+ }
88
+
89
+ const unit = _.first(sut.units.filter((x) => x.UnitID === "MA31"));
90
+ assert.equal(unit?.Personnel.length, 2);
91
+ const p1 = _.first(unit?.Personnel.filter((x: { PersonnelID: string; }) => x.PersonnelID === "X14"));
92
+ assert.equal(p1?.PersonnelName, "Mary Smith");
93
+ assert.equal(p1?.PersonnelNote, "X");
94
+ assert.equal(p1?.PersonnelRank, "Captain");
95
+ assert.equal(p1?.PersonnelWorkCode, "TRD");
96
+
97
+ assert.equal(sut.Comment.length, 1);
98
+ if (testItem.Comment?.length) {
99
+ assert.equal(sut?.Comment[0]?.Comment, testItem?.Comment[0]?.Comment);
100
+ assert.equal(sut?.Comment[0]?.CommentSource, testItem?.Comment[0]?.CommentSource);
101
+ assert.equal(sut?.Comment[0]?.CommentDateTime, testItem?.Comment[0]?.CommentDateTime);
102
+ } else {
103
+ assert.equal(sut.Comment.length, 1);
104
+ }
105
+
106
+ // Share incident properties
107
+ assert.isArray(sut.ReportNumber);
108
+ assert.equal(sut.ReportNumber.length, 2);
109
+ const rna = _.first(sut.ReportNumber.filter((x) => x.name === "A"));
110
+ assert.isObject(rna);
111
+ assert.equal(rna?.number, "07-0351");
112
+ const rnb = _.first(sut.ReportNumber.filter((x) => x.name === "B"));
113
+ assert.isObject(rnb);
114
+ assert.equal(rnb?.number, "UM-02210");
115
+
116
+ assert.isArray(sut.radioChannels);
117
+ assert.equal(sut.radioChannels.length, 2);
118
+ const rca = _.first(sut.radioChannels.filter((x) => x.name === "CMD"));
119
+ assert.isObject(rca);
120
+ assert.equal(rca?.channel, "LOCAL Tone: 3");
121
+ assert.equal(rca?.url, "http://example.com/stream1");
122
+ const rcb = _.first(sut.radioChannels.filter((x) => x.name === "TAC"));
123
+ assert.isObject(rcb);
124
+ assert.equal(rcb?.channel, "CDF TAC 10");
125
+ assert.equal(rcb?.url, "http://example.com/stream2");
126
+
127
+ assert.isObject(sut.record);
128
+ assert.equal(sut.record.name, "John");
129
+ assert.equal(sut.record.value, "Smith");
130
+
131
+ assert.isObject(sut.sharedSource);
132
+ assert.equal(sut.sharedSource.isExternal, true);
133
+ assert.equal(sut.sharedSource.name, "Demo RTS Fire Department");
134
+ assert.isArray(sut.sharedSource.reasons);
135
+ assert.equal(sut.sharedSource.reasons.length, 1);
136
+ const ssr1 = _.first(sut.sharedSource.reasons);
137
+ assert.isObject(ssr1);
138
+ assert.equal(ssr1?.name, "Unit B10 assigned");
139
+ assert.equal(ssr1?.date.toISOString(), "2024-05-03T00:00:00.000Z");
140
+
141
+ assert.isArray(sut.sharedTo);
142
+ assert.equal(sut.sharedTo.length, 1);
143
+ const st1 = _.first(sut.sharedTo);
144
+ assert.equal(st1?.active, true);
145
+ assert.equal(st1?.departmentId, "5195426cc4e016a988000965");
146
+ assert.equal(st1?.expireAt.toISOString(), "2024-08-01T10:20:30.400Z");
147
+ assert.equal(st1?.name, "Test Fire Department");
148
+ assert.equal(st1?.startAt.toISOString(), "2024-05-01T01:02:03.040Z");
149
+ assert.equal(st1?.reasons.length, 1);
150
+ const str1 = _.first(st1?.reasons);
151
+ assert.equal(str1?.name, "Unit M10 assigned");
152
+ assert.equal(str1?.date.toISOString(), "2024-05-03T01:01:01.010Z");
153
+ });
154
+
155
+ it("no virtuals id if _id not present", async function() {
156
+ const item = new models.CADIncident(testItem);
157
+ await item.save();
158
+
159
+ const sut = await models.CADIncident.findOne({ _id: item._id }).lean({
160
+ virtuals: true
161
+ });
162
+ assert.equal(sut?.units.length, 1);
163
+ assert.isUndefined(sut?.units[0]?.id);
164
+
165
+ assert.equal(sut?.Comment.length, 1);
166
+ assert.isUndefined(sut?.Comment[0]?.id);
167
+ });
168
+ });
@@ -0,0 +1,33 @@
1
+ import { assert } from "chai";
2
+ import "mocha";
3
+ import * as m from "../index";
4
+ import * as config from "./config";
5
+ import mockModule from "./mock";
6
+
7
+ describe("CadSimulation", function() {
8
+ let models: m.BackendModels, mongoose: m.MongooseModule;
9
+ let testItem: Partial<m.CADSimulation>;
10
+ beforeEach(async function() {
11
+ const c = await m.connect(config.url);
12
+ models = c.models;
13
+ mongoose = c.mongoose;
14
+
15
+ const mock = mockModule({
16
+ mongoose
17
+ });
18
+ testItem = mock.cadSimulation;
19
+ });
20
+ afterEach(async function() {
21
+ await mongoose.disconnect();
22
+ });
23
+
24
+ it("is saved", async function() {
25
+ const item = new models.CADSimulation(testItem);
26
+ const sut = await item.save();
27
+
28
+ assert.isNotNull(testItem);
29
+ assert.equal(testItem.departmentId, sut.departmentId);
30
+ assert.equal(testItem.title, sut.title);
31
+ assert.equal(testItem.friendlyId, sut.friendlyId);
32
+ });
33
+ });
@@ -0,0 +1,41 @@
1
+ import { assert } from "chai";
2
+ import "mocha";
3
+ import * as m from "../index";
4
+ import * as config from "./config";
5
+ import mockModule from "./mock";
6
+
7
+ describe("CADStatusMap", function() {
8
+ let models: m.BackendModels, mongoose: m.MongooseModule;
9
+ let testItem: Partial<m.CADStatusMap>;
10
+ beforeEach(async function() {
11
+ const c = await m.connect(config.url);
12
+ models = c.models;
13
+ mongoose = c.mongoose;
14
+
15
+ const mock = mockModule({
16
+ mongoose
17
+ });
18
+ testItem = mock.cadStatusMap;
19
+ });
20
+ afterEach(async function() {
21
+ await mongoose.disconnect();
22
+ });
23
+
24
+ it("is saved", async function() {
25
+ const item = new models.CADStatusMap(testItem);
26
+ const sut = await item.save();
27
+
28
+ assert.equal(testItem.departmentId, sut.departmentId);
29
+ assert.equal(testItem.modifiedDate, sut.modifiedDate);
30
+
31
+ assert.equal(testItem.fromStatusId, sut.fromStatusId);
32
+ if (sut.toStatusIds.length && testItem.toStatusIds?.length) {
33
+ assert.equal(testItem.toStatusIds[0]?.statusId, sut.toStatusIds[0]?.statusId);
34
+ assert.isTrue(sut.toStatusIds[0]?.userEnabled);
35
+ assert.equal(sut.toStatusIds[0]?.position, 0);
36
+ } else {
37
+ assert.equal(sut.toStatusIds.length, 1);
38
+ assert.equal(testItem.toStatusIds?.length, 1);
39
+ }
40
+ });
41
+ });
@@ -0,0 +1,57 @@
1
+ import { assert } from "chai";
2
+ import "mocha";
3
+ import * as m from "../index";
4
+ import * as config from "./config";
5
+ import mockModule from "./mock";
6
+
7
+ describe("CADStatus", function() {
8
+ let models: m.BackendModels, mongoose: m.MongooseModule;
9
+ let testItem: Partial<m.CADStatus>;
10
+ beforeEach(async function() {
11
+ const c = await m.connect(config.url);
12
+ models = c.models;
13
+ mongoose = c.mongoose;
14
+
15
+ const mock = mockModule({
16
+ mongoose
17
+ });
18
+ testItem = mock.cadStatus;
19
+ });
20
+ afterEach(async function() {
21
+ await mongoose.disconnect();
22
+ });
23
+
24
+ it("is saved", async function() {
25
+ const item = new models.CADStatus(testItem);
26
+ const sut = await item.save();
27
+
28
+ assert.equal(testItem.uuid, sut.uuid);
29
+ assert.equal(testItem.departmentId, sut.departmentId);
30
+ assert.equal(testItem.modifiedDate, sut.modifiedDate);
31
+ assert.equal(testItem.code, sut.code);
32
+ assert.equal(testItem.codeDisplay, sut.codeDisplay);
33
+ assert.equal(testItem.color?.background, sut.color.background);
34
+ assert.equal(testItem.color?.text, sut.color.text);
35
+ assert.equal(testItem.name, sut.name);
36
+ assert.equal(testItem.normalized, sut.normalized);
37
+ assert.isFalse(sut.roaming);
38
+ assert.isTrue(sut.selfAssignable);
39
+ assert.equal(testItem.status, sut.status);
40
+ assert.equal(testItem.statusId, sut.statusId);
41
+ if (testItem.options?.length && sut.options.length) {
42
+ assert.equal(testItem.options[0]?.cadKey, sut.options[0]?.cadKey);
43
+ assert.equal(testItem.options[0]?.name, sut.options[0]?.name);
44
+ assert.equal(testItem.options[0]?.position, sut.options[0]?.position);
45
+ assert.isTrue(sut.options[0]?.visible);
46
+ assert.equal(testItem.options[0]?.cadValues[0]?.name, sut.options[0]?.cadValues[0]?.name);
47
+ assert.equal(testItem.options[0]?.cadValues[0]?.type, sut.options[0]?.cadValues[0]?.type);
48
+ assert.equal(testItem.options[0]?.cadValues[0]?.value, sut.options[0]?.cadValues[0]?.value);
49
+ assert.isTrue(sut.options[0]?.cadValues[0]?.visible);
50
+ assert.isFalse(sut.options[0]?.cadValues[0]?.favorite);
51
+ } else {
52
+ assert.equal(testItem.options?.length, 1);
53
+ assert.equal(sut.options?.length, 1);
54
+
55
+ }
56
+ });
57
+ });
@@ -0,0 +1,37 @@
1
+ import { assert } from "chai";
2
+ import "mocha";
3
+ import * as m from "../index";
4
+ import * as config from "./config";
5
+ import mockModule from "./mock";
6
+
7
+ describe("CADVehicleStatusHistory", function() {
8
+ let models: m.BackendModels, mongoose: m.MongooseModule;
9
+ let testItem: Partial<m.CADVehicleStatusHistory>;
10
+ beforeEach(async function() {
11
+ const c = await m.connect(config.url);
12
+ models = c.models;
13
+ mongoose = c.mongoose;
14
+
15
+ const mock = mockModule({
16
+ mongoose
17
+ });
18
+ testItem = mock.cadVehicleStatusHistory;
19
+ });
20
+ afterEach(async function() {
21
+ await mongoose.disconnect();
22
+ });
23
+
24
+ it("is saved", async function() {
25
+ const item = new models.CADVehicleStatusHistory(testItem);
26
+ const sut = await item.save();
27
+
28
+ assert.equal(testItem.departmentId, sut.departmentId);
29
+ assert.equal(testItem.vehicleId, sut.vehicleId);
30
+ assert.equal(testItem.radioName, sut.radioName);
31
+ assert.equal(testItem.status, sut.status);
32
+ assert.equal(testItem.statusCode, sut.statusCode);
33
+ assert.equal(testItem.requestedAt, sut.requestedAt);
34
+ assert.equal(testItem.requestedBy, sut.requestedBy);
35
+ assert.equal(testItem.incidentNumber, sut.incidentNumber);
36
+ });
37
+ });
@@ -0,0 +1,43 @@
1
+ import { assert } from "chai";
2
+ import "mocha";
3
+ import * as m from "../index";
4
+ import * as config from "./config";
5
+ import mockModule from "./mock";
6
+
7
+ describe("CADVehicleStatus", function() {
8
+ let models: m.BackendModels, mongoose: m.MongooseModule;
9
+ let testItem: Partial<m.CADVehicleStatus>;
10
+ beforeEach(async function() {
11
+ const c = await m.connect(config.url);
12
+ models = c.models;
13
+ mongoose = c.mongoose;
14
+
15
+ const mock = mockModule({
16
+ mongoose
17
+ });
18
+ testItem = mock.cadVehicleStatus;
19
+ });
20
+ afterEach(async function() {
21
+ await mongoose.disconnect();
22
+ });
23
+
24
+ it("is saved", async function() {
25
+ const item = new models.CADVehicleStatus(testItem);
26
+ const sut = await item.save();
27
+
28
+ assert.equal(testItem.uuid, sut.uuid);
29
+ assert.equal(testItem.departmentId, sut.departmentId);
30
+ assert.equal(testItem.vehicleId, sut.vehicleId);
31
+ assert.equal(testItem.radioName, sut.radioName);
32
+ assert.equal(testItem.requestTime, sut.requestTime);
33
+ assert.equal(testItem.responseTime, sut.responseTime);
34
+ assert.equal(testItem.status, sut.status);
35
+ assert.equal(testItem.statusCode, sut.statusCode);
36
+ assert.equal(testItem.modifiedDate, sut.modifiedDate);
37
+ assert.equal(testItem.requestStatus, sut.requestStatus);
38
+ assert.equal(testItem.incidentNumber, sut.incidentNumber);
39
+ assert.equal(testItem.capability, sut.capability);
40
+ assert.equal(testItem.owner, sut.owner);
41
+ assert.equal(testItem.ownerId, sut.ownerId);
42
+ });
43
+ });