import { assert } from "chai"; import { describe, it, beforeEach, afterEach } from "node:test"; import * as m from "../index"; import * as config from "./config"; import mockModule from "./mock"; describe("CADVehicleStatus", function() { let models: m.BackendModels, mongoose: m.MongooseModule; let testItem: Partial; beforeEach(async function() { const c = await m.connect(config.url); models = c.models; mongoose = c.mongoose; const mock = mockModule({ mongoose }); testItem = mock.cadVehicleStatus; await mock.beforeEach(); }); afterEach(async function() { await mongoose.disconnect(); }); it("is saved", async function() { const item = new models.CADVehicleStatus(testItem); const sut = await item.save(); assert.equal(testItem.uuid, sut.uuid); assert.equal(testItem.departmentId, sut.departmentId); assert.equal(testItem.vehicleId, sut.vehicleId); assert.equal(testItem.radioName, sut.radioName); assert.equal(testItem.requestTime, sut.requestTime); assert.equal(testItem.responseTime, sut.responseTime); assert.equal(testItem.status, sut.status); assert.equal(testItem.statusCode, sut.statusCode); assert.equal(testItem.modifiedDate, sut.modifiedDate); assert.equal(testItem.requestStatus, sut.requestStatus); assert.equal(testItem.incidentNumber, sut.incidentNumber); assert.equal(testItem.capability, sut.capability); assert.equal(testItem.owner, sut.owner); assert.equal(testItem.ownerId, sut.ownerId); // Test options with embedded extra fields if (testItem.options && testItem.options.length > 0) { assert.equal(testItem.options.length, sut.options.length); const testOption = testItem.options[0]; const sutOption = sut.options[0]; if (testOption && sutOption) { assert.equal(testOption.name, sutOption.name); assert.equal(testOption.type, sutOption.type); assert.equal(testOption.value, sutOption.value); assert.equal(testOption.key, sutOption.key); if (testOption.extra && sutOption.extra) { assert.equal(testOption.extra.doorCode, sutOption.extra.doorCode); assert.equal(testOption.extra.destinationStatus, sutOption.extra.destinationStatus); assert.equal(testOption.extra.destinationNote, sutOption.extra.destinationNote); assert.equal(testOption.extra.latitude, sutOption.extra.latitude); assert.equal(testOption.extra.longitude, sutOption.extra.longitude); } else { assert.isNotOk(testOption.extra); assert.isNotOk(sutOption.extra); } } } else { assert.equal(sut.options.length, 0); } }); });