Skip to content

Commit d799d34

Browse files
committed
feat: rota para listar os documentos por cliente
1 parent f49653f commit d799d34

8 files changed

Lines changed: 54 additions & 13 deletions

File tree

src/config/database/__tests__/integration/database-connection.int-spec.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,16 @@ import { DatabaseModule } from '@/modules/database.module'
33
import { ClientRepository } from '@/repositories/client.repository'
44
import { execSync } from 'child_process'
55
import { ClientModule } from '@/modules/client.module'
6+
import { ConfigModule } from '@nestjs/config'
7+
import { forwardRef } from '@nestjs/common'
68

79
describe('Database Connection', () => {
810
let repository: ClientRepository
911

1012
beforeEach(async () => {
1113
execSync('npx prisma migrate deploy')
1214
const module: TestingModule = await Test.createTestingModule({
13-
imports: [DatabaseModule, ClientModule],
15+
imports: [DatabaseModule, forwardRef(() => ClientModule), ConfigModule],
1416
}).compile()
1517

1618
repository = module.get<ClientRepository>(ClientRepository)

src/controllers/__tests__/unit/client.controller.spec.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,23 @@
33
import { Test, TestingModule } from '@nestjs/testing'
44
import { ClientController } from '../../client.controller'
55
import { ClientService } from '../../../services/client.service'
6+
import { JwtModule } from '@nestjs/jwt'
7+
import { ConfigModule } from '@nestjs/config'
8+
import { DocumentService } from '@/services/document.service'
9+
import { DocumentRepository } from '@/repositories/document.repository'
10+
import { DatabaseModule } from '@/modules/database.module'
611

712
describe('ClientController', () => {
813
let controller: ClientController
914
let service: jest.Mocked<ClientService>
1015

1116
beforeEach(async () => {
1217
const module: TestingModule = await Test.createTestingModule({
18+
imports: [JwtModule, ConfigModule, DatabaseModule],
1319
controllers: [ClientController],
1420
providers: [
21+
DocumentService,
22+
DocumentRepository,
1523
{
1624
provide: ClientService,
1725
useValue: {
@@ -26,7 +34,11 @@ describe('ClientController', () => {
2634
}).compile()
2735

2836
controller = module.get<ClientController>(ClientController)
29-
service = module.get(ClientService)
37+
service = module.get<jest.Mocked<ClientService>>(ClientService)
38+
})
39+
40+
afterAll(() => {
41+
jest.clearAllMocks()
3042
})
3143

3244
it('should be defined', () => {

src/controllers/client.controller.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,23 @@ import {
77
Patch,
88
Param,
99
Delete,
10+
Req,
11+
UseGuards,
1012
} from '@nestjs/common'
1113
import { ClientService } from '../services/client.service'
1214
import { CreateClientDto } from '@/dtos/client/create-client.dto'
1315
import { UpdateClientDto } from '@/dtos/client/update-client.dto'
1416
import { HashPasswordPipe } from '@/common/pipes/hash-password.pipe'
17+
import { DocumentService } from '@/services/document.service'
18+
import { UserRequest } from '@/contracts/user-request.interface'
19+
import { AuthGuard } from '@/common/guards/auth.guard'
1520

1621
@Controller('client')
1722
export class ClientController {
18-
constructor(private readonly clientService: ClientService) {}
23+
constructor(
24+
private readonly clientService: ClientService,
25+
private readonly documentService: DocumentService,
26+
) {}
1927

2028
@Post()
2129
async create(
@@ -28,6 +36,12 @@ export class ClientController {
2836
})
2937
}
3038

39+
@Get('/documents')
40+
@UseGuards(AuthGuard)
41+
async findAllDocumentsByClient(@Req() request: UserRequest) {
42+
return await this.documentService.findAll({ clientId: request.user.sub })
43+
}
44+
3145
@Get()
3246
findAll() {
3347
return this.clientService.findAll()

src/controllers/document.controller.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ export class DocumentController {
6565

6666
@Get()
6767
async findAll() {
68-
return await this.documentService.findAll()
68+
return await this.documentService.findAll({})
6969
}
7070

7171
@Get(':id')

src/modules/client.module.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,19 @@
1-
import { Module } from '@nestjs/common'
1+
import { forwardRef, Module } from '@nestjs/common'
22
import { ClientService } from '../services/client.service'
33
import { ClientController } from '../controllers/client.controller'
44
import { ClientRepository } from '../repositories/client.repository'
55
import { DatabaseModule } from '@/modules/database.module'
66
import { JwtModule } from '@nestjs/jwt'
7+
import { DocumentModule } from './document.module'
8+
import { ConfigModule } from '@nestjs/config'
79

810
@Module({
9-
imports: [DatabaseModule, JwtModule],
11+
imports: [
12+
DatabaseModule,
13+
JwtModule,
14+
forwardRef(() => DocumentModule),
15+
ConfigModule,
16+
],
1017
controllers: [ClientController],
1118
providers: [ClientService, ClientRepository],
1219
exports: [ClientService, ClientRepository],

src/modules/document.module.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Module } from '@nestjs/common'
1+
import { forwardRef, Module } from '@nestjs/common'
22
import { DocumentService } from '@/services/document.service'
33
import { DocumentController } from '@/controllers/document.controller'
44
import { DocumentRepository } from '@/repositories/document.repository'
@@ -11,14 +11,20 @@ import { JwtModule } from '@nestjs/jwt'
1111
import { ConfigModule } from '@nestjs/config'
1212

1313
@Module({
14-
imports: [DatabaseModule, ClientModule, HttpModule, JwtModule, ConfigModule],
14+
imports: [
15+
DatabaseModule,
16+
forwardRef(() => ClientModule),
17+
HttpModule,
18+
JwtModule,
19+
ConfigModule,
20+
],
1521
controllers: [DocumentController],
1622
providers: [
1723
DocumentService,
1824
DocumentRepository,
1925
PdfProcessingService,
2026
WebProcessingService,
2127
],
22-
exports: [DocumentRepository],
28+
exports: [DocumentRepository, DocumentService],
2329
})
2430
export class DocumentModule {}

src/services/__tests__/unit/document.service.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,9 @@ describe('DocumentService', () => {
6161
const documents = [{ id: '1', title: 'Test Document' }]
6262
repository.documents.mockResolvedValue(documents as any)
6363

64-
const result = await service.findAll()
64+
const result = await service.findAll({})
6565

66-
expect(repository.documents).toHaveBeenCalledWith({})
66+
expect(repository.documents).toHaveBeenCalledWith({ where: {} })
6767
expect(result).toEqual(documents)
6868
})
6969
})

src/services/document.service.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ export class DocumentService {
3737
return await this.create(createDocumentDto)
3838
}
3939

40-
async findAll() {
41-
return await this.documentRepository.documents({})
40+
async findAll(data: any) {
41+
return await this.documentRepository.documents({ where: data })
4242
}
4343

4444
async findOne(id: string) {

0 commit comments

Comments
 (0)