import "../../utils/test-setup" import { DataSource, QueryFailedError, QueryRunner, Repository, TableIndex, } from "../../../src" import { createTestingConnections, closeTestingConnections, reloadTestingDatabases, } from "../../utils/test-utils" import { User } from "./entity/User" describe("github issues > #8936 DropIndex with a TableIndex without name is not working", () => { let connections: DataSource[] const tableIndex: TableIndex = new TableIndex({ columnNames: ["firstName", "lastName"], isUnique: true, }) before( async () => (connections = await createTestingConnections({ entities: [__dirname + "/entity/*{.js,.ts}"], schemaCreate: true, dropSchema: true, })), ) beforeEach(() => reloadTestingDatabases(connections)) after(() => closeTestingConnections(connections)) it("should drop the index as expected", () => { // Create a clone because the createIndex will set the name const dropTableIndex: TableIndex = tableIndex.clone() return Promise.all( connections.map(async (connection) => { const queryRunner: QueryRunner = connection.createQueryRunner() const userRepository: Repository = connection.getRepository(User) const tableName: string = userRepository.metadata.tableName // Create the index so it exists when we delete it await queryRunner.createIndex(tableName, tableIndex) // Drop the index expecting it not to raise QueryFailed await queryRunner .dropIndex(tableName, dropTableIndex) .should.not.be.rejectedWith(QueryFailedError) await queryRunner.release() }), ) }) })