diff --git a/backend/src/exercises/exercises.controller.ts b/backend/src/exercises/exercises.controller.ts new file mode 100644 index 0000000..3472cd7 --- /dev/null +++ b/backend/src/exercises/exercises.controller.ts @@ -0,0 +1,13 @@ +import { Controller, Get } from '@nestjs/common'; + +import { ExercisesService } from './exercises.service'; + +@Controller('exercises') +export class ExercisesController { + constructor(private readonly exercisesService: ExercisesService) {} + + @Get() + async getAll() { + return await this.exercisesService.findAll(); + } +} diff --git a/backend/src/exercises/exercises.module.ts b/backend/src/exercises/exercises.module.ts index c251a9e..6d3ec31 100644 --- a/backend/src/exercises/exercises.module.ts +++ b/backend/src/exercises/exercises.module.ts @@ -2,10 +2,12 @@ import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { ExercisesService } from './exercises.service'; +import { ExercisesController } from './exercises.controller'; import { ExerciseEntity } from './entities'; @Module({ imports: [TypeOrmModule.forFeature([ExerciseEntity])], + controllers: [ExercisesController], providers: [ExercisesService], exports: [ExercisesService], }) diff --git a/backend/src/exercises/exercises.service.ts b/backend/src/exercises/exercises.service.ts index 6fd41be..a6c11de 100644 --- a/backend/src/exercises/exercises.service.ts +++ b/backend/src/exercises/exercises.service.ts @@ -32,6 +32,7 @@ export class ExercisesService { async findAll() { return this.exerciseRepository.find({ order: { name: 'ASC' }, + select: ['id', 'name', 'muscleGroup'], }); } diff --git a/backend/src/exercises/specs/exercises.controller.spec.ts b/backend/src/exercises/specs/exercises.controller.spec.ts new file mode 100644 index 0000000..2f6754c --- /dev/null +++ b/backend/src/exercises/specs/exercises.controller.spec.ts @@ -0,0 +1,46 @@ +import { Test, TestingModule } from '@nestjs/testing'; + +import { ExercisesController } from '../exercises.controller'; +import { ExercisesService } from '../exercises.service'; + +describe('ExercisesController', () => { + let controller: ExercisesController; + let service: ExercisesService; + + const mockExercisesService = { + create: jest.fn(), + findAll: jest.fn(), + seed: jest.fn(), + }; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + controllers: [ExercisesController], + providers: [ + { + provide: ExercisesService, + useValue: mockExercisesService, + }, + ], + }).compile(); + + controller = module.get(ExercisesController); + service = module.get(ExercisesService); + }); + + afterEach(() => { + jest.clearAllMocks(); + }); + + it('should be defined', () => expect(controller).toBeDefined()); + + describe('getAll', () => { + it('should call service.findAll', async () => { + mockExercisesService.findAll(); + + await controller.getAll(); + + expect(service.findAll).toHaveBeenCalled(); + }); + }); +}); diff --git a/backend/src/exercises/specs/exercises.service.spec.ts b/backend/src/exercises/specs/exercises.service.spec.ts index be4b480..c5d5b63 100644 --- a/backend/src/exercises/specs/exercises.service.spec.ts +++ b/backend/src/exercises/specs/exercises.service.spec.ts @@ -62,7 +62,9 @@ describe('ExercisesService', () => { describe('findAll', () => { it('should return an array of exercises', async () => { - const exercises = [{ name: 'Push up' }]; + const exercises = [ + { id: 'asd', name: 'Push up', muscleGroup: MuscleGroup.CHEST }, + ]; mockExerciseRepository.find.mockResolvedValue(exercises); const result = await service.findAll();