Skip to content

Commit

Permalink
test(backend): Fix vitest configuration
Browse files Browse the repository at this point in the history
  • Loading branch information
farnoux committed Oct 22, 2024
1 parent c38a6c4 commit a316783
Show file tree
Hide file tree
Showing 9 changed files with 125 additions and 46 deletions.
17 changes: 15 additions & 2 deletions backend/.env.default
Original file line number Diff line number Diff line change
@@ -1,8 +1,21 @@
#Identifiant du Google spreadsheet utilisé pour le calcul de la trajectoire.
TRAJECTOIRE_SNBC_SHEET_ID=

# Identifiant du Xlsx original utilisé pour le calcul de la trajectoire (stocké sur le drive)
TRAJECTOIRE_SNBC_XLSX_ID=

# Identifiant du dossier Google Drive dans lequel les spreadsheets des trajectoires calculées doivent être sauvés (un fichier par EPCI).
# Il existe un dossier par environnement (dev, preprod, prod).
TRAJECTOIRE_SNBC_RESULT_FOLDER_ID=

# Contenu au format json du fichier de clé de compte de service permettant l'utilisation des api Google Drive et Google Spreadsheet
GCLOUD_SERVICE_ACCOUNT_KEY=
SUPABASE_DATABASE_URL=postgresql://postgres:postgres@localhost:54322/postgres

# Clé de signature des tokens jwt. Utilisé pour vérifier la signature des tokens.
SUPABASE_JWT_SECRET=super-secret-jwt-token-with-at-least-32-characters-long

