Skip to content

Commit e5ff3ee

Browse files
committed
ci: implementing ci/cd with 80% code coverage and linter verification
1 parent e3801d1 commit e5ff3ee

File tree

8 files changed

+76
-6
lines changed

8 files changed

+76
-6
lines changed

.github/workflows/check.yml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
name: 'Verificação básica de código'
2+
3+
on:
4+
push:
5+
branches:
6+
- 'main'
7+
8+
jobs:
9+
basic-check:
10+
runs-on: ubuntu-latest
11+
steps:
12+
- uses: actions/checkout@v4
13+
14+
- name: Subir o Node
15+
uses: actions/setup-node@v4
16+
with:
17+
node-version: '20.12.2'
18+
19+
- name: Instalar as dependências
20+
run: npm install
21+
22+
- name: Rodar o ESLint
23+
run: npm run lint
24+
25+
- name: Rodar os testes unitários com 80% de cobertura de código
26+
run: npm run test:cov

backend/jest.coverage.config.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
export default {
2+
moduleFileExtensions: ['js', 'json', 'ts'],
3+
testRegex: '.*\\.(spec|int-spec)\\.ts$',
4+
transform: {
5+
'^.+\\.(t|j)s$': 'ts-jest',
6+
},
7+
collectCoverageFrom: [
8+
'src/**/*.{ts,tsx}',
9+
'!src/**/*.d.ts',
10+
'!src/**/*.spec.ts',
11+
'!src/**/*.test.ts',
12+
'!src/**/*mock*.ts',
13+
],
14+
coverageDirectory: './coverage',
15+
testEnvironment: 'node',
16+
coveragePathIgnorePatterns: ['/node_modules/', '/dist/', '/build/'],
17+
transformIgnorePatterns: ['/node_modules/(?!@faker-js/faker)'],
18+
collectCoverage: true,
19+
coverageThreshold: {
20+
global: {
21+
branches: 80,
22+
functions: 80,
23+
lines: 80,
24+
statements: 80,
25+
},
26+
},
27+
};

backend/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
1616
"test": "jest",
1717
"test:watch": "jest --watch",
18-
"test:cov": "jest --coverage",
18+
"test:cov": "jest --coverage --runInBand --config ./jest.coverage.config.ts",
1919
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
2020
"test:e2e": "jest --config ./test/jest-e2e.json"
2121
},
@@ -79,4 +79,4 @@
7979
"coverageDirectory": "../coverage",
8080
"testEnvironment": "node"
8181
}
82-
}
82+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { AppModule } from './../app.module';
2+
import { mockPrismaService } from './../prisma/mocks/prisma-service.mock';
3+
import { PrismaService } from '../prisma/prisma.service';
4+
import { Test } from '@nestjs/testing';
5+
6+
describe('AppModule', () => {
7+
it('should compile AppModule with mocked Prisma', async () => {
8+
const moduleRef = await Test.createTestingModule({
9+
imports: [AppModule],
10+
})
11+
.overrideProvider(PrismaService)
12+
.useValue(mockPrismaService)
13+
.compile();
14+
15+
expect(moduleRef).toBeDefined();
16+
});
17+
});

backend/src/modules/collaborators/collaborators.module.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Module } from '@nestjs/common';
22
import { CollaboratorsService } from './collaborators.service';
33
import { CollaboratorsController } from './collaborators.controller';
4-
import { PrismaModule } from 'src/prisma/prisma.module';
4+
import { PrismaModule } from '../../prisma/prisma.module';
55
import { PrismaCollaboratorsRepository } from './repositories/prisma-collaborators.repository';
66

77
@Module({

backend/src/modules/projects/projects.module.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Module } from '@nestjs/common';
22
import { ProjectsService } from './projects.service';
33
import { ProjectsController } from './projects.controller';
4-
import { PrismaModule } from 'src/prisma/prisma.module';
4+
import { PrismaModule } from '../../prisma/prisma.module';
55
import { PrismaProjectsRepository } from './repositories/prisma-projects.repository';
66

77
@Module({

backend/src/modules/tasks/tasks.module.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { Module } from '@nestjs/common';
22
import { TasksService } from './tasks.service';
33
import { TasksController } from './tasks.controller';
44
import { PrismaTasksRepository } from './repositories/prisma-tasks.repository';
5-
import { PrismaModule } from 'src/prisma/prisma.module';
5+
import { PrismaModule } from '../../prisma/prisma.module';
66

77
@Module({
88
imports: [PrismaModule],

backend/src/modules/time-trackers/time-trackers.module.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Module } from '@nestjs/common';
22
import { TimeTrackersService } from './time-trackers.service';
33
import { TimeTrackersController } from './time-trackers.controller';
4-
import { PrismaModule } from 'src/prisma/prisma.module';
4+
import { PrismaModule } from '../../prisma/prisma.module';
55
import { PrismaTimeTrackersRepository } from './repositories/prisma-time-trackers.repository';
66

77
@Module({

0 commit comments

Comments
 (0)