tabletcommand-backend-models 7.4.90 → 7.4.92

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 (42) hide show
  1. package/README.md +68 -1
  2. package/build/index.js +2 -0
  3. package/build/index.js.map +1 -1
  4. package/build/models/esri.js +26 -0
  5. package/build/models/esri.js.map +1 -1
  6. package/build/models/status-beacon-transition.js +51 -0
  7. package/build/models/status-beacon-transition.js.map +1 -0
  8. package/build/models/status-beacon.js +174 -0
  9. package/build/models/status-beacon.js.map +1 -0
  10. package/build/test/0index.js +2 -0
  11. package/build/test/0index.js.map +1 -1
  12. package/build/test/esri.js +38 -0
  13. package/build/test/esri.js.map +1 -1
  14. package/build/test/mock.js +64 -0
  15. package/build/test/mock.js.map +1 -1
  16. package/build/test/status-beacon.js +112 -0
  17. package/build/test/status-beacon.js.map +1 -0
  18. package/build/types/status-beacon.js +3 -0
  19. package/build/types/status-beacon.js.map +1 -0
  20. package/definitions/index.d.ts +12 -0
  21. package/definitions/index.d.ts.map +1 -1
  22. package/definitions/models/esri.d.ts.map +1 -1
  23. package/definitions/models/status-beacon-transition.d.ts +13 -0
  24. package/definitions/models/status-beacon-transition.d.ts.map +1 -0
  25. package/definitions/models/status-beacon.d.ts +13 -0
  26. package/definitions/models/status-beacon.d.ts.map +1 -0
  27. package/definitions/test/mock.d.ts +62 -0
  28. package/definitions/test/mock.d.ts.map +1 -1
  29. package/definitions/test/status-beacon.d.ts +2 -0
  30. package/definitions/test/status-beacon.d.ts.map +1 -0
  31. package/definitions/types/status-beacon.d.ts +72 -0
  32. package/definitions/types/status-beacon.d.ts.map +1 -0
  33. package/package.json +1 -1
  34. package/src/index.ts +4 -0
  35. package/src/models/esri.ts +28 -0
  36. package/src/models/status-beacon-transition.ts +60 -0
  37. package/src/models/status-beacon.ts +193 -0
  38. package/src/test/0index.ts +2 -0
  39. package/src/test/esri.ts +46 -0
  40. package/src/test/mock.ts +66 -0
  41. package/src/test/status-beacon.ts +121 -0
  42. package/src/types/status-beacon.ts +90 -0
package/README.md CHANGED
@@ -1,3 +1,70 @@
1
1
  # tabletcommand-backend-models
2
2
 
