Skip to content

Commit d92219a

Browse files
committed
Use request/response objects
1 parent 9885678 commit d92219a

File tree

4 files changed

+23
-19
lines changed

4 files changed

+23
-19
lines changed

src/Contexts/Mooc/Courses/application/CourseCreator.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
1-
import CourseRepository from '../domain/CourseRepository';
2-
import Course from '../domain/Course';
1+
import { CourseRepository } from '../domain/CourseRepository';
2+
import { Course } from '../domain/Course';
3+
import { CreateCourseRequest } from './CreateCourseRequest';
34

4-
export default class CourseCreator {
5+
export class CourseCreator {
56
private repository: CourseRepository;
67

78
constructor(repository: CourseRepository) {
89
this.repository = repository;
910
}
1011

11-
async run(id: string, name: string, duration: string): Promise<void> {
12-
const course = new Course(id, name, duration);
12+
async run(request: CreateCourseRequest): Promise<void> {
13+
const course = new Course(request.id, request.name, request.duration);
1314

1415
return this.repository.save(course);
1516
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export type CreateCourseRequest = {
2+
id: string;
3+
name: string;
4+
duration: string;
5+
};

src/apps/mooc_backend/controllers/CoursePutController.ts

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { Request, Response } from 'express';
2-
import CourseCreator from '../../../Contexts/Mooc/Courses/application/CourseCreator';
2+
import { CourseCreator } from '../../../Contexts/Mooc/Courses/application/CourseCreator';
33
import httpStatus from 'http-status';
4-
import Controller from './Controller';
5-
import CourseAlreadyExists from '../../../Contexts/Mooc/Courses/domain/CourseAlreadyExists';
4+
import { Controller } from './Controller';
5+
import { CourseAlreadyExists } from '../../../Contexts/Mooc/Courses/domain/CourseAlreadyExists';
66

77
export class CoursePutController implements Controller {
88
constructor(private courseCreator: CourseCreator) {}
@@ -13,15 +13,13 @@ export class CoursePutController implements Controller {
1313
const duration: string = req.body.duration;
1414

1515
try {
16-
await this.courseCreator.run(id, name, duration);
17-
} catch (e) {
18-
19-
if (e instanceof CourseAlreadyExists) {
20-
res.status(httpStatus.BAD_REQUEST).send(e.message);
16+
await this.courseCreator.run({ id, name, duration });
17+
} catch (error) {
18+
if (error instanceof CourseAlreadyExists) {
19+
res.status(httpStatus.BAD_REQUEST).send(error.message);
2120
} else {
22-
res.status(httpStatus.INTERNAL_SERVER_ERROR).json(e);
21+
res.status(httpStatus.INTERNAL_SERVER_ERROR).json(error);
2322
}
24-
2523
}
2624

2725
res.status(httpStatus.CREATED).send();

tests/Contexts/Mooc/Courses/application/CourseCreator.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import Course from '../../../../../src/Contexts/Mooc/Courses/domain/Course';
2-
import CourseCreator from '../../../../../src/Contexts/Mooc/Courses/application/CourseCreator';
3-
import CourseRepository from '../../../../../src/Contexts/Mooc/Courses/domain/CourseRepository';
1+
import { Course } from '../../../../../src/Contexts/Mooc/Courses/domain/Course';
2+
import { CourseCreator } from '../../../../../src/Contexts/Mooc/Courses/application/CourseCreator';
3+
import { CourseRepository } from '../../../../../src/Contexts/Mooc/Courses/domain/CourseRepository';
44

55
describe('Course Creator', () => {
66
it('should create a valid course', async () => {
@@ -18,7 +18,7 @@ describe('Course Creator', () => {
1818

1919
const course = new Course(id, name, duration);
2020

21-
await createCourse.run(id, name, duration);
21+
await createCourse.run({ id, name, duration });
2222

2323
expect(save).toHaveBeenCalledWith(course);
2424
});

0 commit comments

Comments
 (0)