-
Notifications
You must be signed in to change notification settings - Fork 1.5k
/
setupTestSuiteClient.ts
59 lines (54 loc) · 2.45 KB
/
setupTestSuiteClient.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import { getClientEngineType, getConfig, getPlatform, parseEnvValue } from '@prisma/sdk'
import path from 'path'
import { generateClient } from '../../../src/generation/generateClient'
import { getDMMF } from '../../../src/generation/getDMMF'
import type { TestSuiteConfig } from './getTestSuiteInfo'
import {
getTestSuiteFolderPath,
getTestSuitePreviewFeatures,
getTestSuiteSchema,
getTestSuiteSchemaPath,
} from './getTestSuiteInfo'
import { setupQueryEngine } from './setupQueryEngine'
import { setupTestSuiteDatabase, setupTestSuiteFiles, setupTestSuiteSchema } from './setupTestSuiteEnv'
import type { TestSuiteMeta } from './setupTestSuiteMatrix'
/**
* Does the necessary setup to get a test suite client ready to run.
* @param suiteMeta
* @param suiteConfig
* @returns loaded client module
*/
export async function setupTestSuiteClient(suiteMeta: TestSuiteMeta, suiteConfig: TestSuiteConfig) {
const suiteFolderPath = getTestSuiteFolderPath(suiteMeta, suiteConfig)
const previewFeatures = getTestSuitePreviewFeatures(suiteConfig)
const schema = await getTestSuiteSchema(suiteMeta, suiteConfig)
const dmmf = await getDMMF({ datamodel: schema, previewFeatures })
const config = await getConfig({ datamodel: schema, ignoreEnvVarErrors: true })
const generator = config.generators.find((g) => parseEnvValue(g.provider) === 'prisma-client-js')
await setupQueryEngine(getClientEngineType(generator!), await getPlatform())
await setupTestSuiteFiles(suiteMeta, suiteConfig)
await setupTestSuiteSchema(suiteMeta, suiteConfig, schema)
await setupTestSuiteDatabase(suiteMeta, suiteConfig)
await generateClient({
datamodel: schema,
schemaPath: getTestSuiteSchemaPath(suiteMeta, suiteConfig),
binaryPaths: { libqueryEngine: {}, queryEngine: {} },
datasources: config.datasources,
outputDir: path.join(suiteFolderPath, 'node_modules/@prisma/client'),
copyRuntime: false,
dmmf: dmmf,
generator: generator,
engineVersion: '0000000000000000000000000000000000000000',
clientVersion: '0.0.0',
transpile: false,
testMode: true,
activeProvider: suiteConfig['provider'],
// Change \\ to / for windows support
runtimeDirs: {
node: [__dirname.replace(/\\/g, '/'), '..', '..', '..', 'runtime'].join('/'),
edge: [__dirname.replace(/\\/g, '/'), '..', '..', '..', 'runtime', 'edge'].join('/'),
},
projectRoot: suiteFolderPath,
})
return require(path.join(suiteFolderPath, 'node_modules/@prisma/client'))
}