Skip to content

Commit a8259dc

Browse files
committed
📦 update dependencies (#98)
1 parent a808305 commit a8259dc

File tree

16 files changed

+2562
-3391
lines changed

16 files changed

+2562
-3391
lines changed

.github/workflows/cd.yml

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
name: Node.js CD - Production
22

33
on:
4-
push:
5-
branches: [main]
4+
release:
5+
types: [published]
6+
7+
concurrency:
8+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
9+
cancel-in-progress: true
610

711
jobs:
812
deploy:
@@ -12,21 +16,21 @@ jobs:
1216
- uses: appleboy/ssh-action@master
1317
name: Deploy production on VPS
1418
with:
15-
host: ${{ secrets.HOST }}
16-
username: ${{ secrets.USERNAME }}
17-
key: ${{ secrets.PRIVATE_KEY }}
18-
passphrase: ${{ secrets.SERVER_PASSPHRASE }}
19-
port: 22
20-
script: |
21-
export PATH="$PATH:/home/reginald/.nvm/versions/node/v16.16.0/bin/"
22-
export NVM_DIR=~/.nvm
23-
source ~/.nvm/nvm.sh
24-
nvm use --lts
25-
cd ~/dev/repos/w3-bestiary/w3-bestiary-back
26-
git checkout main
27-
git fetch --all
28-
git reset --hard origin/main
29-
yarn install
30-
yarn build
31-
pm2 delete witcher-api
32-
pm2 start dist/src/main.js --namespace witcher --name witcher-api
19+
host: ${{ secrets.HOST }}
20+
username: ${{ secrets.USERNAME }}
21+
key: ${{ secrets.PRIVATE_KEY }}
22+
passphrase: ${{ secrets.SERVER_PASSPHRASE }}
23+
port: 22
24+
script: |
25+
export PATH="$PATH:/home/reginald/.nvm/versions/node/v20.11.1/bin/"
26+
export NVM_DIR=~/.nvm
27+
source ~/.nvm/nvm.sh
28+
nvm install 20.11.1
29+
cd ~/dev/repos/w3-bestiary/w3-bestiary-back
30+
git checkout main
31+
git fetch --all
32+
git reset --hard origin/main
33+
yarn install
34+
yarn build
35+
pm2 delete witcher-api
36+
pm2 start dist/src/main.js --namespace witcher --name witcher-api

.github/workflows/ci.yml

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,36 @@
11
name: Node.js CI
22

33
on:
4-
push:
5-
branches: [main, develop]
6-
pull_request:
7-
branches: [main, develop]
4+
push:
5+
branches: [main, develop]
6+
pull_request:
7+
branches: [main, develop]
88

99
jobs:
10-
build:
11-
runs-on: ubuntu-latest
12-
13-
steps:
14-
- name: Git checkout
15-
uses: actions/checkout@v3
16-
17-
- name: Use Node.js 16
18-
uses: actions/setup-node@v3
19-
with:
20-
node-version: '16.17.1'
21-
cache: 'yarn'
22-
23-
- name: 📦 Install dependencies
24-
run: yarn install
25-
26-
- name: 👷 Build project
27-
run: yarn build
28-
29-
- name: 🧑‍🔬 Run e2e tests
30-
run: yarn test:e2e
31-
env:
32-
APP_ENV: 'TEST'
33-
FILES_PATH: ${{ secrets.FILES_PATH }}
34-
35-
- name: 🧑‍🔬 Run unit tests
36-
run: yarn test
10+
build:
11+
runs-on: ubuntu-latest
12+
13+
steps:
14+
- name: Git checkout
15+
uses: actions/checkout@v4
16+
17+
- name: Use Node.js 20
18+
uses: actions/setup-node@v4
19+
with:
20+
node-version: '20.11.1'
21+
cache: 'yarn'
22+
23+
- name: 📦 Install dependencies
24+
run: yarn install
25+
26+
- name: 👷 Build project
27+
run: yarn build
28+
29+
- name: 🧑‍🔬 Run unit tests
30+
run: yarn test
31+
32+
- name: 🧑‍🔬 Run e2e tests
33+
run: yarn test:e2e
34+
env:
35+
APP_ENV: 'TEST'
36+
FILES_PATH: ${{ secrets.FILES_PATH }}

.prettierignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
*.yml

package.json

Lines changed: 94 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -1,100 +1,97 @@
11
{
2-
"name": "w3-bestiary-back",
3-
"version": "2.3.1",
4-
"description": "",
5-
"author": "",
6-
"private": true,
7-
"license": "MIT",
8-
"engines": {
9-
"node": ">=14"
10-
},
11-
"scripts": {
12-
"prebuild": "rimraf dist",
13-
"build": "nest build",
14-
"format": "prettier --write \"src/**/*.{ts,json}\" \"test/**/*.ts\"",
15-
"start": "nest start",
16-
"start:dev": "nest start --watch",
17-
"start:debug": "nest start --debug --watch",
18-
"start:prod": "node dist/main",
19-
"lint:fix": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
20-
"test": "jest",
21-
"test:watch": "jest --watch",
22-
"test:cov": "jest --coverage",
23-
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
24-
"test:e2e": "jest --config ./test/jest-e2e.json",
25-
"local:test:e2e": "APP_ENV=TEST jest --config ./test/jest-e2e.json"
26-
},
27-
"dependencies": {
28-
"@nestjs/common": "^10.0.5",
29-
"@nestjs/config": "^3.0.0",
30-
"@nestjs/core": "^10.0.5",
31-
"@nestjs/cqrs": "^10.0.1",
32-
"@nestjs/platform-express": "^10.0.5",
33-
"@nestjs/swagger": "^7.1.1",
34-
"axios": "^1.4.0",
35-
"class-transformer": "^0.5.1",
36-
"class-validator": "^0.14.0",
37-
"follow-redirects": "^1.15.2",
38-
"morgan": "^1.10.0",
39-
"reflect-metadata": "^0.1.13",
40-
"rimraf": "^5.0.1",
41-
"rotating-file-stream": "^3.1.0",
42-
"rxjs": "^7.8.1",
43-
"shelljs": "^0.8.5",
44-
"swagger-ui-express": "^4.6.3"
45-
},
46-
"devDependencies": {
47-
"@nestjs/cli": "^10.1.7",
48-
"@nestjs/schematics": "^10.0.1",
49-
"@nestjs/testing": "^10.0.5",
50-
"@types/express": "^4.17.17",
51-
"@types/jest": "^29.5.2",
52-
"@types/jest-when": "^3.5.2",
53-
"@types/morgan": "^1.9.4",
54-
"@types/node": "^20.3.3",
55-
"@types/supertest": "^2.0.12",
56-
"@types/swagger-ui-express": "^4.1.3",
57-
"@typescript-eslint/eslint-plugin": "^5.61.0",
58-
"@typescript-eslint/parser": "^5.61.0",
59-
"eslint": "^8.44.0",
60-
"eslint-config-prettier": "^8.8.0",
61-
"eslint-plugin-prettier": "^4.2.1",
62-
"jest": "^29.6.0",
63-
"jest-ts-auto-mock": "^2.1.0",
64-
"jest-when": "^3.5.2",
65-
"prettier": "^3.0.0",
66-
"supertest": "^6.3.3",
67-
"ts-auto-mock": "^3.7.1",
68-
"ts-jest": "^29.1.1",
69-
"ts-loader": "^9.4.4",
70-
"ts-node": "^10.9.1",
71-
"tsconfig-paths": "^4.2.0",
72-
"ttypescript": "^1.5.15",
73-
"typescript": "4.9.5"
74-
},
75-
"jest": {
76-
"setupFiles": [
77-
"<rootDir>test/jest-ts-config.ts"
78-
],
79-
"moduleFileExtensions": [
80-
"js",
81-
"json",
82-
"ts"
83-
],
84-
"testRegex": ".*\\.spec\\.ts$",
85-
"transform": {
86-
"^.+\\.tsx?$": [
87-
"ts-jest",
88-
{
89-
"compiler": "ttypescript"
90-
}
91-
]
2+
"name": "w3-bestiary-back",
3+
"version": "2.3.2",
4+
"description": "",
5+
"author": "",
6+
"private": true,
7+
"license": "MIT",
8+
"engines": {
9+
"node": ">=14"
9210
},
93-
"collectCoverageFrom": [
94-
"**/*.(t|j)s"
95-
],
96-
"coverageDirectory": "../coverage",
97-
"testEnvironment": "node",
98-
"verbose": true
99-
}
11+
"scripts": {
12+
"prebuild": "rimraf dist",
13+
"build": "nest build",
14+
"format": "prettier --write \"src/**/*.{ts,json}\" \"test/**/*.ts\"",
15+
"start": "nest start",
16+
"start:dev": "nest start --watch",
17+
"start:debug": "nest start --debug --watch",
18+
"start:prod": "node dist/main",
19+
"lint:fix": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
20+
"test": "jest",
21+
"test:watch": "jest --watch",
22+
"test:cov": "jest --coverage",
23+
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
24+
"test:e2e": "jest --config ./test/jest-e2e.json",
25+
"local:test:e2e": "APP_ENV=TEST jest --config ./test/jest-e2e.json"
26+
},
27+
"dependencies": {
28+
"@nestjs/common": "^10.4.1",
29+
"@nestjs/config": "^3.2.3",
30+
"@nestjs/core": "^10.4.1",
31+
"@nestjs/cqrs": "^10.2.7",
32+
"@nestjs/platform-express": "^10.4.1",
33+
"@nestjs/swagger": "^7.4.0",
34+
"axios": "^1.7.7",
35+
"class-transformer": "^0.5.1",
36+
"class-validator": "^0.14.1",
37+
"follow-redirects": "^1.15.9",
38+
"morgan": "^1.10.0",
39+
"reflect-metadata": "^0.2.2",
40+
"rimraf": "^6.0.1",
41+
"rotating-file-stream": "^3.2.4",
42+
"rxjs": "^7.8.1",
43+
"shelljs": "^0.8.5",
44+
"swagger-ui-express": "^5.0.1"
45+
},
46+
"devDependencies": {
47+
"@nestjs/cli": "^10.4.5",
48+
"@nestjs/schematics": "^10.1.4",
49+
"@nestjs/testing": "^10.4.1",
50+
"@types/express": "^4.17.21",
51+
"@types/jest": "^29.5.13",
52+
"@types/jest-when": "^3.5.5",
53+
"@types/morgan": "^1.9.9",
54+
"@types/node": "^22.5.4",
55+
"@types/supertest": "^6.0.2",
56+
"@types/swagger-ui-express": "^4.1.6",
57+
"@typescript-eslint/eslint-plugin": "^8.5.0",
58+
"@typescript-eslint/parser": "^8.5.0",
59+
"eslint": "^9.10.0",
60+
"eslint-config-prettier": "^9.1.0",
61+
"eslint-plugin-prettier": "^5.2.1",
62+
"jest": "^29.7.0",
63+
"jest-ts-auto-mock": "^2.1.0",
64+
"jest-when": "^3.6.0",
65+
"prettier": "^3.3.3",
66+
"supertest": "^7.0.0",
67+
"ts-auto-mock": "^3.7.4",
68+
"ts-jest": "^29.2.5",
69+
"ts-loader": "^9.5.1",
70+
"ts-node": "^10.9.2",
71+
"tsconfig-paths": "^4.2.0",
72+
"ttypescript": "^1.5.15",
73+
"typescript": "5.6.2"
74+
},
75+
"jest": {
76+
"setupFiles": [
77+
"<rootDir>test/jest-ts-config.ts"
78+
],
79+
"moduleFileExtensions": [
80+
"js",
81+
"json",
82+
"ts"
83+
],
84+
"testRegex": ".*\\.spec\\.ts$",
85+
"transform": {
86+
"^.+\\.tsx?$": [
87+
"ts-jest"
88+
]
89+
},
90+
"collectCoverageFrom": [
91+
"**/*.(t|j)s"
92+
],
93+
"coverageDirectory": "../coverage",
94+
"testEnvironment": "node",
95+
"verbose": true
96+
}
10097
}
Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,21 @@
1-
import { CategoryRepository } from '../category-repository.interface';
2-
import { createMock } from 'ts-auto-mock';
1+
import {
2+
CategoryRepositorySpy,
3+
stubGetAll,
4+
} from '../../../../test/doubles/category-repository.spy';
35
import { Error } from '../../../application/error';
46
import {
57
GetAllCategoriesHandler,
68
GetAllCategoriesQuery,
79
} from './get-all-categories.handler';
8-
import { method, On } from 'ts-auto-mock/extension';
910
import { Result } from '../../../application/result';
10-
import { when } from 'jest-when';
1111

1212
describe('GetAllCategoriesHandler', () => {
1313
let sut: GetAllCategoriesHandler;
1414

15-
let categoryRepository: CategoryRepository;
15+
let categoryRepository: CategoryRepositorySpy;
1616

1717
beforeEach(() => {
18-
categoryRepository = createMock<CategoryRepository>();
19-
18+
categoryRepository = new CategoryRepositorySpy();
2019
sut = new GetAllCategoriesHandler(categoryRepository);
2120
});
2221

@@ -26,13 +25,15 @@ describe('GetAllCategoriesHandler', () => {
2625

2726
await sut.execute(query);
2827

29-
expect(categoryRepository.getAll).toBeCalledWith(query.lang);
28+
expect(categoryRepository.calls.getAll.history).toContain(
29+
query.lang,
30+
);
3031
});
3132

3233
it('should return an error when repository method returned an error', async () => {
3334
const query = new GetAllCategoriesQuery('lang');
3435

35-
stubCategoryRepoGetAll(categoryRepository, query, new Error(0, ''));
36+
stubGetAll(categoryRepository, new Error(0, ''));
3637

3738
const result = await sut.execute(query);
3839

@@ -42,20 +43,11 @@ describe('GetAllCategoriesHandler', () => {
4243
it('should return a category result repository method returned a result', async () => {
4344
const query = new GetAllCategoriesQuery('lang');
4445

45-
stubCategoryRepoGetAll(categoryRepository, query, new Result([]));
46+
stubGetAll(categoryRepository, new Result([]));
4647

4748
const result = await sut.execute(query);
4849

4950
expect(result).toBeInstanceOf(Result);
5051
});
5152
});
5253
});
53-
54-
function stubCategoryRepoGetAll(
55-
categoryRepository: CategoryRepository,
56-
query: GetAllCategoriesQuery,
57-
mocked: Awaited<ReturnType<CategoryRepository['getAll']>>,
58-
): void {
59-
const categoryRepoGetAll = On(categoryRepository).get(method('getAll'));
60-
when(categoryRepoGetAll).calledWith(query.lang).mockResolvedValue(mocked);
61-
}

0 commit comments

Comments
 (0)