add-column-query.test.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import { DataTypes } from '@sequelize/core';
  2. import { buildInvalidOptionReceivedError } from '@sequelize/core/_non-semver-use-at-your-own-risk_/utils/check.js';
  3. import { beforeAll2, expectsql, getTestDialect, sequelize } from '../../support';
  4. const dialectName = getTestDialect();
  5. describe('QueryGenerator#addColumnQuery', () => {
  6. const queryGenerator = sequelize.queryGenerator;
  7. const vars = beforeAll2(() => {
  8. const User = sequelize.define(
  9. 'User',
  10. {
  11. firstName: DataTypes.STRING,
  12. },
  13. { timestamps: false },
  14. );
  15. return { User };
  16. });
  17. it('generates a ADD COLUMN query in supported dialects', () => {
  18. const { User } = vars;
  19. expectsql(
  20. () =>
  21. queryGenerator.addColumnQuery(User.table, 'age', {
  22. type: DataTypes.INTEGER,
  23. }),
  24. {
  25. default: `ALTER TABLE [Users] ADD [age] INTEGER;`,
  26. mssql: `ALTER TABLE [Users] ADD [age] INTEGER NULL;`,
  27. postgres: `ALTER TABLE "Users" ADD COLUMN "age" INTEGER;`,
  28. },
  29. );
  30. });
  31. it('generates a ADD COLUMN IF NOT EXISTS query in supported dialects', () => {
  32. const { User } = vars;
  33. expectsql(
  34. () =>
  35. queryGenerator.addColumnQuery(
  36. User.table,
  37. 'age',
  38. {
  39. type: DataTypes.INTEGER,
  40. },
  41. { ifNotExists: true },
  42. ),
  43. {
  44. default: buildInvalidOptionReceivedError('addColumnQuery', dialectName, ['ifNotExists']),
  45. mariadb: 'ALTER TABLE `Users` ADD IF NOT EXISTS `age` INTEGER;',
  46. postgres: `ALTER TABLE "Users" ADD COLUMN IF NOT EXISTS "age" INTEGER;`,
  47. },
  48. );
  49. });
  50. });