/prisma-pg-jest

Example showcasing how to use Prisma + Postgres + Jest, where each test has its own unique DB context

Primary LanguageTypeScript

Prisma + Postgres + Jest

This example showcases how you can configure your Jest environment in order to perform integration tests against applications utilising Prisma and Postgres.

Each test suite will create a temporary schema within the database, allowing concurrent execution of them. The temporary schema is subsequently cleaned up after each test suite has completed.

Setup

Clone the repo.

git clone https://github.com/ctrlplusb/prisma-pg-jest

Install the dependencies.

cd prisma-pg-jest
npm install

Running the database

A docker-compose.yml file has been created to represent the Postgres database that we will use for local development.

You will need Docker installed.

To start the database run the following command:

npm run db:start

Once you are finished developing you can stop the db by running the following command:

npm run db:stop

This project has been configured to run with the following Postgres configuration. You can modify these to suit your needs by editing the docker-compose.yml file.

- HOST=localhost
- PORT=54320
- POSTGRES_USER=prisma
- POSTGRES_PASSWORD=hilly-sand-pit
- POSTGRES_DB=prisma

Jest Configuration

We have configured Jest to execute with a custom test environment. See the `prisma/prisma-test-environment.js file for more details.

This custom environment ensures that each test suite getting executed will have a unique schema created for them against the running Postgres database. The migrations will then be executed against them, via the prisma migrate up --experimental command, ensuring that the latest model has been applied to the schema.

Running your tests

Ensure that your local Postgres is running.

npm run db:start

Then execute the Jest tests via the following command:

npm run test