123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- import { buildInvalidOptionReceivedError } from '@sequelize/core/_non-semver-use-at-your-own-risk_/utils/check.js';
- import { removeUndefined } from '@sequelize/core/_non-semver-use-at-your-own-risk_/utils/object.js';
- import { expectsql, getTestDialect, sequelize } from '../../support';
- const dialectName = getTestDialect();
- const notSupportedError = new Error(`Databases are not supported in ${dialectName}.`);
- describe('QueryGenerator#createDatabaseQuery', () => {
- const queryGenerator = sequelize.queryGenerator;
- it('produces a CREATE DATABASE query in supported dialects', () => {
- expectsql(() => queryGenerator.createDatabaseQuery('myDatabase'), {
- default: notSupportedError,
- postgres: 'CREATE DATABASE "myDatabase"',
- snowflake: 'CREATE DATABASE IF NOT EXISTS "myDatabase"',
- mssql: `IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = N'myDatabase' ) CREATE DATABASE [myDatabase]`,
- });
- });
- it('supports the collate option', () => {
- expectsql(() => queryGenerator.createDatabaseQuery('myDatabase', { collate: 'en_US.UTF-8' }), {
- default: notSupportedError,
- postgres: `CREATE DATABASE "myDatabase" LC_COLLATE = 'en_US.UTF-8'`,
- snowflake: buildInvalidOptionReceivedError('createDatabaseQuery', dialectName, ['collate']),
- mssql: `IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = N'myDatabase' ) CREATE DATABASE [myDatabase] COLLATE N'en_US.UTF-8'`,
- });
- });
- it('supports the encoding option', () => {
- expectsql(() => queryGenerator.createDatabaseQuery('myDatabase', { encoding: 'UTF8' }), {
- default: notSupportedError,
- 'mssql snowflake': buildInvalidOptionReceivedError('createDatabaseQuery', dialectName, [
- 'encoding',
- ]),
- postgres: `CREATE DATABASE "myDatabase" ENCODING = 'UTF8'`,
- });
- });
- it('supports the ctype option', () => {
- expectsql(() => queryGenerator.createDatabaseQuery('myDatabase', { ctype: 'zh_TW.UTF-8' }), {
- default: notSupportedError,
- 'mssql snowflake': buildInvalidOptionReceivedError('createDatabaseQuery', dialectName, [
- 'ctype',
- ]),
- postgres: `CREATE DATABASE "myDatabase" LC_CTYPE = 'zh_TW.UTF-8'`,
- });
- });
- it('supports the template option', () => {
- expectsql(() => queryGenerator.createDatabaseQuery('myDatabase', { template: 'template0' }), {
- default: notSupportedError,
- 'mssql snowflake': buildInvalidOptionReceivedError('createDatabaseQuery', dialectName, [
- 'template',
- ]),
- postgres: `CREATE DATABASE "myDatabase" TEMPLATE = 'template0'`,
- });
- });
- it('supports the charset option', () => {
- expectsql(() => queryGenerator.createDatabaseQuery('myDatabase', { charset: 'utf8mb4' }), {
- default: notSupportedError,
- 'mssql postgres snowflake': buildInvalidOptionReceivedError(
- 'createDatabaseQuery',
- dialectName,
- ['charset'],
- ),
- });
- });
- it('supports combining all options', () => {
- const optionSupport = {
- collate: ['postgres', 'mssql'],
- encoding: ['postgres'],
- ctype: ['postgres'],
- template: ['postgres'],
- };
- const config = removeUndefined({
- collate: optionSupport.collate.includes(dialectName) ? 'en_US.UTF-8' : undefined,
- encoding: optionSupport.encoding.includes(dialectName) ? 'UTF8' : undefined,
- ctype: optionSupport.ctype.includes(dialectName) ? 'zh_TW.UTF-8' : undefined,
- template: optionSupport.template.includes(dialectName) ? 'template0' : undefined,
- });
- expectsql(() => queryGenerator.createDatabaseQuery('myDatabase', config), {
- default: notSupportedError,
- postgres: `CREATE DATABASE "myDatabase" ENCODING = 'UTF8' LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'zh_TW.UTF-8' TEMPLATE = 'template0'`,
- snowflake: `CREATE DATABASE IF NOT EXISTS "myDatabase"`,
- mssql: `IF NOT EXISTS (SELECT * FROM sys.databases WHERE name = N'myDatabase') CREATE DATABASE [myDatabase] COLLATE N'en_US.UTF-8'`,
- });
- });
- });
|