forms-database 1.0.0-beta.1
Install from the command line:
Learn more about npm packages
$ npm install @gsa-tts/forms-database@1.0.0-beta.1
Install via package.json:
"@gsa-tts/forms-database": "1.0.0-beta.1"
About this version
This package maintains the supporting infrastructure for the Forms Platform database.
PostgreSQL is the supported production database. Sqlite3 is also supported, to facilitate fast in-memory integration testing.
To create a new database migration in ./migrations:
pnpm knex migrate:make migration-name
Application of database migrations are orchestrated by the application via ./src/management/migrate-database.ts.
Packages that leverage @gsa-tts/forms-database
may use provided helpers for testing
purposes.
describeDatabase
is a Vitest suite factory that will run a test spec against
a clean database on both Sqlite3 and PostgreSQL:
import { expect, it } from 'vitest';
import { type DbTestContext, describeDatabase } from '@gsa-tts/forms-database/testing';
describeDatabase('database connection', () => {
it<DbTestContext>('selects all via kysely', async ({ db }) => {
const kysely2 = await db.ctx.getKysely();
const users2 = await kysely2.selectFrom('users').selectAll().execute();
expect(users2).toBeDefined();
});
it<DbTestContext>('selects all via knex', async ({ db }) => {
const knex = await db.ctx.getKnex();
const users = await knex.select().from('users');
expect(users).toBeDefined();
});
For business logic tests that integrate with a clean database, you may leverage
the createInMemoryDatabaseContext
factory. This will provide an ephemeral
in-memory Sqlite3 database.
import { createInMemoryDatabaseContext } from '@gsa-tts/forms-database/context';
describe('business logic tested with in-memory database', () => {
it('context helper has a connection to a sqlite database', async () => {
const db = await createInMemoryDatabaseContext();
expect(db.engine).toEqual('sqlite');
});
});
Details
- forms-database
-
GSA-TTS
- 7 months ago
- CC0
- 10 dependencies
Assets
- forms-database-1.0.0-beta.1.tgz
Download activity
- Total downloads 10
- Last 30 days 0
- Last week 0
- Today 0