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' ;
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 }
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 11import { Request , Response } from 'express' ;
2- import CourseCreator from '../../../Contexts/Mooc/Courses/application/CourseCreator' ;
2+ import { CourseCreator } from '../../../Contexts/Mooc/Courses/application/CourseCreator' ;
33import 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
77export 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 ( ) ;
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' ;
44
55describe ( '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 } ) ;
You can’t perform that action at this time.
0 commit comments