@Transactional
    public long createReview(CreateReviewRequest request) {
        ReviewGroup reviewGroup = validateReviewGroupByRequestCode(request.reviewRequestCode());
        Template template = templateRepository.findById(reviewGroup.getTemplateId())
                .orElseThrow(() -> new TemplateNotFoundByReviewGroupException(
                        reviewGroup.getId(), reviewGroup.getTemplateId()));
        validateSubmittedQuestionsContainedInTemplate(reviewGroup.getTemplateId(), request);
        validateOnlyRequiredQuestionsSubmitted(template, request);

        return saveReview(request, reviewGroup);
    }
@Test
    void 적정_글자수인_텍스트_응답인_경우_정상_저장된다() {
        // given
        String reviewRequestCode = "0000";
        reviewGroupRepository.save(new ReviewGroup("리뷰어", "프로젝트", reviewRequestCode, "12341234"));
        Section section = sectionRepository.save(new Section(VisibleType.ALWAYS, List.of(1L), 1L, "섹션명", "말머리", 1));
        templateRepository.save(new Template(List.of(section.getId())));

        String expectedTextAnswer = "답".repeat(1000);
        Question savedQuestion = questionRepository.save(new Question(true, QuestionType.TEXT, "질문", "가이드라인", 1));
        CreateReviewAnswerRequest createReviewAnswerRequest = new CreateReviewAnswerRequest(savedQuestion.getId(), null,
                expectedTextAnswer);
        CreateReviewRequest createReviewRequest = new CreateReviewRequest(reviewRequestCode,
                List.of(createReviewAnswerRequest));

        // when
        createReviewService.createReview(createReviewRequest);

        // then
        assertThat(reviewRepository.findAll()).hasSize(1);
        assertThat(textAnswerRepository.findAll()).hasSize(1);
    }