34 lines
1.2 KiB
Markdown
34 lines
1.2 KiB
Markdown
# graphql-api-js
|
|
|
|
Apollo graphql api server for Photowall
|
|
|
|
## Run it locally
|
|
|
|
Create an .env file (see .env.example for what to set).
|
|
Run
|
|
|
|
```
|
|
$ docker compose build
|
|
$ docker compose up
|
|
```
|
|
|
|
Then head over to [The playground GUI](https://localhost:4000) in the browser
|
|
|
|
## Run tests
|
|
|
|
Scripts will create the insert sql files for a randomized fake data postgres database. This database is based of the actual db in photowall project.
|
|
|
|
```
|
|
npm test
|
|
```
|
|
|
|
### Writing tests
|
|
|
|
The tests are held in testcontainers [testcontainers-node](https://github.com/testcontainers/testcontainers-node). One container holding a test postgres database and one container started from the Dockerfile containing the Apollo GraphQL server. These containers have connections with each other.
|
|
|
|
Each test is build around inserting fake data in the empty db, fetching that data through the GraphQL and with raw Sql queries and then comparing the results.
|
|
|
|
To write new inserts into the DB generate sql files with js in the src/**test**/db_generator tool. Then load the new sql file in the containerSetup.ts file.
|
|
|
|
When you have the data you need in the db, write tests in all.test.ts file following the pattern already set.
|