From 82938b9bf02fbaa4d26a0fce02eba348bba46a6d Mon Sep 17 00:00:00 2001 From: Daniel Starns Date: Fri, 17 Jun 2022 12:30:36 +0200 Subject: [PATCH] test(client): add missing sqlserver (#13801) * test: add missing sqlserver * test/fix: fail fast on errors * Revert "Merge branch 'test/fail-fast' into test/missing-sqlserver" This reverts commit 0913e4436f68011c4ad3cf4ba64ef63c09a8223a, reversing changes made to 763dcbb355feefc3f2dd4732aabccda73e63099c. * fix: changes to support sqlserver * ci: add missing env * fix: add missing sql server to test * test: opt out sqlserver --- .github/workflows/test.yml | 1 + .../tests/functional/_example/_matrix.ts | 5 +++ .../tests/functional/_utils/providers.ts | 1 + .../functional/_utils/setupFilesAfterEnv.ts | 2 +- .../tests/functional/blog-update/_matrix.ts | 3 ++ .../client/tests/functional/count/_matrix.ts | 4 +++ .../tests/functional/create-many/_matrix.ts | 3 ++ .../tests/functional/decimal-list/tests.ts | 7 ++-- .../tests/functional/decimal/_matrix.ts | 3 ++ .../functional/handle-int-overflow/_matrix.ts | 3 ++ .../tests/functional/init-error/tests.ts | 9 +++--- .../__snapshots__/tests.ts.snap | 32 +++++++++++++++++++ .../interactive-transactions/_matrix.ts | 3 ++ .../functional/metrics-disabled/_matrix.ts | 3 ++ .../tests/functional/metrics/_matrix.ts | 3 ++ .../queryRaw-send-type-hints/_matrix.ts | 3 ++ .../tests.ts | 7 ++-- .../queryRaw-typed-results/_matrix.ts | 3 ++ .../functional/reuse-binary-engine/_matrix.ts | 3 ++ 19 files changed, 87 insertions(+), 11 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c02b120037bd..4351c6e4b85e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -179,6 +179,7 @@ jobs: TEST_MYSQL_ISOLATED_URI: mysql://root:root@localhost:3307/tests TEST_MSSQL_URI: mssql://SA:Pr1sm4_Pr1sm4@localhost:1433/master TEST_MSSQL_JDBC_URI: sqlserver://localhost:1433;database=master;user=SA;password=Pr1sm4_Pr1sm4;trustServerCertificate=true; + TEST_MSSQL_JDBC_URI_MIGRATE: 'sqlserver://localhost:1433;database=tests-migrate;user=SA;password=Pr1sm4_Pr1sm4;trustServerCertificate=true;' TEST_MONGO_URI: 'mongodb://root:prisma@localhost:27018/tests?authSource=admin' TEST_COCKROACH_URI: 'postgresql://prisma@localhost:26257/tests' TEST_COCKROACH_URI_MIGRATE: 'postgresql://prisma@localhost:26257/tests-migrate' diff --git a/packages/client/tests/functional/_example/_matrix.ts b/packages/client/tests/functional/_example/_matrix.ts index 878577db9b0c..a76a76ffa342 100644 --- a/packages/client/tests/functional/_example/_matrix.ts +++ b/packages/client/tests/functional/_example/_matrix.ts @@ -17,6 +17,11 @@ export default defineMatrix(() => [ id: 'Int @id @default(autoincrement())', providerFeatures: '', }, + { + provider: 'sqlserver', + id: 'Int @id @default(autoincrement())', + providerFeatures: '', + }, { provider: 'cockroachdb', id: 'BigInt @id @default(autoincrement())', diff --git a/packages/client/tests/functional/_utils/providers.ts b/packages/client/tests/functional/_utils/providers.ts index c0750681e051..1ae496a5c9f3 100644 --- a/packages/client/tests/functional/_utils/providers.ts +++ b/packages/client/tests/functional/_utils/providers.ts @@ -4,4 +4,5 @@ export enum Providers { MYSQL = 'mysql', MONGODB = 'mongodb', COCKROACHDB = 'cockroachdb', + SQLSERVER = 'sqlserver', } diff --git a/packages/client/tests/functional/_utils/setupFilesAfterEnv.ts b/packages/client/tests/functional/_utils/setupFilesAfterEnv.ts index 07d1868318ef..f846ecab3b21 100644 --- a/packages/client/tests/functional/_utils/setupFilesAfterEnv.ts +++ b/packages/client/tests/functional/_utils/setupFilesAfterEnv.ts @@ -4,7 +4,7 @@ process.env.DATABASE_URI_mongodb = process.env.TEST_MONGO_URI process.env.DATABASE_URI_postgresql = process.env.TEST_POSTGRES_URI process.env.DATABASE_URI_mysql = process.env.TEST_MYSQL_URI process.env.DATABASE_URI_cockroachdb = process.env.TEST_COCKROACH_URI -process.env.DATABASE_URI_sqlserver = process.env.TEST_MSSQL_URI +process.env.DATABASE_URI_sqlserver = process.env.TEST_MSSQL_JDBC_URI_MIGRATE globalThis.testIf = (condition: boolean) => (condition ? test : test.skip) globalThis.describeIf = (condition: boolean) => (condition ? describe : describe.skip) diff --git a/packages/client/tests/functional/blog-update/_matrix.ts b/packages/client/tests/functional/blog-update/_matrix.ts index 6bec95988c60..52014a856166 100644 --- a/packages/client/tests/functional/blog-update/_matrix.ts +++ b/packages/client/tests/functional/blog-update/_matrix.ts @@ -11,6 +11,9 @@ export default defineMatrix(() => [ { provider: 'mysql', }, + { + provider: 'sqlserver', + }, { provider: 'mongodb', }, diff --git a/packages/client/tests/functional/count/_matrix.ts b/packages/client/tests/functional/count/_matrix.ts index 88038070bb5d..60fee26407bf 100644 --- a/packages/client/tests/functional/count/_matrix.ts +++ b/packages/client/tests/functional/count/_matrix.ts @@ -14,6 +14,10 @@ export default defineMatrix(() => [ provider: 'mysql', foreignKeyId: 'String?', }, + { + provider: 'sqlserver', + foreignKeyId: 'String?', + }, { provider: 'cockroachdb', foreignKeyId: 'String?', diff --git a/packages/client/tests/functional/create-many/_matrix.ts b/packages/client/tests/functional/create-many/_matrix.ts index 1f76db44469c..dbb2e19f2c67 100644 --- a/packages/client/tests/functional/create-many/_matrix.ts +++ b/packages/client/tests/functional/create-many/_matrix.ts @@ -8,6 +8,9 @@ export default defineMatrix(() => [ { provider: 'postgresql', }, + { + provider: 'sqlserver', + }, { provider: 'cockroachdb', }, diff --git a/packages/client/tests/functional/decimal-list/tests.ts b/packages/client/tests/functional/decimal-list/tests.ts index 8aeab2f22aee..9ddbee788b26 100644 --- a/packages/client/tests/functional/decimal-list/tests.ts +++ b/packages/client/tests/functional/decimal-list/tests.ts @@ -31,10 +31,11 @@ setupTestSuiteMatrix( }, { optOut: { - from: ['mongodb', 'mysql', 'sqlite'], + from: ['mongodb', 'mysql', 'sqlite', 'sqlserver'], reason: ` - Mongodb connector does not support the Decimal type. - Mysql & Sqlite connectors do not support lists of primitive types. + mongodb: connector does not support the Decimal type. + mysql & sqlite: connectors do not support lists of primitive types. + sqlserver: Field "decimals" in model "User" can't be a list. The current connector does not support lists of primitive types. `, }, }, diff --git a/packages/client/tests/functional/decimal/_matrix.ts b/packages/client/tests/functional/decimal/_matrix.ts index 52f1b4e0f379..5a2216176dcb 100644 --- a/packages/client/tests/functional/decimal/_matrix.ts +++ b/packages/client/tests/functional/decimal/_matrix.ts @@ -11,6 +11,9 @@ export default defineMatrix(() => [ { provider: 'mysql', }, + { + provider: 'sqlserver', + }, { provider: 'cockroachdb', }, diff --git a/packages/client/tests/functional/handle-int-overflow/_matrix.ts b/packages/client/tests/functional/handle-int-overflow/_matrix.ts index 6bec95988c60..52014a856166 100644 --- a/packages/client/tests/functional/handle-int-overflow/_matrix.ts +++ b/packages/client/tests/functional/handle-int-overflow/_matrix.ts @@ -11,6 +11,9 @@ export default defineMatrix(() => [ { provider: 'mysql', }, + { + provider: 'sqlserver', + }, { provider: 'mongodb', }, diff --git a/packages/client/tests/functional/init-error/tests.ts b/packages/client/tests/functional/init-error/tests.ts index c8ac4d864398..72b7332d523f 100644 --- a/packages/client/tests/functional/init-error/tests.ts +++ b/packages/client/tests/functional/init-error/tests.ts @@ -7,7 +7,7 @@ declare let prisma: import('@prisma/client').PrismaClient // https://github.com/prisma/prisma/issues/10229 testMatrix.setupTestSuite( - () => { + ({ provider }) => { test('should assert that the error has the correct errorCode', async () => { expect.assertions(2) @@ -25,10 +25,11 @@ testMatrix.setupTestSuite( { skipDb: true, optOut: { - from: ['sqlite', 'mongodb'], + from: ['sqlite', 'mongodb', 'sqlserver'], reason: ` - sqlite dont have a connection string' - mongodb times out and dont throw + sqlite: dont have a connection string' + mongodb: times out and dont throw + sqlserver: returns undefined `, }, }, diff --git a/packages/client/tests/functional/interactive-transactions/__snapshots__/tests.ts.snap b/packages/client/tests/functional/interactive-transactions/__snapshots__/tests.ts.snap index f75af738e7ab..1a9f3bef43cc 100644 --- a/packages/client/tests/functional/interactive-transactions/__snapshots__/tests.ts.snap +++ b/packages/client/tests/functional/interactive-transactions/__snapshots__/tests.ts.snap @@ -151,3 +151,35 @@ Invalid \`prisma.user.create()\` invocation in → 168 await prisma.user.create( Unique constraint failed on the fields: (\`email\`) `; + +exports[`interactive-transactions (sqlserver) () batching raw rollback 1`] = ` + +Invalid \`prisma.$executeRaw()\` invocation: + + + Raw query failed. Code: \`2627\`. Message: \`Violation of PRIMARY KEY constraint 'User_pkey'. Cannot insert duplicate key in object 'dbo.User'. The duplicate key value is (1).\` +`; + +exports[`interactive-transactions (sqlserver) () batching rollback 1`] = ` + +Invalid \`prisma.user.create()\` invocation in +/client/tests/functional/interactive-transactions/tests.ts:242:19 + + 239 */ + 240 testIf(getClientEngineType() === ClientEngineType.Library)('batching rollback', async () => { + 241 const result = prisma.$transaction([ +→ 242 prisma.user.create( + Unique constraint failed on the constraint: \`dbo.User\` +`; + +exports[`interactive-transactions (sqlserver) () rollback query 1`] = ` + +Invalid \`prisma.user.create()\` invocation in +/client/tests/functional/interactive-transactions/tests.ts:168:25 + + 165 }, + 166 }) + 167 +→ 168 await prisma.user.create( + Unique constraint failed on the constraint: \`dbo.User\` +`; diff --git a/packages/client/tests/functional/interactive-transactions/_matrix.ts b/packages/client/tests/functional/interactive-transactions/_matrix.ts index 82911902e6d6..9c0d5e5d1957 100644 --- a/packages/client/tests/functional/interactive-transactions/_matrix.ts +++ b/packages/client/tests/functional/interactive-transactions/_matrix.ts @@ -17,5 +17,8 @@ export default defineMatrix(() => [ { provider: 'cockroachdb', }, + { + provider: 'sqlserver', + }, ], ]) diff --git a/packages/client/tests/functional/metrics-disabled/_matrix.ts b/packages/client/tests/functional/metrics-disabled/_matrix.ts index 6bec95988c60..52014a856166 100644 --- a/packages/client/tests/functional/metrics-disabled/_matrix.ts +++ b/packages/client/tests/functional/metrics-disabled/_matrix.ts @@ -11,6 +11,9 @@ export default defineMatrix(() => [ { provider: 'mysql', }, + { + provider: 'sqlserver', + }, { provider: 'mongodb', }, diff --git a/packages/client/tests/functional/metrics/_matrix.ts b/packages/client/tests/functional/metrics/_matrix.ts index 6bec95988c60..52014a856166 100644 --- a/packages/client/tests/functional/metrics/_matrix.ts +++ b/packages/client/tests/functional/metrics/_matrix.ts @@ -11,6 +11,9 @@ export default defineMatrix(() => [ { provider: 'mysql', }, + { + provider: 'sqlserver', + }, { provider: 'mongodb', }, diff --git a/packages/client/tests/functional/queryRaw-send-type-hints/_matrix.ts b/packages/client/tests/functional/queryRaw-send-type-hints/_matrix.ts index 2697df29be8f..a189a87d0e2e 100644 --- a/packages/client/tests/functional/queryRaw-send-type-hints/_matrix.ts +++ b/packages/client/tests/functional/queryRaw-send-type-hints/_matrix.ts @@ -11,6 +11,9 @@ export default defineMatrix(() => [ { provider: 'mysql', }, + { + provider: 'sqlserver', + }, { provider: 'cockroachdb', }, diff --git a/packages/client/tests/functional/queryRaw-typed-results-advanced-and-native-types/tests.ts b/packages/client/tests/functional/queryRaw-typed-results-advanced-and-native-types/tests.ts index 35b86b85e3b7..2577f9c0205e 100644 --- a/packages/client/tests/functional/queryRaw-typed-results-advanced-and-native-types/tests.ts +++ b/packages/client/tests/functional/queryRaw-typed-results-advanced-and-native-types/tests.ts @@ -48,11 +48,12 @@ testMatrix.setupTestSuite( }, { optOut: { - from: ['mongodb', 'mysql', 'sqlite'], + from: ['mongodb', 'mysql', 'sqlite', 'sqlserver'], reason: ` $queryRaw only works on SQL based providers - mySql You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '"TestModel"' - sqlite The current connector does not support lists of primitive types + mySql: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '"TestModel"' + sqlite: The current connector does not support lists of primitive types + sqlserver: The current connector does not support the Json type. `, }, }, diff --git a/packages/client/tests/functional/queryRaw-typed-results/_matrix.ts b/packages/client/tests/functional/queryRaw-typed-results/_matrix.ts index 083c3daff9bd..513b270f637c 100644 --- a/packages/client/tests/functional/queryRaw-typed-results/_matrix.ts +++ b/packages/client/tests/functional/queryRaw-typed-results/_matrix.ts @@ -11,6 +11,9 @@ export default defineMatrix(() => [ { provider: 'cockroachdb', }, + { + provider: 'sqlserver', + }, ], [ { diff --git a/packages/client/tests/functional/reuse-binary-engine/_matrix.ts b/packages/client/tests/functional/reuse-binary-engine/_matrix.ts index 6bec95988c60..8f43b12d20b0 100644 --- a/packages/client/tests/functional/reuse-binary-engine/_matrix.ts +++ b/packages/client/tests/functional/reuse-binary-engine/_matrix.ts @@ -17,5 +17,8 @@ export default defineMatrix(() => [ { provider: 'cockroachdb', }, + { + provider: 'sqlserver', + }, ], ])