@@ -9,9 +9,7 @@ import type {
9
9
} from '@prisma/driver-adapter-utils'
10
10
import { ok } from '@prisma/driver-adapter-utils'
11
11
12
- import { PrismaClientKnownRequestError } from '../../../errors/PrismaClientKnownRequestError'
13
- import type * as Tx from '../../common/types/Transaction'
14
- import { IsolationLevel } from '../../common/types/Transaction'
12
+ import { IsolationLevel , Options } from './Transaction'
15
13
import { TransactionManager } from './TransactionManager'
16
14
import {
17
15
InvalidTransactionIsolationLevelError ,
@@ -83,7 +81,7 @@ class MockDriverAdapter implements DriverAdapter {
83
81
}
84
82
}
85
83
86
- async function startTransaction ( transactionManager : TransactionManager , options : Partial < Tx . Options > = { } ) {
84
+ async function startTransaction ( transactionManager : TransactionManager , options : Partial < Options > = { } ) {
87
85
const [ { id } ] = await Promise . all ( [
88
86
transactionManager . startTransaction ( {
89
87
timeout : TRANSACTION_EXECUTION_TIMEOUT ,
@@ -97,7 +95,7 @@ async function startTransaction(transactionManager: TransactionManager, options:
97
95
98
96
test ( 'transaction executes normally' , async ( ) => {
99
97
const driverAdapter = new MockDriverAdapter ( )
100
- const transactionManager = new TransactionManager ( { driverAdapter, clientVersion : '1.0.0' } )
98
+ const transactionManager = new TransactionManager ( { driverAdapter } )
101
99
102
100
const id = await startTransaction ( transactionManager )
103
101
@@ -115,7 +113,7 @@ test('transaction executes normally', async () => {
115
113
116
114
test ( 'transaction is rolled back' , async ( ) => {
117
115
const driverAdapter = new MockDriverAdapter ( )
118
- const transactionManager = new TransactionManager ( { driverAdapter, clientVersion : '1.0.0' } )
116
+ const transactionManager = new TransactionManager ( { driverAdapter } )
119
117
120
118
const id = await startTransaction ( transactionManager )
121
119
@@ -133,7 +131,7 @@ test('transaction is rolled back', async () => {
133
131
134
132
test ( 'transactions are rolled back when shutting down' , async ( ) => {
135
133
const driverAdapter = new MockDriverAdapter ( )
136
- const transactionManager = new TransactionManager ( { driverAdapter, clientVersion : '1.0.0' } )
134
+ const transactionManager = new TransactionManager ( { driverAdapter } )
137
135
138
136
const id1 = await startTransaction ( transactionManager )
139
137
const id2 = await startTransaction ( transactionManager )
@@ -156,7 +154,7 @@ test('transactions are rolled back when shutting down', async () => {
156
154
157
155
test ( 'when driver adapter requires phantom queries does not execute transaction statements' , async ( ) => {
158
156
const driverAdapter = new MockDriverAdapter ( { usePhantomQuery : true } )
159
- const transactionManager = new TransactionManager ( { driverAdapter, clientVersion : '1.0.0' } )
157
+ const transactionManager = new TransactionManager ( { driverAdapter } )
160
158
161
159
const id = await startTransaction ( transactionManager )
162
160
@@ -172,7 +170,7 @@ test('when driver adapter requires phantom queries does not execute transaction
172
170
173
171
test ( 'with explicit isolation level' , async ( ) => {
174
172
const driverAdapter = new MockDriverAdapter ( )
175
- const transactionManager = new TransactionManager ( { driverAdapter, clientVersion : '1.0.0' } )
173
+ const transactionManager = new TransactionManager ( { driverAdapter } )
176
174
177
175
const id = await startTransaction ( transactionManager , { isolationLevel : IsolationLevel . Serializable } )
178
176
@@ -191,7 +189,7 @@ test('with explicit isolation level', async () => {
191
189
192
190
test ( 'for MySQL with explicit isolation level requires isolation level set before BEGIN' , async ( ) => {
193
191
const driverAdapter = new MockDriverAdapter ( { provider : 'mysql' } )
194
- const transactionManager = new TransactionManager ( { driverAdapter, clientVersion : '1.0.0' } )
192
+ const transactionManager = new TransactionManager ( { driverAdapter } )
195
193
196
194
const id = await startTransaction ( transactionManager , { isolationLevel : IsolationLevel . Serializable } )
197
195
@@ -203,7 +201,7 @@ test('for MySQL with explicit isolation level requires isolation level set befor
203
201
204
202
test ( 'for SQLite with unsupported isolation level' , async ( ) => {
205
203
const driverAdapter = new MockDriverAdapter ( { provider : 'sqlite' } )
206
- const transactionManager = new TransactionManager ( { driverAdapter, clientVersion : '1.0.0' } )
204
+ const transactionManager = new TransactionManager ( { driverAdapter } )
207
205
208
206
await expect (
209
207
startTransaction ( transactionManager , { isolationLevel : IsolationLevel . RepeatableRead } ) ,
@@ -212,7 +210,7 @@ test('for SQLite with unsupported isolation level', async () => {
212
210
213
211
test ( 'with isolation level only supported in MS SQL Server, "snapshot"' , async ( ) => {
214
212
const driverAdapter = new MockDriverAdapter ( )
215
- const transactionManager = new TransactionManager ( { driverAdapter, clientVersion : '1.0.0' } )
213
+ const transactionManager = new TransactionManager ( { driverAdapter } )
216
214
217
215
await expect (
218
216
startTransaction ( transactionManager , { isolationLevel : IsolationLevel . Snapshot } ) ,
@@ -221,7 +219,7 @@ test('with isolation level only supported in MS SQL Server, "snapshot"', async (
221
219
222
220
test ( 'transaction times out during starting' , async ( ) => {
223
221
const driverAdapter = new MockDriverAdapter ( )
224
- const transactionManager = new TransactionManager ( { driverAdapter, clientVersion : '1.0.0' } )
222
+ const transactionManager = new TransactionManager ( { driverAdapter } )
225
223
226
224
await expect ( startTransaction ( transactionManager , { maxWait : START_TRANSACTION_TIME / 2 } ) ) . rejects . toBeInstanceOf (
227
225
TransactionStartTimoutError ,
@@ -230,7 +228,7 @@ test('transaction times out during starting', async () => {
230
228
231
229
test ( 'transaction times out during execution' , async ( ) => {
232
230
const driverAdapter = new MockDriverAdapter ( )
233
- const transactionManager = new TransactionManager ( { driverAdapter, clientVersion : '1.0.0' } )
231
+ const transactionManager = new TransactionManager ( { driverAdapter } )
234
232
235
233
const id = await startTransaction ( transactionManager )
236
234
@@ -242,7 +240,7 @@ test('transaction times out during execution', async () => {
242
240
243
241
test ( 'trying to commit or rollback invalid transaction id fails with TransactionNotFoundError' , async ( ) => {
244
242
const driverAdapter = new MockDriverAdapter ( )
245
- const transactionManager = new TransactionManager ( { driverAdapter, clientVersion : '1.0.0' } )
243
+ const transactionManager = new TransactionManager ( { driverAdapter } )
246
244
247
245
await expect ( transactionManager . commitTransaction ( 'invalid-tx-id' ) ) . rejects . toBeInstanceOf ( TransactionNotFoundError )
248
246
await expect ( transactionManager . rollbackTransaction ( 'invalid-tx-id' ) ) . rejects . toBeInstanceOf ( TransactionNotFoundError )
@@ -252,12 +250,10 @@ test('trying to commit or rollback invalid transaction id fails with Transaction
252
250
expect ( driverAdapter . rollbackMock ) . not . toHaveBeenCalled ( )
253
251
} )
254
252
255
- test ( 'TransactionManagerErrors are PrismaClientKnownRequestError ' , ( ) => {
256
- const error = new TransactionManagerError ( 'test message' , { clientVersion : '1.0.0' , meta : { foo : 'bar' } } )
253
+ test ( 'TransactionManagerErrors have common structure ' , ( ) => {
254
+ const error = new TransactionManagerError ( 'test message' , { foo : 'bar' } )
257
255
258
- expect ( error ) . toBeInstanceOf ( PrismaClientKnownRequestError )
259
256
expect ( error . code ) . toEqual ( 'P2028' )
260
257
expect ( error . message ) . toEqual ( 'Transaction API error: test message' )
261
- expect ( error . clientVersion ) . toEqual ( '1.0.0' )
262
258
expect ( error . meta ) . toEqual ( { foo : 'bar' } )
263
259
} )
0 commit comments