212 lines
4.8 KiB
JavaScript
212 lines
4.8 KiB
JavaScript
require('dotenv/config');
|
|
const { neonConfig, Pool, Client } = require('@neondatabase/serverless');
|
|
const { drizzle } = require('drizzle-orm/neon-serverless');
|
|
const { pg: schema } = require('./schema.cjs');
|
|
const ws = require('ws');
|
|
import { describe, expect } from 'vitest';
|
|
|
|
neonConfig.webSocketConstructor = ws;
|
|
|
|
if (!process.env['NEON_CONNECTION_STRING']) {
|
|
throw new Error('NEON_CONNECTION_STRING is not defined');
|
|
}
|
|
|
|
describe('neon-ws', async (it) => {
|
|
it('drizzle(string)', async () => {
|
|
const db = drizzle(
|
|
process.env['NEON_CONNECTION_STRING'],
|
|
);
|
|
|
|
await db.$client.query('SELECT 1;');
|
|
});
|
|
|
|
it('drizzle(string, config)', async () => {
|
|
const db = drizzle(
|
|
process.env['NEON_CONNECTION_STRING'],
|
|
{
|
|
schema,
|
|
},
|
|
);
|
|
|
|
await db.$client.query('SELECT 1;');
|
|
|
|
expect(db.query.User).not.toStrictEqual(undefined);
|
|
expect(db.$client).toBeInstanceOf(Pool);
|
|
});
|
|
|
|
it('drizzle({connection: string, ...config})', async () => {
|
|
const db = drizzle({
|
|
connection: process.env['NEON_CONNECTION_STRING'],
|
|
schema,
|
|
});
|
|
|
|
await db.$client.query('SELECT 1;');
|
|
|
|
expect(db.query.User).not.toStrictEqual(undefined);
|
|
expect(db.$client).toBeInstanceOf(Pool);
|
|
});
|
|
|
|
it('drizzle({connection: params, ...config})', async () => {
|
|
const db = drizzle({
|
|
connection: {
|
|
connectionString: process.env['NEON_CONNECTION_STRING'],
|
|
},
|
|
schema,
|
|
});
|
|
|
|
await db.$client.query('SELECT 1;');
|
|
|
|
expect(db.query.User).not.toStrictEqual(undefined);
|
|
expect(db.$client).toBeInstanceOf(Pool);
|
|
});
|
|
|
|
it('drizzle(client)', async () => {
|
|
const client = new Pool({
|
|
connectionString: process.env['NEON_CONNECTION_STRING'],
|
|
});
|
|
const db = drizzle(client);
|
|
|
|
await db.$client.query('SELECT 1;');
|
|
|
|
expect(db.$client).toBeInstanceOf(Pool);
|
|
});
|
|
|
|
it('drizzle(client, config)', async () => {
|
|
const client = new Pool({
|
|
connectionString: process.env['NEON_CONNECTION_STRING'],
|
|
});
|
|
const db = drizzle(client, {
|
|
schema,
|
|
});
|
|
|
|
await db.$client.query('SELECT 1;');
|
|
|
|
expect(db.query.User).not.toStrictEqual(undefined);
|
|
expect(db.$client).toBeInstanceOf(Pool);
|
|
});
|
|
|
|
it('drizzle({client, ...config})', async () => {
|
|
const client = new Pool({
|
|
connectionString: process.env['NEON_CONNECTION_STRING'],
|
|
});
|
|
const db = drizzle({
|
|
client,
|
|
schema,
|
|
});
|
|
|
|
await db.$client.query('SELECT 1;');
|
|
|
|
expect(db.query.User).not.toStrictEqual(undefined);
|
|
expect(db.$client).toBeInstanceOf(Pool);
|
|
});
|
|
});
|
|
|
|
describe('neon-ws:Client', async (it) => {
|
|
it('drizzle(client)', async () => {
|
|
const client = new Client({
|
|
connectionString: process.env['NEON_CONNECTION_STRING'],
|
|
});
|
|
|
|
await client.connect();
|
|
|
|
const db = drizzle(client);
|
|
|
|
await db.$client.query('SELECT 1;');
|
|
|
|
expect(db.$client).toBeInstanceOf(Client);
|
|
expect(db.$client).not.toBeInstanceOf(Pool);
|
|
});
|
|
|
|
it('drizzle(client, config)', async () => {
|
|
const client = new Client({
|
|
connectionString: process.env['NEON_CONNECTION_STRING'],
|
|
});
|
|
const db = drizzle(client, {
|
|
schema,
|
|
});
|
|
|
|
await client.connect();
|
|
|
|
await db.$client.query('SELECT 1;');
|
|
|
|
expect(db.query.User).not.toStrictEqual(undefined);
|
|
expect(db.$client).toBeInstanceOf(Client);
|
|
expect(db.$client).not.toBeInstanceOf(Pool);
|
|
});
|
|
|
|
it('drizzle({client, ...config})', async () => {
|
|
const client = new Client({
|
|
connectionString: process.env['NEON_CONNECTION_STRING'],
|
|
});
|
|
const db = drizzle({
|
|
client,
|
|
schema,
|
|
});
|
|
|
|
await client.connect();
|
|
|
|
await db.$client.query('SELECT 1;');
|
|
|
|
expect(db.query.User).not.toStrictEqual(undefined);
|
|
expect(db.$client).toBeInstanceOf(Client);
|
|
expect(db.$client).not.toBeInstanceOf(Pool);
|
|
});
|
|
});
|
|
|
|
describe('neon-ws:PoolClient', async (it) => {
|
|
it('drizzle(client)', async () => {
|
|
const pool = new Pool({
|
|
connectionString: process.env['NEON_CONNECTION_STRING'],
|
|
});
|
|
const client = await pool.connect();
|
|
|
|
const db = drizzle(client);
|
|
|
|
await db.$client.query('SELECT 1;');
|
|
|
|
client.release();
|
|
|
|
expect(db.$client).toBeInstanceOf(Client);
|
|
expect(db.$client).not.toBeInstanceOf(Pool);
|
|
});
|
|
|
|
it('drizzle(client, config)', async () => {
|
|
const pool = new Pool({
|
|
connectionString: process.env['NEON_CONNECTION_STRING'],
|
|
});
|
|
const client = await pool.connect();
|
|
|
|
const db = drizzle(client, {
|
|
schema,
|
|
});
|
|
|
|
await db.$client.query('SELECT 1;');
|
|
|
|
client.release();
|
|
|
|
expect(db.query.User).not.toStrictEqual(undefined);
|
|
expect(db.$client).toBeInstanceOf(Client);
|
|
expect(db.$client).not.toBeInstanceOf(Pool);
|
|
});
|
|
|
|
it('drizzle({client, ...config})', async () => {
|
|
const pool = new Pool({
|
|
connectionString: process.env['NEON_CONNECTION_STRING'],
|
|
});
|
|
const client = await pool.connect();
|
|
|
|
const db = drizzle({
|
|
client,
|
|
schema,
|
|
});
|
|
|
|
await db.$client.query('SELECT 1;');
|
|
|
|
client.release();
|
|
|
|
expect(db.query.User).not.toStrictEqual(undefined);
|
|
expect(db.$client).toBeInstanceOf(Client);
|
|
expect(db.$client).not.toBeInstanceOf(Pool);
|
|
});
|
|
});
|