1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- import { TransactionType } from '@sequelize/core';
- import { buildInvalidOptionReceivedError } from '@sequelize/core/_non-semver-use-at-your-own-risk_/utils/check.js';
- import { expectsql, sequelize } from '../../support';
- const dialect = sequelize.dialect;
- const notSupportedError = new Error(
- `startTransactionQuery is not supported by the ${dialect.name} dialect.`,
- );
- describe('QueryGenerator#startTransactionQuery', () => {
- const queryGenerator = sequelize.queryGenerator;
- it('should generate a query for starting a transaction', () => {
- expectsql(() => queryGenerator.startTransactionQuery(), {
- default: 'START TRANSACTION',
- sqlite3: 'BEGIN DEFERRED TRANSACTION',
- 'db2 ibmi mssql': notSupportedError,
- });
- });
- it('should generate a query for starting a transaction with a name', () => {
- expectsql(() => queryGenerator.startTransactionQuery({ transactionName: 'myTransaction' }), {
- default: 'START TRANSACTION',
- snowflake: 'START TRANSACTION NAME "myTransaction"',
- sqlite3: 'BEGIN DEFERRED TRANSACTION',
- 'db2 ibmi mssql': notSupportedError,
- });
- });
- it('should generate a query for starting a read-only transaction', () => {
- expectsql(() => queryGenerator.startTransactionQuery({ readOnly: true }), {
- default: buildInvalidOptionReceivedError('startTransactionQuery', dialect.name, ['readOnly']),
- 'db2 ibmi mssql': notSupportedError,
- 'mariadb mysql postgres': 'START TRANSACTION READ ONLY',
- });
- });
- it('should generate a query for starting a deferred transaction', () => {
- expectsql(
- () => queryGenerator.startTransactionQuery({ transactionType: TransactionType.DEFERRED }),
- {
- default: buildInvalidOptionReceivedError('startTransactionQuery', dialect.name, [
- 'transactionType',
- ]),
- sqlite3: 'BEGIN DEFERRED TRANSACTION',
- 'db2 ibmi mssql': notSupportedError,
- },
- );
- });
- it('should generate a query for starting an immediate transaction', () => {
- expectsql(
- () => queryGenerator.startTransactionQuery({ transactionType: TransactionType.IMMEDIATE }),
- {
- default: buildInvalidOptionReceivedError('startTransactionQuery', dialect.name, [
- 'transactionType',
- ]),
- sqlite3: 'BEGIN IMMEDIATE TRANSACTION',
- 'db2 ibmi mssql': notSupportedError,
- },
- );
- });
- it('should generate a query for starting an exclusive transaction', () => {
- expectsql(
- () => queryGenerator.startTransactionQuery({ transactionType: TransactionType.EXCLUSIVE }),
- {
- default: buildInvalidOptionReceivedError('startTransactionQuery', dialect.name, [
- 'transactionType',
- ]),
- sqlite3: 'BEGIN EXCLUSIVE TRANSACTION',
- 'db2 ibmi mssql': notSupportedError,
- },
- );
- });
- it('should generate a query for starting a transaction with all options', () => {
- expectsql(
- () =>
- queryGenerator.startTransactionQuery({
- readOnly: true,
- transactionName: 'myTransaction',
- transactionType: TransactionType.EXCLUSIVE,
- }),
- {
- default: buildInvalidOptionReceivedError('startTransactionQuery', dialect.name, [
- 'transactionType',
- ]),
- 'snowflake sqlite3': buildInvalidOptionReceivedError(
- 'startTransactionQuery',
- dialect.name,
- ['readOnly'],
- ),
- 'db2 ibmi mssql': notSupportedError,
- },
- );
- });
- });
|