https://github.com/shelfio/jest-postgres
Jest preset for running tests with local Postgres
https://github.com/shelfio/jest-postgres
jest jest-postgres jest-tests postgresql test
Last synced: 5 months ago
JSON representation
Jest preset for running tests with local Postgres
- Host: GitHub
- URL: https://github.com/shelfio/jest-postgres
- Owner: shelfio
- License: mit
- Created: 2022-12-22T14:40:20.000Z (about 3 years ago)
- Default Branch: master
- Last Pushed: 2024-08-27T14:12:58.000Z (over 1 year ago)
- Last Synced: 2025-06-03T05:51:55.838Z (7 months ago)
- Topics: jest, jest-postgres, jest-tests, postgresql, test
- Language: TypeScript
- Homepage:
- Size: 77.1 KB
- Stars: 11
- Watchers: 8
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: readme.md
- License: license
Awesome Lists containing this project
README
# jest-postgres [](https://circleci.com/gh/shelfio/jest-postgres/tree/master)  [](https://www.npmjs.com/package/@shelf/jest-postgres)
> Jest preset to run Postgres server
[Test Postgres using only this jest plugin (no DB mocks/Docker)!](https://medium.com/shelf-io-engineering/test-postgres-using-jest-755389b28d22)
## Usage
### 0. Install
```
$ yarn add @shelf/jest-postgres --dev
```
### 1. Create `jest.config.js`
```js
module.exports = {
preset: '@shelf/jest-postgres',
};
```
If you have a custom `jest.config.js` make sure you remove `testEnvironment` property, otherwise it will conflict with the preset.
### 2. Create `jest-postgres-config.js`
```js
import cwd from 'cwd';
module.exports = {
seedPath: `${cwd()}/test/seed.sql`,
version: 14,
port: 5555,
};
```
Find `seed.sql` example in `./test` folder of this repo, view [postgres-local](https://github.com/shelfio/postgres-local#1-start-postgres) for more params.
### 4. PROFIT! Write tests
```js
it();
```
## Monorepo Support
By default the `jest-postgres-config.js` is read from `cwd` directory, but this might not be
suitable for monorepos with nested [jest projects](https://jestjs.io/docs/configuration#projects-arraystring--projectconfig)
with nested `jest.config.*` files nested in subdirectories.
If your `jest-postgres-config.js` file is not located at `{cwd}/jest-postgres-config.js` or you
are using nested `jest projects`, you can define the environment variable `JEST_POSTGRES_CONFIG`
with the absolute path of the respective `jest-postgres-config.js` file.
### Example Using `JEST_POSTGRES_CONFIG` in nested project
```js
// src/nested/project/jest.config.js
const path = require('path');
// Define path of project level config - extension not required as file will be imported
// via `require(process.env.JEST_POSTGRES_CONFIG)`
process.env.JEST_POSTGRES_CONFIG = path.resolve(__dirname, './jest-postgres-config');
module.exports = {
preset: '@shelf/jest-postgres'
displayName: 'nested-project',
};
```
## See Also
- [postgres-local](https://github.com/shelfio/postgres-local)
- [jest-elasticsearch](https://github.com/shelfio/jest-elasticsearch)
- [jest-dynamodb](https://github.com/shelfio/jest-dynamodb)
## Publish
```sh
$ git checkout master
$ yarn version
$ yarn publish
$ git push origin master --tags
```
## License
MIT © [Shelf](https://shelf.io)