Skip to content

Commit 37ee44b

Browse files
authored
Merge pull request #34 from CodelyTV/step-61312118
Step 61312118
2 parents 1de4cc1 + d92219a commit 37ee44b

File tree

11 files changed

+38
-34
lines changed

11 files changed

+38
-34
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/Contexts/Mooc/Courses/domain/Course.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export default class Course {
1+
export class Course {
22
readonly id: string;
33
readonly name: string;
44
readonly duration: string;
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
export default class CourseAlreadyExists extends Error {
2-
constructor(courseId: string) {
3-
super(`Course ${courseId} already exists`);
1+
export class CourseAlreadyExists extends Error {
2+
constructor(id: string) {
3+
super(`Course ${id} already exists`);
44
}
55
}

src/Contexts/Mooc/Courses/domain/CourseRepository.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import Course from './Course';
21
import { Nullable } from '../../../Shared/domain/Nullable';
2+
import { Course } from './Course';
33

4-
export default interface CourseRepository {
4+
export interface CourseRepository {
55
save(course: Course): Promise<void>;
66

77
search(id: string): Promise<Nullable<Course>>;

src/Contexts/Mooc/Courses/infrastructure/FileCourseRepository.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
import CourseRepository from '../domain/CourseRepository';
2-
import Course from '../domain/Course';
1+
import { CourseRepository } from '../domain/CourseRepository';
2+
import { Course } from '../domain/Course';
33
import fs from 'fs';
44
import BSON from 'bson';
55
import { Nullable } from '../../../Shared/domain/Nullable';
66

7-
export default class FileCourseRepository implements CourseRepository {
7+
export class FileCourseRepository implements CourseRepository {
88
private FILE_PATH = `${__dirname}/courses`;
99

1010
async save(course: Course): Promise<void> {
1111
const filePath = this.filePath(course.id);
1212
const data = BSON.serialize(course);
1313

14-
return fs.writeFileSync(filePath, data);
14+
return fs.writeFileSync(filePath, data);
1515
}
1616

1717
async search(id: string): Promise<Nullable<Course>> {
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import {Request, Response} from 'express';
1+
import { Request, Response } from 'express';
22

3-
export default interface Controller {
3+
export interface Controller {
44
run(req: Request, res: Response): Promise<void>;
55
}

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();

src/apps/mooc_backend/controllers/StatusGetController.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Request, Response } from 'express';
22
import httpStatus from 'http-status';
3-
import Controller from './Controller';
3+
import { Controller } from './Controller';
44

55
export default class StatusGetController implements Controller {
66
async run(req: Request, res: Response) {

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)