3
- Tablet Command backend API models
3
+ Mongoose/TypeScript library exporting 64+ data models for the Tablet Command backend. Covers CAD, incidents, users, devices, integrations, and more.
4
+
5
+ ## Installation
6
+
7
+ ```sh
8
+ npm install tabletcommand-backend-models
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ The primary API is `connect()`, which opens a MongoDB connection and wires all models.
14
+
15
+ ```ts
16
+ import { connect } from "tabletcommand-backend-models";
17
+
18
+ const { connection, models, mongoose } = await connect(process.env.MONGO_URL);
19
+
20
+ const dept = await models.Department.findById(id);
21
+ ```
22
+
23
+ `connect(mongoUrl, opts?)` accepts an optional Mongoose connection options object and returns `{ connection, models, mongoose }`.
24
+
25
+ ## Project Structure
26
+
27
+ ```
28
+ src/
29
+ ├── index.ts # connect(), wireModels(), exported constants & helpers
30
+ ├── constants.ts # Shared enums (AccountIndustry, IncidentFilterKind, etc.)
31
+ ├── helpers.ts # Mongoose/TS utilities, ObjectId helpers
32
+ ├── models/ # 64 Mongoose model files
33
+ │ └── schema/ # 17 reusable sub-schemas (geojson, oauth, webhook, etc.)
34
+ └── types/ # TypeScript interfaces mirroring each model
35
+ ```
36
+
37
+ ## Models
38
+
39
+ | Category | Key Models |
40
+ |---|---|
41
+ | **CAD** | `CadIncident`, `CadVehicle`, `CadStatus`, `CadVehicleStatusHistory`, `CadSimulation` |
42
+ | **Incidents** | `ManagedIncident`, `IncidentEvent`, `IncidentFilter`, `IncidentNotified`, `IncidentTakeover` |
43
+ | **Users & Auth** | `User`, `UserDevice`, `Session`, `UserRegistration`, `AudioStreamAuthentication` |
44
+ | **Departments & Config** | `Department`, `GlobalSettings`, `Battalion`, `Agency`, `Assignment` |
45
+ | **Integrations** | `Esri`, `DeviceMapping`, `GstMapping`, `Partner`, `Mark43IncidentRetry`, `Saml` |
46
+ | **Personnel** | `PersonnelRoster`, `PersonnelKnown`, `PersonnelImport` |
47
+ | **Beacons** | `StatusBeacon`, `StatusBeaconTransition`, `BeaconLog` |
48
+ | **Logging & Comms** | `ActionLog`, `JobLog`, `MailLog`, `SmsLog`, `SmtpUnhandled`, `Message` |
49
+ | **Charts / Analytics** | `ChartIncident`, `ChartUser`, `ChartDeviceStats`, `ChartManagedIncident` |
50
+ | **Misc** | `RateLimit`, `CsvImport`, `Monitor`, `ValidationReport`, `RemoteLog`, `ReleaseNote` |
51
+
52
+ ## Key Call-outs
53
+
54
+ **Lazy-loading** — `wireModels()` uses dynamic imports internally. Models are not instantiated until `connect()` is called, avoiding premature Mongoose registration.
55
+
56
+ **Type safety** — The `BackendModels` type gives fully typed access to every model. 99.79% type coverage is enforced at build time.
57
+
58
+ **Schema composition** — `src/models/schema/` contains reusable sub-schemas (GeoJSON, OAuth, webhooks, colors, etc.) that are composed into larger models rather than duplicated.
59
+
60
+ **Decoupled types** — Interfaces live in `src/types/`, Mongoose schemas in `src/models/`. Import types directly without pulling in Mongoose as a dependency.
61
+
62
+ **Top-level exports** — `connect`, `wireModels`, `BackendModels`, `MongooseTypes`, all constants, and helper utilities are exported from the package root.
63
+
64
+ ## Development
65
+
66
+ ```sh
67
+ npm run build # compile via gulp
68
+ npm test # run tests with tsx
69
+ npm run lint # eslint src/
70
+ ```
package/build/index.js CHANGED
@@ -89,6 +89,8 @@ async function wireModels(mongoose) {
89
89
  SAML: await getModel(Promise.resolve().then(() => require("./models/saml"))),
90
90
  SMSLog: await getModel(Promise.resolve().then(() => require("./models/sms-log"))),
91
91
  SMTPUnhandled: await getModel(Promise.resolve().then(() => require("./models/smtp-unhandled"))),
92
+ StatusBeacon: await getModel(Promise.resolve().then(() => require("./models/status-beacon"))),
93
+ StatusBeaconTransition: await getModel(Promise.resolve().then(() => require("./models/status-beacon-transition"))),
92
94
  Template: await getModel(Promise.resolve().then(() => require("./models/template"))),
93
95
  User: await getModel(Promise.resolve().then(() => require("./models/user"))),
94
96
  UserDevice: await getModel(Promise.resolve().then(() => require("./models/user-device"))),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -102,6 +102,32 @@ function EsriSchema(mongoose) {
102
102
  name: "departmentId_unique",
103
103
  unique: true,
104
104
  });
105
+ // cspell:disable-next-line
106
+ // arcGISAuth must be set-or-null, never a subdoc with an empty username.
107
+ // EsriAuth.username defaults to "" and that schema is shared with `auth`, so we
108
+ // normalize here rather than change the default: an arcGISAuth present without a
109
+ // username collapses to null, keeping it out of the $exists unique index below.
110
+ modelSchema.pre("save", function (next) {
111
+ const arcGISAuth = this.get("arcGISAuth");
112
+ if (arcGISAuth && !arcGISAuth.username) {
113
+ this.set("arcGISAuth", null);
114
+ }
115
+ next();
116
+ });
117
+ // arcGISAuth.username is generated lowercase (cron-maps domain.ts:
118
+ // name.toLowerCase() -> `tc_<slug>`), so this case-sensitive unique index is
119
+ // sufficient in practice; case-insensitive enforcement is intentionally deferred.
120
+ // $exists (not $gt: "") is correct because the pre-save hook above guarantees
121
+ // arcGISAuth is set-or-null, so the username field is present only on real records.
122
+ modelSchema.index({
123
+ "arcGISAuth.username": 1,
124
+ }, {
125
+ name: "arcGISAuth.username_1_unique",
126
+ unique: true,
127
+ partialFilterExpression: {
128
+ "arcGISAuth.username": { $exists: true },
129
+ },
130
+ });
105
131
  return modelSchema;
106
132
  }
107
133
  async function EsriModule(mongoose) {
@@ -1 +1 @@
1
- {"version":3,"file":"esri.js","sourceRoot":"","sources":["../../src/models/esri.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"esri.js","sourceRoot":"","sources":["../../src/models/esri.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = StatusBeaconTransitionModule;
4
+ async function StatusBeaconTransitionModule(mongoose) {
5
+ const { Schema } = mongoose;
6
+ const modelSchema = new Schema({
7
+ _id: {
8
+ type: Schema.Types.ObjectId,
9
+ auto: true,
10
+ },
11
+ departmentId: {
12
+ type: String,
13
+ default: "",
14
+ required: true,
15
+ },
16
+ integration: {
17
+ type: String,
18
+ default: "",
19
+ required: true,
20
+ },
21
+ triggerReason: {
22
+ type: String,
23
+ default: "",
24
+ },
25
+ healthState: {
26
+ type: String,
27
+ default: "",
28
+ },
29
+ consecutiveFailures: {
30
+ type: Number,
31
+ default: 0,
32
+ },
33
+ totalFailuresSinceLastHealthy: {
34
+ type: Number,
35
+ default: 0,
36
+ },
37
+ lastError: {
38
+ type: String,
39
+ default: "",
40
+ },
41
+ }, {
42
+ autoIndex: false,
43
+ timestamps: true,
44
+ });
45
+ modelSchema.index({ departmentId: 1, integration: 1, createdAt: -1 }, {
46
+ name: "departmentId_1_integration_1_createdAt_-1",
47
+ });
48
+ modelSchema.index({ createdAt: 1 }, { name: "createdAt_1" });
49
+ return mongoose.model("StatusBeaconTransition", modelSchema, "massive_status_beacon_transition", { overwriteModels: true });
50
+ }
51
+ //# sourceMappingURL=status-beacon-transition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status-beacon-transition.js","sourceRoot":"","sources":["../../src/models/status-beacon-transition.ts"],"names":[],"mappings":";;AAQA,+CAiDC;AAjDc,KAAK,UAAU,4BAA4B,CAAC,QAAwB;IACjF,MAAM,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC;IAE5B,MAAM,WAAW,GAAG,IAAI,MAAM,CAA6B;QACzD,GAAG,EAAE;YACH,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ;YAC3B,IAAI,EAAE,IAAI;SACX;QACD,YAAY,EAAE;YACZ,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,IAAI;SACf;QACD,WAAW,EAAE;YACX,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,IAAI;SACf;QACD,aAAa,EAAE;YACb,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,EAAE;SACZ;QACD,WAAW,EAAE;YACX,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,EAAE;SACZ;QACD,mBAAmB,EAAE;YACnB,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,CAAC;SACX;QACD,6BAA6B,EAAE;YAC7B,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,CAAC;SACX;QACD,SAAS,EAAE;YACT,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,EAAE;SACZ;KACF,EAAE;QACD,SAAS,EAAE,KAAK;QAChB,UAAU,EAAE,IAAI;KACjB,CAAC,CAAC;IAEH,WAAW,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;QACpE,IAAI,EAAE,2CAA2C;KAClD,CAAC,CAAC;IACH,WAAW,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;IAE7D,OAAO,QAAQ,CAAC,KAAK,CAAyB,wBAAwB,EAAE,WAAW,EAAE,kCAAkC,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;AACtJ,CAAC"}
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = StatusBeaconModule;
4
+ const helpers_1 = require("../helpers");
5
+ async function StatusBeaconModule(mongoose) {
6
+ const { Schema } = mongoose;
7
+ const QueueDepths = new Schema({
8
+ incident: { type: Number, default: 0 },
9
+ status: { type: Number, default: 0 },
10
+ vehicle: { type: Number, default: 0 },
11
+ total: { type: Number, default: 0 },
12
+ }, { _id: false, id: false });
13
+ const TCSendHealth = new Schema({
14
+ lastSuccessfulIncidentSend: { type: Date },
15
+ lastSuccessfulUnitStatusSend: { type: Date },
16
+ sendFailuresDelta: { type: Number, default: 0 },
17
+ lastSendError: { type: String, default: "" },
18
+ }, { _id: false, id: false });
19
+ const WriteBackHealth = new Schema({
20
+ attemptsDelta: { type: Number, default: 0 },
21
+ failuresDelta: { type: Number, default: 0 },
22
+ lastSuccessfulWriteBack: { type: Date },
23
+ lastError: { type: String, default: "" },
24
+ }, { _id: false, id: false });
25
+ const SyncHealth = new Schema({
26
+ lastCacheRefresh: { type: Date },
27
+ cacheAgeSeconds: { type: Number, default: 0 },
28
+ consecutiveEmptyPolls: { type: Number, default: 0 },
29
+ lastPollChanges: { type: Number, default: 0 },
30
+ incidentCacheGrowthDelta: { type: Number, default: 0 },
31
+ }, { _id: false, id: false });
32
+ const modelSchema = new Schema({
33
+ _id: {
34
+ type: Schema.Types.ObjectId,
35
+ auto: true,
36
+ },
37
+ departmentId: {
38
+ type: String,
39
+ default: "",
40
+ required: true,
41
+ },
42
+ // Identity
43
+ integration: {
44
+ type: String,
45
+ default: "",
46
+ required: true,
47
+ },
48
+ interfaceStartTime: {
49
+ type: Date,
50
+ default: helpers_1.currentDate,
51
+ },
52
+ // Health State
53
+ healthState: {
54
+ type: String,
55
+ default: "",
56
+ },
57
+ triggerReason: {
58
+ type: String,
59
+ default: "",
60
+ },
61
+ consecutiveFailures: {
62
+ type: Number,
63
+ default: 0,
64
+ },
65
+ consecutiveSuccesses: {
66
+ type: Number,
67
+ default: 0,
68
+ },
69
+ totalFailuresSinceLastHealthy: {
70
+ type: Number,
71
+ default: 0,
72
+ },
73
+ outageStartTime: {
74
+ type: Date,
75
+ },
76
+ // Cycle Metrics
77
+ pollCycle: {
78
+ type: Number,
79
+ default: 0,
80
+ },
81
+ lastPollMs: {
82
+ type: Number,
83
+ default: 0,
84
+ },
85
+ activeIncidents: {
86
+ type: Number,
87
+ default: 0,
88
+ },
89
+ activeUnits: {
90
+ type: Number,
91
+ default: 0,
92
+ },
93
+ // Data Flow Deltas
94
+ incidentsDelta: {
95
+ type: Number,
96
+ default: 0,
97
+ },
98
+ unitStatusDelta: {
99
+ type: Number,
100
+ default: 0,
101
+ },
102
+ // Queue Depths
103
+ queueDepths: {
104
+ type: QueueDepths,
105
+ default: () => ({}),
106
+ },
107
+ // Auth Token Health
108
+ tokenAgeSecs: {
109
+ type: Number,
110
+ },
111
+ tokenExpiresAt: {
112
+ type: Date,
113
+ },
114
+ // TC Send Health
115
+ tCSend: {
116
+ type: TCSendHealth,
117
+ default: () => ({}),
118
+ },
119
+ // Write-back Health
120
+ writeBack: {
121
+ type: WriteBackHealth,
122
+ default: () => ({}),
123
+ },
124
+ // Sync Health
125
+ sync: {
126
+ type: SyncHealth,
127
+ default: () => ({}),
128
+ },
129
+ // Debug & Config
130
+ debugPushActive: {
131
+ type: Boolean,
132
+ default: false,
133
+ },
134
+ lastConfigSave: {
135
+ type: Date,
136
+ },
137
+ lastConfigSaveFile: {
138
+ type: String,
139
+ default: "",
140
+ },
141
+ // Error & Version
142
+ lastError: {
143
+ type: String,
144
+ default: "",
145
+ },
146
+ interfaceVersion: {
147
+ type: String,
148
+ default: "",
149
+ },
150
+ cadVersion: {
151
+ type: String,
152
+ default: "",
153
+ },
154
+ unifiedVersion: {
155
+ type: String,
156
+ default: "",
157
+ },
158
+ }, {
159
+ autoIndex: false,
160
+ timestamps: true,
161
+ });
162
+ modelSchema.index({ departmentId: 1, integration: 1 }, {
163
+ name: "departmentId_1_integration_1",
164
+ unique: true,
165
+ });
166
+ modelSchema.index({ healthState: 1 }, { name: "healthState_1" });
167
+ modelSchema.index({ triggerReason: 1 }, { name: "triggerReason_1" });
168
+ modelSchema.index({ "queueDepths.total": 1 }, { name: "queueDepths_total_1" });
169
+ modelSchema.index({ "tCSend.sendFailuresDelta": 1 }, { name: "tCSend_sendFailuresDelta_1" });
170
+ modelSchema.index({ "writeBack.failuresDelta": 1 }, { name: "writeBack_failuresDelta_1" });
171
+ modelSchema.index({ "sync.consecutiveEmptyPolls": 1 }, { name: "sync_consecutiveEmptyPolls_1" });
172
+ return mongoose.model("StatusBeacon", modelSchema, "massive_status_beacon", { overwriteModels: true });
173
+ }
174
+ //# sourceMappingURL=status-beacon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status-beacon.js","sourceRoot":"","sources":["../../src/models/status-beacon.ts"],"names":[],"mappings":"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"}
@@ -67,6 +67,8 @@ const config = require("./config");
67
67
  chai_1.assert.isFunction(models.RemoteLogStream, "Missing RemoteLogStream");
68
68
  chai_1.assert.isFunction(models.Session, "Missing Session");
69
69
  chai_1.assert.isFunction(models.SAML, "Missing SAML");
70
+ chai_1.assert.isFunction(models.StatusBeacon, "Missing StatusBeacon");
71
+ chai_1.assert.isFunction(models.StatusBeaconTransition, "Missing StatusBeaconTransition");
70
72
  chai_1.assert.isFunction(models.SMSLog, "Missing SMSLog");
71
73
  chai_1.assert.isFunction(models.SMTPUnhandled, "Missing SMTPUnhandled");
72
74
  chai_1.assert.isFunction(models.Template, "Missing Template");
@@ -1 +1 @@
1
- {"version":3,"file":"0index.js","sourceRoot":"","sources":["../../src/test/0index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"0index.js","sourceRoot":"","sources":["../../src/test/0index.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const chai_1 = require("chai");
4
4
  const node_test_1 = require("node:test");
5
+ const strict_1 = require("node:assert/strict");
5
6
  const m = require("../index");
6
7
  const config = require("./config");
7
8
  const mock_1 = require("./mock");
@@ -57,5 +58,42 @@ const mock_1 = require("./mock");
57
58
  const props = mapPropsFound[0];
58
59
  chai_1.assert.equal(props === null || props === void 0 ? void 0 : props.download, true);
59
60
  });
61
+ (0, node_test_1.it)("enforces unique arcGISAuth.username constraint", async function () {
62
+ await new models.Esri({
63
+ departmentId: new mongoose.Types.ObjectId(),
64
+ arcGISAuth: { username: "tc_dup_user" },
65
+ }).save();
66
+ // A second department claiming the same non-empty username must be rejected.
67
+ // assertRejects fails if the save does NOT reject, so there is no false-positive.
68
+ await (0, strict_1.rejects)(new models.Esri({
69
+ departmentId: new mongoose.Types.ObjectId(),
70
+ arcGISAuth: { username: "tc_dup_user" },
71
+ }).save(), /duplicate key/);
72
+ });
73
+ (0, node_test_1.it)("normalizes an empty arcGISAuth.username to null", async function () {
74
+ // EsriAuth.username defaults to "" (schema shared with auth); an arcGISAuth
75
+ // present without a real username collapses to null so it is never indexed.
76
+ const saved = await new models.Esri({
77
+ departmentId: new mongoose.Types.ObjectId(),
78
+ arcGISAuth: { username: "" },
79
+ }).save();
80
+ chai_1.assert.isNull(saved.arcGISAuth);
81
+ });
82
+ (0, node_test_1.it)("allows multiple missing/empty arcGISAuth.username and distinct values", async function () {
83
+ // missing arcGISAuth entirely (defaults to null) — not indexed
84
+ await new models.Esri({ departmentId: new mongoose.Types.ObjectId() }).save();
85
+ await new models.Esri({ departmentId: new mongoose.Types.ObjectId() }).save();
86
+ // empty-string username — normalized to null by the pre-save hook, so not indexed.
87
+ // Both must coexist: without normalization the second would collide on "" under $exists.
88
+ const empty1 = await new models.Esri({ departmentId: new mongoose.Types.ObjectId(), arcGISAuth: { username: "" } }).save();
89
+ const empty2 = await new models.Esri({ departmentId: new mongoose.Types.ObjectId(), arcGISAuth: { username: "" } }).save();
90
+ chai_1.assert.isNull(empty1.arcGISAuth);
91
+ chai_1.assert.isNull(empty2.arcGISAuth);
92
+ // distinct non-empty usernames — allowed
93
+ await new models.Esri({ departmentId: new mongoose.Types.ObjectId(), arcGISAuth: { username: "tc_user_a" } }).save();
94
+ await new models.Esri({ departmentId: new mongoose.Types.ObjectId(), arcGISAuth: { username: "tc_user_b" } }).save();
95
+ const count = await models.Esri.countDocuments({});
96
+ chai_1.assert.equal(count, 6);
97
+ });
60
98
  });
61
99
  //# sourceMappingURL=esri.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"esri.js","sourceRoot":"","sources":["../../src/test/esri.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"esri.js","sourceRoot":"","sources":["../../src/test/esri.ts"],"names":[],"mappings":"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"}
@@ -1428,6 +1428,68 @@ function mockModule(dependencies) {
1428
1428
  status: "success",
1429
1429
  sendNotification: false
1430
1430
  };
1431
+ const statusBeacon = {
1432
+ _id: new mongoose.Types.ObjectId(),
1433
+ departmentId,
1434
+ integration: "test-cad-integration",
1435
+ interfaceStartTime: new Date(),
1436
+ healthState: "healthy",
1437
+ triggerReason: "poll_success",
1438
+ consecutiveFailures: 0,
1439
+ consecutiveSuccesses: 5,
1440
+ totalFailuresSinceLastHealthy: 0,
1441
+ outageStartTime: undefined,
1442
+ pollCycle: 42,
1443
+ lastPollMs: 350,
1444
+ activeIncidents: 3,
1445
+ activeUnits: 12,
1446
+ incidentsDelta: 1,
1447
+ unitStatusDelta: 2,
1448
+ queueDepths: {
1449
+ incident: 0,
1450
+ status: 0,
1451
+ vehicle: 0,
1452
+ total: 0,
1453
+ },
1454
+ tokenAgeSecs: 1800,
1455
+ tokenExpiresAt: new Date(),
1456
+ tCSend: {
1457
+ lastSuccessfulIncidentSend: new Date(),
1458
+ lastSuccessfulUnitStatusSend: new Date(),
1459
+ sendFailuresDelta: 0,
1460
+ lastSendError: "",
1461
+ },
1462
+ writeBack: {
1463
+ attemptsDelta: 0,
1464
+ failuresDelta: 0,
1465
+ lastSuccessfulWriteBack: new Date(),
1466
+ lastError: "",
1467
+ },
1468
+ sync: {
1469
+ lastCacheRefresh: new Date(),
1470
+ cacheAgeSeconds: 30,
1471
+ consecutiveEmptyPolls: 0,
1472
+ lastPollChanges: 2,
1473
+ incidentCacheGrowthDelta: 1,
1474
+ },
1475
+ debugPushActive: false,
1476
+ lastConfigSave: new Date(),
1477
+ lastConfigSaveFile: "config-v1.json",
1478
+ lastError: "",
1479
+ interfaceVersion: "1.2.3",
1480
+ cadVersion: "4.5.6",
1481
+ unifiedVersion: "7.8.9",
1482
+ };
1483
+ const statusBeaconTransition = {
1484
+ _id: new mongoose.Types.ObjectId(),
1485
+ departmentId,
1486
+ integration: "test-cad-integration",
1487
+ triggerReason: "consecutive_failures",
1488
+ healthState: "degraded",
1489
+ consecutiveFailures: 3,
1490
+ totalFailuresSinceLastHealthy: 5,
1491
+ lastError: "connection timeout",
1492
+ };
1431
1493
  const validationReport = {
1432
1494
  _id: new mongoose.Types.ObjectId(),
1433
1495
  departmentId: new mongoose.Types.ObjectId("56131f724143487a10000001"),
@@ -1520,6 +1582,8 @@ function mockModule(dependencies) {
1520
1582
  releaseNote,
1521
1583
  session,
1522
1584
  saml,
1585
+ statusBeacon,
1586
+ statusBeaconTransition,
1523
1587
  template,
1524
1588
  user,
1525
1589
  userDevice,