File tree Expand file tree Collapse file tree 4 files changed +23
-19
lines changed
Contexts/Mooc/Courses/application
apps/mooc_backend/controllers
tests/Contexts/Mooc/Courses/application Expand file tree Collapse file tree 4 files changed +23
-19
lines changed Original file line number Diff line number Diff line change 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' ;
3
4
4
- export default class CourseCreator {
5
+ export class CourseCreator {
5
6
private repository : CourseRepository ;
6
7
7
8
constructor ( repository : CourseRepository ) {
8
9
this . repository = repository ;
9
10
}
10
11
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 ) ;
13
14
14
15
return this . repository . save ( course ) ;
15
16
}
Original file line number Diff line number Diff line change
1
+ export type CreateCourseRequest = {
2
+ id : string ;
3
+ name : string ;
4
+ duration : string ;
5
+ } ;
Original file line number Diff line number Diff line change 1
1
import { Request , Response } from 'express' ;
2
- import CourseCreator from '../../../Contexts/Mooc/Courses/application/CourseCreator' ;
2
+ import { CourseCreator } from '../../../Contexts/Mooc/Courses/application/CourseCreator' ;
3
3
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' ;
6
6
7
7
export class CoursePutController implements Controller {
8
8
constructor ( private courseCreator : CourseCreator ) { }
@@ -13,15 +13,13 @@ export class CoursePutController implements Controller {
13
13
const duration : string = req . body . duration ;
14
14
15
15
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 ) ;
21
20
} else {
22
- res . status ( httpStatus . INTERNAL_SERVER_ERROR ) . json ( e ) ;
21
+ res . status ( httpStatus . INTERNAL_SERVER_ERROR ) . json ( error ) ;
23
22
}
24
-
25
23
}
26
24
27
25
res . status ( httpStatus . CREATED ) . send ( ) ;
Original file line number Diff line number Diff line change 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' ;
4
4
5
5
describe ( 'Course Creator' , ( ) => {
6
6
it ( 'should create a valid course' , async ( ) => {
@@ -18,7 +18,7 @@ describe('Course Creator', () => {
18
18
19
19
const course = new Course ( id , name , duration ) ;
20
20
21
- await createCourse . run ( id , name , duration ) ;
21
+ await createCourse . run ( { id, name, duration } ) ;
22
22
23
23
expect ( save ) . toHaveBeenCalledWith ( course ) ;
24
24
} ) ;
You can’t perform that action at this time.
0 commit comments