Skip to content

Commit

Permalink
Add smoke tests
Browse files Browse the repository at this point in the history
  • Loading branch information
aqrln committed Sep 11, 2023
1 parent 75a6920 commit c30d8a9
Show file tree
Hide file tree
Showing 8 changed files with 150 additions and 1 deletion.
4 changes: 4 additions & 0 deletions query-engine/driver-adapters/js/smoke-test-js/.envrc.example
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,7 @@ export JS_NEON_DATABASE_URL="postgres://USER:[email protected]

# Note: if you use hosted Postgres instances (e.g., from PDP provision), you need `?sslmode=disable`
export JS_PG_DATABASE_URL="postgres://postgres:prisma@localhost:5438"

export JS_LIBSQL_DATABASE_URL="file:libsql.db"
# Set this when using a remote Turso database
# export JS_LIBSQL_AUTH_TOKEN=""
2 changes: 2 additions & 0 deletions query-engine/driver-adapters/js/smoke-test-js/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
libsql.db
libsql.db-journal
7 changes: 6 additions & 1 deletion query-engine/driver-adapters/js/smoke-test-js/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
"prisma:db:execute:postgres": "prisma db execute --schema ./prisma/postgres/schema.prisma --file ./prisma/postgres/commands/type_test/insert.sql",
"prisma:db:push:mysql": "prisma db push --schema ./prisma/mysql/schema.prisma --force-reset",
"prisma:db:execute:mysql": "prisma db execute --schema ./prisma/mysql/schema.prisma --file ./prisma/mysql/commands/type_test/insert.sql",
"prisma:db:push:sqlite": "prisma db push --schema ./prisma/sqlite/schema.prisma --force-reset",
"prisma:db:execute:sqlite": "prisma db execute --schema ./prisma/sqlite/schema.prisma --file ./prisma/sqlite/commands/type_test/insert.sql",
"prisma:neon": "cross-env-shell DATABASE_URL=\"${JS_NEON_DATABASE_URL}\" \"pnpm prisma:db:push:postgres && pnpm prisma:db:execute:postgres\"",
"neon:ws:libquery": "DATABASE_URL=\"${JS_NEON_DATABASE_URL}\" node --test --loader=tsx ./src/libquery/neon.ws.test.ts",
"neon:http:libquery": "DATABASE_URL=\"${JS_NEON_DATABASE_URL}\" node --test --loader=tsx ./src/libquery/neon.http.test.ts",
Expand All @@ -23,7 +25,10 @@
"prisma:planetscale": "cross-env-shell DATABASE_URL=\"${JS_PLANETSCALE_DATABASE_URL}\" \"pnpm prisma:db:push:mysql && pnpm prisma:db:execute:mysql\"",
"planetscale:libquery": "DATABASE_URL=\"${JS_PLANETSCALE_DATABASE_URL}\" node --test --loader=tsx ./src/libquery/planetscale.test.ts",
"planetscale:client": "DATABASE_URL=\"${JS_PLANETSCALE_DATABASE_URL}\" node --test --loader=tsx ./src/client/planetscale.test.ts",
"planetscale": "pnpm planetscale:libquery && pnpm planetscale:client"
"planetscale": "pnpm planetscale:libquery && pnpm planetscale:client",
"libsql:libquery": "cross-env-shell DATABASE_URL=\"${JS_LIBSQL_DATABASE_URL}\" node --test --loader=tsx ./src/libquery/libsql.test.ts",
"libsql:client": "cross-env-shell DATABASE_URL=\"${JS_LIBSQL_DATABASE_URL}\" node --test --loader=tsx ./src/client/libsql.test.ts",
"libsql": "pnpm libsql:libquery && pnpm libsql:client"
},
"keywords": [],
"author": "Alberto Schiabel <[email protected]>",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
INSERT INTO type_test (
int_column,
bigint_column,
double_column,
decimal_column,
boolean_column,
text_column,
datetime_column
) VALUES (
2147483647, -- int
9223372036854775807, -- bigint
1.7976931348623157, -- double
99999999.99, -- decimal
TRUE, -- boolean
'This is a long text...', -- text
'2023-07-24 23:59:59.415' -- datetime
);
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
generator client {
provider = "prisma-client-js"
previewFeatures = ["driverAdapters"]
}

datasource db {
provider = "sqlite"
url = env("DATABASE_URL")
}

model type_test {
id Int @id @default(autoincrement())
int_column Int
int_column_null Int?
bigint_column BigInt
bigint_column_null BigInt?
double_column Float
double_column_null Float?
decimal_column Decimal
decimal_column_null Decimal?
boolean_column Boolean
boolean_column_null Boolean?
text_column String
text_column_null String?
datetime_column DateTime
datetime_column_null DateTime?
}

// This will eventually supersede type_test
model type_test_2 {
id String @id @default(cuid())
datetime_column DateTime @default(now())
datetime_column_null DateTime?
}

model Child {
c String @unique
c_1 String
c_2 String
parentId String? @unique
non_unique String?
id String @id
@@unique([c_1, c_2])
}

model Parent {
p String @unique
p_1 String
p_2 String
non_unique String?
id String @id
@@unique([p_1, p_2])
}

model Author {
id Int @id @default(autoincrement())
firstName String
lastName String
age Int
@@map("authors")
}

model Product {
id String @id @default(cuid())
properties String
properties_null String?
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { PrismaLibsql } from '@aqrln/prisma-adapter-libsql'
import { createClient } from '@libsql/client'
import { describe } from 'node:test'
import { smokeTestClient } from './client'

describe('libsql with @prisma/client', async () => {
const connectionString = process.env.JS_LIBSQL_DATABASE_URL as string
const authToken = process.env.JS_LIBSQL_AUTH_TOKEN

const client = createClient({ url: connectionString, authToken })
const adapter = new PrismaLibsql(client)

smokeTestClient(adapter)
})
Original file line number Diff line number Diff line change
Expand Up @@ -397,6 +397,27 @@ export function smokeTestLibquery(adapter: ErrorCapturingDriverAdapter, prismaSc
)
console.log('[nodejs] findMany resultSet', JSON.stringify((resultSet), null, 2))
})
} else if (['sqlite'].includes(flavour)) {
it('sqlite', async () => {
const resultSet = await doQuery(
{
"action": "findMany",
"modelName": "type_test",
"query": {
"selection": {
"int_column": true,
"bigint_column": true,
"double_column": true,
"decimal_column": true,
"boolean_column": true,
"text_column": true,
"datetime_column": true,
}
}
}
)
console.log('[nodejs] findMany resultSet', JSON.stringify((resultSet), null, 2))
})
} else {
throw new Error(`Missing test for flavour ${flavour}`)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { PrismaLibsql } from '@aqrln/prisma-adapter-libsql'
import { bindAdapter } from '@jkomyno/prisma-driver-adapter-utils'
import { createClient } from '@libsql/client'
import { describe } from 'node:test'
import { smokeTestLibquery } from './libquery'

describe('libsql', () => {
const connectionString = process.env.JS_LIBSQL_DATABASE_URL as string
const authToken = process.env.JS_LIBSQL_AUTH_TOKEN

const client = createClient({ url: connectionString, authToken: authToken })
const adapter = new PrismaLibsql(client)
const driverAdapter = bindAdapter(adapter)

smokeTestLibquery(driverAdapter, '../../prisma/sqlite/schema.prisma')
})

0 comments on commit c30d8a9

Please sign in to comment.