Backend Servers
We use direnv to load environment variables needed for running the integration tests. Don't forget to add the direnv hook to your
shell.rc
file.Clone the repo and install dependencies:
$ git clone [email protected]:GaloyMoney/galoy.git
$ cd galoy
$ direnv allow
direnv reload
direnv: direnv: loading ~/projects/GaloyMoney/galoy/.envrc
(...)
$ yarn install
$ make start-deps
# or
$ make reset-deps
Everytime the dependencies are re-started the environment must be reloaded via
direnv reload
. When using the make command this will happen automatically.To start the GraphQL server and its dependencies:
$ make start
Alernatively, to start the GraphQL server in watch mode (with automatic restart on changes):
$ make watch
You can load GraphiQL, a web GUI for GraphQL. Start the server and open the following url:
The docker compose file is split into
docker-compose.yml
and docker-compose.override.yml
. By default the override file is merged in and exposes ports on your host machine to various containers. During CI testing we ignore the override file in order to contain tests within a docker network. This is achieved by specifically calling out the docker compose file to use ex: docker compose -f docker-compose.yml ...
.To run the test suite you can run:
$ make test
$ yarn test:unit
# or
$ make unit
Runtime dependencies are not required
$ yarn test:integration
# or
$ make integration
The integration tests are not fully idempotent (yet) so currently to re-run the tests, run:
$ make reset-integration
$ yarn test:e2e
# or
$ make e2e
The e2e tests should be able to run multiple times without resetting dependencies, however they are not fully idempotent so if you are having issues you can reset the dependencies and run again with:
$ make reset-e2e
To execute a specific test file:
Unit
Example to run
test/unit/config.spec.ts
$ TEST=utils yarn test:unit
# or
$ TEST=utils make unit
where
utils
is the name of the file utils.spec.ts
Integration
Example to run
test/integration/01-setup/01-connection.spec.ts
$ TEST=01-connection yarn test:integration
# or
$ TEST=01-connection make integration
if within a specific test suite you want to run/debug only a describe or it(test) block please use:
Migrations are stored in the
src/migrations
folder. When developing migrations the best way to test them on a clean database is:make test-migrate
- Test suite timeouts: increase jest timeout value. Example:# 120 seconds$ JEST_TIMEOUT=120000 yarn test:integration
- Integration tests running slow: we use docker to run dependencies (redis, mongodb, bitcoind and 4 lnds) so the entire test suite is disk-intensive.
- Please make sure that you are running docker containers in a solid state drive (SSD)
- Reduce lnd log disk usage: change debuglevel to critical# ./dev/lnd/lnd.confdebuglevel=critical
It's recommended that you use plugins in your editor to run ESLint checks and perform Prettier formatting on-save.
To run all the checks required for the code to pass GitHub actions check:
$ make check-code
(...)
$ echo $?
0
If you need to run Prettier through the command line, you can use:
$ yarn prettier -w .
Last modified 1yr ago