내가 생각했던 접근법은 그냥 말도 안되는 접근법임. 뭐가 됐든 스키마부터 만들고 시작해야함.(일부분이라도 '실제'스키마는 만들어 놔야 함!)
나중에 다시 짜겠다는 말은, api랑 기획 다 해놓고 다 만들어 놓은 후에, 프로젝트 막판 가서 다 부숴버리고는 api부터 해서 전부다 새로 만들겠다라는 말임. 주객이 아예 전도된 거임.
router에는 await이 별 의미를 갖지 못한다.
javascript
import express from "express";
import jest from "jest";
const app = express();
const router = express.Router();
async function postWrite() {
const req = {
locals: { user: {} },
body: {},
}; // 가짜 요청 객체 생성
req.locals.user = { id: 1, name: "국밥의 왕" };
req.body = {
title: "국밥",
content: "멋진 국밥",
photo1: "국밥1",
photo2: "국밥2",
photo3: "국밥3",
photo4: "국밥4",
};
router.post("/postView", async (req, res, next) => {
try {
const { id, name } = req.locals.user; //id = users 테이블의Id
const { title, content, photo1, photo2, photo3, photo4 } = req.body;
const post = await prisma.posts.create({
data: {
id: +id,
title,
author: name,
content,
},
});
const photos = await prisma.photos.create({
data: {
postId: +post.id,
photo1,
photo2,
photo3,
photo4,
},
});
return res.status(201).json({
message: "게시물 작성이 완료되었습니다.",
data: {
title: post.title,
author: post.author,
photo1: photos.photo1,
photo2: photos.photo2,
photo3: photos.photo3,
photo4: photos.photo4,
createdAt: post.createdAt,
},
});
} catch (error) {
next(error);
}
});
}
test("국밥", () => {
expect(postWrite()).toBe(
res.status(201).json({
message: "게시물 작성이 완료되었습니다.",
data: {
title: post.title,
author: post.author,
photo1: photos.photo1,
photo2: photos.photo2,
photo3: photos.photo3,
photo4: photos.photo4,
createdAt: post.createdAt,
},
})
);
});