import "../../utils/test-setup" import { closeTestingConnections, createTestingConnections, reloadTestingDatabases, } from "../../utils/test-utils" import { expect } from "chai" import { Car } from "./entity/Car" import { Record } from "./entity/Record" import { DataSource } from "../../../src" describe("github issues > #8747 QueryBuilder update handles Date objects wrong on a ManyToOne relationship.", () => { let dataSources: DataSource[] before( async () => (dataSources = await createTestingConnections({ enabledDrivers: ["mysql", "postgres", "mariadb"], entities: [__dirname + "/entity/*{.js,.ts}"], schemaCreate: true, dropSchema: true, })), ) beforeEach(() => reloadTestingDatabases(dataSources)) after(() => closeTestingConnections(dataSources)) it("should correctly update the datetime field", async () => { for (const dataSource of dataSources) { Car.useDataSource(dataSource) Record.useDataSource(dataSource) const car = await Car.create({}).save() const record = await Record.create({ timestamp: new Date(), car, }).save() await Car.update( { uuid: car.uuid }, { latestRecordTimestamp: record.timestamp }, ) const carReloaded = await Car.findOne({ where: { uuid: car.uuid }, }) expect(carReloaded).to.exist expect(record.timestamp?.getTime()).to.be.equal( carReloaded!.latestRecordTimestamp?.getTime(), ) } }) })