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("Battalion", 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.battalion; await mock.beforeEach(); }); afterEach(async function() { await mongoose.disconnect(); }); it("is saved", async function() { const item = new models.Battalion(testItem); const sut = await item.save(); assert.isNotNull(testItem._id); assert.equal(testItem.departmentId, sut.departmentId); assert.equal(testItem.active, sut.active); assert.equal(testItem.isMandatory, sut.isMandatory); assert.equal(testItem.name, sut.name); assert.equal(testItem.userId, sut.userId); assert.equal(testItem.position, sut.position); assert.equal(testItem.agencyId, sut.agencyId); assert.equal(testItem.local_id, sut.local_id); assert.equal(testItem.units?.length, 1); const expectedDate = new Date().valueOf() / 1000.0; let timeDelta = 1; if (sut.modified_unix_date) { timeDelta = expectedDate - sut.modified_unix_date; } assert.isTrue(timeDelta < 1); }); it("persists kind, type, locationType on a unit", async function() { const item = new models.Battalion({ departmentId: "d1", name: "Bn1", isMandatory: true, active: true, units: [{ friendly_id: "E1", name: "Engine 1", kind: "engine", type: "1", locationType: "vehicle" }], }); const sut = await item.save(); assert.equal(sut.units[0]?.kind, "engine"); assert.equal(sut.units[0]?.type, "1"); assert.equal(sut.units[0]?.locationType, "vehicle"); }); });