Skip to content

Commit 83ba932

Browse files
feat: implement controller for getAll exercises
1 parent 86bb866 commit 83ba932

File tree

5 files changed

+65
-1
lines changed

5 files changed

+65
-1
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { Controller, Get } from '@nestjs/common';
2+
3+
import { ExercisesService } from './exercises.service';
4+
5+
@Controller('exercises')
6+
export class ExercisesController {
7+
constructor(private readonly exercisesService: ExercisesService) {}
8+
9+
@Get()
10+
async getAll() {
11+
return await this.exercisesService.findAll();
12+
}
13+
}

backend/src/exercises/exercises.module.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@ import { Module } from '@nestjs/common';
22
import { TypeOrmModule } from '@nestjs/typeorm';
33

44
import { ExercisesService } from './exercises.service';
5+
import { ExercisesController } from './exercises.controller';
56
import { ExerciseEntity } from './entities';
67

78
@Module({
89
imports: [TypeOrmModule.forFeature([ExerciseEntity])],
10+
controllers: [ExercisesController],
911
providers: [ExercisesService],
1012
exports: [ExercisesService],
1113
})

backend/src/exercises/exercises.service.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ export class ExercisesService {
3232
async findAll() {
3333
return this.exerciseRepository.find({
3434
order: { name: 'ASC' },
35+
select: ['id', 'name', 'muscleGroup'],
3536
});
3637
}
3738

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import { Test, TestingModule } from '@nestjs/testing';
2+
3+
import { ExercisesController } from '../exercises.controller';
4+
import { ExercisesService } from '../exercises.service';
5+
6+
describe('ExercisesController', () => {
7+
let controller: ExercisesController;
8+
let service: ExercisesService;
9+
10+
const mockExercisesService = {
11+
create: jest.fn(),
12+
findAll: jest.fn(),
13+
seed: jest.fn(),
14+
};
15+
16+
beforeEach(async () => {
17+
const module: TestingModule = await Test.createTestingModule({
18+
controllers: [ExercisesController],
19+
providers: [
20+
{
21+
provide: ExercisesService,
22+
useValue: mockExercisesService,
23+
},
24+
],
25+
}).compile();
26+
27+
controller = module.get<ExercisesController>(ExercisesController);
28+
service = module.get<ExercisesService>(ExercisesService);
29+
});
30+
31+
afterEach(() => {
32+
jest.clearAllMocks();
33+
});
34+
35+
it('should be defined', () => expect(controller).toBeDefined());
36+
37+
describe('getAll', () => {
38+
it('should call service.findAll', async () => {
39+
mockExercisesService.findAll();
40+
41+
await controller.getAll();
42+
43+
expect(service.findAll).toHaveBeenCalled();
44+
});
45+
});
46+
});

backend/src/exercises/specs/exercises.service.spec.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,9 @@ describe('ExercisesService', () => {
6262

6363
describe('findAll', () => {
6464
it('should return an array of exercises', async () => {
65-
const exercises = [{ name: 'Push up' }];
65+
const exercises = [
66+
{ id: 'asd', name: 'Push up', muscleGroup: MuscleGroup.CHEST },
67+
];
6668
mockExerciseRepository.find.mockResolvedValue(exercises);
6769

6870
const result = await service.findAll();

0 commit comments

Comments
 (0)