Skip to content

Commit ec08d9f

Browse files
chore: add ci
1 parent 4d4a7ab commit ec08d9f

File tree

3 files changed

+62
-4
lines changed

3 files changed

+62
-4
lines changed

.github/workflows/ci.yml

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
8+
jobs:
9+
ci:
10+
runs-on: ubuntu-latest
11+
12+
services:
13+
postgres:
14+
image: postgres
15+
env:
16+
POSTGRES_PASSWORD: postgres
17+
options: >-
18+
--health-cmd pg_isready
19+
--health-interval 10s
20+
--health-timeout 5s
21+
--health-retries 5
22+
ports:
23+
- 5432:5432
24+
25+
steps:
26+
- name: Checkout
27+
uses: actions/checkout@v4
28+
29+
- name: Setup Node
30+
uses: actions/setup-node@v4
31+
with:
32+
node-version: 20
33+
34+
- name: Install
35+
run: npm ci
36+
37+
- name: Lint
38+
run: npm run lint
39+
40+
- name: Test
41+
run: npm test
42+
env:
43+
NODE_ENV: test
44+
TEST_DATABASE_URL: postgres://postgres:postgres@localhost:5432/test

config.js

+15-4
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,13 @@ function isFeatureEnabled(environmentVariable) {
66
return environmentVariable === 'true';
77
}
88

9+
function getParsedJson(environmentVariable) {
10+
if (environmentVariable === undefined) {
11+
return undefined;
12+
}
13+
return JSON.parse(environmentVariable);
14+
}
15+
916
function buildConfiguration() {
1017
const config = {
1118
environment: env.NODE_ENV || 'development',
@@ -22,7 +29,7 @@ function buildConfiguration() {
2229
user: env.GYMLIB_MAIL_RECEIVER_IMAP_USER,
2330
password: env.GYMLIB_MAIL_RECEIVER_IMAP_PASSWORD,
2431
},
25-
searchQuery: JSON.parse(env.GYMLIB_MAIL_RECEIVER_IMAP_SEARCH_QUERY),
32+
searchQuery: getParsedJson(env.GYMLIB_MAIL_RECEIVER_IMAP_SEARCH_QUERY),
2633
},
2734
ucpa: {
2835
imapConfig: {
@@ -31,8 +38,8 @@ function buildConfiguration() {
3138
user: env.UCPA_MAIL_RECEIVER_IMAP_USER,
3239
password: env.UCPA_MAIL_RECEIVER_IMAP_PASSWORD,
3340
},
34-
searchQuery: JSON.parse(env.UCPA_MAIL_RECEIVER_IMAP_SEARCH_QUERY),
35-
formInfo: JSON.parse(env.FORM_RESPONSE),
41+
searchQuery: getParsedJson(env.UCPA_MAIL_RECEIVER_IMAP_SEARCH_QUERY || {}),
42+
formInfo: getParsedJson(env.FORM_RESPONSE),
3643
formSubmit: isFeatureEnabled(env.FORM_SUBMIT_ENABLED),
3744
areaId: env.UCPA_AREA_ID,
3845
},
@@ -43,7 +50,7 @@ function buildConfiguration() {
4350
calendar: {
4451
name: env.CALENDAR_NAME,
4552
},
46-
timeSlotsPreferences: JSON.parse(env.TIME_SLOTS_PREFERENCES),
53+
timeSlotsPreferences: getParsedJson(env.TIME_SLOTS_PREFERENCES),
4754
};
4855
if (config.environment === 'test') {
4956
config.logging.enabled = false;
@@ -56,6 +63,10 @@ function buildConfiguration() {
5663
}
5764

5865
function verifyConfig(config) {
66+
if (env.NODE_ENV === 'test') {
67+
return true;
68+
}
69+
5970
let allKeysHaveValues = true;
6071

6172
function checkDeep(object, path) {

package.json

+3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
"license": "AGPL-3.0",
88
"keywords": [],
99
"main": "index.js",
10+
"engines": {
11+
"node": ">=20.0.0"
12+
},
1013
"scripts": {
1114
"db:new-migration": "npx knex --knexfile ./db/knexfile.js migrate:make $migrationname",
1215
"db:create": "node ./db/create-database.js",

0 commit comments

Comments
 (0)