'use strict';

const chai = require('chai');

const expect = chai.expect;
const Support = require('../support');
const { DataTypes } = require('@sequelize/core');

const dialect = Support.getTestDialect();

describe(Support.getTestDialectTeaser('QueryInterface'), () => {
  beforeEach(function () {
    this.queryInterface = this.sequelize.queryInterface;
  });

  describe('dropEnum', () => {
    beforeEach(async function () {
      await this.queryInterface.createTable('menus', {
        structuretype: DataTypes.ENUM('menus', 'submenu', 'routine'),
        sequence: DataTypes.INTEGER,
        name: DataTypes.STRING,
      });
    });

    if (dialect === 'postgres') {
      it('should be able to drop the specified enum', async function () {
        await this.queryInterface.removeColumn('menus', 'structuretype');
        const enumList0 = await this.queryInterface.pgListEnums('menus');
        expect(enumList0).to.have.lengthOf(1);
        expect(enumList0[0]).to.have.property('enum_name').and.to.equal('enum_menus_structuretype');
        await this.queryInterface.dropEnum('enum_menus_structuretype');
        const enumList = await this.queryInterface.pgListEnums('menus');
        expect(enumList).to.be.an('array');
        expect(enumList).to.have.lengthOf(0);
      });
    }
  });
});
