drop-table-query.test.ts 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import { buildInvalidOptionReceivedError } from '@sequelize/core/_non-semver-use-at-your-own-risk_/utils/check.js';
  2. import { createSequelizeInstance, expectsql, getTestDialect, sequelize } from '../../support';
  3. const dialectName = getTestDialect();
  4. const dialect = sequelize.dialect;
  5. describe('QueryGenerator#dropTableQuery', () => {
  6. const queryGenerator = sequelize.queryGenerator;
  7. it('produces a query that drops a table', () => {
  8. expectsql(() => queryGenerator.dropTableQuery('myTable'), {
  9. default: `DROP TABLE IF EXISTS [myTable]`,
  10. });
  11. });
  12. it('produces a query that drops a table with cascade', () => {
  13. expectsql(() => queryGenerator.dropTableQuery('myTable', { cascade: true }), {
  14. default: buildInvalidOptionReceivedError('dropTableQuery', dialectName, ['cascade']),
  15. 'postgres snowflake': `DROP TABLE IF EXISTS "myTable" CASCADE`,
  16. });
  17. });
  18. it('produces a query that drops a table from a model', () => {
  19. const MyModel = sequelize.define('MyModel', {});
  20. expectsql(() => queryGenerator.dropTableQuery(MyModel), {
  21. default: `DROP TABLE IF EXISTS [MyModels]`,
  22. });
  23. });
  24. it('produces a query that drops a table from a model definition', () => {
  25. const MyModel = sequelize.define('MyModel', {});
  26. const myDefinition = MyModel.modelDefinition;
  27. expectsql(() => queryGenerator.dropTableQuery(myDefinition), {
  28. default: `DROP TABLE IF EXISTS [MyModels]`,
  29. });
  30. });
  31. it('produces a query that drops a table with schema', () => {
  32. expectsql(() => queryGenerator.dropTableQuery({ tableName: 'myTable', schema: 'mySchema' }), {
  33. default: `DROP TABLE IF EXISTS [mySchema].[myTable]`,
  34. sqlite3: 'DROP TABLE IF EXISTS `mySchema.myTable`',
  35. });
  36. });
  37. it('produces a query that drops a table with default schema', () => {
  38. expectsql(
  39. () =>
  40. queryGenerator.dropTableQuery({ tableName: 'myTable', schema: dialect.getDefaultSchema() }),
  41. {
  42. default: `DROP TABLE IF EXISTS [myTable]`,
  43. },
  44. );
  45. });
  46. it('produces a query that drops a table from a table and globally set schema', () => {
  47. const sequelizeSchema = createSequelizeInstance({ schema: 'mySchema' });
  48. const queryGeneratorSchema = sequelizeSchema.queryGenerator;
  49. expectsql(() => queryGeneratorSchema.dropTableQuery('myTable'), {
  50. default: `DROP TABLE IF EXISTS [mySchema].[myTable]`,
  51. sqlite3: 'DROP TABLE IF EXISTS `mySchema.myTable`',
  52. });
  53. });
  54. it('produces a query that drops a table with schema and custom delimiter argument', () => {
  55. // This test is only relevant for dialects that do not support schemas
  56. if (dialect.supports.schemas) {
  57. return;
  58. }
  59. expectsql(
  60. () =>
  61. queryGenerator.dropTableQuery({
  62. tableName: 'myTable',
  63. schema: 'mySchema',
  64. delimiter: 'custom',
  65. }),
  66. {
  67. sqlite3: 'DROP TABLE IF EXISTS `mySchemacustommyTable`',
  68. },
  69. );
  70. });
  71. });