Skip to content

IntegreSQL client for managing isolated PostgreSQL databases in integration tests.

Notifications You must be signed in to change notification settings

freeyourmusic/integresql-client

 
 

Repository files navigation

integresql-client

IntegreSQL client for managing isolated PostgreSQL databases in integration tests.

Package Version Build Status Code Coverage

InstallationUsageContributorsLicense


Installation

yarn add --dev @devoxa/integresql-client

To install IntegreSQL, please follow their installation instructions.

Usage

Full example

For a full usage example, have a look the integration tests.

Step-by-step guide

  1. Initialize the IntegreSQL client
import { IntegreSQLClient } from '@devoxa/integresql-client'

const integreSQL = new IntegreSQLClient({ url: 'http://localhost:5000' })
// options.url: The URL of the IntegreSQL instance
  1. (Once per test runner process) Get a hash of the migrations & fixtures
// The hash can be generated in any way that fits your business logic, the included
// helper creates a SHA1 hash of the file content of all files matching the glob patterns.
const hash = await integreSQL.hashFiles(['./migrations/**/*', './fixtures/**/*'])
  1. (Once per test runner process) Initialize the template database
await integreSQL.initializeTemplate(hash, async (databaseConfig) => {
  await migrateTemplateDatabase(databaseConfig)
  await seedTemplateDatabase(databaseConfig)
  await disconnectFromDatabase(databaseConfig)
})
  1. (Before each test) Get a isolated test database
const databaseConfig = await integreSQL.getTestDatabase(hash)

Helpers

  • integreSQL.databaseConfigToConnectionUrl(databaseConfig)

API requests

You can directly send requests to the IntegreSQL instance via the included API client, or optionally instantiate a new IntegreSQLApiClient yourself.

await integreSQL.api.reuseTestDatabase(hash, id)

const api = new IntegreSQLApiClient({ url: 'http://localhost:5000' })
await api.reuseTestDatabase(hash, id)

Contributors

Thanks goes to these wonderful people (emoji key):


David Reeß

💻 📖 ⚠️

This project follows the all-contributors specification. Contributions of any kind welcome!

License

MIT

About

IntegreSQL client for managing isolated PostgreSQL databases in integration tests.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 91.6%
  • Shell 7.9%
  • JavaScript 0.5%