import "reflect-metadata" import { createTestingConnections, closeTestingConnections, reloadTestingDatabases, } from "../../utils/test-utils" import { DataSource } from "../../../src/data-source/DataSource" import { expect } from "chai" import { InsertValuesMissingError } from "../../../src/error/InsertValuesMissingError" import { Test, DEFAULT_VALUE } from "./entity/Test" describe("github issues > #3111 Inserting with query builder attempts to insert a default row when values is empty array", () => { let connections: DataSource[] before( async () => (connections = await createTestingConnections({ entities: [__dirname + "/entity/*{.js,.ts}"], schemaCreate: true, dropSchema: true, })), ) beforeEach(() => reloadTestingDatabases(connections)) after(() => closeTestingConnections(connections)) it("should not insert with default values on .values([])", () => Promise.all( connections.map(async (connection) => { const repo = connection.getRepository(Test) await repo.createQueryBuilder().insert().values([]).execute() const rowsWithDefaultValue = await repo.find({ where: { value: DEFAULT_VALUE }, }) expect(rowsWithDefaultValue).to.have.lengthOf(0) }), )) it("should still error on missing .values()", () => Promise.all( connections.map(async (connection) => { const repo = connection.getRepository(Test) await repo .createQueryBuilder() .insert() .execute() .should.be.rejectedWith(InsertValuesMissingError) }), )) })