Skip to content

Commit 2e9b2de

Browse files
Set up Vitest for unit testing (#49)
* Set up Vitest and PGlite (embedded, in-memory DB for tests) * Move environment variable references to services/index.ts to avoid side effects when calling service functions from tests * Add GitHub Actions workflow to run tests * Run prisma generate before npm run test * Fix path selector
1 parent 6e56eba commit 2e9b2de

41 files changed

Lines changed: 2557 additions & 740 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/test-backend.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
name: Test (backend)
2+
on:
3+
push:
4+
branches: [main]
5+
paths: ["backend/**"]
6+
pull_request:
7+
paths: ["backend/**"]
8+
9+
jobs:
10+
lint:
11+
name: Test
12+
runs-on: ubuntu-latest
13+
steps:
14+
- name: Clone repository
15+
uses: actions/checkout@v6
16+
17+
- uses: actions/setup-node@v6
18+
with:
19+
node-version: 24
20+
cache: "npm"
21+
cache-dependency-path: backend/package.json
22+
23+
- name: Install NPM packages
24+
working-directory: backend
25+
run: npm ci
26+
27+
- name: Run code generators
28+
working-directory: backend
29+
run: DATABASE_URL=placeholder npx prisma generate
30+
31+
- name: Test
32+
working-directory: backend
33+
run: npm run test

.vscode/extensions.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
"Prisma.prisma",
88
"redhat.vscode-yaml",
99
"dbaeumer.vscode-eslint",
10-
"timonwong.shellcheck"
10+
"timonwong.shellcheck",
11+
"vitest.explorer"
1112
]
1213
}

backend/eslint.config.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ export default defineConfig({
5252
},
5353
{
5454
from: "db",
55-
allow: ["db/errors", "env"],
55+
allow: ["db/errors"],
5656
},
5757
{
5858
from: "handlers",
@@ -70,7 +70,7 @@ export default defineConfig({
7070
},
7171
{
7272
from: "services",
73-
allow: ["db/errors", "services/errors", "lib", "env"],
73+
allow: ["db/errors", "services/errors", "lib"],
7474
},
7575
{
7676
from: ["lib", "handlers", "services"],
@@ -79,7 +79,7 @@ export default defineConfig({
7979
},
8080
{
8181
from: "services/index",
82-
allow: ["db", "services"],
82+
allow: ["db", "services", "env"],
8383
},
8484
{
8585
from: "*",
@@ -98,6 +98,10 @@ export default defineConfig({
9898
from: "index",
9999
allow: ["env", "db", "server", "services/index"],
100100
},
101+
{
102+
from: "test",
103+
allow: "*",
104+
},
101105
],
102106
},
103107
],
@@ -147,6 +151,8 @@ export default defineConfig({
147151
{ type: "server", pattern: "server/**" },
148152
// Environment variables
149153
{ type: "env", pattern: "src/lib/env.ts", mode: "full" },
154+
// Vitest test files
155+
{ type: "test", pattern: "test/**" },
150156
],
151157
},
152158
});

0 commit comments

Comments
 (0)