# Supabase database connection credentials
SUPABASE_DATABASE_URL=postgresql://postgres:postgres@localhost:54322/postgres
SUPABASE_URL=http://127.0.0.1:54321
SUPABASE_SERVICE_ROLE_KEY=
SUPABASE_SERVICE_ROLE_KEY=
SUPABASE_ANON_KEY=
44 changes: 35 additions & 9 deletions backend/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,24 @@ Backend de territoires en transitions basé sur [Nest](https://github.com/nestjs

## Configuration

Les variables d'environnement suivantes doivent être définies dans un fichier .env (voir le fichier [.env.default](.env.default)):
Les variables d'environnement du fichier [.env.default](.env.default) doivent être définies dans un fichier `.env` à la racine.

- **TRAJECTOIRE_SNBC_SHEET_ID**: Identifiant du Google spreadsheet utilisé pour le calcul de la trajectoire.
- **TRAJECTOIRE_SNBC_XLSX_ID**: Identifiant du Xlsx original utilisé pour le calcul de la trajectoire (stocké sur le drive)
- **TRAJECTOIRE_SNBC_RESULT_FOLDER_ID**: Identifiant du dossier Google Drive dans lequel les spreadsheets des trajectoires calculées doivent être sauvés (un fichier par EPCI). A noter qu'il existe **un dossier par environnement** (dev, preprod, prod).
- **GCLOUD_SERVICE_ACCOUNT_KEY**: contenu au format json du fichier de clé de compte de service permettant l'utilisation des api Google Drive et Google Spreadsheet.
- **SUPABASE_JWT_SECRET**: clé de signature des tokens jwt. Utilisé pour vérifier la signature des tokens.
Les variables d'environnement suivantes sont définies:

Ces variables d'environnement sont définies:
- Dans les [variables d'environnement de Github](https://github.com/incubateur-ademe/territoires-en-transitions/settings/environments/1431973268/edit) utilisées pour configurer le [déploiement Koyeb](https://app.koyeb.com/services/c7001069-ca11-4fd7-86c6-7feb45b9b68d/settings) pour :

- pour **TRAJECTOIRE_SNBC_SHEET_ID**, **TRAJECTOIRE_SNBC_XLSX_ID** et **TRAJECTOIRE_SNBC_RESULT_FOLDER_ID** dans les [variables d'environnement de Github](https://github.com/incubateur-ademe/territoires-en-transitions/settings/environments/1431973268/edit) utilisées pour configurer le [déploiement Koyeb](https://app.koyeb.com/services/c7001069-ca11-4fd7-86c6-7feb45b9b68d/settings). Les identifiants peuvent également être récupérés à partir du drive de `territoiresentransitions`.
- pour **GCLOUD_SERVICE_ACCOUNT_KEY**, **SUPABASE_JWT_SECRET** et **SUPABASE_SERVICE_ROLE_KEY** dans le [gestionnaire de secret de Koyeb](https://app.koyeb.com/secrets)
- `TRAJECTOIRE_SNBC_SHEET_ID`
- `TRAJECTOIRE_SNBC_XLSX_ID`
- `TRAJECTOIRE_SNBC_RESULT_FOLDER_ID`

Les identifiants peuvent également être récupérés à partir du drive de `territoiresentransitions`.

- Dans le [gestionnaire de secret de Koyeb](https://app.koyeb.com/secrets) pour :

- `GCLOUD_SERVICE_ACCOUNT_KEY`
- `SUPABASE_JWT_SECRET`
- `SUPABASE_SERVICE_ROLE_KEY`
- `SUPABASE_ANON_KEY`

## Scripts disponibles

Expand All @@ -37,3 +43,23 @@ $ pnpm test:backend
# Ou directement avec Nx
$ nx test @tet/backend
```

### Tests

Pour lancer tous les tests :

```
nx test @tet/backend
```

Pour lancer uniquement les tests unitaires (dossier `src`) :

```
nx test @tet/backend src
```

Pour lancer uniquement les tests end-to-end (dossier `test`) :

```
nx test @tet/backend test
```
8 changes: 0 additions & 8 deletions backend/test/.env.default

This file was deleted.

8 changes: 4 additions & 4 deletions backend/test/indicateurs/indicateurs.e2e-spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,10 @@ describe('Route de lecture / ecriture des indicateurs', () => {
yoloDodoToken = signinResponse.data.session?.access_token || '';
});

afterAll(async () => {
await app.close();
});

it(`Lecture sans acces`, () => {
return request(app.getHttpServer())
.get('/indicateurs?collectivite_id=3')
Expand Down Expand Up @@ -71,8 +75,4 @@ describe('Route de lecture / ecriture des indicateurs', () => {
statusCode: 401,
});
});

afterAll(async () => {
await app.close();
});
});
18 changes: 10 additions & 8 deletions backend/test/indicateurs/trajectoire-snbc.e2e-spec.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { INestApplication } from '@nestjs/common';
import { Test } from '@nestjs/testing';
import { createClient, SupabaseClient } from '@supabase/supabase-js';
import * as _ from 'lodash';
import * as request from 'supertest';
import { default as _ } from 'lodash';
import { default as request } from 'supertest';
import { AppModule } from '../../src/app.module';
import {
CalculTrajectoireResultatMode,
Expand All @@ -27,11 +27,13 @@ describe('Calcul de trajectoire SNBC', () => {

supabase = createClient(
process.env.SUPABASE_URL!,
process.env.SUPABASE_ANON_KEY!,
process.env.SUPABASE_ANON_KEY!
);

const signinResponse = await supabase.auth.signInWithPassword(
YOLO_DODO_CREDENTIALS,
YOLO_DODO_CREDENTIALS
);

yoloDodoToken = signinResponse.data.session?.access_token || '';
});

Expand Down Expand Up @@ -262,7 +264,7 @@ describe('Calcul de trajectoire SNBC', () => {
};
return request(app.getHttpServer())
.get(
'/trajectoires/snbc/verification?collectivite_id=3829&epci_info=true',
'/trajectoires/snbc/verification?collectivite_id=3829&epci_info=true'
)
.set('Authorization', `Bearer ${process.env.SUPABASE_SERVICE_ROLE_KEY}`)
.expect(200)
Expand Down Expand Up @@ -478,7 +480,7 @@ describe('Calcul de trajectoire SNBC', () => {
};
request(app.getHttpServer())
.get(
'/trajectoires/snbc/verification?collectivite_id=4936&epci_info=true',
'/trajectoires/snbc/verification?collectivite_id=4936&epci_info=true'
)
.set('Authorization', `Bearer ${yoloDodoToken}`)
.expect(200)
Expand Down Expand Up @@ -517,7 +519,7 @@ describe('Calcul de trajectoire SNBC', () => {

// Si on requête de nouveau le calcul, il doit provenir de la base de données
const trajectoireSnbcCalculRetourExistant = _.cloneDeep(
trajectoireSnbcCalculRetour,
trajectoireSnbcCalculRetour
);
trajectoireSnbcCalculRetourExistant.mode =
CalculTrajectoireResultatMode.DONNEES_EN_BDD;
Expand Down Expand Up @@ -545,7 +547,7 @@ describe('Calcul de trajectoire SNBC', () => {
.split('filename=')[1]
.split(';')[0];
expect(fileName).toBe(
'"Trajectoire SNBC - 246700488 - Eurome?tropole de Strasbourg.xlsx"',
'"Trajectoire SNBC - 246700488 - Eurome?tropole de Strasbourg.xlsx"'
);
}, 30000);

Expand Down
1 change: 0 additions & 1 deletion backend/tsconfig.spec.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
]
},
"include": [
"vitest.config.mts",
"vitest.config.mts",
"src/**/*.test.ts",
"src/**/*.spec.ts",
Expand Down
24 changes: 12 additions & 12 deletions backend/vitest.config.mts
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
/// <reference types='vitest' />
import { defineConfig } from 'vitest/config';

import { nxViteTsPaths } from '@nx/vite/plugins/nx-tsconfig-paths.plugin';
import swc from 'unplugin-swc';
import { loadEnv } from 'vite';
import { defineConfig } from 'vitest/config';

export default defineConfig({
export default defineConfig(({ mode }) => ({
root: __dirname,
cacheDir: '../node_modules/.vite/backend',
cacheDir: '../node_modules/.vite/apps/backend',

plugins: [nxViteTsPaths()],

// Uncomment this if you are using workers.
// worker: {
// plugins: [ nxViteTsPaths() ],
// },
plugins: [nxViteTsPaths(), swc.vite()],

test: {
fileParallelism: false,
watch: false,
globals: true,
environment: 'jsdom',
env: loadEnv(mode, process.cwd(), ''),

include: [
'src/**/*.{test,spec,e2e-spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}',
'./test/**/*.e2e-spec.ts',
],

reporters: ['default'],
coverage: {
reportsDirectory: '../coverage/backend',
reportsDirectory: '../coverage/apps/backend',
provider: 'v8',
},
},
});
}));
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@
"@storybook/test-runner": "^0.19.1",
"@swc-node/register": "~1.9.1",
"@swc/cli": "~0.3.12",
"@swc/core": "~1.5.7",
"@swc/core": "~1.5.29",
"@swc/helpers": "~0.5.11",
"@types/async-retry": "^1.4.8",
"@types/dompurify": "^2.3.4",
Expand Down Expand Up @@ -194,6 +194,7 @@
"ts-node": "10.9.1",
"tsconfig-paths-webpack-plugin": "^4.1.0",
"typescript": "^5.6.2",
"unplugin-swc": "^1.5.1",
"vite": "~5.1.8",
"vitest": "^1.6.0",
"webpack-cli": "^5.1.4"
Expand Down
48 changes: 47 additions & 1 deletion pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit a316783

Please sign in to comment.