diff --git a/docs/code-style/solid-connection-intellij-scheme.xml b/docs/code-style/solid-connection-intellij-scheme.xml new file mode 100644 index 000000000..3bcaefe90 --- /dev/null +++ b/docs/code-style/solid-connection-intellij-scheme.xml @@ -0,0 +1,595 @@ + + + + \ No newline at end of file diff --git a/src/main/java/com/example/solidconnection/admin/dto/GpaResponse.java b/src/main/java/com/example/solidconnection/admin/dto/GpaResponse.java index 564bc724b..36d66820d 100644 --- a/src/main/java/com/example/solidconnection/admin/dto/GpaResponse.java +++ b/src/main/java/com/example/solidconnection/admin/dto/GpaResponse.java @@ -5,4 +5,5 @@ public record GpaResponse( double gpaCriteria, String gpaReportUrl ) { + } diff --git a/src/main/java/com/example/solidconnection/admin/dto/GpaScoreResponse.java b/src/main/java/com/example/solidconnection/admin/dto/GpaScoreResponse.java index 7da28252a..524142feb 100644 --- a/src/main/java/com/example/solidconnection/admin/dto/GpaScoreResponse.java +++ b/src/main/java/com/example/solidconnection/admin/dto/GpaScoreResponse.java @@ -10,6 +10,7 @@ public record GpaScoreResponse( VerifyStatus verifyStatus, String rejectedReason ) { + public static GpaScoreResponse from(GpaScore gpaScore) { return new GpaScoreResponse( gpaScore.getId(), diff --git a/src/main/java/com/example/solidconnection/admin/dto/GpaScoreSearchResponse.java b/src/main/java/com/example/solidconnection/admin/dto/GpaScoreSearchResponse.java index 2da39fb88..30bf26469 100644 --- a/src/main/java/com/example/solidconnection/admin/dto/GpaScoreSearchResponse.java +++ b/src/main/java/com/example/solidconnection/admin/dto/GpaScoreSearchResponse.java @@ -4,4 +4,5 @@ public record GpaScoreSearchResponse( GpaScoreStatusResponse gpaScoreStatusResponse, SiteUserResponse siteUserResponse ) { + } diff --git a/src/main/java/com/example/solidconnection/admin/dto/GpaScoreStatusResponse.java b/src/main/java/com/example/solidconnection/admin/dto/GpaScoreStatusResponse.java index 379d5567a..00937eb2d 100644 --- a/src/main/java/com/example/solidconnection/admin/dto/GpaScoreStatusResponse.java +++ b/src/main/java/com/example/solidconnection/admin/dto/GpaScoreStatusResponse.java @@ -1,7 +1,6 @@ package com.example.solidconnection.admin.dto; import com.example.solidconnection.common.VerifyStatus; - import java.time.ZonedDateTime; public record GpaScoreStatusResponse( @@ -12,4 +11,5 @@ public record GpaScoreStatusResponse( ZonedDateTime createdAt, ZonedDateTime updatedAt ) { + } diff --git a/src/main/java/com/example/solidconnection/admin/dto/GpaScoreUpdateRequest.java b/src/main/java/com/example/solidconnection/admin/dto/GpaScoreUpdateRequest.java index 9393c1e7f..85d0d2472 100644 --- a/src/main/java/com/example/solidconnection/admin/dto/GpaScoreUpdateRequest.java +++ b/src/main/java/com/example/solidconnection/admin/dto/GpaScoreUpdateRequest.java @@ -1,7 +1,7 @@ package com.example.solidconnection.admin.dto; -import com.example.solidconnection.common.VerifyStatus; import com.example.solidconnection.application.dto.validation.RejectedReasonRequired; +import com.example.solidconnection.common.VerifyStatus; import jakarta.validation.constraints.NotNull; @RejectedReasonRequired @@ -18,4 +18,5 @@ public record GpaScoreUpdateRequest( String rejectedReason ) implements ScoreUpdateRequest { + } diff --git a/src/main/java/com/example/solidconnection/admin/dto/LanguageTestResponse.java b/src/main/java/com/example/solidconnection/admin/dto/LanguageTestResponse.java index 257b8fd6f..2740a03f3 100644 --- a/src/main/java/com/example/solidconnection/admin/dto/LanguageTestResponse.java +++ b/src/main/java/com/example/solidconnection/admin/dto/LanguageTestResponse.java @@ -7,4 +7,5 @@ public record LanguageTestResponse( String languageTestScore, String languageTestReportUrl ) { + } diff --git a/src/main/java/com/example/solidconnection/admin/dto/LanguageTestScoreResponse.java b/src/main/java/com/example/solidconnection/admin/dto/LanguageTestScoreResponse.java index f80f5e7cb..b8c2d2b73 100644 --- a/src/main/java/com/example/solidconnection/admin/dto/LanguageTestScoreResponse.java +++ b/src/main/java/com/example/solidconnection/admin/dto/LanguageTestScoreResponse.java @@ -11,6 +11,7 @@ public record LanguageTestScoreResponse( VerifyStatus verifyStatus, String rejectedReason ) { + public static LanguageTestScoreResponse from(LanguageTestScore languageTestScore) { return new LanguageTestScoreResponse( languageTestScore.getId(), diff --git a/src/main/java/com/example/solidconnection/admin/dto/LanguageTestScoreSearchResponse.java b/src/main/java/com/example/solidconnection/admin/dto/LanguageTestScoreSearchResponse.java index 0e1830f66..ba4e27a7d 100644 --- a/src/main/java/com/example/solidconnection/admin/dto/LanguageTestScoreSearchResponse.java +++ b/src/main/java/com/example/solidconnection/admin/dto/LanguageTestScoreSearchResponse.java @@ -4,4 +4,5 @@ public record LanguageTestScoreSearchResponse( LanguageTestScoreStatusResponse languageTestScoreStatusResponse, SiteUserResponse siteUserResponse ) { + } diff --git a/src/main/java/com/example/solidconnection/admin/dto/LanguageTestScoreStatusResponse.java b/src/main/java/com/example/solidconnection/admin/dto/LanguageTestScoreStatusResponse.java index d060e0661..b2bd29fb9 100644 --- a/src/main/java/com/example/solidconnection/admin/dto/LanguageTestScoreStatusResponse.java +++ b/src/main/java/com/example/solidconnection/admin/dto/LanguageTestScoreStatusResponse.java @@ -1,7 +1,6 @@ package com.example.solidconnection.admin.dto; import com.example.solidconnection.common.VerifyStatus; - import java.time.ZonedDateTime; public record LanguageTestScoreStatusResponse( @@ -12,4 +11,5 @@ public record LanguageTestScoreStatusResponse( ZonedDateTime createdAt, ZonedDateTime updatedAt ) { + } diff --git a/src/main/java/com/example/solidconnection/admin/dto/LanguageTestScoreUpdateRequest.java b/src/main/java/com/example/solidconnection/admin/dto/LanguageTestScoreUpdateRequest.java index 51af55f79..150cd02b7 100644 --- a/src/main/java/com/example/solidconnection/admin/dto/LanguageTestScoreUpdateRequest.java +++ b/src/main/java/com/example/solidconnection/admin/dto/LanguageTestScoreUpdateRequest.java @@ -1,7 +1,7 @@ package com.example.solidconnection.admin.dto; -import com.example.solidconnection.common.VerifyStatus; import com.example.solidconnection.application.dto.validation.RejectedReasonRequired; +import com.example.solidconnection.common.VerifyStatus; import com.example.solidconnection.university.domain.LanguageTestType; import jakarta.validation.constraints.NotNull; @@ -19,4 +19,5 @@ public record LanguageTestScoreUpdateRequest( String rejectedReason ) implements ScoreUpdateRequest { + } diff --git a/src/main/java/com/example/solidconnection/admin/dto/ScoreSearchCondition.java b/src/main/java/com/example/solidconnection/admin/dto/ScoreSearchCondition.java index d968af5b2..2efdb476b 100644 --- a/src/main/java/com/example/solidconnection/admin/dto/ScoreSearchCondition.java +++ b/src/main/java/com/example/solidconnection/admin/dto/ScoreSearchCondition.java @@ -1,11 +1,11 @@ package com.example.solidconnection.admin.dto; import com.example.solidconnection.common.VerifyStatus; - import java.time.LocalDate; public record ScoreSearchCondition( VerifyStatus verifyStatus, String nickname, LocalDate createdAt) { + } diff --git a/src/main/java/com/example/solidconnection/admin/dto/ScoreUpdateRequest.java b/src/main/java/com/example/solidconnection/admin/dto/ScoreUpdateRequest.java index 7299d6433..8e04b06de 100644 --- a/src/main/java/com/example/solidconnection/admin/dto/ScoreUpdateRequest.java +++ b/src/main/java/com/example/solidconnection/admin/dto/ScoreUpdateRequest.java @@ -3,6 +3,8 @@ import com.example.solidconnection.common.VerifyStatus; public interface ScoreUpdateRequest { + VerifyStatus verifyStatus(); + String rejectedReason(); } diff --git a/src/main/java/com/example/solidconnection/admin/dto/SiteUserResponse.java b/src/main/java/com/example/solidconnection/admin/dto/SiteUserResponse.java index 1b62f262f..0b6d23816 100644 --- a/src/main/java/com/example/solidconnection/admin/dto/SiteUserResponse.java +++ b/src/main/java/com/example/solidconnection/admin/dto/SiteUserResponse.java @@ -5,4 +5,5 @@ public record SiteUserResponse( String nickname, String profileImageUrl ) { + } diff --git a/src/main/java/com/example/solidconnection/admin/service/AdminGpaScoreService.java b/src/main/java/com/example/solidconnection/admin/service/AdminGpaScoreService.java index 2f954d910..717f2a963 100644 --- a/src/main/java/com/example/solidconnection/admin/service/AdminGpaScoreService.java +++ b/src/main/java/com/example/solidconnection/admin/service/AdminGpaScoreService.java @@ -1,5 +1,7 @@ package com.example.solidconnection.admin.service; +import static com.example.solidconnection.common.exception.ErrorCode.GPA_SCORE_NOT_FOUND; + import com.example.solidconnection.admin.dto.GpaScoreResponse; import com.example.solidconnection.admin.dto.GpaScoreSearchResponse; import com.example.solidconnection.admin.dto.GpaScoreUpdateRequest; @@ -15,8 +17,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import static com.example.solidconnection.common.exception.ErrorCode.GPA_SCORE_NOT_FOUND; - @RequiredArgsConstructor @Service public class AdminGpaScoreService { diff --git a/src/main/java/com/example/solidconnection/admin/service/AdminLanguageTestScoreService.java b/src/main/java/com/example/solidconnection/admin/service/AdminLanguageTestScoreService.java index b8770caa5..0aa4a859d 100644 --- a/src/main/java/com/example/solidconnection/admin/service/AdminLanguageTestScoreService.java +++ b/src/main/java/com/example/solidconnection/admin/service/AdminLanguageTestScoreService.java @@ -1,5 +1,7 @@ package com.example.solidconnection.admin.service; +import static com.example.solidconnection.common.exception.ErrorCode.LANGUAGE_TEST_SCORE_NOT_FOUND; + import com.example.solidconnection.admin.dto.LanguageTestScoreResponse; import com.example.solidconnection.admin.dto.LanguageTestScoreSearchResponse; import com.example.solidconnection.admin.dto.LanguageTestScoreUpdateRequest; @@ -15,8 +17,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import static com.example.solidconnection.common.exception.ErrorCode.LANGUAGE_TEST_SCORE_NOT_FOUND; - @RequiredArgsConstructor @Service public class AdminLanguageTestScoreService { diff --git a/src/main/java/com/example/solidconnection/application/domain/Application.java b/src/main/java/com/example/solidconnection/application/domain/Application.java index 32c7a971c..db830ed0a 100644 --- a/src/main/java/com/example/solidconnection/application/domain/Application.java +++ b/src/main/java/com/example/solidconnection/application/domain/Application.java @@ -1,5 +1,7 @@ package com.example.solidconnection.application.domain; +import static com.example.solidconnection.common.VerifyStatus.PENDING; + import com.example.solidconnection.common.VerifyStatus; import com.example.solidconnection.siteuser.domain.SiteUser; import jakarta.persistence.Column; @@ -18,8 +20,6 @@ import org.hibernate.annotations.DynamicInsert; import org.hibernate.annotations.DynamicUpdate; -import static com.example.solidconnection.common.VerifyStatus.PENDING; - @Getter @NoArgsConstructor(access = lombok.AccessLevel.PROTECTED) @DynamicUpdate @@ -48,23 +48,23 @@ public class Application { private LanguageTest languageTest; @Setter - @Column(columnDefinition = "varchar(50) not null default 'PENDING'", name="verify_status") + @Column(columnDefinition = "varchar(50) not null default 'PENDING'", name = "verify_status") @Enumerated(EnumType.STRING) private VerifyStatus verifyStatus; - @Column(length = 100, name="nickname_for_apply") + @Column(length = 100, name = "nickname_for_apply") private String nicknameForApply; - @Column(columnDefinition = "int not null default 1", name="update_count") + @Column(columnDefinition = "int not null default 1", name = "update_count") private Integer updateCount; - @Column(length = 50, nullable = false, name="term") + @Column(length = 50, nullable = false, name = "term") private String term; - @Column(name="is_delete") + @Column(name = "is_delete") private boolean isDelete = false; - @Column(nullable = false , name = "first_choice_university_info_for_apply_id") + @Column(nullable = false, name = "first_choice_university_info_for_apply_id") private long firstChoiceUnivApplyInfoId; @Column(name = "second_choice_university_info_for_apply_id") diff --git a/src/main/java/com/example/solidconnection/application/dto/ApplicantsResponse.java b/src/main/java/com/example/solidconnection/application/dto/ApplicantsResponse.java index b92f699a7..fdb9c357c 100644 --- a/src/main/java/com/example/solidconnection/application/dto/ApplicantsResponse.java +++ b/src/main/java/com/example/solidconnection/application/dto/ApplicantsResponse.java @@ -3,7 +3,6 @@ import com.example.solidconnection.application.domain.Application; import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.university.domain.UnivApplyInfo; - import java.util.List; import java.util.Objects; @@ -13,6 +12,7 @@ public record ApplicantsResponse( String region, String country, List applicants) { + public static ApplicantsResponse of(UnivApplyInfo univApplyInfo, List applications, SiteUser siteUser) { return new ApplicantsResponse( univApplyInfo.getKoreanName(), @@ -20,8 +20,8 @@ public static ApplicantsResponse of(UnivApplyInfo univApplyInfo, List ApplicantResponse.of(application, isUsers(application, siteUser))) - .toList()); + .map(application -> ApplicantResponse.of(application, isUsers(application, siteUser))) + .toList()); } private static boolean isUsers(Application application, SiteUser siteUser) { diff --git a/src/main/java/com/example/solidconnection/application/dto/ApplicationSubmissionResponse.java b/src/main/java/com/example/solidconnection/application/dto/ApplicationSubmissionResponse.java index e90994c37..a2636c135 100644 --- a/src/main/java/com/example/solidconnection/application/dto/ApplicationSubmissionResponse.java +++ b/src/main/java/com/example/solidconnection/application/dto/ApplicationSubmissionResponse.java @@ -5,6 +5,7 @@ public record ApplicationSubmissionResponse( int applyCount ) { + public static ApplicationSubmissionResponse from(Application application) { return new ApplicationSubmissionResponse(application.getUpdateCount()); } diff --git a/src/main/java/com/example/solidconnection/application/dto/ApplicationsResponse.java b/src/main/java/com/example/solidconnection/application/dto/ApplicationsResponse.java index 13c641bb0..657c7c2c3 100644 --- a/src/main/java/com/example/solidconnection/application/dto/ApplicationsResponse.java +++ b/src/main/java/com/example/solidconnection/application/dto/ApplicationsResponse.java @@ -6,4 +6,5 @@ public record ApplicationsResponse( List firstChoice, List secondChoice, List thirdChoice) { + } diff --git a/src/main/java/com/example/solidconnection/application/dto/ApplyRequest.java b/src/main/java/com/example/solidconnection/application/dto/ApplyRequest.java index cab079b21..c50252c00 100644 --- a/src/main/java/com/example/solidconnection/application/dto/ApplyRequest.java +++ b/src/main/java/com/example/solidconnection/application/dto/ApplyRequest.java @@ -16,4 +16,5 @@ public record ApplyRequest( @JsonProperty("universityChoiceRequest") UnivApplyInfoChoiceRequest univApplyInfoChoiceRequest ) { + } diff --git a/src/main/java/com/example/solidconnection/application/dto/UnivApplyInfoChoiceRequest.java b/src/main/java/com/example/solidconnection/application/dto/UnivApplyInfoChoiceRequest.java index 9598a191b..449b1ca2c 100644 --- a/src/main/java/com/example/solidconnection/application/dto/UnivApplyInfoChoiceRequest.java +++ b/src/main/java/com/example/solidconnection/application/dto/UnivApplyInfoChoiceRequest.java @@ -14,4 +14,5 @@ public record UnivApplyInfoChoiceRequest( @JsonProperty("thirdChoiceUniversityId") Long thirdChoiceUnivApplyInfoId) { + } diff --git a/src/main/java/com/example/solidconnection/application/dto/validation/RejectedReasonRequired.java b/src/main/java/com/example/solidconnection/application/dto/validation/RejectedReasonRequired.java index 281be235b..7f00291ba 100644 --- a/src/main/java/com/example/solidconnection/application/dto/validation/RejectedReasonRequired.java +++ b/src/main/java/com/example/solidconnection/application/dto/validation/RejectedReasonRequired.java @@ -2,7 +2,6 @@ import jakarta.validation.Constraint; import jakarta.validation.Payload; - import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -14,6 +13,8 @@ public @interface RejectedReasonRequired { String message() default "거절 사유 입력값이 올바르지 않습니다."; + Class[] groups() default {}; + Class[] payload() default {}; } diff --git a/src/main/java/com/example/solidconnection/application/dto/validation/RejectedReasonValidator.java b/src/main/java/com/example/solidconnection/application/dto/validation/RejectedReasonValidator.java index 4b43673f3..85e6ecc78 100644 --- a/src/main/java/com/example/solidconnection/application/dto/validation/RejectedReasonValidator.java +++ b/src/main/java/com/example/solidconnection/application/dto/validation/RejectedReasonValidator.java @@ -1,13 +1,13 @@ package com.example.solidconnection.application.dto.validation; +import static com.example.solidconnection.common.exception.ErrorCode.REJECTED_REASON_REQUIRED; + import com.example.solidconnection.admin.dto.ScoreUpdateRequest; import com.example.solidconnection.common.VerifyStatus; import io.micrometer.common.util.StringUtils; import jakarta.validation.ConstraintValidator; import jakarta.validation.ConstraintValidatorContext; -import static com.example.solidconnection.common.exception.ErrorCode.REJECTED_REASON_REQUIRED; - public class RejectedReasonValidator implements ConstraintValidator { private static final String REJECTED_REASON = "rejectedReason"; diff --git a/src/main/java/com/example/solidconnection/application/repository/ApplicationRepository.java b/src/main/java/com/example/solidconnection/application/repository/ApplicationRepository.java index 54cb93ada..3916f37db 100644 --- a/src/main/java/com/example/solidconnection/application/repository/ApplicationRepository.java +++ b/src/main/java/com/example/solidconnection/application/repository/ApplicationRepository.java @@ -1,40 +1,39 @@ package com.example.solidconnection.application.repository; +import static com.example.solidconnection.common.exception.ErrorCode.APPLICATION_NOT_FOUND; + import com.example.solidconnection.application.domain.Application; import com.example.solidconnection.common.VerifyStatus; import com.example.solidconnection.common.exception.CustomException; +import java.util.List; +import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; -import java.util.List; -import java.util.Optional; - -import static com.example.solidconnection.common.exception.ErrorCode.APPLICATION_NOT_FOUND; - public interface ApplicationRepository extends JpaRepository { boolean existsByNicknameForApply(String nicknameForApply); @Query(""" - SELECT a - FROM Application a - WHERE (a.firstChoiceUnivApplyInfoId IN :univApplyInfoIds - OR a.secondChoiceUnivApplyInfoId IN :univApplyInfoIds - OR a.thirdChoiceUnivApplyInfoId IN :univApplyInfoIds) - AND a.verifyStatus = :status - AND a.term = :term - AND a.isDelete = false - """) + SELECT a + FROM Application a + WHERE (a.firstChoiceUnivApplyInfoId IN :univApplyInfoIds + OR a.secondChoiceUnivApplyInfoId IN :univApplyInfoIds + OR a.thirdChoiceUnivApplyInfoId IN :univApplyInfoIds) + AND a.verifyStatus = :status + AND a.term = :term + AND a.isDelete = false + """) List findAllByUnivApplyInfoIds(@Param("univApplyInfoIds") List univApplyInfoIds, @Param("status") VerifyStatus status, @Param("term") String term); @Query(""" - SELECT a - FROM Application a - WHERE a.siteUserId = :siteUserId - AND a.term = :term - AND a.isDelete = false - """) + SELECT a + FROM Application a + WHERE a.siteUserId = :siteUserId + AND a.term = :term + AND a.isDelete = false + """) Optional findBySiteUserIdAndTerm(@Param("siteUserId") long siteUserId, @Param("term") String term); default Application getApplicationBySiteUserIdAndTerm(long siteUserId, String term) { diff --git a/src/main/java/com/example/solidconnection/application/service/ApplicationQueryService.java b/src/main/java/com/example/solidconnection/application/service/ApplicationQueryService.java index f3dbc827c..9b34bdbc5 100644 --- a/src/main/java/com/example/solidconnection/application/service/ApplicationQueryService.java +++ b/src/main/java/com/example/solidconnection/application/service/ApplicationQueryService.java @@ -1,20 +1,17 @@ package com.example.solidconnection.application.service; +import static com.example.solidconnection.common.exception.ErrorCode.APPLICATION_NOT_APPROVED; + import com.example.solidconnection.application.domain.Application; -import com.example.solidconnection.common.VerifyStatus; -import com.example.solidconnection.application.dto.ApplicationsResponse; import com.example.solidconnection.application.dto.ApplicantsResponse; +import com.example.solidconnection.application.dto.ApplicationsResponse; import com.example.solidconnection.application.repository.ApplicationRepository; +import com.example.solidconnection.common.VerifyStatus; import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.university.domain.UnivApplyInfo; import com.example.solidconnection.university.repository.UnivApplyInfoRepository; import com.example.solidconnection.university.repository.custom.UnivApplyInfoFilterRepositoryImpl; -import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -23,8 +20,10 @@ import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; - -import static com.example.solidconnection.common.exception.ErrorCode.APPLICATION_NOT_APPROVED; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; @RequiredArgsConstructor @Service diff --git a/src/main/java/com/example/solidconnection/application/service/ApplicationSubmissionService.java b/src/main/java/com/example/solidconnection/application/service/ApplicationSubmissionService.java index e811a48a0..02c096529 100644 --- a/src/main/java/com/example/solidconnection/application/service/ApplicationSubmissionService.java +++ b/src/main/java/com/example/solidconnection/application/service/ApplicationSubmissionService.java @@ -1,30 +1,29 @@ package com.example.solidconnection.application.service; +import static com.example.solidconnection.common.exception.ErrorCode.APPLY_UPDATE_LIMIT_EXCEED; +import static com.example.solidconnection.common.exception.ErrorCode.GPA_SCORE_NOT_FOUND; +import static com.example.solidconnection.common.exception.ErrorCode.INVALID_GPA_SCORE_STATUS; +import static com.example.solidconnection.common.exception.ErrorCode.INVALID_LANGUAGE_TEST_SCORE; +import static com.example.solidconnection.common.exception.ErrorCode.INVALID_LANGUAGE_TEST_SCORE_STATUS; + import com.example.solidconnection.application.domain.Application; -import com.example.solidconnection.common.VerifyStatus; import com.example.solidconnection.application.dto.ApplicationSubmissionResponse; import com.example.solidconnection.application.dto.ApplyRequest; import com.example.solidconnection.application.dto.UnivApplyInfoChoiceRequest; import com.example.solidconnection.application.repository.ApplicationRepository; +import com.example.solidconnection.common.VerifyStatus; import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.score.domain.GpaScore; import com.example.solidconnection.score.domain.LanguageTestScore; import com.example.solidconnection.score.repository.GpaScoreRepository; import com.example.solidconnection.score.repository.LanguageTestScoreRepository; import com.example.solidconnection.siteuser.domain.SiteUser; +import java.util.Optional; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Optional; - -import static com.example.solidconnection.common.exception.ErrorCode.APPLY_UPDATE_LIMIT_EXCEED; -import static com.example.solidconnection.common.exception.ErrorCode.GPA_SCORE_NOT_FOUND; -import static com.example.solidconnection.common.exception.ErrorCode.INVALID_GPA_SCORE_STATUS; -import static com.example.solidconnection.common.exception.ErrorCode.INVALID_LANGUAGE_TEST_SCORE; -import static com.example.solidconnection.common.exception.ErrorCode.INVALID_LANGUAGE_TEST_SCORE_STATUS; - @RequiredArgsConstructor @Service public class ApplicationSubmissionService { diff --git a/src/main/java/com/example/solidconnection/application/service/NicknameCreator.java b/src/main/java/com/example/solidconnection/application/service/NicknameCreator.java index d9243ce39..c9699d4dc 100644 --- a/src/main/java/com/example/solidconnection/application/service/NicknameCreator.java +++ b/src/main/java/com/example/solidconnection/application/service/NicknameCreator.java @@ -1,10 +1,9 @@ package com.example.solidconnection.application.service; -import lombok.NoArgsConstructor; - import java.util.List; import java.util.Random; import java.util.Set; +import lombok.NoArgsConstructor; @NoArgsConstructor(access = lombok.AccessLevel.PRIVATE) class NicknameCreator { diff --git a/src/main/java/com/example/solidconnection/auth/client/AppleOAuthClient.java b/src/main/java/com/example/solidconnection/auth/client/AppleOAuthClient.java index 733eb5700..41c4eec4e 100644 --- a/src/main/java/com/example/solidconnection/auth/client/AppleOAuthClient.java +++ b/src/main/java/com/example/solidconnection/auth/client/AppleOAuthClient.java @@ -1,10 +1,15 @@ package com.example.solidconnection.auth.client; +import static com.example.solidconnection.common.exception.ErrorCode.APPLE_AUTHORIZATION_FAILED; +import static com.example.solidconnection.common.exception.ErrorCode.INVALID_APPLE_ID_TOKEN; + import com.example.solidconnection.auth.client.config.AppleOAuthClientProperties; import com.example.solidconnection.auth.dto.oauth.AppleTokenDto; import com.example.solidconnection.auth.dto.oauth.AppleUserInfoDto; import com.example.solidconnection.common.exception.CustomException; import io.jsonwebtoken.Jwts; +import java.security.PublicKey; +import java.util.Objects; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; @@ -16,12 +21,6 @@ import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; -import java.security.PublicKey; -import java.util.Objects; - -import static com.example.solidconnection.common.exception.ErrorCode.APPLE_AUTHORIZATION_FAILED; -import static com.example.solidconnection.common.exception.ErrorCode.INVALID_APPLE_ID_TOKEN; - /* * 애플 인증을 위한 OAuth2 클라이언트 * https://developer.apple.com/documentation/signinwithapplerestapi/generate_and_validate_tokens diff --git a/src/main/java/com/example/solidconnection/auth/client/AppleOAuthClientSecretProvider.java b/src/main/java/com/example/solidconnection/auth/client/AppleOAuthClientSecretProvider.java index 6bdd6a5fb..a5a5cd315 100644 --- a/src/main/java/com/example/solidconnection/auth/client/AppleOAuthClientSecretProvider.java +++ b/src/main/java/com/example/solidconnection/auth/client/AppleOAuthClientSecretProvider.java @@ -1,22 +1,21 @@ package com.example.solidconnection.auth.client; +import static com.example.solidconnection.common.exception.ErrorCode.FAILED_TO_READ_APPLE_PRIVATE_KEY; + import com.example.solidconnection.auth.client.config.AppleOAuthClientProperties; import com.example.solidconnection.common.exception.CustomException; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import jakarta.annotation.PostConstruct; -import lombok.RequiredArgsConstructor; -import org.apache.tomcat.util.codec.binary.Base64; -import org.springframework.stereotype.Component; - import java.security.KeyFactory; import java.security.NoSuchAlgorithmException; import java.security.PrivateKey; import java.security.spec.InvalidKeySpecException; import java.security.spec.PKCS8EncodedKeySpec; import java.util.Date; - -import static com.example.solidconnection.common.exception.ErrorCode.FAILED_TO_READ_APPLE_PRIVATE_KEY; +import lombok.RequiredArgsConstructor; +import org.apache.tomcat.util.codec.binary.Base64; +import org.springframework.stereotype.Component; /* * 애플 OAuth 에 필요한 클라이언트 시크릿은 매번 동적으로 생성해야 한다. diff --git a/src/main/java/com/example/solidconnection/auth/client/ApplePublicKeyProvider.java b/src/main/java/com/example/solidconnection/auth/client/ApplePublicKeyProvider.java index 0fe6b9700..0b0aaa7d0 100644 --- a/src/main/java/com/example/solidconnection/auth/client/ApplePublicKeyProvider.java +++ b/src/main/java/com/example/solidconnection/auth/client/ApplePublicKeyProvider.java @@ -1,16 +1,16 @@ package com.example.solidconnection.auth.client; +import static com.example.solidconnection.common.exception.ErrorCode.APPLE_ID_TOKEN_EXPIRED; +import static com.example.solidconnection.common.exception.ErrorCode.APPLE_PUBLIC_KEY_NOT_FOUND; +import static com.example.solidconnection.common.exception.ErrorCode.INVALID_APPLE_ID_TOKEN; +import static org.apache.tomcat.util.codec.binary.Base64.decodeBase64URLSafe; + import com.example.solidconnection.auth.client.config.AppleOAuthClientProperties; import com.example.solidconnection.common.exception.CustomException; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import io.jsonwebtoken.ExpiredJwtException; -import lombok.RequiredArgsConstructor; -import org.springframework.http.ResponseEntity; -import org.springframework.stereotype.Component; -import org.springframework.web.client.RestTemplate; - import java.math.BigInteger; import java.nio.charset.StandardCharsets; import java.security.KeyFactory; @@ -19,19 +19,18 @@ import java.util.Base64; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; - -import static com.example.solidconnection.common.exception.ErrorCode.APPLE_ID_TOKEN_EXPIRED; -import static com.example.solidconnection.common.exception.ErrorCode.APPLE_PUBLIC_KEY_NOT_FOUND; -import static com.example.solidconnection.common.exception.ErrorCode.INVALID_APPLE_ID_TOKEN; -import static org.apache.tomcat.util.codec.binary.Base64.decodeBase64URLSafe; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Component; +import org.springframework.web.client.RestTemplate; /* -* idToken 검증을 위해서 애플의 공개키를 가져온다. -* - 애플 공개키는 주기적으로 바뀐다. 이를 효율적으로 관리하기 위해 캐싱한다. -* - idToken 의 헤더에 있는 kid 값에 해당하는 키가 캐싱되어있으면 그것을 반환한다. -* - 그렇지 않다면 공개키가 바뀌었다는 뜻이므로, JSON 형식의 공개키 목록을 받아오고 캐시를 갱신한다. -* https://developer.apple.com/documentation/signinwithapplerestapi/fetch_apple_s_public_key_for_verifying_token_signature -* */ + * idToken 검증을 위해서 애플의 공개키를 가져온다. + * - 애플 공개키는 주기적으로 바뀐다. 이를 효율적으로 관리하기 위해 캐싱한다. + * - idToken 의 헤더에 있는 kid 값에 해당하는 키가 캐싱되어있으면 그것을 반환한다. + * - 그렇지 않다면 공개키가 바뀌었다는 뜻이므로, JSON 형식의 공개키 목록을 받아오고 캐시를 갱신한다. + * https://developer.apple.com/documentation/signinwithapplerestapi/fetch_apple_s_public_key_for_verifying_token_signature + * */ @Component @RequiredArgsConstructor public class ApplePublicKeyProvider { @@ -62,9 +61,9 @@ public PublicKey getApplePublicKey(String idToken) { } /* - * idToken 은 JWS 이므로, 원칙적으로는 서명까지 검증되어야 parsing 이 가능하다 - * 하지만 이 시점에서는 서명(=공개키)을 알 수 없으므로, Jwt 를 직접 인코딩하여 헤더를 가져온다. - * */ + * idToken 은 JWS 이므로, 원칙적으로는 서명까지 검증되어야 parsing 이 가능하다 + * 하지만 이 시점에서는 서명(=공개키)을 알 수 없으므로, Jwt 를 직접 인코딩하여 헤더를 가져온다. + * */ private String getKeyIdFromTokenHeader(String idToken) throws JsonProcessingException { String[] jwtParts = idToken.split("\\."); if (jwtParts.length < 2) { diff --git a/src/main/java/com/example/solidconnection/auth/client/KakaoOAuthClient.java b/src/main/java/com/example/solidconnection/auth/client/KakaoOAuthClient.java index 9539116aa..eb30746b4 100644 --- a/src/main/java/com/example/solidconnection/auth/client/KakaoOAuthClient.java +++ b/src/main/java/com/example/solidconnection/auth/client/KakaoOAuthClient.java @@ -1,9 +1,14 @@ package com.example.solidconnection.auth.client; +import static com.example.solidconnection.common.exception.ErrorCode.INVALID_OR_EXPIRED_KAKAO_AUTH_CODE; +import static com.example.solidconnection.common.exception.ErrorCode.KAKAO_REDIRECT_URI_MISMATCH; +import static com.example.solidconnection.common.exception.ErrorCode.KAKAO_USER_INFO_FAIL; + import com.example.solidconnection.auth.client.config.KakaoOAuthClientProperties; import com.example.solidconnection.auth.dto.oauth.KakaoTokenDto; import com.example.solidconnection.auth.dto.oauth.KakaoUserInfoDto; import com.example.solidconnection.common.exception.CustomException; +import java.util.Objects; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; @@ -14,12 +19,6 @@ import org.springframework.web.client.RestTemplate; import org.springframework.web.util.UriComponentsBuilder; -import java.util.Objects; - -import static com.example.solidconnection.common.exception.ErrorCode.INVALID_OR_EXPIRED_KAKAO_AUTH_CODE; -import static com.example.solidconnection.common.exception.ErrorCode.KAKAO_REDIRECT_URI_MISMATCH; -import static com.example.solidconnection.common.exception.ErrorCode.KAKAO_USER_INFO_FAIL; - /* * 카카오 인증을 위한 OAuth2 클라이언트 * https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api#request-code diff --git a/src/main/java/com/example/solidconnection/auth/client/config/AppleOAuthClientProperties.java b/src/main/java/com/example/solidconnection/auth/client/config/AppleOAuthClientProperties.java index ae62d3561..3ff927a03 100644 --- a/src/main/java/com/example/solidconnection/auth/client/config/AppleOAuthClientProperties.java +++ b/src/main/java/com/example/solidconnection/auth/client/config/AppleOAuthClientProperties.java @@ -13,4 +13,5 @@ public record AppleOAuthClientProperties( String keyId, String secretKey ) { + } diff --git a/src/main/java/com/example/solidconnection/auth/client/config/KakaoOAuthClientProperties.java b/src/main/java/com/example/solidconnection/auth/client/config/KakaoOAuthClientProperties.java index f9a476e6a..36dcdaec1 100644 --- a/src/main/java/com/example/solidconnection/auth/client/config/KakaoOAuthClientProperties.java +++ b/src/main/java/com/example/solidconnection/auth/client/config/KakaoOAuthClientProperties.java @@ -9,4 +9,5 @@ public record KakaoOAuthClientProperties( String redirectUrl, String clientId ) { + } diff --git a/src/main/java/com/example/solidconnection/auth/dto/EmailSignInRequest.java b/src/main/java/com/example/solidconnection/auth/dto/EmailSignInRequest.java index 306a8185a..925fb62cd 100644 --- a/src/main/java/com/example/solidconnection/auth/dto/EmailSignInRequest.java +++ b/src/main/java/com/example/solidconnection/auth/dto/EmailSignInRequest.java @@ -10,4 +10,5 @@ public record EmailSignInRequest( @NotBlank(message = "비밀번호를 입력해주세요.") String password ) { + } diff --git a/src/main/java/com/example/solidconnection/auth/dto/EmailSignUpTokenRequest.java b/src/main/java/com/example/solidconnection/auth/dto/EmailSignUpTokenRequest.java index 92073b434..52e50e5b2 100644 --- a/src/main/java/com/example/solidconnection/auth/dto/EmailSignUpTokenRequest.java +++ b/src/main/java/com/example/solidconnection/auth/dto/EmailSignUpTokenRequest.java @@ -11,4 +11,5 @@ public record EmailSignUpTokenRequest( @NotBlank(message = "비밀번호를 입력해주세요.") String password ) { + } diff --git a/src/main/java/com/example/solidconnection/auth/dto/EmailSignUpTokenResponse.java b/src/main/java/com/example/solidconnection/auth/dto/EmailSignUpTokenResponse.java index c8e983d0c..d056da89b 100644 --- a/src/main/java/com/example/solidconnection/auth/dto/EmailSignUpTokenResponse.java +++ b/src/main/java/com/example/solidconnection/auth/dto/EmailSignUpTokenResponse.java @@ -3,4 +3,5 @@ public record EmailSignUpTokenResponse( String signUpToken ) { + } diff --git a/src/main/java/com/example/solidconnection/auth/dto/ReissueRequest.java b/src/main/java/com/example/solidconnection/auth/dto/ReissueRequest.java index 00443255d..417ed32b0 100644 --- a/src/main/java/com/example/solidconnection/auth/dto/ReissueRequest.java +++ b/src/main/java/com/example/solidconnection/auth/dto/ReissueRequest.java @@ -5,4 +5,5 @@ public record ReissueRequest( @NotBlank(message = "리프레시 토큰과 함께 요청해주세요.") String refreshToken) { + } diff --git a/src/main/java/com/example/solidconnection/auth/dto/SignUpRequest.java b/src/main/java/com/example/solidconnection/auth/dto/SignUpRequest.java index 8f72d25da..bafb9b4c8 100644 --- a/src/main/java/com/example/solidconnection/auth/dto/SignUpRequest.java +++ b/src/main/java/com/example/solidconnection/auth/dto/SignUpRequest.java @@ -6,7 +6,6 @@ import com.example.solidconnection.siteuser.domain.SiteUser; import com.fasterxml.jackson.annotation.JsonProperty; import jakarta.validation.constraints.NotBlank; - import java.util.List; public record SignUpRequest( diff --git a/src/main/java/com/example/solidconnection/auth/dto/oauth/AppleTokenDto.java b/src/main/java/com/example/solidconnection/auth/dto/oauth/AppleTokenDto.java index 6772cb2c2..019066c81 100644 --- a/src/main/java/com/example/solidconnection/auth/dto/oauth/AppleTokenDto.java +++ b/src/main/java/com/example/solidconnection/auth/dto/oauth/AppleTokenDto.java @@ -7,4 +7,5 @@ public record AppleTokenDto( @JsonProperty("id_token") String idToken ) { + } diff --git a/src/main/java/com/example/solidconnection/auth/dto/oauth/AppleUserInfoDto.java b/src/main/java/com/example/solidconnection/auth/dto/oauth/AppleUserInfoDto.java index 5c4363e51..5e95c2a5d 100644 --- a/src/main/java/com/example/solidconnection/auth/dto/oauth/AppleUserInfoDto.java +++ b/src/main/java/com/example/solidconnection/auth/dto/oauth/AppleUserInfoDto.java @@ -1,10 +1,10 @@ package com.example.solidconnection.auth.dto.oauth; /* -* 애플로부터 사용자의 정보를 받아올 때 사용한다. -* 카카오와 달리 애플은 더 엄격하게 사용자 정보를 관리하여, 이름이나 프로필 이미지 url 을 제공하지 않는다. -* 따라서 닉네임, 프로필 정보는 null 을 반환한다. -* */ + * 애플로부터 사용자의 정보를 받아올 때 사용한다. + * 카카오와 달리 애플은 더 엄격하게 사용자 정보를 관리하여, 이름이나 프로필 이미지 url 을 제공하지 않는다. + * 따라서 닉네임, 프로필 정보는 null 을 반환한다. + * */ public record AppleUserInfoDto(String email) implements OAuthUserInfoDto { @Override diff --git a/src/main/java/com/example/solidconnection/auth/dto/oauth/KakaoTokenDto.java b/src/main/java/com/example/solidconnection/auth/dto/oauth/KakaoTokenDto.java index 6d4ccd10c..0663573b1 100644 --- a/src/main/java/com/example/solidconnection/auth/dto/oauth/KakaoTokenDto.java +++ b/src/main/java/com/example/solidconnection/auth/dto/oauth/KakaoTokenDto.java @@ -7,4 +7,5 @@ public record KakaoTokenDto( @JsonProperty("access_token") String accessToken, @JsonProperty("refresh_token") String refreshToken) { + } diff --git a/src/main/java/com/example/solidconnection/auth/dto/oauth/OAuthCodeRequest.java b/src/main/java/com/example/solidconnection/auth/dto/oauth/OAuthCodeRequest.java index abbdb7802..5ecdf7cca 100644 --- a/src/main/java/com/example/solidconnection/auth/dto/oauth/OAuthCodeRequest.java +++ b/src/main/java/com/example/solidconnection/auth/dto/oauth/OAuthCodeRequest.java @@ -6,4 +6,5 @@ public record OAuthCodeRequest( @NotBlank(message = "인증 코드를 입력해주세요.") String code) { + } diff --git a/src/main/java/com/example/solidconnection/auth/dto/oauth/OAuthResponse.java b/src/main/java/com/example/solidconnection/auth/dto/oauth/OAuthResponse.java index ddbe121f7..5fbb0fd0d 100644 --- a/src/main/java/com/example/solidconnection/auth/dto/oauth/OAuthResponse.java +++ b/src/main/java/com/example/solidconnection/auth/dto/oauth/OAuthResponse.java @@ -1,4 +1,5 @@ package com.example.solidconnection.auth.dto.oauth; public interface OAuthResponse { + } diff --git a/src/main/java/com/example/solidconnection/auth/dto/oauth/OAuthSignInResponse.java b/src/main/java/com/example/solidconnection/auth/dto/oauth/OAuthSignInResponse.java index 8ad429876..6ac121c46 100644 --- a/src/main/java/com/example/solidconnection/auth/dto/oauth/OAuthSignInResponse.java +++ b/src/main/java/com/example/solidconnection/auth/dto/oauth/OAuthSignInResponse.java @@ -4,4 +4,5 @@ public record OAuthSignInResponse( boolean isRegistered, String accessToken, String refreshToken) implements OAuthResponse { + } diff --git a/src/main/java/com/example/solidconnection/auth/service/AuthService.java b/src/main/java/com/example/solidconnection/auth/service/AuthService.java index 6053e8716..d487d39e8 100644 --- a/src/main/java/com/example/solidconnection/auth/service/AuthService.java +++ b/src/main/java/com/example/solidconnection/auth/service/AuthService.java @@ -1,18 +1,17 @@ package com.example.solidconnection.auth.service; +import static com.example.solidconnection.common.exception.ErrorCode.REFRESH_TOKEN_EXPIRED; + import com.example.solidconnection.auth.dto.ReissueRequest; import com.example.solidconnection.auth.dto.ReissueResponse; import com.example.solidconnection.auth.token.TokenBlackListService; import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.siteuser.domain.SiteUser; +import java.time.LocalDate; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.time.LocalDate; - -import static com.example.solidconnection.common.exception.ErrorCode.REFRESH_TOKEN_EXPIRED; - @RequiredArgsConstructor @Service public class AuthService { diff --git a/src/main/java/com/example/solidconnection/auth/service/AuthTokenProvider.java b/src/main/java/com/example/solidconnection/auth/service/AuthTokenProvider.java index 2ff3e5650..f15a3e7b4 100644 --- a/src/main/java/com/example/solidconnection/auth/service/AuthTokenProvider.java +++ b/src/main/java/com/example/solidconnection/auth/service/AuthTokenProvider.java @@ -2,12 +2,11 @@ import com.example.solidconnection.auth.domain.TokenType; import com.example.solidconnection.siteuser.domain.SiteUser; +import java.util.Objects; import lombok.RequiredArgsConstructor; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; -import java.util.Objects; - @Component @RequiredArgsConstructor public class AuthTokenProvider { diff --git a/src/main/java/com/example/solidconnection/auth/service/CommonSignUpTokenProvider.java b/src/main/java/com/example/solidconnection/auth/service/CommonSignUpTokenProvider.java index d1ebe3b52..c6930315b 100644 --- a/src/main/java/com/example/solidconnection/auth/service/CommonSignUpTokenProvider.java +++ b/src/main/java/com/example/solidconnection/auth/service/CommonSignUpTokenProvider.java @@ -1,13 +1,13 @@ package com.example.solidconnection.auth.service; +import static com.example.solidconnection.auth.service.EmailSignUpTokenProvider.AUTH_TYPE_CLAIM_KEY; +import static com.example.solidconnection.common.exception.ErrorCode.SIGN_UP_TOKEN_INVALID; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.siteuser.domain.AuthType; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; -import static com.example.solidconnection.auth.service.EmailSignUpTokenProvider.AUTH_TYPE_CLAIM_KEY; -import static com.example.solidconnection.common.exception.ErrorCode.SIGN_UP_TOKEN_INVALID; - @Component @RequiredArgsConstructor public class CommonSignUpTokenProvider { diff --git a/src/main/java/com/example/solidconnection/auth/service/EmailSignInService.java b/src/main/java/com/example/solidconnection/auth/service/EmailSignInService.java index d80465791..d7ee365d8 100644 --- a/src/main/java/com/example/solidconnection/auth/service/EmailSignInService.java +++ b/src/main/java/com/example/solidconnection/auth/service/EmailSignInService.java @@ -1,19 +1,18 @@ package com.example.solidconnection.auth.service; +import static com.example.solidconnection.common.exception.ErrorCode.USER_NOT_FOUND; + import com.example.solidconnection.auth.dto.EmailSignInRequest; import com.example.solidconnection.auth.dto.SignInResponse; import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.siteuser.domain.AuthType; import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.repository.SiteUserRepository; +import java.util.Optional; import lombok.RequiredArgsConstructor; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; -import java.util.Optional; - -import static com.example.solidconnection.common.exception.ErrorCode.USER_NOT_FOUND; - /* * 보안을 위해 이메일과 비밀번호 중 무엇이 틀렸는지 구체적으로 응답하지 않는다. * */ diff --git a/src/main/java/com/example/solidconnection/auth/service/EmailSignUpService.java b/src/main/java/com/example/solidconnection/auth/service/EmailSignUpService.java index 4e796b81d..a3436cf5d 100644 --- a/src/main/java/com/example/solidconnection/auth/service/EmailSignUpService.java +++ b/src/main/java/com/example/solidconnection/auth/service/EmailSignUpService.java @@ -1,5 +1,7 @@ package com.example.solidconnection.auth.service; +import static com.example.solidconnection.common.exception.ErrorCode.USER_ALREADY_EXISTED; + import com.example.solidconnection.auth.dto.SignUpRequest; import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.location.country.repository.CountryRepository; @@ -11,8 +13,6 @@ import com.example.solidconnection.siteuser.repository.SiteUserRepository; import org.springframework.stereotype.Service; -import static com.example.solidconnection.common.exception.ErrorCode.USER_ALREADY_EXISTED; - @Service public class EmailSignUpService extends SignUpService { diff --git a/src/main/java/com/example/solidconnection/auth/service/EmailSignUpTokenProvider.java b/src/main/java/com/example/solidconnection/auth/service/EmailSignUpTokenProvider.java index fe9a176d3..238c7e517 100644 --- a/src/main/java/com/example/solidconnection/auth/service/EmailSignUpTokenProvider.java +++ b/src/main/java/com/example/solidconnection/auth/service/EmailSignUpTokenProvider.java @@ -1,5 +1,8 @@ package com.example.solidconnection.auth.service; +import static com.example.solidconnection.common.exception.ErrorCode.SIGN_UP_TOKEN_INVALID; +import static com.example.solidconnection.common.exception.ErrorCode.SIGN_UP_TOKEN_NOT_ISSUED_BY_SERVER; + import com.example.solidconnection.auth.domain.TokenType; import com.example.solidconnection.auth.dto.EmailSignUpTokenRequest; import com.example.solidconnection.auth.token.config.JwtProperties; @@ -8,18 +11,14 @@ import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; -import lombok.RequiredArgsConstructor; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.security.crypto.password.PasswordEncoder; -import org.springframework.stereotype.Component; - import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.Objects; - -import static com.example.solidconnection.common.exception.ErrorCode.SIGN_UP_TOKEN_INVALID; -import static com.example.solidconnection.common.exception.ErrorCode.SIGN_UP_TOKEN_NOT_ISSUED_BY_SERVER; +import lombok.RequiredArgsConstructor; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Component; @Component @RequiredArgsConstructor diff --git a/src/main/java/com/example/solidconnection/auth/service/SignUpService.java b/src/main/java/com/example/solidconnection/auth/service/SignUpService.java index 8cce448f7..aeb67d037 100644 --- a/src/main/java/com/example/solidconnection/auth/service/SignUpService.java +++ b/src/main/java/com/example/solidconnection/auth/service/SignUpService.java @@ -1,5 +1,7 @@ package com.example.solidconnection.auth.service; +import static com.example.solidconnection.common.exception.ErrorCode.NICKNAME_ALREADY_EXISTED; + import com.example.solidconnection.auth.dto.SignInResponse; import com.example.solidconnection.auth.dto.SignUpRequest; import com.example.solidconnection.common.exception.CustomException; @@ -11,11 +13,8 @@ import com.example.solidconnection.location.region.repository.RegionRepository; import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.repository.SiteUserRepository; -import org.springframework.transaction.annotation.Transactional; - import java.util.List; - -import static com.example.solidconnection.common.exception.ErrorCode.NICKNAME_ALREADY_EXISTED; +import org.springframework.transaction.annotation.Transactional; /* * 우리 서버에서 인증되었음을 확인하기 위한 signUpToken 을 검증한다. diff --git a/src/main/java/com/example/solidconnection/auth/service/Subject.java b/src/main/java/com/example/solidconnection/auth/service/Subject.java index 2c03eb013..15e5c6c75 100644 --- a/src/main/java/com/example/solidconnection/auth/service/Subject.java +++ b/src/main/java/com/example/solidconnection/auth/service/Subject.java @@ -3,4 +3,5 @@ public record Subject( String value ) { + } diff --git a/src/main/java/com/example/solidconnection/auth/service/oauth/OAuthService.java b/src/main/java/com/example/solidconnection/auth/service/oauth/OAuthService.java index 6e9bf7030..d02377341 100644 --- a/src/main/java/com/example/solidconnection/auth/service/oauth/OAuthService.java +++ b/src/main/java/com/example/solidconnection/auth/service/oauth/OAuthService.java @@ -11,9 +11,8 @@ import com.example.solidconnection.siteuser.domain.AuthType; import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.repository.SiteUserRepository; -import org.springframework.transaction.annotation.Transactional; - import java.util.Optional; +import org.springframework.transaction.annotation.Transactional; /* * OAuth 제공자로부터 이메일을 받아 기존 회원인지, 신규 회원인지 판별하고, 이에 따라 다르게 응답한다. @@ -57,5 +56,6 @@ protected final SignUpPrepareResponse getSignUpPrepareResponse(OAuthUserInfoDto } protected abstract OAuthUserInfoDto getOAuthUserInfo(String code); + protected abstract AuthType getAuthType(); } diff --git a/src/main/java/com/example/solidconnection/auth/service/oauth/OAuthSignUpService.java b/src/main/java/com/example/solidconnection/auth/service/oauth/OAuthSignUpService.java index 96253f548..ca50442fc 100644 --- a/src/main/java/com/example/solidconnection/auth/service/oauth/OAuthSignUpService.java +++ b/src/main/java/com/example/solidconnection/auth/service/oauth/OAuthSignUpService.java @@ -1,5 +1,7 @@ package com.example.solidconnection.auth.service.oauth; +import static com.example.solidconnection.common.exception.ErrorCode.USER_ALREADY_EXISTED; + import com.example.solidconnection.auth.dto.SignUpRequest; import com.example.solidconnection.auth.service.SignInService; import com.example.solidconnection.auth.service.SignUpService; @@ -13,8 +15,6 @@ import com.example.solidconnection.siteuser.repository.SiteUserRepository; import org.springframework.stereotype.Service; -import static com.example.solidconnection.common.exception.ErrorCode.USER_ALREADY_EXISTED; - @Service public class OAuthSignUpService extends SignUpService { diff --git a/src/main/java/com/example/solidconnection/auth/service/oauth/OAuthSignUpTokenProvider.java b/src/main/java/com/example/solidconnection/auth/service/oauth/OAuthSignUpTokenProvider.java index 1aae0338e..ae359c5b8 100644 --- a/src/main/java/com/example/solidconnection/auth/service/oauth/OAuthSignUpTokenProvider.java +++ b/src/main/java/com/example/solidconnection/auth/service/oauth/OAuthSignUpTokenProvider.java @@ -1,5 +1,8 @@ package com.example.solidconnection.auth.service.oauth; +import static com.example.solidconnection.common.exception.ErrorCode.SIGN_UP_TOKEN_INVALID; +import static com.example.solidconnection.common.exception.ErrorCode.SIGN_UP_TOKEN_NOT_ISSUED_BY_SERVER; + import com.example.solidconnection.auth.domain.TokenType; import com.example.solidconnection.auth.service.TokenProvider; import com.example.solidconnection.auth.token.config.JwtProperties; @@ -8,17 +11,13 @@ import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; -import lombok.RequiredArgsConstructor; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.stereotype.Component; - import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.Objects; - -import static com.example.solidconnection.common.exception.ErrorCode.SIGN_UP_TOKEN_INVALID; -import static com.example.solidconnection.common.exception.ErrorCode.SIGN_UP_TOKEN_NOT_ISSUED_BY_SERVER; +import lombok.RequiredArgsConstructor; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Component; @Component @RequiredArgsConstructor diff --git a/src/main/java/com/example/solidconnection/auth/token/JwtTokenProvider.java b/src/main/java/com/example/solidconnection/auth/token/JwtTokenProvider.java index 839e58362..f9f5b20ff 100644 --- a/src/main/java/com/example/solidconnection/auth/token/JwtTokenProvider.java +++ b/src/main/java/com/example/solidconnection/auth/token/JwtTokenProvider.java @@ -1,5 +1,7 @@ package com.example.solidconnection.auth.token; +import static com.example.solidconnection.common.exception.ErrorCode.INVALID_TOKEN; + import com.example.solidconnection.auth.domain.TokenType; import com.example.solidconnection.auth.service.TokenProvider; import com.example.solidconnection.auth.token.config.JwtProperties; @@ -7,15 +9,12 @@ import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; +import java.util.Date; +import java.util.concurrent.TimeUnit; import lombok.RequiredArgsConstructor; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; -import java.util.Date; -import java.util.concurrent.TimeUnit; - -import static com.example.solidconnection.common.exception.ErrorCode.INVALID_TOKEN; - @Component @RequiredArgsConstructor public class JwtTokenProvider implements TokenProvider { diff --git a/src/main/java/com/example/solidconnection/auth/token/TokenBlackListService.java b/src/main/java/com/example/solidconnection/auth/token/TokenBlackListService.java index 4175a577f..7f208710c 100644 --- a/src/main/java/com/example/solidconnection/auth/token/TokenBlackListService.java +++ b/src/main/java/com/example/solidconnection/auth/token/TokenBlackListService.java @@ -1,13 +1,13 @@ package com.example.solidconnection.auth.token; +import static com.example.solidconnection.auth.domain.TokenType.BLACKLIST; + import com.example.solidconnection.auth.service.AccessToken; import com.example.solidconnection.security.filter.BlacklistChecker; import lombok.RequiredArgsConstructor; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; -import static com.example.solidconnection.auth.domain.TokenType.BLACKLIST; - @Component @RequiredArgsConstructor public class TokenBlackListService implements BlacklistChecker { diff --git a/src/main/java/com/example/solidconnection/auth/token/config/JwtProperties.java b/src/main/java/com/example/solidconnection/auth/token/config/JwtProperties.java index bf5180218..2d81601ee 100644 --- a/src/main/java/com/example/solidconnection/auth/token/config/JwtProperties.java +++ b/src/main/java/com/example/solidconnection/auth/token/config/JwtProperties.java @@ -4,4 +4,5 @@ @ConfigurationProperties(prefix = "jwt") public record JwtProperties(String secret) { + } diff --git a/src/main/java/com/example/solidconnection/cache/CacheUpdateListener.java b/src/main/java/com/example/solidconnection/cache/CacheUpdateListener.java index c785168b3..0d2ee9eaf 100644 --- a/src/main/java/com/example/solidconnection/cache/CacheUpdateListener.java +++ b/src/main/java/com/example/solidconnection/cache/CacheUpdateListener.java @@ -1,13 +1,12 @@ package com.example.solidconnection.cache; +import java.nio.charset.StandardCharsets; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.data.redis.connection.Message; import org.springframework.data.redis.connection.MessageListener; import org.springframework.stereotype.Component; -import java.nio.charset.StandardCharsets; - @Component @RequiredArgsConstructor @Slf4j diff --git a/src/main/java/com/example/solidconnection/cache/CompletableFutureManager.java b/src/main/java/com/example/solidconnection/cache/CompletableFutureManager.java index 48c36b28c..f2c08edcc 100644 --- a/src/main/java/com/example/solidconnection/cache/CompletableFutureManager.java +++ b/src/main/java/com/example/solidconnection/cache/CompletableFutureManager.java @@ -1,10 +1,9 @@ package com.example.solidconnection.cache; -import org.springframework.stereotype.Component; - import java.util.Map; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ConcurrentHashMap; +import org.springframework.stereotype.Component; @Component public class CompletableFutureManager { diff --git a/src/main/java/com/example/solidconnection/cache/ThunderingHerdCachingAspect.java b/src/main/java/com/example/solidconnection/cache/ThunderingHerdCachingAspect.java index 5527c2523..b6a9fe0b0 100644 --- a/src/main/java/com/example/solidconnection/cache/ThunderingHerdCachingAspect.java +++ b/src/main/java/com/example/solidconnection/cache/ThunderingHerdCachingAspect.java @@ -1,8 +1,20 @@ package com.example.solidconnection.cache; +import static com.example.solidconnection.community.post.service.RedisConstants.CREATE_CHANNEL; +import static com.example.solidconnection.community.post.service.RedisConstants.LOCK_TIMEOUT_MS; +import static com.example.solidconnection.community.post.service.RedisConstants.MAX_WAIT_TIME_MS; +import static com.example.solidconnection.community.post.service.RedisConstants.REFRESH_LIMIT_PERCENT; + import com.example.solidconnection.cache.annotation.ThunderingHerdCaching; import com.example.solidconnection.cache.manager.CacheManager; import com.example.solidconnection.util.RedisUtils; +import java.time.Duration; +import java.util.UUID; +import java.util.concurrent.Callable; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; @@ -14,19 +26,6 @@ import org.springframework.data.redis.serializer.StringRedisSerializer; import org.springframework.stereotype.Component; -import java.time.Duration; -import java.util.UUID; -import java.util.concurrent.Callable; -import java.util.concurrent.CompletableFuture; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; - -import static com.example.solidconnection.community.post.service.RedisConstants.CREATE_CHANNEL; -import static com.example.solidconnection.community.post.service.RedisConstants.LOCK_TIMEOUT_MS; -import static com.example.solidconnection.community.post.service.RedisConstants.MAX_WAIT_TIME_MS; -import static com.example.solidconnection.community.post.service.RedisConstants.REFRESH_LIMIT_PERCENT; - @Aspect @Component @Slf4j diff --git a/src/main/java/com/example/solidconnection/cache/annotation/ThunderingHerdCaching.java b/src/main/java/com/example/solidconnection/cache/annotation/ThunderingHerdCaching.java index c5a9e0e9b..5cf59b41d 100644 --- a/src/main/java/com/example/solidconnection/cache/annotation/ThunderingHerdCaching.java +++ b/src/main/java/com/example/solidconnection/cache/annotation/ThunderingHerdCaching.java @@ -8,6 +8,7 @@ @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface ThunderingHerdCaching { + String key(); String cacheManager(); diff --git a/src/main/java/com/example/solidconnection/cache/manager/CustomCacheManager.java b/src/main/java/com/example/solidconnection/cache/manager/CustomCacheManager.java index 2e489567c..581822f73 100644 --- a/src/main/java/com/example/solidconnection/cache/manager/CustomCacheManager.java +++ b/src/main/java/com/example/solidconnection/cache/manager/CustomCacheManager.java @@ -1,14 +1,13 @@ package com.example.solidconnection.cache.manager; +import java.time.Duration; +import java.util.Set; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; import org.springframework.stereotype.Component; -import java.time.Duration; -import java.util.Set; - @Component("customCacheManager") public class CustomCacheManager implements CacheManager { diff --git a/src/main/java/com/example/solidconnection/common/BaseEntity.java b/src/main/java/com/example/solidconnection/common/BaseEntity.java index febf5e77c..b3b597350 100644 --- a/src/main/java/com/example/solidconnection/common/BaseEntity.java +++ b/src/main/java/com/example/solidconnection/common/BaseEntity.java @@ -1,19 +1,18 @@ package com.example.solidconnection.common; +import static java.time.ZoneOffset.UTC; +import static java.time.temporal.ChronoUnit.MICROS; + import jakarta.persistence.EntityListeners; import jakarta.persistence.MappedSuperclass; import jakarta.persistence.PrePersist; import jakarta.persistence.PreUpdate; +import java.time.ZonedDateTime; import lombok.Getter; import org.hibernate.annotations.DynamicInsert; import org.hibernate.annotations.DynamicUpdate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; -import java.time.ZonedDateTime; - -import static java.time.ZoneOffset.UTC; -import static java.time.temporal.ChronoUnit.MICROS; - @MappedSuperclass @EntityListeners(AuditingEntityListener.class) @Getter diff --git a/src/main/java/com/example/solidconnection/common/config/client/RestTemplateConfig.java b/src/main/java/com/example/solidconnection/common/config/client/RestTemplateConfig.java index 88afde086..87b43eb28 100644 --- a/src/main/java/com/example/solidconnection/common/config/client/RestTemplateConfig.java +++ b/src/main/java/com/example/solidconnection/common/config/client/RestTemplateConfig.java @@ -1,12 +1,11 @@ package com.example.solidconnection.common.config.client; +import java.time.Duration; import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.client.RestTemplate; -import java.time.Duration; - @Configuration public class RestTemplateConfig { diff --git a/src/main/java/com/example/solidconnection/common/config/redis/RedisConfig.java b/src/main/java/com/example/solidconnection/common/config/redis/RedisConfig.java index 99c98581a..a59558993 100644 --- a/src/main/java/com/example/solidconnection/common/config/redis/RedisConfig.java +++ b/src/main/java/com/example/solidconnection/common/config/redis/RedisConfig.java @@ -1,5 +1,7 @@ package com.example.solidconnection.common.config.redis; +import static com.example.solidconnection.community.post.service.RedisConstants.CREATE_CHANNEL; + import com.example.solidconnection.cache.CacheUpdateListener; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; @@ -16,8 +18,6 @@ import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; -import static com.example.solidconnection.community.post.service.RedisConstants.CREATE_CHANNEL; - @Configuration @EnableRedisRepositories public class RedisConfig { diff --git a/src/main/java/com/example/solidconnection/common/config/web/WebMvcConfig.java b/src/main/java/com/example/solidconnection/common/config/web/WebMvcConfig.java index a6ba76f7b..56bb288e8 100644 --- a/src/main/java/com/example/solidconnection/common/config/web/WebMvcConfig.java +++ b/src/main/java/com/example/solidconnection/common/config/web/WebMvcConfig.java @@ -2,13 +2,12 @@ import com.example.solidconnection.common.resolver.AuthorizedUserResolver; import com.example.solidconnection.common.resolver.CustomPageableHandlerMethodArgumentResolver; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Configuration; import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; -import java.util.List; - @Configuration @RequiredArgsConstructor public class WebMvcConfig implements WebMvcConfigurer { diff --git a/src/main/java/com/example/solidconnection/common/dto/SliceResponse.java b/src/main/java/com/example/solidconnection/common/dto/SliceResponse.java index 3f91dc7c4..8fe5c80b8 100644 --- a/src/main/java/com/example/solidconnection/common/dto/SliceResponse.java +++ b/src/main/java/com/example/solidconnection/common/dto/SliceResponse.java @@ -1,8 +1,7 @@ package com.example.solidconnection.common.dto; -import org.springframework.data.domain.Slice; - import java.util.List; +import org.springframework.data.domain.Slice; public record SliceResponse( List content, diff --git a/src/main/java/com/example/solidconnection/common/exception/CustomAccessDeniedHandler.java b/src/main/java/com/example/solidconnection/common/exception/CustomAccessDeniedHandler.java index 2c7e0fd19..a391ba66d 100644 --- a/src/main/java/com/example/solidconnection/common/exception/CustomAccessDeniedHandler.java +++ b/src/main/java/com/example/solidconnection/common/exception/CustomAccessDeniedHandler.java @@ -4,13 +4,12 @@ import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import java.io.IOException; import lombok.RequiredArgsConstructor; import org.springframework.security.access.AccessDeniedException; import org.springframework.security.web.access.AccessDeniedHandler; import org.springframework.stereotype.Component; -import java.io.IOException; - @Component @RequiredArgsConstructor public class CustomAccessDeniedHandler implements AccessDeniedHandler { diff --git a/src/main/java/com/example/solidconnection/common/exception/CustomAuthenticationEntryPoint.java b/src/main/java/com/example/solidconnection/common/exception/CustomAuthenticationEntryPoint.java index d5eb87705..04b3d5aed 100644 --- a/src/main/java/com/example/solidconnection/common/exception/CustomAuthenticationEntryPoint.java +++ b/src/main/java/com/example/solidconnection/common/exception/CustomAuthenticationEntryPoint.java @@ -4,13 +4,12 @@ import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import java.io.IOException; import lombok.RequiredArgsConstructor; import org.springframework.security.core.AuthenticationException; import org.springframework.security.web.AuthenticationEntryPoint; import org.springframework.stereotype.Component; -import java.io.IOException; - @Component @RequiredArgsConstructor public class CustomAuthenticationEntryPoint implements AuthenticationEntryPoint { diff --git a/src/main/java/com/example/solidconnection/common/exception/CustomExceptionHandler.java b/src/main/java/com/example/solidconnection/common/exception/CustomExceptionHandler.java index 57d6f4769..5700c3044 100644 --- a/src/main/java/com/example/solidconnection/common/exception/CustomExceptionHandler.java +++ b/src/main/java/com/example/solidconnection/common/exception/CustomExceptionHandler.java @@ -1,8 +1,16 @@ package com.example.solidconnection.common.exception; +import static com.example.solidconnection.common.exception.ErrorCode.DATA_INTEGRITY_VIOLATION; +import static com.example.solidconnection.common.exception.ErrorCode.INVALID_INPUT; +import static com.example.solidconnection.common.exception.ErrorCode.JSON_PARSING_FAILED; +import static com.example.solidconnection.common.exception.ErrorCode.JWT_EXCEPTION; +import static com.example.solidconnection.common.exception.ErrorCode.NOT_DEFINED_ERROR; + import com.example.solidconnection.common.response.ErrorResponse; import com.fasterxml.jackson.databind.exc.InvalidFormatException; import io.jsonwebtoken.JwtException; +import java.util.ArrayList; +import java.util.List; import lombok.extern.slf4j.Slf4j; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.http.HttpStatus; @@ -11,15 +19,6 @@ import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; -import java.util.ArrayList; -import java.util.List; - -import static com.example.solidconnection.common.exception.ErrorCode.DATA_INTEGRITY_VIOLATION; -import static com.example.solidconnection.common.exception.ErrorCode.INVALID_INPUT; -import static com.example.solidconnection.common.exception.ErrorCode.JSON_PARSING_FAILED; -import static com.example.solidconnection.common.exception.ErrorCode.JWT_EXCEPTION; -import static com.example.solidconnection.common.exception.ErrorCode.NOT_DEFINED_ERROR; - @Slf4j @ControllerAdvice public class CustomExceptionHandler { diff --git a/src/main/java/com/example/solidconnection/common/exception/ErrorCode.java b/src/main/java/com/example/solidconnection/common/exception/ErrorCode.java index 75fbf5b0f..7b71469aa 100644 --- a/src/main/java/com/example/solidconnection/common/exception/ErrorCode.java +++ b/src/main/java/com/example/solidconnection/common/exception/ErrorCode.java @@ -1,12 +1,12 @@ package com.example.solidconnection.common.exception; +import static com.example.solidconnection.application.service.ApplicationSubmissionService.APPLICATION_UPDATE_COUNT_LIMIT; +import static com.example.solidconnection.siteuser.service.MyPageService.MIN_DAYS_BETWEEN_NICKNAME_CHANGES; + import lombok.AllArgsConstructor; import lombok.Getter; import org.springframework.http.HttpStatus; -import static com.example.solidconnection.application.service.ApplicationSubmissionService.APPLICATION_UPDATE_COUNT_LIMIT; -import static com.example.solidconnection.siteuser.service.MyPageService.MIN_DAYS_BETWEEN_NICKNAME_CHANGES; - @Getter @AllArgsConstructor public enum ErrorCode { diff --git a/src/main/java/com/example/solidconnection/common/resolver/AuthorizedUser.java b/src/main/java/com/example/solidconnection/common/resolver/AuthorizedUser.java index 0f4aa0954..ffe3a5431 100644 --- a/src/main/java/com/example/solidconnection/common/resolver/AuthorizedUser.java +++ b/src/main/java/com/example/solidconnection/common/resolver/AuthorizedUser.java @@ -8,5 +8,6 @@ @Target({ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) public @interface AuthorizedUser { + boolean required() default true; } diff --git a/src/main/java/com/example/solidconnection/common/resolver/AuthorizedUserResolver.java b/src/main/java/com/example/solidconnection/common/resolver/AuthorizedUserResolver.java index f729eb073..917784f8b 100644 --- a/src/main/java/com/example/solidconnection/common/resolver/AuthorizedUserResolver.java +++ b/src/main/java/com/example/solidconnection/common/resolver/AuthorizedUserResolver.java @@ -1,5 +1,7 @@ package com.example.solidconnection.common.resolver; +import static com.example.solidconnection.common.exception.ErrorCode.AUTHENTICATION_FAILED; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.security.userdetails.SiteUserDetails; import com.example.solidconnection.siteuser.domain.SiteUser; @@ -13,8 +15,6 @@ import org.springframework.web.method.support.HandlerMethodArgumentResolver; import org.springframework.web.method.support.ModelAndViewContainer; -import static com.example.solidconnection.common.exception.ErrorCode.AUTHENTICATION_FAILED; - @Component @RequiredArgsConstructor public class AuthorizedUserResolver implements HandlerMethodArgumentResolver { diff --git a/src/main/java/com/example/solidconnection/common/response/PageResponse.java b/src/main/java/com/example/solidconnection/common/response/PageResponse.java index 90790d271..adf28cfc8 100644 --- a/src/main/java/com/example/solidconnection/common/response/PageResponse.java +++ b/src/main/java/com/example/solidconnection/common/response/PageResponse.java @@ -1,8 +1,7 @@ package com.example.solidconnection.common.response; -import org.springframework.data.domain.Page; - import java.util.List; +import org.springframework.data.domain.Page; public record PageResponse( List content, @@ -11,6 +10,7 @@ public record PageResponse( long totalElements, int totalPages ) { + /* * 페이지 번호는 1부터 시작하는 것이 사용자 입장에서 더 직관적이기 때문에 1을 더해줌 */ diff --git a/src/main/java/com/example/solidconnection/community/board/controller/BoardController.java b/src/main/java/com/example/solidconnection/community/board/controller/BoardController.java index b46c93256..20601eb65 100644 --- a/src/main/java/com/example/solidconnection/community/board/controller/BoardController.java +++ b/src/main/java/com/example/solidconnection/community/board/controller/BoardController.java @@ -5,6 +5,8 @@ import com.example.solidconnection.community.post.dto.PostListResponse; import com.example.solidconnection.community.post.service.PostQueryService; import com.example.solidconnection.siteuser.domain.SiteUser; +import java.util.ArrayList; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; @@ -13,9 +15,6 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import java.util.ArrayList; -import java.util.List; - @RestController @RequiredArgsConstructor @RequestMapping("/boards") diff --git a/src/main/java/com/example/solidconnection/community/board/dto/PostFindBoardResponse.java b/src/main/java/com/example/solidconnection/community/board/dto/PostFindBoardResponse.java index e4f66afdd..2ab10619e 100644 --- a/src/main/java/com/example/solidconnection/community/board/dto/PostFindBoardResponse.java +++ b/src/main/java/com/example/solidconnection/community/board/dto/PostFindBoardResponse.java @@ -6,6 +6,7 @@ public record PostFindBoardResponse( String code, String koreanName ) { + public static PostFindBoardResponse from(Board board) { return new PostFindBoardResponse( board.getCode(), diff --git a/src/main/java/com/example/solidconnection/community/board/repository/BoardRepository.java b/src/main/java/com/example/solidconnection/community/board/repository/BoardRepository.java index b81f9a15a..8e2c2b9d5 100644 --- a/src/main/java/com/example/solidconnection/community/board/repository/BoardRepository.java +++ b/src/main/java/com/example/solidconnection/community/board/repository/BoardRepository.java @@ -1,15 +1,14 @@ package com.example.solidconnection.community.board.repository; +import static com.example.solidconnection.common.exception.ErrorCode.INVALID_BOARD_CODE; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.common.exception.ErrorCode; import com.example.solidconnection.community.board.domain.Board; +import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.repository.query.Param; -import java.util.Optional; - -import static com.example.solidconnection.common.exception.ErrorCode.INVALID_BOARD_CODE; - public interface BoardRepository extends JpaRepository { Optional findBoardByCode(@Param("code") String code); diff --git a/src/main/java/com/example/solidconnection/community/board/service/BoardService.java b/src/main/java/com/example/solidconnection/community/board/service/BoardService.java index c918f8126..8d97c8be0 100644 --- a/src/main/java/com/example/solidconnection/community/board/service/BoardService.java +++ b/src/main/java/com/example/solidconnection/community/board/service/BoardService.java @@ -6,4 +6,5 @@ @Service @RequiredArgsConstructor public class BoardService { + } diff --git a/src/main/java/com/example/solidconnection/community/comment/domain/Comment.java b/src/main/java/com/example/solidconnection/community/comment/domain/Comment.java index 5d47bd591..b60aa5077 100644 --- a/src/main/java/com/example/solidconnection/community/comment/domain/Comment.java +++ b/src/main/java/com/example/solidconnection/community/comment/domain/Comment.java @@ -13,13 +13,12 @@ import jakarta.persistence.ManyToOne; import jakarta.persistence.OneToMany; import jakarta.persistence.Transient; +import java.util.ArrayList; +import java.util.List; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; -import java.util.ArrayList; -import java.util.List; - @Entity @Getter @NoArgsConstructor diff --git a/src/main/java/com/example/solidconnection/community/comment/dto/CommentCreateRequest.java b/src/main/java/com/example/solidconnection/community/comment/dto/CommentCreateRequest.java index dd25516eb..d055d2e2a 100644 --- a/src/main/java/com/example/solidconnection/community/comment/dto/CommentCreateRequest.java +++ b/src/main/java/com/example/solidconnection/community/comment/dto/CommentCreateRequest.java @@ -17,6 +17,7 @@ public record CommentCreateRequest( Long parentId ) { + public Comment toEntity(SiteUser siteUser, Post post, Comment parentComment) { Comment comment = new Comment( diff --git a/src/main/java/com/example/solidconnection/community/comment/dto/CommentDeleteResponse.java b/src/main/java/com/example/solidconnection/community/comment/dto/CommentDeleteResponse.java index 5283bb87f..7cfb0010e 100644 --- a/src/main/java/com/example/solidconnection/community/comment/dto/CommentDeleteResponse.java +++ b/src/main/java/com/example/solidconnection/community/comment/dto/CommentDeleteResponse.java @@ -3,4 +3,5 @@ public record CommentDeleteResponse( Long id ) { + } diff --git a/src/main/java/com/example/solidconnection/community/comment/dto/CommentUpdateRequest.java b/src/main/java/com/example/solidconnection/community/comment/dto/CommentUpdateRequest.java index 6e14dab45..a6983221f 100644 --- a/src/main/java/com/example/solidconnection/community/comment/dto/CommentUpdateRequest.java +++ b/src/main/java/com/example/solidconnection/community/comment/dto/CommentUpdateRequest.java @@ -8,4 +8,5 @@ public record CommentUpdateRequest( @Size(min = 1, max = 255, message = "댓글 내용은 최소 1자 이상, 최대 255자 이하여야 합니다.") String content ) { + } diff --git a/src/main/java/com/example/solidconnection/community/comment/dto/PostFindCommentResponse.java b/src/main/java/com/example/solidconnection/community/comment/dto/PostFindCommentResponse.java index 0d9f5f295..16446f3ee 100644 --- a/src/main/java/com/example/solidconnection/community/comment/dto/PostFindCommentResponse.java +++ b/src/main/java/com/example/solidconnection/community/comment/dto/PostFindCommentResponse.java @@ -3,7 +3,6 @@ import com.example.solidconnection.community.comment.domain.Comment; import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.dto.PostFindSiteUserResponse; - import java.time.ZonedDateTime; public record PostFindCommentResponse( @@ -35,8 +34,7 @@ private static Long getParentCommentId(Comment comment) { return null; } - private static String getDisplayContent(Comment comment) - { + private static String getDisplayContent(Comment comment) { return comment.isDeleted() ? "" : comment.getContent(); } diff --git a/src/main/java/com/example/solidconnection/community/comment/repository/CommentRepository.java b/src/main/java/com/example/solidconnection/community/comment/repository/CommentRepository.java index a17565bee..c05cf9bd6 100644 --- a/src/main/java/com/example/solidconnection/community/comment/repository/CommentRepository.java +++ b/src/main/java/com/example/solidconnection/community/comment/repository/CommentRepository.java @@ -1,36 +1,35 @@ package com.example.solidconnection.community.comment.repository; +import static com.example.solidconnection.common.exception.ErrorCode.INVALID_COMMENT_ID; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.community.comment.domain.Comment; +import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; -import java.util.List; - -import static com.example.solidconnection.common.exception.ErrorCode.INVALID_COMMENT_ID; - public interface CommentRepository extends JpaRepository { @Query(value = """ - WITH RECURSIVE CommentTree AS ( - SELECT - id, parent_id, post_id, site_user_id, content, - created_at, updated_at, is_deleted, - 0 AS level, CAST(id AS CHAR(255)) AS path - FROM comment - WHERE post_id = :postId AND parent_id IS NULL - UNION ALL - SELECT - c.id, c.parent_id, c.post_id, c.site_user_id, c.content, - c.created_at, c.updated_at, c.is_deleted, - ct.level + 1, CONCAT(ct.path, '->', c.id) - FROM comment c - INNER JOIN CommentTree ct ON c.parent_id = ct.id - ) - SELECT * FROM CommentTree - ORDER BY path - """, nativeQuery = true) + WITH RECURSIVE CommentTree AS ( + SELECT + id, parent_id, post_id, site_user_id, content, + created_at, updated_at, is_deleted, + 0 AS level, CAST(id AS CHAR(255)) AS path + FROM comment + WHERE post_id = :postId AND parent_id IS NULL + UNION ALL + SELECT + c.id, c.parent_id, c.post_id, c.site_user_id, c.content, + c.created_at, c.updated_at, c.is_deleted, + ct.level + 1, CONCAT(ct.path, '->', c.id) + FROM comment c + INNER JOIN CommentTree ct ON c.parent_id = ct.id + ) + SELECT * FROM CommentTree + ORDER BY path + """, nativeQuery = true) List findCommentTreeByPostId(@Param("postId") Long postId); default Comment getById(Long id) { diff --git a/src/main/java/com/example/solidconnection/community/comment/service/CommentService.java b/src/main/java/com/example/solidconnection/community/comment/service/CommentService.java index 38a61b60d..7f31885ea 100644 --- a/src/main/java/com/example/solidconnection/community/comment/service/CommentService.java +++ b/src/main/java/com/example/solidconnection/community/comment/service/CommentService.java @@ -1,5 +1,9 @@ package com.example.solidconnection.community.comment.service; +import static com.example.solidconnection.common.exception.ErrorCode.CAN_NOT_UPDATE_DEPRECATED_COMMENT; +import static com.example.solidconnection.common.exception.ErrorCode.INVALID_COMMENT_LEVEL; +import static com.example.solidconnection.common.exception.ErrorCode.INVALID_POST_ACCESS; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.community.comment.domain.Comment; import com.example.solidconnection.community.comment.dto.CommentCreateRequest; @@ -13,21 +17,15 @@ import com.example.solidconnection.community.post.repository.PostRepository; import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.repository.SiteUserRepository; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; - -import static com.example.solidconnection.common.exception.ErrorCode.CAN_NOT_UPDATE_DEPRECATED_COMMENT; -import static com.example.solidconnection.common.exception.ErrorCode.INVALID_COMMENT_LEVEL; -import static com.example.solidconnection.common.exception.ErrorCode.INVALID_POST_ACCESS; -import static com.example.solidconnection.common.exception.ErrorCode.USER_NOT_FOUND; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; @Service @RequiredArgsConstructor @@ -73,8 +71,8 @@ private List filterCommentsByDeletionRules(List comments) { if (!allDeleted) { result.add(parent); result.addAll(children.stream() - .filter(child -> !child.isDeleted()) - .toList()); + .filter(child -> !child.isDeleted()) + .toList()); } } return result; diff --git a/src/main/java/com/example/solidconnection/community/post/controller/PostController.java b/src/main/java/com/example/solidconnection/community/post/controller/PostController.java index 23b34568e..c329425a8 100644 --- a/src/main/java/com/example/solidconnection/community/post/controller/PostController.java +++ b/src/main/java/com/example/solidconnection/community/post/controller/PostController.java @@ -14,6 +14,8 @@ import com.example.solidconnection.community.post.service.PostQueryService; import com.example.solidconnection.siteuser.domain.SiteUser; import jakarta.validation.Valid; +import java.util.Collections; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.DeleteMapping; @@ -27,9 +29,6 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; -import java.util.Collections; -import java.util.List; - @RestController @RequiredArgsConstructor @RequestMapping("/posts") diff --git a/src/main/java/com/example/solidconnection/community/post/domain/Post.java b/src/main/java/com/example/solidconnection/community/post/domain/Post.java index 7da358d43..190861131 100644 --- a/src/main/java/com/example/solidconnection/community/post/domain/Post.java +++ b/src/main/java/com/example/solidconnection/community/post/domain/Post.java @@ -12,14 +12,13 @@ import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.OneToMany; +import java.util.ArrayList; +import java.util.List; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; import org.hibernate.annotations.BatchSize; -import java.util.ArrayList; -import java.util.List; - @Entity @Getter @NoArgsConstructor diff --git a/src/main/java/com/example/solidconnection/community/post/dto/PostDeleteResponse.java b/src/main/java/com/example/solidconnection/community/post/dto/PostDeleteResponse.java index f98f5264f..e34241750 100644 --- a/src/main/java/com/example/solidconnection/community/post/dto/PostDeleteResponse.java +++ b/src/main/java/com/example/solidconnection/community/post/dto/PostDeleteResponse.java @@ -3,4 +3,5 @@ public record PostDeleteResponse( Long id ) { + } diff --git a/src/main/java/com/example/solidconnection/community/post/dto/PostDislikeResponse.java b/src/main/java/com/example/solidconnection/community/post/dto/PostDislikeResponse.java index 83ffc8305..3c77adebe 100644 --- a/src/main/java/com/example/solidconnection/community/post/dto/PostDislikeResponse.java +++ b/src/main/java/com/example/solidconnection/community/post/dto/PostDislikeResponse.java @@ -6,6 +6,7 @@ public record PostDislikeResponse( Long likeCount, Boolean isLiked ) { + public static PostDislikeResponse from(Post post) { return new PostDislikeResponse( post.getLikeCount(), diff --git a/src/main/java/com/example/solidconnection/community/post/dto/PostFindPostImageResponse.java b/src/main/java/com/example/solidconnection/community/post/dto/PostFindPostImageResponse.java index 648bdb72c..68bb6fd01 100644 --- a/src/main/java/com/example/solidconnection/community/post/dto/PostFindPostImageResponse.java +++ b/src/main/java/com/example/solidconnection/community/post/dto/PostFindPostImageResponse.java @@ -1,7 +1,6 @@ package com.example.solidconnection.community.post.dto; import com.example.solidconnection.community.post.domain.PostImage; - import java.util.List; import java.util.stream.Collectors; @@ -9,6 +8,7 @@ public record PostFindPostImageResponse( Long id, String url ) { + public static PostFindPostImageResponse from(PostImage postImage) { return new PostFindPostImageResponse( postImage.getId(), diff --git a/src/main/java/com/example/solidconnection/community/post/dto/PostFindResponse.java b/src/main/java/com/example/solidconnection/community/post/dto/PostFindResponse.java index 735defac1..e6bc6a0fa 100644 --- a/src/main/java/com/example/solidconnection/community/post/dto/PostFindResponse.java +++ b/src/main/java/com/example/solidconnection/community/post/dto/PostFindResponse.java @@ -4,7 +4,6 @@ import com.example.solidconnection.community.comment.dto.PostFindCommentResponse; import com.example.solidconnection.community.post.domain.Post; import com.example.solidconnection.siteuser.dto.PostFindSiteUserResponse; - import java.time.ZonedDateTime; import java.util.List; diff --git a/src/main/java/com/example/solidconnection/community/post/dto/PostLikeResponse.java b/src/main/java/com/example/solidconnection/community/post/dto/PostLikeResponse.java index 35b2840c0..b787dce7b 100644 --- a/src/main/java/com/example/solidconnection/community/post/dto/PostLikeResponse.java +++ b/src/main/java/com/example/solidconnection/community/post/dto/PostLikeResponse.java @@ -6,6 +6,7 @@ public record PostLikeResponse( Long likeCount, Boolean isLiked ) { + public static PostLikeResponse from(Post post) { return new PostLikeResponse( post.getLikeCount(), diff --git a/src/main/java/com/example/solidconnection/community/post/dto/PostListResponse.java b/src/main/java/com/example/solidconnection/community/post/dto/PostListResponse.java index 15f5ec7a5..89fb20aab 100644 --- a/src/main/java/com/example/solidconnection/community/post/dto/PostListResponse.java +++ b/src/main/java/com/example/solidconnection/community/post/dto/PostListResponse.java @@ -2,7 +2,6 @@ import com.example.solidconnection.community.post.domain.Post; import com.example.solidconnection.community.post.domain.PostImage; - import java.time.ZonedDateTime; import java.util.List; import java.util.stream.Collectors; diff --git a/src/main/java/com/example/solidconnection/community/post/dto/PostUpdateRequest.java b/src/main/java/com/example/solidconnection/community/post/dto/PostUpdateRequest.java index 339be3519..c82c98ce9 100644 --- a/src/main/java/com/example/solidconnection/community/post/dto/PostUpdateRequest.java +++ b/src/main/java/com/example/solidconnection/community/post/dto/PostUpdateRequest.java @@ -16,4 +16,5 @@ public record PostUpdateRequest( @Size(min = 1, max = 1000, message = "댓글 내용은 최소 1자 이상, 최대 255자 이하여야 합니다.") String content ) { + } diff --git a/src/main/java/com/example/solidconnection/community/post/dto/PostUpdateResponse.java b/src/main/java/com/example/solidconnection/community/post/dto/PostUpdateResponse.java index 5c35f031d..2c09eefb3 100644 --- a/src/main/java/com/example/solidconnection/community/post/dto/PostUpdateResponse.java +++ b/src/main/java/com/example/solidconnection/community/post/dto/PostUpdateResponse.java @@ -5,6 +5,7 @@ public record PostUpdateResponse( Long id ) { + public static PostUpdateResponse from(Post post) { return new PostUpdateResponse( post.getId() diff --git a/src/main/java/com/example/solidconnection/community/post/repository/PostImageRepository.java b/src/main/java/com/example/solidconnection/community/post/repository/PostImageRepository.java index 096e47f20..81d6f0a32 100644 --- a/src/main/java/com/example/solidconnection/community/post/repository/PostImageRepository.java +++ b/src/main/java/com/example/solidconnection/community/post/repository/PostImageRepository.java @@ -4,4 +4,5 @@ import org.springframework.data.jpa.repository.JpaRepository; public interface PostImageRepository extends JpaRepository { + } diff --git a/src/main/java/com/example/solidconnection/community/post/repository/PostLikeRepository.java b/src/main/java/com/example/solidconnection/community/post/repository/PostLikeRepository.java index a3b96e826..4fa3d3e72 100644 --- a/src/main/java/com/example/solidconnection/community/post/repository/PostLikeRepository.java +++ b/src/main/java/com/example/solidconnection/community/post/repository/PostLikeRepository.java @@ -1,13 +1,12 @@ package com.example.solidconnection.community.post.repository; +import static com.example.solidconnection.common.exception.ErrorCode.INVALID_POST_LIKE; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.community.post.domain.Post; import com.example.solidconnection.community.post.domain.PostLike; -import org.springframework.data.jpa.repository.JpaRepository; - import java.util.Optional; - -import static com.example.solidconnection.common.exception.ErrorCode.INVALID_POST_LIKE; +import org.springframework.data.jpa.repository.JpaRepository; public interface PostLikeRepository extends JpaRepository { diff --git a/src/main/java/com/example/solidconnection/community/post/repository/PostRepository.java b/src/main/java/com/example/solidconnection/community/post/repository/PostRepository.java index 3a6d50d3d..de16d8ab1 100644 --- a/src/main/java/com/example/solidconnection/community/post/repository/PostRepository.java +++ b/src/main/java/com/example/solidconnection/community/post/repository/PostRepository.java @@ -1,18 +1,17 @@ package com.example.solidconnection.community.post.repository; +import static com.example.solidconnection.common.exception.ErrorCode.INVALID_POST_ID; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.community.post.domain.Post; +import java.util.List; +import java.util.Optional; import org.springframework.data.jpa.repository.EntityGraph; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; -import java.util.List; -import java.util.Optional; - -import static com.example.solidconnection.common.exception.ErrorCode.INVALID_POST_ID; - public interface PostRepository extends JpaRepository { List findByBoardCode(String boardCode); @@ -22,23 +21,23 @@ public interface PostRepository extends JpaRepository { @Modifying(clearAutomatically = true, flushAutomatically = true) @Query(""" - UPDATE Post p SET p.likeCount = p.likeCount - 1 - WHERE p.id = :postId AND p.likeCount > 0 - """) + UPDATE Post p SET p.likeCount = p.likeCount - 1 + WHERE p.id = :postId AND p.likeCount > 0 + """) void decreaseLikeCount(@Param("postId") Long postId); @Modifying(clearAutomatically = true, flushAutomatically = true) @Query(""" - UPDATE Post p SET p.likeCount = p.likeCount + 1 - WHERE p.id = :postId - """) + UPDATE Post p SET p.likeCount = p.likeCount + 1 + WHERE p.id = :postId + """) void increaseLikeCount(@Param("postId") Long postId); @Modifying(clearAutomatically = true, flushAutomatically = true) @Query(""" - UPDATE Post p SET p.viewCount = p.viewCount + :count - WHERE p.id = :postId - """) + UPDATE Post p SET p.viewCount = p.viewCount + :count + WHERE p.id = :postId + """) void increaseViewCount(@Param("postId") Long postId, @Param("count") Long count); default Post getByIdUsingEntityGraph(Long id) { diff --git a/src/main/java/com/example/solidconnection/community/post/service/PostCommandService.java b/src/main/java/com/example/solidconnection/community/post/service/PostCommandService.java index a76543407..57721ee46 100644 --- a/src/main/java/com/example/solidconnection/community/post/service/PostCommandService.java +++ b/src/main/java/com/example/solidconnection/community/post/service/PostCommandService.java @@ -1,5 +1,10 @@ package com.example.solidconnection.community.post.service; +import static com.example.solidconnection.common.exception.ErrorCode.CAN_NOT_DELETE_OR_UPDATE_QUESTION; +import static com.example.solidconnection.common.exception.ErrorCode.CAN_NOT_UPLOAD_MORE_THAN_FIVE_IMAGES; +import static com.example.solidconnection.common.exception.ErrorCode.INVALID_POST_ACCESS; +import static com.example.solidconnection.common.exception.ErrorCode.INVALID_POST_CATEGORY; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.community.board.domain.Board; import com.example.solidconnection.community.board.repository.BoardRepository; @@ -17,20 +22,14 @@ import com.example.solidconnection.s3.service.S3Service; import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.util.RedisUtils; +import java.util.List; +import java.util.Objects; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.EnumUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; -import java.util.List; -import java.util.Objects; - -import static com.example.solidconnection.common.exception.ErrorCode.CAN_NOT_DELETE_OR_UPDATE_QUESTION; -import static com.example.solidconnection.common.exception.ErrorCode.CAN_NOT_UPLOAD_MORE_THAN_FIVE_IMAGES; -import static com.example.solidconnection.common.exception.ErrorCode.INVALID_POST_ACCESS; -import static com.example.solidconnection.common.exception.ErrorCode.INVALID_POST_CATEGORY; - @Service @RequiredArgsConstructor public class PostCommandService { diff --git a/src/main/java/com/example/solidconnection/community/post/service/PostLikeService.java b/src/main/java/com/example/solidconnection/community/post/service/PostLikeService.java index 4ea99ad0f..1a7ba05ae 100644 --- a/src/main/java/com/example/solidconnection/community/post/service/PostLikeService.java +++ b/src/main/java/com/example/solidconnection/community/post/service/PostLikeService.java @@ -1,5 +1,7 @@ package com.example.solidconnection.community.post.service; +import static com.example.solidconnection.common.exception.ErrorCode.DUPLICATE_POST_LIKE; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.community.post.domain.Post; import com.example.solidconnection.community.post.domain.PostLike; @@ -13,8 +15,6 @@ import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Transactional; -import static com.example.solidconnection.common.exception.ErrorCode.DUPLICATE_POST_LIKE; - @Service @RequiredArgsConstructor public class PostLikeService { diff --git a/src/main/java/com/example/solidconnection/community/post/service/PostQueryService.java b/src/main/java/com/example/solidconnection/community/post/service/PostQueryService.java index 4ac06424b..a6f956fc0 100644 --- a/src/main/java/com/example/solidconnection/community/post/service/PostQueryService.java +++ b/src/main/java/com/example/solidconnection/community/post/service/PostQueryService.java @@ -1,5 +1,9 @@ package com.example.solidconnection.community.post.service; +import static com.example.solidconnection.common.exception.ErrorCode.INVALID_BOARD_CODE; +import static com.example.solidconnection.common.exception.ErrorCode.INVALID_POST_CATEGORY; +import static com.example.solidconnection.common.exception.ErrorCode.USER_NOT_FOUND; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.community.board.domain.Board; import com.example.solidconnection.community.board.domain.BoardCode; @@ -18,19 +22,14 @@ import com.example.solidconnection.siteuser.dto.PostFindSiteUserResponse; import com.example.solidconnection.siteuser.repository.SiteUserRepository; import com.example.solidconnection.util.RedisUtils; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.EnumUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; - -import static com.example.solidconnection.common.exception.ErrorCode.INVALID_BOARD_CODE; -import static com.example.solidconnection.common.exception.ErrorCode.INVALID_POST_CATEGORY; -import static com.example.solidconnection.common.exception.ErrorCode.USER_NOT_FOUND; - @Service @RequiredArgsConstructor public class PostQueryService { @@ -61,7 +60,7 @@ public PostFindResponse findPostById(SiteUser siteUser, Long postId) { Boolean isLiked = getIsLiked(post, siteUser); Board board = boardRepository.findBoardByCode(post.getBoardCode()) - .orElseThrow(()->new CustomException(INVALID_BOARD_CODE)); + .orElseThrow(() -> new CustomException(INVALID_BOARD_CODE)); SiteUser postAuthor = siteUserRepository.findById(post.getSiteUserId()) .orElseThrow(() -> new CustomException(USER_NOT_FOUND)); PostFindBoardResponse boardPostFindResultDTO = PostFindBoardResponse.from(board); diff --git a/src/main/java/com/example/solidconnection/community/post/service/RedisService.java b/src/main/java/com/example/solidconnection/community/post/service/RedisService.java index 38d573d94..7b701fc2b 100644 --- a/src/main/java/com/example/solidconnection/community/post/service/RedisService.java +++ b/src/main/java/com/example/solidconnection/community/post/service/RedisService.java @@ -1,17 +1,16 @@ package com.example.solidconnection.community.post.service; +import static com.example.solidconnection.community.post.service.RedisConstants.VALIDATE_VIEW_COUNT_TTL; +import static com.example.solidconnection.community.post.service.RedisConstants.VIEW_COUNT_TTL; + +import java.util.Collections; +import java.util.concurrent.TimeUnit; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.script.RedisScript; import org.springframework.stereotype.Service; -import java.util.Collections; -import java.util.concurrent.TimeUnit; - -import static com.example.solidconnection.community.post.service.RedisConstants.VALIDATE_VIEW_COUNT_TTL; -import static com.example.solidconnection.community.post.service.RedisConstants.VIEW_COUNT_TTL; - @Service public class RedisService { // todo: 정말 필요한지 고민 필요 @@ -40,7 +39,7 @@ public Long getAndDelete(String key) { public boolean isPresent(String key) { return Boolean.TRUE.equals(redisTemplate.opsForValue() - .setIfAbsent(key, "1", Long.parseLong(VALIDATE_VIEW_COUNT_TTL.getValue()), TimeUnit.SECONDS)); + .setIfAbsent(key, "1", Long.parseLong(VALIDATE_VIEW_COUNT_TTL.getValue()), TimeUnit.SECONDS)); } public boolean isKeyExists(String key) { diff --git a/src/main/java/com/example/solidconnection/location/country/domain/Country.java b/src/main/java/com/example/solidconnection/location/country/domain/Country.java index 90ce8fe4f..f9a487eda 100644 --- a/src/main/java/com/example/solidconnection/location/country/domain/Country.java +++ b/src/main/java/com/example/solidconnection/location/country/domain/Country.java @@ -21,7 +21,7 @@ public class Country { @Column(nullable = false, length = 100) private String koreanName; - @Column(name="region_code") + @Column(name = "region_code") private String regionCode; public Country(String code, String koreanName, String regionCode) { diff --git a/src/main/java/com/example/solidconnection/location/country/domain/InterestedCountry.java b/src/main/java/com/example/solidconnection/location/country/domain/InterestedCountry.java index bfad77e10..b1b01c798 100644 --- a/src/main/java/com/example/solidconnection/location/country/domain/InterestedCountry.java +++ b/src/main/java/com/example/solidconnection/location/country/domain/InterestedCountry.java @@ -27,10 +27,10 @@ public class InterestedCountry { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - @Column(name="site_user_id") + @Column(name = "site_user_id") private long siteUserId; - @Column(name="country_code") + @Column(name = "country_code") private String countryCode; public InterestedCountry(SiteUser siteUser, Country country) { diff --git a/src/main/java/com/example/solidconnection/location/country/repository/CountryRepository.java b/src/main/java/com/example/solidconnection/location/country/repository/CountryRepository.java index 4ac91c085..70477f1f4 100644 --- a/src/main/java/com/example/solidconnection/location/country/repository/CountryRepository.java +++ b/src/main/java/com/example/solidconnection/location/country/repository/CountryRepository.java @@ -1,12 +1,11 @@ package com.example.solidconnection.location.country.repository; import com.example.solidconnection.location.country.domain.Country; +import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; -import java.util.List; - public interface CountryRepository extends JpaRepository { @Query("SELECT c FROM Country c WHERE c.koreanName IN :names") diff --git a/src/main/java/com/example/solidconnection/location/country/repository/InterestedCountryRepository.java b/src/main/java/com/example/solidconnection/location/country/repository/InterestedCountryRepository.java index 9e80a84d2..0d555b7bb 100644 --- a/src/main/java/com/example/solidconnection/location/country/repository/InterestedCountryRepository.java +++ b/src/main/java/com/example/solidconnection/location/country/repository/InterestedCountryRepository.java @@ -1,9 +1,8 @@ package com.example.solidconnection.location.country.repository; import com.example.solidconnection.location.country.domain.InterestedCountry; -import org.springframework.data.jpa.repository.JpaRepository; - import java.util.List; +import org.springframework.data.jpa.repository.JpaRepository; public interface InterestedCountryRepository extends JpaRepository { diff --git a/src/main/java/com/example/solidconnection/location/region/domain/InterestedRegion.java b/src/main/java/com/example/solidconnection/location/region/domain/InterestedRegion.java index 29f6bcaa8..e08287fe9 100644 --- a/src/main/java/com/example/solidconnection/location/region/domain/InterestedRegion.java +++ b/src/main/java/com/example/solidconnection/location/region/domain/InterestedRegion.java @@ -27,10 +27,10 @@ public class InterestedRegion { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - @Column(name="site_user_id") + @Column(name = "site_user_id") private long siteUserId; - @Column(name="region_code") + @Column(name = "region_code") private String regionCode; public InterestedRegion(SiteUser siteUser, Region region) { diff --git a/src/main/java/com/example/solidconnection/location/region/repository/InterestedRegionRepository.java b/src/main/java/com/example/solidconnection/location/region/repository/InterestedRegionRepository.java index 8e06e8411..335218c08 100644 --- a/src/main/java/com/example/solidconnection/location/region/repository/InterestedRegionRepository.java +++ b/src/main/java/com/example/solidconnection/location/region/repository/InterestedRegionRepository.java @@ -1,10 +1,8 @@ package com.example.solidconnection.location.region.repository; import com.example.solidconnection.location.region.domain.InterestedRegion; -import com.example.solidconnection.siteuser.domain.SiteUser; -import org.springframework.data.jpa.repository.JpaRepository; - import java.util.List; +import org.springframework.data.jpa.repository.JpaRepository; public interface InterestedRegionRepository extends JpaRepository { diff --git a/src/main/java/com/example/solidconnection/location/region/repository/RegionRepository.java b/src/main/java/com/example/solidconnection/location/region/repository/RegionRepository.java index 2cdb8c827..eca02bc93 100644 --- a/src/main/java/com/example/solidconnection/location/region/repository/RegionRepository.java +++ b/src/main/java/com/example/solidconnection/location/region/repository/RegionRepository.java @@ -1,12 +1,11 @@ package com.example.solidconnection.location.region.repository; import com.example.solidconnection.location.region.domain.Region; +import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; -import java.util.List; - public interface RegionRepository extends JpaRepository { @Query("SELECT r FROM Region r WHERE r.koreanName IN :names") diff --git a/src/main/java/com/example/solidconnection/mentor/controller/MentorController.java b/src/main/java/com/example/solidconnection/mentor/controller/MentorController.java index ea60b180c..9900e4496 100644 --- a/src/main/java/com/example/solidconnection/mentor/controller/MentorController.java +++ b/src/main/java/com/example/solidconnection/mentor/controller/MentorController.java @@ -1,5 +1,7 @@ package com.example.solidconnection.mentor.controller; +import static org.springframework.data.domain.Sort.Direction.DESC; + import com.example.solidconnection.common.dto.SliceResponse; import com.example.solidconnection.common.resolver.AuthorizedUser; import com.example.solidconnection.mentor.dto.MentorDetailResponse; @@ -19,8 +21,6 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import static org.springframework.data.domain.Sort.Direction.DESC; - @RequiredArgsConstructor @RequestMapping("/mentors") @RestController diff --git a/src/main/java/com/example/solidconnection/mentor/domain/Mentor.java b/src/main/java/com/example/solidconnection/mentor/domain/Mentor.java index 253bf666d..1a5012015 100644 --- a/src/main/java/com/example/solidconnection/mentor/domain/Mentor.java +++ b/src/main/java/com/example/solidconnection/mentor/domain/Mentor.java @@ -8,15 +8,14 @@ import jakarta.persistence.Id; import jakarta.persistence.OneToMany; import jakarta.persistence.OrderBy; +import java.util.ArrayList; +import java.util.List; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import org.hibernate.annotations.BatchSize; -import java.util.ArrayList; -import java.util.List; - @Entity @Getter @AllArgsConstructor diff --git a/src/main/java/com/example/solidconnection/mentor/domain/Mentoring.java b/src/main/java/com/example/solidconnection/mentor/domain/Mentoring.java index dd2353df6..9f2409add 100644 --- a/src/main/java/com/example/solidconnection/mentor/domain/Mentoring.java +++ b/src/main/java/com/example/solidconnection/mentor/domain/Mentoring.java @@ -1,5 +1,8 @@ package com.example.solidconnection.mentor.domain; +import static java.time.ZoneOffset.UTC; +import static java.time.temporal.ChronoUnit.MICROS; + import com.example.solidconnection.common.VerifyStatus; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -10,6 +13,7 @@ import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.PrePersist; +import java.time.ZonedDateTime; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; @@ -17,11 +21,6 @@ import org.hibernate.annotations.DynamicInsert; import org.springframework.data.jpa.domain.support.AuditingEntityListener; -import java.time.ZonedDateTime; - -import static java.time.ZoneOffset.UTC; -import static java.time.temporal.ChronoUnit.MICROS; - @Entity @Getter @EntityListeners(AuditingEntityListener.class) diff --git a/src/main/java/com/example/solidconnection/mentor/dto/ChannelRequest.java b/src/main/java/com/example/solidconnection/mentor/dto/ChannelRequest.java index 9172262ae..11c401be8 100644 --- a/src/main/java/com/example/solidconnection/mentor/dto/ChannelRequest.java +++ b/src/main/java/com/example/solidconnection/mentor/dto/ChannelRequest.java @@ -13,4 +13,5 @@ public record ChannelRequest( @URL String url ) { + } diff --git a/src/main/java/com/example/solidconnection/mentor/dto/MentorDetailResponse.java b/src/main/java/com/example/solidconnection/mentor/dto/MentorDetailResponse.java index cf0fbc98a..63255799e 100644 --- a/src/main/java/com/example/solidconnection/mentor/dto/MentorDetailResponse.java +++ b/src/main/java/com/example/solidconnection/mentor/dto/MentorDetailResponse.java @@ -3,7 +3,6 @@ import com.example.solidconnection.mentor.domain.Mentor; import com.example.solidconnection.siteuser.domain.ExchangeStatus; import com.example.solidconnection.siteuser.domain.SiteUser; - import java.util.List; public record MentorDetailResponse( diff --git a/src/main/java/com/example/solidconnection/mentor/dto/MentorMyPageResponse.java b/src/main/java/com/example/solidconnection/mentor/dto/MentorMyPageResponse.java index 91077051f..46012f068 100644 --- a/src/main/java/com/example/solidconnection/mentor/dto/MentorMyPageResponse.java +++ b/src/main/java/com/example/solidconnection/mentor/dto/MentorMyPageResponse.java @@ -3,7 +3,6 @@ import com.example.solidconnection.mentor.domain.Mentor; import com.example.solidconnection.siteuser.domain.ExchangeStatus; import com.example.solidconnection.siteuser.domain.SiteUser; - import java.util.List; public record MentorMyPageResponse( diff --git a/src/main/java/com/example/solidconnection/mentor/dto/MentorMyPageUpdateRequest.java b/src/main/java/com/example/solidconnection/mentor/dto/MentorMyPageUpdateRequest.java index 5a6790aeb..646fc6e78 100644 --- a/src/main/java/com/example/solidconnection/mentor/dto/MentorMyPageUpdateRequest.java +++ b/src/main/java/com/example/solidconnection/mentor/dto/MentorMyPageUpdateRequest.java @@ -2,7 +2,6 @@ import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank; - import java.util.List; public record MentorMyPageUpdateRequest( @@ -15,4 +14,5 @@ public record MentorMyPageUpdateRequest( @Valid List channels ) { + } diff --git a/src/main/java/com/example/solidconnection/mentor/dto/MentorPreviewResponse.java b/src/main/java/com/example/solidconnection/mentor/dto/MentorPreviewResponse.java index bba3010f4..70695b462 100644 --- a/src/main/java/com/example/solidconnection/mentor/dto/MentorPreviewResponse.java +++ b/src/main/java/com/example/solidconnection/mentor/dto/MentorPreviewResponse.java @@ -3,7 +3,6 @@ import com.example.solidconnection.mentor.domain.Mentor; import com.example.solidconnection.siteuser.domain.ExchangeStatus; import com.example.solidconnection.siteuser.domain.SiteUser; - import java.util.List; public record MentorPreviewResponse( diff --git a/src/main/java/com/example/solidconnection/mentor/dto/MentorPreviewsResponse.java b/src/main/java/com/example/solidconnection/mentor/dto/MentorPreviewsResponse.java index cb49ba602..d322e22f9 100644 --- a/src/main/java/com/example/solidconnection/mentor/dto/MentorPreviewsResponse.java +++ b/src/main/java/com/example/solidconnection/mentor/dto/MentorPreviewsResponse.java @@ -6,4 +6,5 @@ public record MentorPreviewsResponse( List content, int nextPageNumber ) { + } diff --git a/src/main/java/com/example/solidconnection/mentor/dto/MentoringApplyRequest.java b/src/main/java/com/example/solidconnection/mentor/dto/MentoringApplyRequest.java index 27d03afae..8ff6b6611 100644 --- a/src/main/java/com/example/solidconnection/mentor/dto/MentoringApplyRequest.java +++ b/src/main/java/com/example/solidconnection/mentor/dto/MentoringApplyRequest.java @@ -6,4 +6,5 @@ public record MentoringApplyRequest( @NotNull(message = "멘토 id를 입력해주세요.") Long mentorId ) { + } diff --git a/src/main/java/com/example/solidconnection/mentor/dto/MentoringConfirmRequest.java b/src/main/java/com/example/solidconnection/mentor/dto/MentoringConfirmRequest.java index 8436f263e..ab3f1a8a8 100644 --- a/src/main/java/com/example/solidconnection/mentor/dto/MentoringConfirmRequest.java +++ b/src/main/java/com/example/solidconnection/mentor/dto/MentoringConfirmRequest.java @@ -9,4 +9,5 @@ public record MentoringConfirmRequest( String rejectedReason ) { + } diff --git a/src/main/java/com/example/solidconnection/mentor/dto/MentoringConfirmResponse.java b/src/main/java/com/example/solidconnection/mentor/dto/MentoringConfirmResponse.java index 79ad48bf4..b4ed1e40f 100644 --- a/src/main/java/com/example/solidconnection/mentor/dto/MentoringConfirmResponse.java +++ b/src/main/java/com/example/solidconnection/mentor/dto/MentoringConfirmResponse.java @@ -5,6 +5,7 @@ public record MentoringConfirmResponse( long mentoringId ) { + public static MentoringConfirmResponse from(Mentoring mentoring) { return new MentoringConfirmResponse(mentoring.getId()); } diff --git a/src/main/java/com/example/solidconnection/mentor/dto/MentoringListResponse.java b/src/main/java/com/example/solidconnection/mentor/dto/MentoringListResponse.java index d943db618..cca80e06d 100644 --- a/src/main/java/com/example/solidconnection/mentor/dto/MentoringListResponse.java +++ b/src/main/java/com/example/solidconnection/mentor/dto/MentoringListResponse.java @@ -5,6 +5,7 @@ public record MentoringListResponse( List requests ) { + public static MentoringListResponse from(List requests) { return new MentoringListResponse(requests); } diff --git a/src/main/java/com/example/solidconnection/mentor/dto/MentoringResponse.java b/src/main/java/com/example/solidconnection/mentor/dto/MentoringResponse.java index 595f28b7b..6b96295ad 100644 --- a/src/main/java/com/example/solidconnection/mentor/dto/MentoringResponse.java +++ b/src/main/java/com/example/solidconnection/mentor/dto/MentoringResponse.java @@ -2,7 +2,6 @@ import com.example.solidconnection.mentor.domain.Mentoring; import com.example.solidconnection.siteuser.domain.SiteUser; - import java.time.ZonedDateTime; public record MentoringResponse( @@ -12,6 +11,7 @@ public record MentoringResponse( boolean isChecked, ZonedDateTime createdAt ) { + public static MentoringResponse from(Mentoring mentoring, SiteUser mentee) { return new MentoringResponse( mentoring.getId(), diff --git a/src/main/java/com/example/solidconnection/mentor/repository/ChannelRepository.java b/src/main/java/com/example/solidconnection/mentor/repository/ChannelRepository.java index 571e4fb21..a8c607389 100644 --- a/src/main/java/com/example/solidconnection/mentor/repository/ChannelRepository.java +++ b/src/main/java/com/example/solidconnection/mentor/repository/ChannelRepository.java @@ -4,4 +4,5 @@ import org.springframework.data.jpa.repository.JpaRepository; public interface ChannelRepository extends JpaRepository { + } diff --git a/src/main/java/com/example/solidconnection/mentor/repository/MentorBatchQueryRepository.java b/src/main/java/com/example/solidconnection/mentor/repository/MentorBatchQueryRepository.java index 026c7aef5..3e90f944f 100644 --- a/src/main/java/com/example/solidconnection/mentor/repository/MentorBatchQueryRepository.java +++ b/src/main/java/com/example/solidconnection/mentor/repository/MentorBatchQueryRepository.java @@ -1,20 +1,19 @@ package com.example.solidconnection.mentor.repository; +import static com.example.solidconnection.common.exception.ErrorCode.DATA_INTEGRITY_VIOLATION; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.mentor.domain.Mentor; import com.example.solidconnection.mentor.domain.Mentoring; import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.repository.SiteUserRepository; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Repository; - import java.util.List; import java.util.Map; import java.util.Set; import java.util.function.Function; import java.util.stream.Collectors; - -import static com.example.solidconnection.common.exception.ErrorCode.DATA_INTEGRITY_VIOLATION; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Repository; @Repository @RequiredArgsConstructor diff --git a/src/main/java/com/example/solidconnection/mentor/repository/MentorRepository.java b/src/main/java/com/example/solidconnection/mentor/repository/MentorRepository.java index aa8328ba7..b2332afad 100644 --- a/src/main/java/com/example/solidconnection/mentor/repository/MentorRepository.java +++ b/src/main/java/com/example/solidconnection/mentor/repository/MentorRepository.java @@ -1,12 +1,11 @@ package com.example.solidconnection.mentor.repository; import com.example.solidconnection.mentor.domain.Mentor; +import java.util.Optional; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Slice; import org.springframework.data.jpa.repository.JpaRepository; -import java.util.Optional; - public interface MentorRepository extends JpaRepository { boolean existsBySiteUserId(long siteUserId); diff --git a/src/main/java/com/example/solidconnection/mentor/repository/MentoringRepository.java b/src/main/java/com/example/solidconnection/mentor/repository/MentoringRepository.java index 76a3758f2..8f7cfade3 100644 --- a/src/main/java/com/example/solidconnection/mentor/repository/MentoringRepository.java +++ b/src/main/java/com/example/solidconnection/mentor/repository/MentoringRepository.java @@ -1,12 +1,11 @@ package com.example.solidconnection.mentor.repository; import com.example.solidconnection.mentor.domain.Mentoring; +import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; -import java.util.List; - public interface MentoringRepository extends JpaRepository { int countByMentorIdAndCheckedAtIsNull(long mentorId); @@ -16,8 +15,8 @@ public interface MentoringRepository extends JpaRepository { List findAllByMentorId(long mentorId); @Query(""" - SELECT m FROM Mentoring m - WHERE m.mentorId IN :mentorIds AND m.menteeId = :menteeId - """) + SELECT m FROM Mentoring m + WHERE m.mentorId IN :mentorIds AND m.menteeId = :menteeId + """) List findAllByMentorIdInAndMenteeId(@Param("mentorIds") List mentorIds, @Param("menteeId") long menteeId); } diff --git a/src/main/java/com/example/solidconnection/mentor/service/MentorMyPageService.java b/src/main/java/com/example/solidconnection/mentor/service/MentorMyPageService.java index 6a2d47ded..e4a920397 100644 --- a/src/main/java/com/example/solidconnection/mentor/service/MentorMyPageService.java +++ b/src/main/java/com/example/solidconnection/mentor/service/MentorMyPageService.java @@ -1,5 +1,8 @@ package com.example.solidconnection.mentor.service; +import static com.example.solidconnection.common.exception.ErrorCode.CHANNEL_REGISTRATION_LIMIT_EXCEEDED; +import static com.example.solidconnection.common.exception.ErrorCode.MENTOR_NOT_FOUND; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.mentor.domain.Channel; import com.example.solidconnection.mentor.domain.Mentor; @@ -8,16 +11,12 @@ import com.example.solidconnection.mentor.dto.MentorMyPageUpdateRequest; import com.example.solidconnection.mentor.repository.MentorRepository; import com.example.solidconnection.siteuser.domain.SiteUser; +import java.util.ArrayList; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.List; - -import static com.example.solidconnection.common.exception.ErrorCode.CHANNEL_REGISTRATION_LIMIT_EXCEEDED; -import static com.example.solidconnection.common.exception.ErrorCode.MENTOR_NOT_FOUND; - @RequiredArgsConstructor @Service public class MentorMyPageService { diff --git a/src/main/java/com/example/solidconnection/mentor/service/MentorQueryService.java b/src/main/java/com/example/solidconnection/mentor/service/MentorQueryService.java index a7c46e285..e6d1ffd67 100644 --- a/src/main/java/com/example/solidconnection/mentor/service/MentorQueryService.java +++ b/src/main/java/com/example/solidconnection/mentor/service/MentorQueryService.java @@ -1,5 +1,7 @@ package com.example.solidconnection.mentor.service; +import static com.example.solidconnection.common.exception.ErrorCode.MENTOR_NOT_FOUND; + import com.example.solidconnection.common.dto.SliceResponse; import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.mentor.domain.Mentor; @@ -10,18 +12,15 @@ import com.example.solidconnection.mentor.repository.MentoringRepository; import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.repository.SiteUserRepository; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Slice; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import static com.example.solidconnection.common.exception.ErrorCode.MENTOR_NOT_FOUND; - @RequiredArgsConstructor @Service public class MentorQueryService { diff --git a/src/main/java/com/example/solidconnection/mentor/service/MentoringCommandService.java b/src/main/java/com/example/solidconnection/mentor/service/MentoringCommandService.java index f7a9495ad..165011f55 100644 --- a/src/main/java/com/example/solidconnection/mentor/service/MentoringCommandService.java +++ b/src/main/java/com/example/solidconnection/mentor/service/MentoringCommandService.java @@ -1,5 +1,11 @@ package com.example.solidconnection.mentor.service; +import static com.example.solidconnection.common.exception.ErrorCode.MENTORING_ALREADY_CONFIRMED; +import static com.example.solidconnection.common.exception.ErrorCode.MENTORING_NOT_FOUND; +import static com.example.solidconnection.common.exception.ErrorCode.MENTOR_NOT_FOUND; +import static com.example.solidconnection.common.exception.ErrorCode.REJECTED_REASON_REQUIRED; +import static com.example.solidconnection.common.exception.ErrorCode.UNAUTHORIZED_MENTORING; + import com.example.solidconnection.common.VerifyStatus; import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.mentor.domain.Mentor; @@ -15,12 +21,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import static com.example.solidconnection.common.exception.ErrorCode.MENTORING_ALREADY_CONFIRMED; -import static com.example.solidconnection.common.exception.ErrorCode.MENTORING_NOT_FOUND; -import static com.example.solidconnection.common.exception.ErrorCode.MENTOR_NOT_FOUND; -import static com.example.solidconnection.common.exception.ErrorCode.REJECTED_REASON_REQUIRED; -import static com.example.solidconnection.common.exception.ErrorCode.UNAUTHORIZED_MENTORING; - @Service @RequiredArgsConstructor public class MentoringCommandService { diff --git a/src/main/java/com/example/solidconnection/mentor/service/MentoringQueryService.java b/src/main/java/com/example/solidconnection/mentor/service/MentoringQueryService.java index cf40b73a5..2ffa36602 100644 --- a/src/main/java/com/example/solidconnection/mentor/service/MentoringQueryService.java +++ b/src/main/java/com/example/solidconnection/mentor/service/MentoringQueryService.java @@ -1,5 +1,7 @@ package com.example.solidconnection.mentor.service; +import static com.example.solidconnection.common.exception.ErrorCode.MENTOR_NOT_FOUND; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.common.exception.ErrorCode; import com.example.solidconnection.mentor.domain.Mentor; @@ -11,14 +13,11 @@ import com.example.solidconnection.mentor.repository.MentoringRepository; import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.repository.SiteUserRepository; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; - -import static com.example.solidconnection.common.exception.ErrorCode.MENTOR_NOT_FOUND; - @Service @RequiredArgsConstructor public class MentoringQueryService { diff --git a/src/main/java/com/example/solidconnection/news/config/NewsProperties.java b/src/main/java/com/example/solidconnection/news/config/NewsProperties.java index ecd7c96b8..3289ab7de 100644 --- a/src/main/java/com/example/solidconnection/news/config/NewsProperties.java +++ b/src/main/java/com/example/solidconnection/news/config/NewsProperties.java @@ -6,4 +6,5 @@ public record NewsProperties( String defaultThumbnailUrl ) { + } diff --git a/src/main/java/com/example/solidconnection/news/dto/NewsCommandResponse.java b/src/main/java/com/example/solidconnection/news/dto/NewsCommandResponse.java index fc0b8daf3..bbc3059e1 100644 --- a/src/main/java/com/example/solidconnection/news/dto/NewsCommandResponse.java +++ b/src/main/java/com/example/solidconnection/news/dto/NewsCommandResponse.java @@ -5,6 +5,7 @@ public record NewsCommandResponse( long id ) { + public static NewsCommandResponse from(News news) { return new NewsCommandResponse( news.getId() diff --git a/src/main/java/com/example/solidconnection/news/dto/NewsCreateRequest.java b/src/main/java/com/example/solidconnection/news/dto/NewsCreateRequest.java index 660611537..c1359ae9d 100644 --- a/src/main/java/com/example/solidconnection/news/dto/NewsCreateRequest.java +++ b/src/main/java/com/example/solidconnection/news/dto/NewsCreateRequest.java @@ -19,6 +19,7 @@ public record NewsCreateRequest( @URL(message = "올바른 URL 형식이 아닙니다.") String url ) { + public News toEntity(String thumbnailUrl, long siteUserId) { return new News( title, diff --git a/src/main/java/com/example/solidconnection/news/dto/NewsListResponse.java b/src/main/java/com/example/solidconnection/news/dto/NewsListResponse.java index b501b3810..29d3a1544 100644 --- a/src/main/java/com/example/solidconnection/news/dto/NewsListResponse.java +++ b/src/main/java/com/example/solidconnection/news/dto/NewsListResponse.java @@ -5,6 +5,7 @@ public record NewsListResponse( List newsResponseList ) { + public static NewsListResponse from(List newsResponseList) { return new NewsListResponse(newsResponseList); } diff --git a/src/main/java/com/example/solidconnection/news/dto/NewsResponse.java b/src/main/java/com/example/solidconnection/news/dto/NewsResponse.java index b39daffce..77d8cd3a3 100644 --- a/src/main/java/com/example/solidconnection/news/dto/NewsResponse.java +++ b/src/main/java/com/example/solidconnection/news/dto/NewsResponse.java @@ -1,7 +1,6 @@ package com.example.solidconnection.news.dto; import com.example.solidconnection.news.domain.News; - import java.time.ZonedDateTime; public record NewsResponse( @@ -12,6 +11,7 @@ public record NewsResponse( String url, ZonedDateTime updatedAt ) { + public static NewsResponse from(News news) { return new NewsResponse( news.getId(), diff --git a/src/main/java/com/example/solidconnection/news/dto/NewsUpdateRequest.java b/src/main/java/com/example/solidconnection/news/dto/NewsUpdateRequest.java index 9d09001bd..df396d92b 100644 --- a/src/main/java/com/example/solidconnection/news/dto/NewsUpdateRequest.java +++ b/src/main/java/com/example/solidconnection/news/dto/NewsUpdateRequest.java @@ -20,4 +20,5 @@ public record NewsUpdateRequest( Boolean resetToDefaultImage ) { + } diff --git a/src/main/java/com/example/solidconnection/news/repository/LikedNewsRepository.java b/src/main/java/com/example/solidconnection/news/repository/LikedNewsRepository.java index 6c9a51585..26e3d8e3c 100644 --- a/src/main/java/com/example/solidconnection/news/repository/LikedNewsRepository.java +++ b/src/main/java/com/example/solidconnection/news/repository/LikedNewsRepository.java @@ -1,9 +1,8 @@ package com.example.solidconnection.news.repository; import com.example.solidconnection.news.domain.LikedNews; -import org.springframework.data.jpa.repository.JpaRepository; - import java.util.Optional; +import org.springframework.data.jpa.repository.JpaRepository; public interface LikedNewsRepository extends JpaRepository { diff --git a/src/main/java/com/example/solidconnection/news/repository/NewsRepository.java b/src/main/java/com/example/solidconnection/news/repository/NewsRepository.java index 3171bfcf8..4ec1798df 100644 --- a/src/main/java/com/example/solidconnection/news/repository/NewsRepository.java +++ b/src/main/java/com/example/solidconnection/news/repository/NewsRepository.java @@ -1,9 +1,8 @@ package com.example.solidconnection.news.repository; import com.example.solidconnection.news.domain.News; -import org.springframework.data.jpa.repository.JpaRepository; - import java.util.List; +import org.springframework.data.jpa.repository.JpaRepository; public interface NewsRepository extends JpaRepository { diff --git a/src/main/java/com/example/solidconnection/news/service/NewsCommandService.java b/src/main/java/com/example/solidconnection/news/service/NewsCommandService.java index a9d8c74a4..2875742d5 100644 --- a/src/main/java/com/example/solidconnection/news/service/NewsCommandService.java +++ b/src/main/java/com/example/solidconnection/news/service/NewsCommandService.java @@ -1,5 +1,8 @@ package com.example.solidconnection.news.service; +import static com.example.solidconnection.common.exception.ErrorCode.INVALID_NEWS_ACCESS; +import static com.example.solidconnection.common.exception.ErrorCode.NEWS_NOT_FOUND; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.news.config.NewsProperties; import com.example.solidconnection.news.domain.News; @@ -17,9 +20,6 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; -import static com.example.solidconnection.common.exception.ErrorCode.INVALID_NEWS_ACCESS; -import static com.example.solidconnection.common.exception.ErrorCode.NEWS_NOT_FOUND; - @Service @RequiredArgsConstructor public class NewsCommandService { @@ -29,7 +29,7 @@ public class NewsCommandService { private final NewsRepository newsRepository; @Transactional - public NewsCommandResponse createNews(long siteUserId,NewsCreateRequest newsCreateRequest, MultipartFile imageFile) { + public NewsCommandResponse createNews(long siteUserId, NewsCreateRequest newsCreateRequest, MultipartFile imageFile) { String thumbnailUrl = getImageUrl(imageFile); News news = newsCreateRequest.toEntity(thumbnailUrl, siteUserId); News savedNews = newsRepository.save(news); @@ -69,8 +69,7 @@ private void updateThumbnail(News news, MultipartFile imageFile, Boolean resetTo if (Boolean.TRUE.equals(resetToDefaultImage)) { deleteCustomImage(news.getThumbnailUrl()); news.updateThumbnailUrl(newsProperties.defaultThumbnailUrl()); - } - else if (imageFile != null && !imageFile.isEmpty()) { + } else if (imageFile != null && !imageFile.isEmpty()) { UploadedFileUrlResponse uploadedFile = s3Service.uploadFile(imageFile, ImgType.NEWS); deleteCustomImage(news.getThumbnailUrl()); news.updateThumbnailUrl(uploadedFile.fileUrl()); diff --git a/src/main/java/com/example/solidconnection/news/service/NewsLikeService.java b/src/main/java/com/example/solidconnection/news/service/NewsLikeService.java index 0ca88992f..e0e2e5114 100644 --- a/src/main/java/com/example/solidconnection/news/service/NewsLikeService.java +++ b/src/main/java/com/example/solidconnection/news/service/NewsLikeService.java @@ -1,5 +1,9 @@ package com.example.solidconnection.news.service; +import static com.example.solidconnection.common.exception.ErrorCode.ALREADY_LIKED_NEWS; +import static com.example.solidconnection.common.exception.ErrorCode.NEWS_NOT_FOUND; +import static com.example.solidconnection.common.exception.ErrorCode.NOT_LIKED_NEWS; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.news.domain.LikedNews; import com.example.solidconnection.news.dto.LikedNewsResponse; @@ -9,10 +13,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import static com.example.solidconnection.common.exception.ErrorCode.ALREADY_LIKED_NEWS; -import static com.example.solidconnection.common.exception.ErrorCode.NEWS_NOT_FOUND; -import static com.example.solidconnection.common.exception.ErrorCode.NOT_LIKED_NEWS; - @RequiredArgsConstructor @Service public class NewsLikeService { diff --git a/src/main/java/com/example/solidconnection/news/service/NewsQueryService.java b/src/main/java/com/example/solidconnection/news/service/NewsQueryService.java index 3b04e3b86..cda55c1dd 100644 --- a/src/main/java/com/example/solidconnection/news/service/NewsQueryService.java +++ b/src/main/java/com/example/solidconnection/news/service/NewsQueryService.java @@ -1,15 +1,14 @@ package com.example.solidconnection.news.service; import com.example.solidconnection.news.domain.News; -import com.example.solidconnection.news.dto.NewsResponse; import com.example.solidconnection.news.dto.NewsListResponse; +import com.example.solidconnection.news.dto.NewsResponse; import com.example.solidconnection.news.repository.NewsRepository; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; - @Service @RequiredArgsConstructor public class NewsQueryService { diff --git a/src/main/java/com/example/solidconnection/s3/dto/UploadedFileUrlResponse.java b/src/main/java/com/example/solidconnection/s3/dto/UploadedFileUrlResponse.java index ca6a08b46..0a4722807 100644 --- a/src/main/java/com/example/solidconnection/s3/dto/UploadedFileUrlResponse.java +++ b/src/main/java/com/example/solidconnection/s3/dto/UploadedFileUrlResponse.java @@ -2,4 +2,5 @@ public record UploadedFileUrlResponse( String fileUrl) { + } diff --git a/src/main/java/com/example/solidconnection/s3/dto/urlPrefixResponse.java b/src/main/java/com/example/solidconnection/s3/dto/urlPrefixResponse.java index f36838060..ab4d2f68b 100644 --- a/src/main/java/com/example/solidconnection/s3/dto/urlPrefixResponse.java +++ b/src/main/java/com/example/solidconnection/s3/dto/urlPrefixResponse.java @@ -6,4 +6,5 @@ public record urlPrefixResponse( String cloudFrontDefault, String cloudFrontUploaded ) { + } diff --git a/src/main/java/com/example/solidconnection/s3/service/FileUploadService.java b/src/main/java/com/example/solidconnection/s3/service/FileUploadService.java index 61bc6f89c..51ef4caa9 100644 --- a/src/main/java/com/example/solidconnection/s3/service/FileUploadService.java +++ b/src/main/java/com/example/solidconnection/s3/service/FileUploadService.java @@ -1,5 +1,8 @@ package com.example.solidconnection.s3.service; +import static com.example.solidconnection.common.exception.ErrorCode.S3_CLIENT_EXCEPTION; +import static com.example.solidconnection.common.exception.ErrorCode.S3_SERVICE_EXCEPTION; + import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.services.s3.AmazonS3Client; @@ -7,17 +10,13 @@ import com.amazonaws.services.s3.model.ObjectMetadata; import com.amazonaws.services.s3.model.PutObjectRequest; import com.example.solidconnection.common.exception.CustomException; +import java.io.IOException; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; -import java.io.IOException; - -import static com.example.solidconnection.common.exception.ErrorCode.S3_CLIENT_EXCEPTION; -import static com.example.solidconnection.common.exception.ErrorCode.S3_SERVICE_EXCEPTION; - @Component @EnableAsync @Slf4j @@ -39,7 +38,7 @@ public void uploadFile(String bucket, String fileName, MultipartFile multipartFi try { amazonS3.putObject(new PutObjectRequest(bucket, fileName, multipartFile.getInputStream(), metadata) - .withCannedAcl(CannedAccessControlList.PublicRead)); + .withCannedAcl(CannedAccessControlList.PublicRead)); log.info("이미지 업로드 정상적 완료 thread: {}", Thread.currentThread().getName()); } catch (AmazonServiceException e) { log.error("이미지 업로드 중 s3 서비스 예외 발생 : {}", e.getMessage()); diff --git a/src/main/java/com/example/solidconnection/s3/service/S3Service.java b/src/main/java/com/example/solidconnection/s3/service/S3Service.java index 1b7daf78f..1aa0ebbf1 100644 --- a/src/main/java/com/example/solidconnection/s3/service/S3Service.java +++ b/src/main/java/com/example/solidconnection/s3/service/S3Service.java @@ -1,5 +1,11 @@ package com.example.solidconnection.s3.service; +import static com.example.solidconnection.common.exception.ErrorCode.FILE_NOT_EXIST; +import static com.example.solidconnection.common.exception.ErrorCode.INVALID_FILE_EXTENSIONS; +import static com.example.solidconnection.common.exception.ErrorCode.NOT_ALLOWED_FILE_EXTENSIONS; +import static com.example.solidconnection.common.exception.ErrorCode.S3_CLIENT_EXCEPTION; +import static com.example.solidconnection.common.exception.ErrorCode.S3_SERVICE_EXCEPTION; + import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.services.s3.AmazonS3Client; @@ -9,6 +15,11 @@ import com.example.solidconnection.s3.dto.UploadedFileUrlResponse; import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.repository.SiteUserRepository; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Objects; +import java.util.UUID; import lombok.RequiredArgsConstructor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -17,18 +28,6 @@ import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Objects; -import java.util.UUID; - -import static com.example.solidconnection.common.exception.ErrorCode.FILE_NOT_EXIST; -import static com.example.solidconnection.common.exception.ErrorCode.INVALID_FILE_EXTENSIONS; -import static com.example.solidconnection.common.exception.ErrorCode.NOT_ALLOWED_FILE_EXTENSIONS; -import static com.example.solidconnection.common.exception.ErrorCode.S3_CLIENT_EXCEPTION; -import static com.example.solidconnection.common.exception.ErrorCode.S3_SERVICE_EXCEPTION; - @Service @RequiredArgsConstructor public class S3Service { diff --git a/src/main/java/com/example/solidconnection/scheduler/UpdateViewCountScheduler.java b/src/main/java/com/example/solidconnection/scheduler/UpdateViewCountScheduler.java index 97a546c05..746b50927 100644 --- a/src/main/java/com/example/solidconnection/scheduler/UpdateViewCountScheduler.java +++ b/src/main/java/com/example/solidconnection/scheduler/UpdateViewCountScheduler.java @@ -1,7 +1,10 @@ package com.example.solidconnection.scheduler; +import static com.example.solidconnection.community.post.service.RedisConstants.VIEW_COUNT_KEY_PATTERN; + import com.example.solidconnection.community.post.service.UpdateViewCountService; import com.example.solidconnection.util.RedisUtils; +import java.util.List; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Async; @@ -11,10 +14,6 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Component; -import java.util.List; - -import static com.example.solidconnection.community.post.service.RedisConstants.VIEW_COUNT_KEY_PATTERN; - @RequiredArgsConstructor @Component @EnableScheduling diff --git a/src/main/java/com/example/solidconnection/scheduler/UserRemovalScheduler.java b/src/main/java/com/example/solidconnection/scheduler/UserRemovalScheduler.java index 0af509833..da39cf2e9 100644 --- a/src/main/java/com/example/solidconnection/scheduler/UserRemovalScheduler.java +++ b/src/main/java/com/example/solidconnection/scheduler/UserRemovalScheduler.java @@ -2,13 +2,12 @@ import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.repository.SiteUserRepository; +import java.time.LocalDate; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; -import java.time.LocalDate; -import java.util.List; - @RequiredArgsConstructor @Component public class UserRemovalScheduler { diff --git a/src/main/java/com/example/solidconnection/score/domain/GpaScore.java b/src/main/java/com/example/solidconnection/score/domain/GpaScore.java index 8c2b42e02..284a815af 100644 --- a/src/main/java/com/example/solidconnection/score/domain/GpaScore.java +++ b/src/main/java/com/example/solidconnection/score/domain/GpaScore.java @@ -1,8 +1,8 @@ package com.example.solidconnection.score.domain; import com.example.solidconnection.application.domain.Gpa; -import com.example.solidconnection.common.VerifyStatus; import com.example.solidconnection.common.BaseEntity; +import com.example.solidconnection.common.VerifyStatus; import com.example.solidconnection.siteuser.domain.SiteUser; import jakarta.persistence.Column; import jakarta.persistence.Embedded; diff --git a/src/main/java/com/example/solidconnection/score/domain/LanguageTestScore.java b/src/main/java/com/example/solidconnection/score/domain/LanguageTestScore.java index 2bb87e707..04d95487b 100644 --- a/src/main/java/com/example/solidconnection/score/domain/LanguageTestScore.java +++ b/src/main/java/com/example/solidconnection/score/domain/LanguageTestScore.java @@ -1,8 +1,8 @@ package com.example.solidconnection.score.domain; import com.example.solidconnection.application.domain.LanguageTest; -import com.example.solidconnection.common.VerifyStatus; import com.example.solidconnection.common.BaseEntity; +import com.example.solidconnection.common.VerifyStatus; import com.example.solidconnection.siteuser.domain.SiteUser; import jakarta.persistence.Column; import jakarta.persistence.Embedded; diff --git a/src/main/java/com/example/solidconnection/score/dto/GpaResponse.java b/src/main/java/com/example/solidconnection/score/dto/GpaResponse.java index fc05667aa..74a471049 100644 --- a/src/main/java/com/example/solidconnection/score/dto/GpaResponse.java +++ b/src/main/java/com/example/solidconnection/score/dto/GpaResponse.java @@ -7,6 +7,7 @@ public record GpaResponse( double gpaCriteria, String gpaReportUrl ) { + public static GpaResponse from(Gpa gpa) { return new GpaResponse( gpa.getGpa(), diff --git a/src/main/java/com/example/solidconnection/score/dto/GpaScoreRequest.java b/src/main/java/com/example/solidconnection/score/dto/GpaScoreRequest.java index a95cced6c..cdbf87bd8 100644 --- a/src/main/java/com/example/solidconnection/score/dto/GpaScoreRequest.java +++ b/src/main/java/com/example/solidconnection/score/dto/GpaScoreRequest.java @@ -10,4 +10,5 @@ public record GpaScoreRequest( @NotNull(message = "학점 기준을 입력해주세요.") Double gpaCriteria ) { + } diff --git a/src/main/java/com/example/solidconnection/score/dto/GpaScoreStatusResponse.java b/src/main/java/com/example/solidconnection/score/dto/GpaScoreStatusResponse.java index b720e08f3..4d554269d 100644 --- a/src/main/java/com/example/solidconnection/score/dto/GpaScoreStatusResponse.java +++ b/src/main/java/com/example/solidconnection/score/dto/GpaScoreStatusResponse.java @@ -9,6 +9,7 @@ public record GpaScoreStatusResponse( VerifyStatus verifyStatus, String rejectedReason ) { + public static GpaScoreStatusResponse from(GpaScore gpaScore) { return new GpaScoreStatusResponse( gpaScore.getId(), diff --git a/src/main/java/com/example/solidconnection/score/dto/GpaScoreStatusesResponse.java b/src/main/java/com/example/solidconnection/score/dto/GpaScoreStatusesResponse.java index 24a12af18..4d31d4252 100644 --- a/src/main/java/com/example/solidconnection/score/dto/GpaScoreStatusesResponse.java +++ b/src/main/java/com/example/solidconnection/score/dto/GpaScoreStatusesResponse.java @@ -5,6 +5,7 @@ public record GpaScoreStatusesResponse( List gpaScoreStatusResponseList ) { + public static GpaScoreStatusesResponse from(List gpaScoreStatusResponseList) { return new GpaScoreStatusesResponse(gpaScoreStatusResponseList); } diff --git a/src/main/java/com/example/solidconnection/score/dto/LanguageTestResponse.java b/src/main/java/com/example/solidconnection/score/dto/LanguageTestResponse.java index 2368e18c7..d17f1632f 100644 --- a/src/main/java/com/example/solidconnection/score/dto/LanguageTestResponse.java +++ b/src/main/java/com/example/solidconnection/score/dto/LanguageTestResponse.java @@ -8,6 +8,7 @@ public record LanguageTestResponse( String languageTestScore, String languageTestReportUrl ) { + public static LanguageTestResponse from(LanguageTest languageTest) { return new LanguageTestResponse( languageTest.getLanguageTestType(), diff --git a/src/main/java/com/example/solidconnection/score/dto/LanguageTestScoreRequest.java b/src/main/java/com/example/solidconnection/score/dto/LanguageTestScoreRequest.java index 6173e8f00..13bf31384 100644 --- a/src/main/java/com/example/solidconnection/score/dto/LanguageTestScoreRequest.java +++ b/src/main/java/com/example/solidconnection/score/dto/LanguageTestScoreRequest.java @@ -12,4 +12,5 @@ public record LanguageTestScoreRequest( @NotBlank(message = "어학 점수를 입력해주세요.") String languageTestScore ) { + } diff --git a/src/main/java/com/example/solidconnection/score/dto/LanguageTestScoreStatusResponse.java b/src/main/java/com/example/solidconnection/score/dto/LanguageTestScoreStatusResponse.java index 825ac63db..afd604906 100644 --- a/src/main/java/com/example/solidconnection/score/dto/LanguageTestScoreStatusResponse.java +++ b/src/main/java/com/example/solidconnection/score/dto/LanguageTestScoreStatusResponse.java @@ -9,6 +9,7 @@ public record LanguageTestScoreStatusResponse( VerifyStatus verifyStatus, String rejectedReason ) { + public static LanguageTestScoreStatusResponse from(LanguageTestScore languageTestScore) { return new LanguageTestScoreStatusResponse( languageTestScore.getId(), diff --git a/src/main/java/com/example/solidconnection/score/dto/LanguageTestScoreStatusesResponse.java b/src/main/java/com/example/solidconnection/score/dto/LanguageTestScoreStatusesResponse.java index 027794853..811928011 100644 --- a/src/main/java/com/example/solidconnection/score/dto/LanguageTestScoreStatusesResponse.java +++ b/src/main/java/com/example/solidconnection/score/dto/LanguageTestScoreStatusesResponse.java @@ -5,6 +5,7 @@ public record LanguageTestScoreStatusesResponse( List languageTestScoreStatusResponseList ) { + public static LanguageTestScoreStatusesResponse from(List languageTestScoreStatusResponseList) { return new LanguageTestScoreStatusesResponse(languageTestScoreStatusResponseList); } diff --git a/src/main/java/com/example/solidconnection/score/repository/GpaScoreRepository.java b/src/main/java/com/example/solidconnection/score/repository/GpaScoreRepository.java index a37fbfd1c..207e36234 100644 --- a/src/main/java/com/example/solidconnection/score/repository/GpaScoreRepository.java +++ b/src/main/java/com/example/solidconnection/score/repository/GpaScoreRepository.java @@ -2,10 +2,9 @@ import com.example.solidconnection.score.domain.GpaScore; import com.example.solidconnection.score.repository.custom.GpaScoreFilterRepository; -import org.springframework.data.jpa.repository.JpaRepository; - import java.util.List; import java.util.Optional; +import org.springframework.data.jpa.repository.JpaRepository; public interface GpaScoreRepository extends JpaRepository, GpaScoreFilterRepository { diff --git a/src/main/java/com/example/solidconnection/score/repository/LanguageTestScoreRepository.java b/src/main/java/com/example/solidconnection/score/repository/LanguageTestScoreRepository.java index 2f4268c06..40fe50106 100644 --- a/src/main/java/com/example/solidconnection/score/repository/LanguageTestScoreRepository.java +++ b/src/main/java/com/example/solidconnection/score/repository/LanguageTestScoreRepository.java @@ -3,10 +3,9 @@ import com.example.solidconnection.score.domain.LanguageTestScore; import com.example.solidconnection.score.repository.custom.LanguageTestScoreFilterRepository; import com.example.solidconnection.university.domain.LanguageTestType; -import org.springframework.data.jpa.repository.JpaRepository; - import java.util.List; import java.util.Optional; +import org.springframework.data.jpa.repository.JpaRepository; public interface LanguageTestScoreRepository extends JpaRepository, LanguageTestScoreFilterRepository { diff --git a/src/main/java/com/example/solidconnection/score/repository/custom/GpaScoreFilterRepositoryImpl.java b/src/main/java/com/example/solidconnection/score/repository/custom/GpaScoreFilterRepositoryImpl.java index dad2fa25e..839b4340e 100644 --- a/src/main/java/com/example/solidconnection/score/repository/custom/GpaScoreFilterRepositoryImpl.java +++ b/src/main/java/com/example/solidconnection/score/repository/custom/GpaScoreFilterRepositoryImpl.java @@ -1,5 +1,9 @@ package com.example.solidconnection.score.repository.custom; +import static com.example.solidconnection.score.domain.QGpaScore.gpaScore; +import static com.example.solidconnection.siteuser.domain.QSiteUser.siteUser; +import static org.springframework.util.StringUtils.hasText; + import com.example.solidconnection.admin.dto.GpaResponse; import com.example.solidconnection.admin.dto.GpaScoreSearchResponse; import com.example.solidconnection.admin.dto.GpaScoreStatusResponse; @@ -11,21 +15,16 @@ import com.querydsl.core.types.dsl.BooleanExpression; import com.querydsl.jpa.impl.JPAQueryFactory; import jakarta.persistence.EntityManager; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Repository; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.util.List; - -import static com.example.solidconnection.score.domain.QGpaScore.gpaScore; -import static com.example.solidconnection.siteuser.domain.QSiteUser.siteUser; -import static org.springframework.util.StringUtils.hasText; - @Repository public class GpaScoreFilterRepositoryImpl implements GpaScoreFilterRepository { diff --git a/src/main/java/com/example/solidconnection/score/repository/custom/LanguageTestScoreFilterRepositoryImpl.java b/src/main/java/com/example/solidconnection/score/repository/custom/LanguageTestScoreFilterRepositoryImpl.java index 8d958d12a..d8f42f6a5 100644 --- a/src/main/java/com/example/solidconnection/score/repository/custom/LanguageTestScoreFilterRepositoryImpl.java +++ b/src/main/java/com/example/solidconnection/score/repository/custom/LanguageTestScoreFilterRepositoryImpl.java @@ -1,5 +1,9 @@ package com.example.solidconnection.score.repository.custom; +import static com.example.solidconnection.score.domain.QLanguageTestScore.languageTestScore; +import static com.example.solidconnection.siteuser.domain.QSiteUser.siteUser; +import static io.jsonwebtoken.lang.Strings.hasText; + import com.example.solidconnection.admin.dto.LanguageTestResponse; import com.example.solidconnection.admin.dto.LanguageTestScoreSearchResponse; import com.example.solidconnection.admin.dto.LanguageTestScoreStatusResponse; @@ -11,21 +15,16 @@ import com.querydsl.core.types.dsl.BooleanExpression; import com.querydsl.jpa.impl.JPAQueryFactory; import jakarta.persistence.EntityManager; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Repository; -import java.time.LocalDate; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.util.List; - -import static com.example.solidconnection.score.domain.QLanguageTestScore.languageTestScore; -import static com.example.solidconnection.siteuser.domain.QSiteUser.siteUser; -import static io.jsonwebtoken.lang.Strings.hasText; - @Repository public class LanguageTestScoreFilterRepositoryImpl implements LanguageTestScoreFilterRepository { diff --git a/src/main/java/com/example/solidconnection/score/service/ScoreService.java b/src/main/java/com/example/solidconnection/score/service/ScoreService.java index 8b56461e9..daa054a83 100644 --- a/src/main/java/com/example/solidconnection/score/service/ScoreService.java +++ b/src/main/java/com/example/solidconnection/score/service/ScoreService.java @@ -16,14 +16,13 @@ import com.example.solidconnection.score.repository.GpaScoreRepository; import com.example.solidconnection.score.repository.LanguageTestScoreRepository; import com.example.solidconnection.siteuser.domain.SiteUser; +import java.util.List; +import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; -import java.util.List; -import java.util.stream.Collectors; - @Service @RequiredArgsConstructor public class ScoreService { @@ -45,7 +44,7 @@ public Long submitGpaScore(SiteUser siteUser, GpaScoreRequest gpaScoreRequest, M public Long submitLanguageTestScore(SiteUser siteUser, LanguageTestScoreRequest languageTestScoreRequest, MultipartFile file) { UploadedFileUrlResponse uploadedFile = s3Service.uploadFile(file, ImgType.LANGUAGE_TEST); LanguageTest languageTest = new LanguageTest(languageTestScoreRequest.languageTestType(), - languageTestScoreRequest.languageTestScore(), uploadedFile.fileUrl()); + languageTestScoreRequest.languageTestScore(), uploadedFile.fileUrl()); LanguageTestScore newScore = new LanguageTestScore(languageTest, siteUser); LanguageTestScore savedNewScore = languageTestScoreRepository.save(newScore); return savedNewScore.getId(); diff --git a/src/main/java/com/example/solidconnection/security/annotation/RequireRoleAccess.java b/src/main/java/com/example/solidconnection/security/annotation/RequireRoleAccess.java index aecef342d..c97ad3d51 100644 --- a/src/main/java/com/example/solidconnection/security/annotation/RequireRoleAccess.java +++ b/src/main/java/com/example/solidconnection/security/annotation/RequireRoleAccess.java @@ -1,7 +1,6 @@ package com.example.solidconnection.security.annotation; import com.example.solidconnection.siteuser.domain.Role; - import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -10,5 +9,6 @@ @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface RequireRoleAccess { + Role[] roles(); } diff --git a/src/main/java/com/example/solidconnection/security/aspect/RoleAuthorizationAspect.java b/src/main/java/com/example/solidconnection/security/aspect/RoleAuthorizationAspect.java index b1b1f4223..900251514 100644 --- a/src/main/java/com/example/solidconnection/security/aspect/RoleAuthorizationAspect.java +++ b/src/main/java/com/example/solidconnection/security/aspect/RoleAuthorizationAspect.java @@ -1,19 +1,18 @@ package com.example.solidconnection.security.aspect; +import static com.example.solidconnection.common.exception.ErrorCode.ACCESS_DENIED; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.security.annotation.RequireRoleAccess; import com.example.solidconnection.siteuser.domain.Role; import com.example.solidconnection.siteuser.domain.SiteUser; +import java.util.Arrays; import lombok.RequiredArgsConstructor; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.springframework.stereotype.Component; -import java.util.Arrays; - -import static com.example.solidconnection.common.exception.ErrorCode.ACCESS_DENIED; - @Aspect @Component @RequiredArgsConstructor diff --git a/src/main/java/com/example/solidconnection/security/authentication/JwtAuthentication.java b/src/main/java/com/example/solidconnection/security/authentication/JwtAuthentication.java index 64e89e891..d68458b18 100644 --- a/src/main/java/com/example/solidconnection/security/authentication/JwtAuthentication.java +++ b/src/main/java/com/example/solidconnection/security/authentication/JwtAuthentication.java @@ -1,10 +1,9 @@ package com.example.solidconnection.security.authentication; +import java.util.Collections; import org.springframework.security.authentication.AbstractAuthenticationToken; import org.springframework.security.core.userdetails.UserDetails; -import java.util.Collections; - public abstract class JwtAuthentication extends AbstractAuthenticationToken { private final String credentials; @@ -13,8 +12,8 @@ public abstract class JwtAuthentication extends AbstractAuthenticationToken { public JwtAuthentication(String token, Object principal) { super(principal instanceof UserDetails ? - ((UserDetails) principal).getAuthorities() : - Collections.emptyList()); + ((UserDetails) principal).getAuthorities() : + Collections.emptyList()); this.credentials = token; this.principal = principal; } diff --git a/src/main/java/com/example/solidconnection/security/config/CorsProperties.java b/src/main/java/com/example/solidconnection/security/config/CorsProperties.java index a179a7563..af16d782c 100644 --- a/src/main/java/com/example/solidconnection/security/config/CorsProperties.java +++ b/src/main/java/com/example/solidconnection/security/config/CorsProperties.java @@ -1,9 +1,9 @@ package com.example.solidconnection.security.config; -import org.springframework.boot.context.properties.ConfigurationProperties; - import java.util.List; +import org.springframework.boot.context.properties.ConfigurationProperties; @ConfigurationProperties(prefix = "cors") public record CorsProperties(List allowedOrigins) { + } diff --git a/src/main/java/com/example/solidconnection/security/config/SecurityConfiguration.java b/src/main/java/com/example/solidconnection/security/config/SecurityConfiguration.java index 46d1793df..b12bade83 100644 --- a/src/main/java/com/example/solidconnection/security/config/SecurityConfiguration.java +++ b/src/main/java/com/example/solidconnection/security/config/SecurityConfiguration.java @@ -1,5 +1,7 @@ package com.example.solidconnection.security.config; +import static com.example.solidconnection.siteuser.domain.Role.ADMIN; + import com.example.solidconnection.common.exception.CustomAccessDeniedHandler; import com.example.solidconnection.common.exception.CustomAuthenticationEntryPoint; import com.example.solidconnection.security.filter.ExceptionHandlerFilter; @@ -20,8 +22,6 @@ import org.springframework.web.cors.CorsConfigurationSource; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import static com.example.solidconnection.siteuser.domain.Role.ADMIN; - @Configuration @EnableWebSecurity @RequiredArgsConstructor diff --git a/src/main/java/com/example/solidconnection/security/filter/AuthorizationHeaderParser.java b/src/main/java/com/example/solidconnection/security/filter/AuthorizationHeaderParser.java index 8bbbc30e4..9360b8c8a 100644 --- a/src/main/java/com/example/solidconnection/security/filter/AuthorizationHeaderParser.java +++ b/src/main/java/com/example/solidconnection/security/filter/AuthorizationHeaderParser.java @@ -1,9 +1,8 @@ package com.example.solidconnection.security.filter; import jakarta.servlet.http.HttpServletRequest; -import org.springframework.stereotype.Component; - import java.util.Optional; +import org.springframework.stereotype.Component; @Component public class AuthorizationHeaderParser { diff --git a/src/main/java/com/example/solidconnection/security/filter/ExceptionHandlerFilter.java b/src/main/java/com/example/solidconnection/security/filter/ExceptionHandlerFilter.java index 84602a5f8..fd6dfdbc0 100644 --- a/src/main/java/com/example/solidconnection/security/filter/ExceptionHandlerFilter.java +++ b/src/main/java/com/example/solidconnection/security/filter/ExceptionHandlerFilter.java @@ -1,5 +1,7 @@ package com.example.solidconnection.security.filter; +import static com.example.solidconnection.common.exception.ErrorCode.AUTHENTICATION_FAILED; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.common.exception.ErrorCode; import com.example.solidconnection.common.response.ErrorResponse; @@ -8,16 +10,13 @@ import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import java.io.IOException; import lombok.NonNull; import lombok.RequiredArgsConstructor; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.stereotype.Component; import org.springframework.web.filter.OncePerRequestFilter; -import java.io.IOException; - -import static com.example.solidconnection.common.exception.ErrorCode.AUTHENTICATION_FAILED; - @Component @RequiredArgsConstructor public class ExceptionHandlerFilter extends OncePerRequestFilter { diff --git a/src/main/java/com/example/solidconnection/security/filter/JwtAuthenticationFilter.java b/src/main/java/com/example/solidconnection/security/filter/JwtAuthenticationFilter.java index 8ee6a98e4..a36385085 100644 --- a/src/main/java/com/example/solidconnection/security/filter/JwtAuthenticationFilter.java +++ b/src/main/java/com/example/solidconnection/security/filter/JwtAuthenticationFilter.java @@ -6,6 +6,8 @@ import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.Optional; import lombok.NonNull; import lombok.RequiredArgsConstructor; import org.springframework.security.authentication.AuthenticationManager; @@ -14,9 +16,6 @@ import org.springframework.stereotype.Component; import org.springframework.web.filter.OncePerRequestFilter; -import java.io.IOException; -import java.util.Optional; - @Component @RequiredArgsConstructor diff --git a/src/main/java/com/example/solidconnection/security/filter/SignOutCheckFilter.java b/src/main/java/com/example/solidconnection/security/filter/SignOutCheckFilter.java index c3926d67f..45f8d2106 100644 --- a/src/main/java/com/example/solidconnection/security/filter/SignOutCheckFilter.java +++ b/src/main/java/com/example/solidconnection/security/filter/SignOutCheckFilter.java @@ -1,20 +1,19 @@ package com.example.solidconnection.security.filter; +import static com.example.solidconnection.common.exception.ErrorCode.USER_ALREADY_SIGN_OUT; + import com.example.solidconnection.common.exception.CustomException; import jakarta.servlet.FilterChain; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.Optional; import lombok.NonNull; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; import org.springframework.web.filter.OncePerRequestFilter; -import java.io.IOException; -import java.util.Optional; - -import static com.example.solidconnection.common.exception.ErrorCode.USER_ALREADY_SIGN_OUT; - @Component @RequiredArgsConstructor public class SignOutCheckFilter extends OncePerRequestFilter { diff --git a/src/main/java/com/example/solidconnection/security/userdetails/SecurityRoleMapper.java b/src/main/java/com/example/solidconnection/security/userdetails/SecurityRoleMapper.java index 802229e46..5183d6411 100644 --- a/src/main/java/com/example/solidconnection/security/userdetails/SecurityRoleMapper.java +++ b/src/main/java/com/example/solidconnection/security/userdetails/SecurityRoleMapper.java @@ -1,9 +1,8 @@ package com.example.solidconnection.security.userdetails; import com.example.solidconnection.siteuser.domain.Role; -import org.springframework.security.core.authority.SimpleGrantedAuthority; - import java.util.List; +import org.springframework.security.core.authority.SimpleGrantedAuthority; public class SecurityRoleMapper { diff --git a/src/main/java/com/example/solidconnection/security/userdetails/SiteUserDetails.java b/src/main/java/com/example/solidconnection/security/userdetails/SiteUserDetails.java index d92d5cc32..25def3518 100644 --- a/src/main/java/com/example/solidconnection/security/userdetails/SiteUserDetails.java +++ b/src/main/java/com/example/solidconnection/security/userdetails/SiteUserDetails.java @@ -1,12 +1,11 @@ package com.example.solidconnection.security.userdetails; import com.example.solidconnection.siteuser.domain.SiteUser; +import java.util.Collection; import lombok.Getter; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; -import java.util.Collection; - public class SiteUserDetails implements UserDetails { // userDetails 에서 userName 은 사용자 식별자를 의미함 diff --git a/src/main/java/com/example/solidconnection/security/userdetails/SiteUserDetailsService.java b/src/main/java/com/example/solidconnection/security/userdetails/SiteUserDetailsService.java index e13dc1089..aa9b5dbd2 100644 --- a/src/main/java/com/example/solidconnection/security/userdetails/SiteUserDetailsService.java +++ b/src/main/java/com/example/solidconnection/security/userdetails/SiteUserDetailsService.java @@ -1,5 +1,8 @@ package com.example.solidconnection.security.userdetails; +import static com.example.solidconnection.common.exception.ErrorCode.AUTHENTICATION_FAILED; +import static com.example.solidconnection.common.exception.ErrorCode.INVALID_TOKEN; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.repository.SiteUserRepository; @@ -9,9 +12,6 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Service; -import static com.example.solidconnection.common.exception.ErrorCode.AUTHENTICATION_FAILED; -import static com.example.solidconnection.common.exception.ErrorCode.INVALID_TOKEN; - @Service @RequiredArgsConstructor public class SiteUserDetailsService implements UserDetailsService { diff --git a/src/main/java/com/example/solidconnection/siteuser/domain/SiteUser.java b/src/main/java/com/example/solidconnection/siteuser/domain/SiteUser.java index c7d30e7ae..0a15317c1 100644 --- a/src/main/java/com/example/solidconnection/siteuser/domain/SiteUser.java +++ b/src/main/java/com/example/solidconnection/siteuser/domain/SiteUser.java @@ -9,15 +9,14 @@ import jakarta.persistence.Id; import jakarta.persistence.Table; import jakarta.persistence.UniqueConstraint; +import java.time.LocalDate; +import java.time.LocalDateTime; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; -import java.time.LocalDate; -import java.time.LocalDateTime; - @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @Entity diff --git a/src/main/java/com/example/solidconnection/siteuser/dto/NicknameExistsResponse.java b/src/main/java/com/example/solidconnection/siteuser/dto/NicknameExistsResponse.java index efb53df54..203b771e3 100644 --- a/src/main/java/com/example/solidconnection/siteuser/dto/NicknameExistsResponse.java +++ b/src/main/java/com/example/solidconnection/siteuser/dto/NicknameExistsResponse.java @@ -3,6 +3,7 @@ public record NicknameExistsResponse( boolean exists ) { + public static NicknameExistsResponse from(boolean exists) { return new NicknameExistsResponse(exists); } diff --git a/src/main/java/com/example/solidconnection/siteuser/dto/NicknameUpdateRequest.java b/src/main/java/com/example/solidconnection/siteuser/dto/NicknameUpdateRequest.java index 9b83969b4..b2a8304f9 100644 --- a/src/main/java/com/example/solidconnection/siteuser/dto/NicknameUpdateRequest.java +++ b/src/main/java/com/example/solidconnection/siteuser/dto/NicknameUpdateRequest.java @@ -6,4 +6,5 @@ public record NicknameUpdateRequest( @NotBlank(message = "닉네임을 입력해주세요.") String nickname ) { + } diff --git a/src/main/java/com/example/solidconnection/siteuser/dto/NicknameUpdateResponse.java b/src/main/java/com/example/solidconnection/siteuser/dto/NicknameUpdateResponse.java index a59e71824..a4335e670 100644 --- a/src/main/java/com/example/solidconnection/siteuser/dto/NicknameUpdateResponse.java +++ b/src/main/java/com/example/solidconnection/siteuser/dto/NicknameUpdateResponse.java @@ -5,6 +5,7 @@ public record NicknameUpdateResponse( String nickname ) { + public static NicknameUpdateResponse from(SiteUser siteUser) { return new NicknameUpdateResponse( siteUser.getNickname() diff --git a/src/main/java/com/example/solidconnection/siteuser/dto/PostFindSiteUserResponse.java b/src/main/java/com/example/solidconnection/siteuser/dto/PostFindSiteUserResponse.java index 85d649631..048a76909 100644 --- a/src/main/java/com/example/solidconnection/siteuser/dto/PostFindSiteUserResponse.java +++ b/src/main/java/com/example/solidconnection/siteuser/dto/PostFindSiteUserResponse.java @@ -7,6 +7,7 @@ public record PostFindSiteUserResponse( String nickname, String profileImageUrl ) { + public static PostFindSiteUserResponse from(SiteUser siteUser) { return new PostFindSiteUserResponse( siteUser.getId(), diff --git a/src/main/java/com/example/solidconnection/siteuser/dto/ProfileImageUpdateResponse.java b/src/main/java/com/example/solidconnection/siteuser/dto/ProfileImageUpdateResponse.java index d806fde20..3bbb33e08 100644 --- a/src/main/java/com/example/solidconnection/siteuser/dto/ProfileImageUpdateResponse.java +++ b/src/main/java/com/example/solidconnection/siteuser/dto/ProfileImageUpdateResponse.java @@ -5,6 +5,7 @@ public record ProfileImageUpdateResponse( String profileImageUrl ) { + public static ProfileImageUpdateResponse from(SiteUser siteUser) { return new ProfileImageUpdateResponse( siteUser.getProfileImageUrl() diff --git a/src/main/java/com/example/solidconnection/siteuser/repository/SiteUserRepository.java b/src/main/java/com/example/solidconnection/siteuser/repository/SiteUserRepository.java index c93ff0532..864e72ed3 100644 --- a/src/main/java/com/example/solidconnection/siteuser/repository/SiteUserRepository.java +++ b/src/main/java/com/example/solidconnection/siteuser/repository/SiteUserRepository.java @@ -2,13 +2,12 @@ import com.example.solidconnection.siteuser.domain.AuthType; import com.example.solidconnection.siteuser.domain.SiteUser; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.query.Param; - import java.time.LocalDate; import java.util.List; import java.util.Optional; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; public interface SiteUserRepository extends JpaRepository { diff --git a/src/main/java/com/example/solidconnection/siteuser/service/MyPageService.java b/src/main/java/com/example/solidconnection/siteuser/service/MyPageService.java index ccabb0565..b5602fbf5 100644 --- a/src/main/java/com/example/solidconnection/siteuser/service/MyPageService.java +++ b/src/main/java/com/example/solidconnection/siteuser/service/MyPageService.java @@ -1,5 +1,9 @@ package com.example.solidconnection.siteuser.service; +import static com.example.solidconnection.common.exception.ErrorCode.CAN_NOT_CHANGE_NICKNAME_YET; +import static com.example.solidconnection.common.exception.ErrorCode.NICKNAME_ALREADY_EXISTED; +import static com.example.solidconnection.common.exception.ErrorCode.USER_NOT_FOUND; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.s3.domain.ImgType; import com.example.solidconnection.s3.dto.UploadedFileUrlResponse; @@ -8,18 +12,13 @@ import com.example.solidconnection.siteuser.dto.MyPageResponse; import com.example.solidconnection.siteuser.repository.SiteUserRepository; import com.example.solidconnection.university.repository.LikedUnivApplyInfoRepository; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -import static com.example.solidconnection.common.exception.ErrorCode.CAN_NOT_CHANGE_NICKNAME_YET; -import static com.example.solidconnection.common.exception.ErrorCode.NICKNAME_ALREADY_EXISTED; -import static com.example.solidconnection.common.exception.ErrorCode.USER_NOT_FOUND; - @RequiredArgsConstructor @Service public class MyPageService { diff --git a/src/main/java/com/example/solidconnection/university/controller/UnivApplyInfoController.java b/src/main/java/com/example/solidconnection/university/controller/UnivApplyInfoController.java index d93e1524b..5b1a759b8 100644 --- a/src/main/java/com/example/solidconnection/university/controller/UnivApplyInfoController.java +++ b/src/main/java/com/example/solidconnection/university/controller/UnivApplyInfoController.java @@ -10,6 +10,7 @@ import com.example.solidconnection.university.service.LikedUnivApplyInfoService; import com.example.solidconnection.university.service.UnivApplyInfoQueryService; import com.example.solidconnection.university.service.UnivApplyInfoRecommendService; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.DeleteMapping; @@ -20,8 +21,6 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import java.util.List; - @RequiredArgsConstructor @RequestMapping("/univ-apply-infos") @RestController diff --git a/src/main/java/com/example/solidconnection/university/domain/LikedUnivApplyInfo.java b/src/main/java/com/example/solidconnection/university/domain/LikedUnivApplyInfo.java index 0fc24ae3c..b1798f205 100644 --- a/src/main/java/com/example/solidconnection/university/domain/LikedUnivApplyInfo.java +++ b/src/main/java/com/example/solidconnection/university/domain/LikedUnivApplyInfo.java @@ -20,20 +20,20 @@ @Table( name = "liked_university_info_for_apply", uniqueConstraints = { - @UniqueConstraint( - name = "uk_liked_university_site_user_id_university_info_for_apply_id", - columnNames = {"site_user_id", "university_info_for_apply_id"} - ) -}) + @UniqueConstraint( + name = "uk_liked_university_site_user_id_university_info_for_apply_id", + columnNames = {"site_user_id", "university_info_for_apply_id"} + ) + }) public class LikedUnivApplyInfo { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - @Column(name="university_info_for_apply_id") + @Column(name = "university_info_for_apply_id") private long univApplyInfoId; - @Column(name="site_user_id") + @Column(name = "site_user_id") private long siteUserId; } diff --git a/src/main/java/com/example/solidconnection/university/domain/UnivApplyInfo.java b/src/main/java/com/example/solidconnection/university/domain/UnivApplyInfo.java index 9287f5bd4..09db466bd 100644 --- a/src/main/java/com/example/solidconnection/university/domain/UnivApplyInfo.java +++ b/src/main/java/com/example/solidconnection/university/domain/UnivApplyInfo.java @@ -1,5 +1,6 @@ package com.example.solidconnection.university.domain; +import jakarta.persistence.CascadeType; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.EnumType; @@ -11,16 +12,14 @@ import jakarta.persistence.ManyToOne; import jakarta.persistence.OneToMany; import jakarta.persistence.Table; -import jakarta.persistence.CascadeType; +import java.util.HashSet; +import java.util.Set; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.NoArgsConstructor; -import java.util.HashSet; -import java.util.Set; - @Getter @EqualsAndHashCode(of = "id") @AllArgsConstructor diff --git a/src/main/java/com/example/solidconnection/university/dto/IsLikeResponse.java b/src/main/java/com/example/solidconnection/university/dto/IsLikeResponse.java index 7d4aebbf9..b0d340649 100644 --- a/src/main/java/com/example/solidconnection/university/dto/IsLikeResponse.java +++ b/src/main/java/com/example/solidconnection/university/dto/IsLikeResponse.java @@ -2,4 +2,5 @@ public record IsLikeResponse( boolean isLike) { + } diff --git a/src/main/java/com/example/solidconnection/university/dto/LikeResultResponse.java b/src/main/java/com/example/solidconnection/university/dto/LikeResultResponse.java index c67f2e408..11f01c180 100644 --- a/src/main/java/com/example/solidconnection/university/dto/LikeResultResponse.java +++ b/src/main/java/com/example/solidconnection/university/dto/LikeResultResponse.java @@ -2,4 +2,5 @@ public record LikeResultResponse( String result) { + } diff --git a/src/main/java/com/example/solidconnection/university/dto/UnivApplyInfoDetailResponse.java b/src/main/java/com/example/solidconnection/university/dto/UnivApplyInfoDetailResponse.java index 673254d88..481629f24 100644 --- a/src/main/java/com/example/solidconnection/university/dto/UnivApplyInfoDetailResponse.java +++ b/src/main/java/com/example/solidconnection/university/dto/UnivApplyInfoDetailResponse.java @@ -1,8 +1,7 @@ package com.example.solidconnection.university.dto; -import com.example.solidconnection.university.domain.University; import com.example.solidconnection.university.domain.UnivApplyInfo; - +import com.example.solidconnection.university.domain.University; import java.util.List; public record UnivApplyInfoDetailResponse( diff --git a/src/main/java/com/example/solidconnection/university/dto/UnivApplyInfoPreviewResponse.java b/src/main/java/com/example/solidconnection/university/dto/UnivApplyInfoPreviewResponse.java index 4f7f7c3f1..0c6badbfd 100644 --- a/src/main/java/com/example/solidconnection/university/dto/UnivApplyInfoPreviewResponse.java +++ b/src/main/java/com/example/solidconnection/university/dto/UnivApplyInfoPreviewResponse.java @@ -1,7 +1,6 @@ package com.example.solidconnection.university.dto; import com.example.solidconnection.university.domain.UnivApplyInfo; - import java.util.Collections; import java.util.List; diff --git a/src/main/java/com/example/solidconnection/university/dto/UnivApplyInfoPreviewResponses.java b/src/main/java/com/example/solidconnection/university/dto/UnivApplyInfoPreviewResponses.java index 2afec8262..610404555 100644 --- a/src/main/java/com/example/solidconnection/university/dto/UnivApplyInfoPreviewResponses.java +++ b/src/main/java/com/example/solidconnection/university/dto/UnivApplyInfoPreviewResponses.java @@ -6,4 +6,5 @@ public record UnivApplyInfoPreviewResponses( List univApplyInfoPreviews // todo: #345 응답 형식으로 바로 배열이 아니라, univApplyInfoPreviews로 감싸 응답한다고 전달 후, 코드 변경 필요 ) { + } diff --git a/src/main/java/com/example/solidconnection/university/dto/validation/ValidUnivApplyInfoChoice.java b/src/main/java/com/example/solidconnection/university/dto/validation/ValidUnivApplyInfoChoice.java index 7d925287a..4cef2b5eb 100644 --- a/src/main/java/com/example/solidconnection/university/dto/validation/ValidUnivApplyInfoChoice.java +++ b/src/main/java/com/example/solidconnection/university/dto/validation/ValidUnivApplyInfoChoice.java @@ -2,7 +2,6 @@ import jakarta.validation.Constraint; import jakarta.validation.Payload; - import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -14,6 +13,8 @@ public @interface ValidUnivApplyInfoChoice { String message() default "유효하지 않은 지망 대학 선택입니다."; + Class[] groups() default {}; + Class[] payload() default {}; } diff --git a/src/main/java/com/example/solidconnection/university/dto/validation/ValidUnivApplyInfoChoiceValidator.java b/src/main/java/com/example/solidconnection/university/dto/validation/ValidUnivApplyInfoChoiceValidator.java index a49d631d1..500695646 100644 --- a/src/main/java/com/example/solidconnection/university/dto/validation/ValidUnivApplyInfoChoiceValidator.java +++ b/src/main/java/com/example/solidconnection/university/dto/validation/ValidUnivApplyInfoChoiceValidator.java @@ -1,18 +1,17 @@ package com.example.solidconnection.university.dto.validation; +import static com.example.solidconnection.common.exception.ErrorCode.DUPLICATE_UNIV_APPLY_INFO_CHOICE; +import static com.example.solidconnection.common.exception.ErrorCode.FIRST_CHOICE_REQUIRED; +import static com.example.solidconnection.common.exception.ErrorCode.THIRD_CHOICE_REQUIRES_SECOND; + import com.example.solidconnection.application.dto.UnivApplyInfoChoiceRequest; import jakarta.validation.ConstraintValidator; import jakarta.validation.ConstraintValidatorContext; - import java.util.HashSet; import java.util.Objects; import java.util.Set; import java.util.stream.Stream; -import static com.example.solidconnection.common.exception.ErrorCode.DUPLICATE_UNIV_APPLY_INFO_CHOICE; -import static com.example.solidconnection.common.exception.ErrorCode.FIRST_CHOICE_REQUIRED; -import static com.example.solidconnection.common.exception.ErrorCode.THIRD_CHOICE_REQUIRES_SECOND; - public class ValidUnivApplyInfoChoiceValidator implements ConstraintValidator { @Override diff --git a/src/main/java/com/example/solidconnection/university/repository/LanguageRequirementRepository.java b/src/main/java/com/example/solidconnection/university/repository/LanguageRequirementRepository.java index 9a0e590e0..edaf4c3a8 100644 --- a/src/main/java/com/example/solidconnection/university/repository/LanguageRequirementRepository.java +++ b/src/main/java/com/example/solidconnection/university/repository/LanguageRequirementRepository.java @@ -4,4 +4,5 @@ import org.springframework.data.jpa.repository.JpaRepository; public interface LanguageRequirementRepository extends JpaRepository { + } diff --git a/src/main/java/com/example/solidconnection/university/repository/LikedUnivApplyInfoRepository.java b/src/main/java/com/example/solidconnection/university/repository/LikedUnivApplyInfoRepository.java index fe4f93676..0dc8255a6 100644 --- a/src/main/java/com/example/solidconnection/university/repository/LikedUnivApplyInfoRepository.java +++ b/src/main/java/com/example/solidconnection/university/repository/LikedUnivApplyInfoRepository.java @@ -2,13 +2,12 @@ import com.example.solidconnection.university.domain.LikedUnivApplyInfo; import com.example.solidconnection.university.domain.UnivApplyInfo; +import java.util.List; +import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; -import java.util.List; -import java.util.Optional; - public interface LikedUnivApplyInfoRepository extends JpaRepository { List findAllBySiteUserId(long siteUserId); @@ -18,11 +17,11 @@ public interface LikedUnivApplyInfoRepository extends JpaRepository findBySiteUserIdAndUnivApplyInfoId(long siteUserId, long univApplyInfoId); @Query(""" - SELECT u - FROM UnivApplyInfo u - JOIN LikedUnivApplyInfo l ON u.id = l.univApplyInfoId - WHERE l.siteUserId = :siteUserId - """) + SELECT u + FROM UnivApplyInfo u + JOIN LikedUnivApplyInfo l ON u.id = l.univApplyInfoId + WHERE l.siteUserId = :siteUserId + """) List findUnivApplyInfosBySiteUserId(@Param("siteUserId") long siteUserId); boolean existsBySiteUserIdAndUnivApplyInfoId(long siteUserId, long univApplyInfoId); diff --git a/src/main/java/com/example/solidconnection/university/repository/UnivApplyInfoRepository.java b/src/main/java/com/example/solidconnection/university/repository/UnivApplyInfoRepository.java index c99ac01eb..b51ce5a89 100644 --- a/src/main/java/com/example/solidconnection/university/repository/UnivApplyInfoRepository.java +++ b/src/main/java/com/example/solidconnection/university/repository/UnivApplyInfoRepository.java @@ -1,52 +1,51 @@ package com.example.solidconnection.university.repository; +import static com.example.solidconnection.common.exception.ErrorCode.UNIV_APPLY_INFO_NOT_FOUND; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.university.domain.UnivApplyInfo; import com.example.solidconnection.university.repository.custom.UnivApplyInfoFilterRepository; +import java.util.List; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; -import java.util.List; - -import static com.example.solidconnection.common.exception.ErrorCode.UNIV_APPLY_INFO_NOT_FOUND; - @Repository public interface UnivApplyInfoRepository extends JpaRepository, UnivApplyInfoFilterRepository { @Query(""" - SELECT DISTINCT uai - FROM UnivApplyInfo uai - LEFT JOIN FETCH uai.languageRequirements lr - JOIN FETCH uai.university u - LEFT JOIN FETCH u.country c - LEFT JOIN FETCH u.region r - WHERE (c.code IN ( - SELECT ic.countryCode - FROM InterestedCountry ic - WHERE ic.siteUserId = :siteUserId - ) - OR r.code IN ( - SELECT ir.regionCode - FROM InterestedRegion ir - WHERE ir.siteUserId = :siteUserId - )) - AND uai.term = :term - """) + SELECT DISTINCT uai + FROM UnivApplyInfo uai + LEFT JOIN FETCH uai.languageRequirements lr + JOIN FETCH uai.university u + LEFT JOIN FETCH u.country c + LEFT JOIN FETCH u.region r + WHERE (c.code IN ( + SELECT ic.countryCode + FROM InterestedCountry ic + WHERE ic.siteUserId = :siteUserId + ) + OR r.code IN ( + SELECT ir.regionCode + FROM InterestedRegion ir + WHERE ir.siteUserId = :siteUserId + )) + AND uai.term = :term + """) List findAllBySiteUsersInterestedCountryOrRegionAndTerm(@Param("siteUserId") Long siteUserId, @Param("term") String term); @Query(""" - SELECT uai - FROM UnivApplyInfo uai - LEFT JOIN FETCH uai.languageRequirements lr - LEFT JOIN FETCH uai.university u - LEFT JOIN FETCH u.country c - LEFT JOIN FETCH u.region r - WHERE uai.term = :term - ORDER BY FUNCTION('RAND') - """) + SELECT uai + FROM UnivApplyInfo uai + LEFT JOIN FETCH uai.languageRequirements lr + LEFT JOIN FETCH uai.university u + LEFT JOIN FETCH u.country c + LEFT JOIN FETCH u.region r + WHERE uai.term = :term + ORDER BY FUNCTION('RAND') + """) List findRandomByTerm(@Param("term") String term, Pageable pageable); // JPA에서 LIMIT 사용이 불가하므로 Pageable을 통해 0page에서 정해진 개수 만큼 가져오는 방식으로 구현 default UnivApplyInfo getUnivApplyInfoById(Long id) { @@ -55,13 +54,13 @@ default UnivApplyInfo getUnivApplyInfoById(Long id) { } @Query(""" - SELECT DISTINCT uai - FROM UnivApplyInfo uai - LEFT JOIN FETCH uai.languageRequirements lr - LEFT JOIN FETCH uai.university u - LEFT JOIN FETCH u.country c - LEFT JOIN FETCH u.region r - WHERE uai.id IN :ids - """) + SELECT DISTINCT uai + FROM UnivApplyInfo uai + LEFT JOIN FETCH uai.languageRequirements lr + LEFT JOIN FETCH uai.university u + LEFT JOIN FETCH u.country c + LEFT JOIN FETCH u.region r + WHERE uai.id IN :ids + """) List findAllByIds(@Param("ids") List ids); } diff --git a/src/main/java/com/example/solidconnection/university/repository/UniversityRepository.java b/src/main/java/com/example/solidconnection/university/repository/UniversityRepository.java index a499d003c..5447a14ba 100644 --- a/src/main/java/com/example/solidconnection/university/repository/UniversityRepository.java +++ b/src/main/java/com/example/solidconnection/university/repository/UniversityRepository.java @@ -1,15 +1,14 @@ package com.example.solidconnection.university.repository; +import static com.example.solidconnection.common.exception.ErrorCode.UNIVERSITY_NOT_FOUND; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.university.domain.University; +import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; -import java.util.List; - -import static com.example.solidconnection.common.exception.ErrorCode.UNIVERSITY_NOT_FOUND; - public interface UniversityRepository extends JpaRepository { @Query("SELECT u FROM University u WHERE u.country.code IN :countryCodes OR u.region.code IN :regionCodes") diff --git a/src/main/java/com/example/solidconnection/university/repository/custom/UnivApplyInfoFilterRepository.java b/src/main/java/com/example/solidconnection/university/repository/custom/UnivApplyInfoFilterRepository.java index 588bfbf9f..5c95e5d1e 100644 --- a/src/main/java/com/example/solidconnection/university/repository/custom/UnivApplyInfoFilterRepository.java +++ b/src/main/java/com/example/solidconnection/university/repository/custom/UnivApplyInfoFilterRepository.java @@ -2,7 +2,6 @@ import com.example.solidconnection.university.domain.LanguageTestType; import com.example.solidconnection.university.domain.UnivApplyInfo; - import java.util.List; public interface UnivApplyInfoFilterRepository { diff --git a/src/main/java/com/example/solidconnection/university/repository/custom/UnivApplyInfoFilterRepositoryImpl.java b/src/main/java/com/example/solidconnection/university/repository/custom/UnivApplyInfoFilterRepositoryImpl.java index cf8f185d4..9e57274ee 100644 --- a/src/main/java/com/example/solidconnection/university/repository/custom/UnivApplyInfoFilterRepositoryImpl.java +++ b/src/main/java/com/example/solidconnection/university/repository/custom/UnivApplyInfoFilterRepositoryImpl.java @@ -3,20 +3,19 @@ import com.example.solidconnection.location.country.domain.QCountry; import com.example.solidconnection.location.region.domain.QRegion; import com.example.solidconnection.university.domain.LanguageTestType; +import com.example.solidconnection.university.domain.QLanguageRequirement; import com.example.solidconnection.university.domain.QUnivApplyInfo; import com.example.solidconnection.university.domain.QUniversity; import com.example.solidconnection.university.domain.UnivApplyInfo; -import com.example.solidconnection.university.domain.QLanguageRequirement; import com.querydsl.core.types.dsl.BooleanExpression; import com.querydsl.core.types.dsl.Expressions; import com.querydsl.core.types.dsl.StringPath; import com.querydsl.jpa.impl.JPAQueryFactory; import jakarta.persistence.EntityManager; +import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; -import java.util.List; - @Repository public class UnivApplyInfoFilterRepositoryImpl implements UnivApplyInfoFilterRepository { @@ -84,8 +83,8 @@ public List findAllByRegionCodeAndKeywordsAndLanguageTestTypeAndT .join(university.country, country) .join(university.region, region) .where(regionCodeEq(country, regionCode) - .and(countryOrUniversityContainsKeyword(country, university, keywords)) - .and(univApplyInfo.term.eq(term))) + .and(countryOrUniversityContainsKeyword(country, university, keywords)) + .and(univApplyInfo.term.eq(term))) .fetch(); if (testScore == null || testScore.isEmpty()) { diff --git a/src/main/java/com/example/solidconnection/university/service/GeneralUnivApplyInfoRecommendService.java b/src/main/java/com/example/solidconnection/university/service/GeneralUnivApplyInfoRecommendService.java index 07c2ef653..627e579a3 100644 --- a/src/main/java/com/example/solidconnection/university/service/GeneralUnivApplyInfoRecommendService.java +++ b/src/main/java/com/example/solidconnection/university/service/GeneralUnivApplyInfoRecommendService.java @@ -1,7 +1,10 @@ package com.example.solidconnection.university.service; +import static com.example.solidconnection.university.service.UnivApplyInfoRecommendService.RECOMMEND_UNIV_APPLY_INFO_NUM; + import com.example.solidconnection.university.domain.UnivApplyInfo; import com.example.solidconnection.university.repository.UnivApplyInfoRepository; +import java.util.List; import lombok.Getter; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; @@ -11,10 +14,6 @@ import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; -import java.util.List; - -import static com.example.solidconnection.university.service.UnivApplyInfoRecommendService.RECOMMEND_UNIV_APPLY_INFO_NUM; - @Service @RequiredArgsConstructor public class GeneralUnivApplyInfoRecommendService { diff --git a/src/main/java/com/example/solidconnection/university/service/LikedUnivApplyInfoService.java b/src/main/java/com/example/solidconnection/university/service/LikedUnivApplyInfoService.java index 2ac9ceb3d..7be082d9e 100644 --- a/src/main/java/com/example/solidconnection/university/service/LikedUnivApplyInfoService.java +++ b/src/main/java/com/example/solidconnection/university/service/LikedUnivApplyInfoService.java @@ -1,5 +1,8 @@ package com.example.solidconnection.university.service; +import static com.example.solidconnection.common.exception.ErrorCode.ALREADY_LIKED_UNIV_APPLY_INFO; +import static com.example.solidconnection.common.exception.ErrorCode.NOT_LIKED_UNIV_APPLY_INFO; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.university.domain.LikedUnivApplyInfo; @@ -8,17 +11,13 @@ import com.example.solidconnection.university.dto.UnivApplyInfoPreviewResponse; import com.example.solidconnection.university.repository.LikedUnivApplyInfoRepository; import com.example.solidconnection.university.repository.UnivApplyInfoRepository; +import java.util.List; +import java.util.Optional; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.Optional; - -import static com.example.solidconnection.common.exception.ErrorCode.ALREADY_LIKED_UNIV_APPLY_INFO; -import static com.example.solidconnection.common.exception.ErrorCode.NOT_LIKED_UNIV_APPLY_INFO; - @RequiredArgsConstructor @Service public class LikedUnivApplyInfoService { diff --git a/src/main/java/com/example/solidconnection/university/service/UnivApplyInfoQueryService.java b/src/main/java/com/example/solidconnection/university/service/UnivApplyInfoQueryService.java index 86717c382..ff0215c63 100644 --- a/src/main/java/com/example/solidconnection/university/service/UnivApplyInfoQueryService.java +++ b/src/main/java/com/example/solidconnection/university/service/UnivApplyInfoQueryService.java @@ -2,20 +2,19 @@ import com.example.solidconnection.cache.annotation.ThunderingHerdCaching; import com.example.solidconnection.university.domain.LanguageTestType; -import com.example.solidconnection.university.domain.University; import com.example.solidconnection.university.domain.UnivApplyInfo; +import com.example.solidconnection.university.domain.University; import com.example.solidconnection.university.dto.UnivApplyInfoDetailResponse; import com.example.solidconnection.university.dto.UnivApplyInfoPreviewResponse; import com.example.solidconnection.university.dto.UnivApplyInfoPreviewResponses; import com.example.solidconnection.university.repository.UnivApplyInfoRepository; import com.example.solidconnection.university.repository.custom.UnivApplyInfoFilterRepositoryImpl; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; - @RequiredArgsConstructor @Service public class UnivApplyInfoQueryService { @@ -53,9 +52,9 @@ public UnivApplyInfoPreviewResponses searchUnivApplyInfo( String regionCode, List keywords, LanguageTestType testType, String testScore) { return new UnivApplyInfoPreviewResponses(universityFilterRepository - .findAllByRegionCodeAndKeywordsAndLanguageTestTypeAndTestScoreAndTerm(regionCode, keywords, testType, testScore, term) - .stream() - .map(UnivApplyInfoPreviewResponse::from) - .toList()); + .findAllByRegionCodeAndKeywordsAndLanguageTestTypeAndTestScoreAndTerm(regionCode, keywords, testType, testScore, term) + .stream() + .map(UnivApplyInfoPreviewResponse::from) + .toList()); } } diff --git a/src/main/java/com/example/solidconnection/university/service/UnivApplyInfoRecommendService.java b/src/main/java/com/example/solidconnection/university/service/UnivApplyInfoRecommendService.java index eaff6eec9..b3ef68baa 100644 --- a/src/main/java/com/example/solidconnection/university/service/UnivApplyInfoRecommendService.java +++ b/src/main/java/com/example/solidconnection/university/service/UnivApplyInfoRecommendService.java @@ -6,15 +6,14 @@ import com.example.solidconnection.university.dto.UnivApplyInfoPreviewResponse; import com.example.solidconnection.university.dto.UnivApplyInfoRecommendsResponse; import com.example.solidconnection.university.repository.UnivApplyInfoRepository; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - @RequiredArgsConstructor @Service public class UnivApplyInfoRecommendService { @@ -48,8 +47,8 @@ public UnivApplyInfoRecommendsResponse getPersonalRecommends(SiteUser siteUser) } return new UnivApplyInfoRecommendsResponse(trimmedRecommends.stream() - .map(UnivApplyInfoPreviewResponse::from) - .toList()); + .map(UnivApplyInfoPreviewResponse::from) + .toList()); } private List getGeneralRecommendsExcludingSelected(List alreadyPicked) { @@ -68,7 +67,7 @@ private List getGeneralRecommendsExcludingSelected(List generalRecommends = new ArrayList<>(generalUnivApplyInfoRecommendService.getGeneralRecommends()); return new UnivApplyInfoRecommendsResponse(generalRecommends.stream() - .map(UnivApplyInfoPreviewResponse::from) - .toList()); + .map(UnivApplyInfoPreviewResponse::from) + .toList()); } } diff --git a/src/main/java/com/example/solidconnection/util/RedisUtils.java b/src/main/java/com/example/solidconnection/util/RedisUtils.java index 6f11eedfa..df4d7572d 100644 --- a/src/main/java/com/example/solidconnection/util/RedisUtils.java +++ b/src/main/java/com/example/solidconnection/util/RedisUtils.java @@ -1,8 +1,9 @@ package com.example.solidconnection.util; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.stereotype.Component; +import static com.example.solidconnection.community.post.service.RedisConstants.CREATE_LOCK_PREFIX; +import static com.example.solidconnection.community.post.service.RedisConstants.REFRESH_LOCK_PREFIX; +import static com.example.solidconnection.community.post.service.RedisConstants.VALIDATE_VIEW_COUNT_KEY_PREFIX; +import static com.example.solidconnection.community.post.service.RedisConstants.VIEW_COUNT_KEY_PREFIX; import java.util.Collections; import java.util.Comparator; @@ -10,11 +11,9 @@ import java.util.Set; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; - -import static com.example.solidconnection.community.post.service.RedisConstants.CREATE_LOCK_PREFIX; -import static com.example.solidconnection.community.post.service.RedisConstants.REFRESH_LOCK_PREFIX; -import static com.example.solidconnection.community.post.service.RedisConstants.VALIDATE_VIEW_COUNT_KEY_PREFIX; -import static com.example.solidconnection.community.post.service.RedisConstants.VIEW_COUNT_KEY_PREFIX; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Component; @Component public class RedisUtils { diff --git a/src/test/java/com/example/solidconnection/admin/dto/validation/RejectedReasonValidatorTest.java b/src/test/java/com/example/solidconnection/admin/dto/validation/RejectedReasonValidatorTest.java index eaaf529df..ec28dba17 100644 --- a/src/test/java/com/example/solidconnection/admin/dto/validation/RejectedReasonValidatorTest.java +++ b/src/test/java/com/example/solidconnection/admin/dto/validation/RejectedReasonValidatorTest.java @@ -1,5 +1,8 @@ package com.example.solidconnection.admin.dto.validation; +import static com.example.solidconnection.common.exception.ErrorCode.REJECTED_REASON_REQUIRED; +import static org.assertj.core.api.Assertions.assertThat; + import com.example.solidconnection.admin.dto.GpaScoreUpdateRequest; import com.example.solidconnection.admin.dto.LanguageTestScoreUpdateRequest; import com.example.solidconnection.common.VerifyStatus; @@ -8,16 +11,12 @@ import jakarta.validation.Validation; import jakarta.validation.Validator; import jakarta.validation.ValidatorFactory; +import java.util.Set; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; -import java.util.Set; - -import static com.example.solidconnection.common.exception.ErrorCode.REJECTED_REASON_REQUIRED; -import static org.assertj.core.api.Assertions.assertThat; - @DisplayName("거절 사유 유효성 검사 테스트") class RejectedReasonValidatorTest { diff --git a/src/test/java/com/example/solidconnection/admin/service/AdminGpaScoreServiceTest.java b/src/test/java/com/example/solidconnection/admin/service/AdminGpaScoreServiceTest.java index dd45e4f77..020d8eaef 100644 --- a/src/test/java/com/example/solidconnection/admin/service/AdminGpaScoreServiceTest.java +++ b/src/test/java/com/example/solidconnection/admin/service/AdminGpaScoreServiceTest.java @@ -1,5 +1,10 @@ package com.example.solidconnection.admin.service; +import static com.example.solidconnection.common.exception.ErrorCode.GPA_SCORE_NOT_FOUND; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.AssertionsForClassTypes.assertThatCode; +import static org.junit.jupiter.api.Assertions.assertAll; + import com.example.solidconnection.admin.dto.GpaScoreResponse; import com.example.solidconnection.admin.dto.GpaScoreSearchResponse; import com.example.solidconnection.admin.dto.GpaScoreUpdateRequest; @@ -11,6 +16,8 @@ import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.support.TestContainerSpringBootTest; +import java.time.LocalDate; +import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; @@ -20,14 +27,6 @@ import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; -import java.time.LocalDate; -import java.util.List; - -import static com.example.solidconnection.common.exception.ErrorCode.GPA_SCORE_NOT_FOUND; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.AssertionsForClassTypes.assertThatCode; -import static org.junit.jupiter.api.Assertions.assertAll; - @TestContainerSpringBootTest @DisplayName("학점 검증 관리자 서비스 테스트") class AdminGpaScoreServiceTest { diff --git a/src/test/java/com/example/solidconnection/admin/service/AdminLanguageTestScoreServiceTest.java b/src/test/java/com/example/solidconnection/admin/service/AdminLanguageTestScoreServiceTest.java index 439e9444c..2c4406d52 100644 --- a/src/test/java/com/example/solidconnection/admin/service/AdminLanguageTestScoreServiceTest.java +++ b/src/test/java/com/example/solidconnection/admin/service/AdminLanguageTestScoreServiceTest.java @@ -1,5 +1,11 @@ package com.example.solidconnection.admin.service; +import static com.example.solidconnection.common.exception.ErrorCode.LANGUAGE_TEST_SCORE_NOT_FOUND; +import static com.example.solidconnection.university.domain.LanguageTestType.TOEIC; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.AssertionsForClassTypes.assertThatCode; +import static org.junit.jupiter.api.Assertions.assertAll; + import com.example.solidconnection.admin.dto.LanguageTestScoreResponse; import com.example.solidconnection.admin.dto.LanguageTestScoreSearchResponse; import com.example.solidconnection.admin.dto.LanguageTestScoreUpdateRequest; @@ -11,6 +17,8 @@ import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.support.TestContainerSpringBootTest; +import java.time.LocalDate; +import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; @@ -20,15 +28,6 @@ import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; -import java.time.LocalDate; -import java.util.List; - -import static com.example.solidconnection.common.exception.ErrorCode.LANGUAGE_TEST_SCORE_NOT_FOUND; -import static com.example.solidconnection.university.domain.LanguageTestType.TOEIC; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.AssertionsForClassTypes.assertThatCode; -import static org.junit.jupiter.api.Assertions.assertAll; - @TestContainerSpringBootTest @DisplayName("어학 검증 관리자 서비스 테스트") class AdminLanguageTestScoreServiceTest { diff --git a/src/test/java/com/example/solidconnection/application/fixture/ApplicationFixtureBuilder.java b/src/test/java/com/example/solidconnection/application/fixture/ApplicationFixtureBuilder.java index efe76bd4a..818410938 100644 --- a/src/test/java/com/example/solidconnection/application/fixture/ApplicationFixtureBuilder.java +++ b/src/test/java/com/example/solidconnection/application/fixture/ApplicationFixtureBuilder.java @@ -3,8 +3,8 @@ import com.example.solidconnection.application.domain.Application; import com.example.solidconnection.application.domain.Gpa; import com.example.solidconnection.application.domain.LanguageTest; -import com.example.solidconnection.common.VerifyStatus; import com.example.solidconnection.application.repository.ApplicationRepository; +import com.example.solidconnection.common.VerifyStatus; import com.example.solidconnection.siteuser.domain.SiteUser; import lombok.RequiredArgsConstructor; import org.springframework.boot.test.context.TestComponent; diff --git a/src/test/java/com/example/solidconnection/application/service/ApplicationQueryServiceTest.java b/src/test/java/com/example/solidconnection/application/service/ApplicationQueryServiceTest.java index 3acb51d02..0fcec8d3b 100644 --- a/src/test/java/com/example/solidconnection/application/service/ApplicationQueryServiceTest.java +++ b/src/test/java/com/example/solidconnection/application/service/ApplicationQueryServiceTest.java @@ -1,12 +1,14 @@ package com.example.solidconnection.application.service; +import static org.assertj.core.api.Assertions.assertThat; + import com.example.solidconnection.application.domain.Application; -import com.example.solidconnection.common.VerifyStatus; import com.example.solidconnection.application.dto.ApplicantResponse; -import com.example.solidconnection.application.dto.ApplicationsResponse; import com.example.solidconnection.application.dto.ApplicantsResponse; +import com.example.solidconnection.application.dto.ApplicationsResponse; import com.example.solidconnection.application.fixture.ApplicationFixture; import com.example.solidconnection.application.repository.ApplicationRepository; +import com.example.solidconnection.common.VerifyStatus; import com.example.solidconnection.location.region.fixture.RegionFixture; import com.example.solidconnection.score.domain.GpaScore; import com.example.solidconnection.score.domain.LanguageTestScore; @@ -17,6 +19,7 @@ import com.example.solidconnection.support.TestContainerSpringBootTest; import com.example.solidconnection.university.domain.UnivApplyInfo; import com.example.solidconnection.university.fixture.UnivApplyInfoFixture; +import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; @@ -24,10 +27,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import java.util.List; - -import static org.assertj.core.api.Assertions.assertThat; - @TestContainerSpringBootTest @DisplayName("지원서 조회 서비스 테스트") class ApplicationQueryServiceTest { @@ -141,11 +140,11 @@ class 지원자_목록_조회_테스트 { // then assertThat(response.firstChoice()).containsAll(List.of( ApplicantsResponse.of(괌대학_A_지원_정보, - List.of(application1), user1), + List.of(application1), user1), ApplicantsResponse.of(괌대학_B_지원_정보, - List.of(application2), user1), + List.of(application2), user1), ApplicantsResponse.of(서던덴마크대학교_지원_정보, - List.of(application3), user1) + List.of(application3), user1) )); } @@ -193,9 +192,9 @@ class 지원자_목록_조회_테스트 { // then assertThat(response.firstChoice()).containsExactlyInAnyOrder( ApplicantsResponse.of(괌대학_A_지원_정보, - List.of(application1), user1), + List.of(application1), user1), ApplicantsResponse.of(괌대학_B_지원_정보, - List.of(application2), user1) + List.of(application2), user1) ); } @@ -243,9 +242,9 @@ class 지원자_목록_조회_테스트 { // then assertThat(response.firstChoice()).containsExactlyInAnyOrder( ApplicantsResponse.of(괌대학_A_지원_정보, - List.of(application1), user1), + List.of(application1), user1), ApplicantsResponse.of(괌대학_B_지원_정보, - List.of(application2), user1) + List.of(application2), user1) ); } @@ -273,7 +272,7 @@ class 지원자_목록_조회_테스트 { // then assertThat(response.firstChoice()).doesNotContainAnyElementsOf(List.of( ApplicantsResponse.of(괌대학_A_지원_정보, - List.of(application), user1) + List.of(application), user1) )); } @@ -312,14 +311,15 @@ class 지원자_목록_조회_테스트 { // then assertThat(response.firstChoice().stream() - .flatMap(univ -> univ.applicants().stream()) - .filter(ApplicantResponse::isMine)) + .flatMap(univ -> univ.applicants().stream()) + .filter(ApplicantResponse::isMine)) .containsExactly(ApplicantResponse.of(secondApplication, true)); } } @Nested class 경쟁자_목록_조회_테스트 { + @Test void 이번_학기_지원한_대학의_경쟁자_목록을_조회한다() { // given @@ -359,7 +359,7 @@ class 경쟁자_목록_조회_테스트 { // then assertThat(response.firstChoice()).containsExactlyInAnyOrder( ApplicantsResponse.of(괌대학_A_지원_정보, - List.of(application1, application2), user1) + List.of(application1, application2), user1) ); } diff --git a/src/test/java/com/example/solidconnection/application/service/ApplicationSubmissionServiceTest.java b/src/test/java/com/example/solidconnection/application/service/ApplicationSubmissionServiceTest.java index d0340931d..342c79eac 100644 --- a/src/test/java/com/example/solidconnection/application/service/ApplicationSubmissionServiceTest.java +++ b/src/test/java/com/example/solidconnection/application/service/ApplicationSubmissionServiceTest.java @@ -1,11 +1,19 @@ package com.example.solidconnection.application.service; +import static com.example.solidconnection.application.service.ApplicationSubmissionService.APPLICATION_UPDATE_COUNT_LIMIT; +import static com.example.solidconnection.common.exception.ErrorCode.APPLY_UPDATE_LIMIT_EXCEED; +import static com.example.solidconnection.common.exception.ErrorCode.INVALID_GPA_SCORE_STATUS; +import static com.example.solidconnection.common.exception.ErrorCode.INVALID_LANGUAGE_TEST_SCORE_STATUS; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.AssertionsForClassTypes.assertThatCode; +import static org.junit.jupiter.api.Assertions.assertAll; + import com.example.solidconnection.application.domain.Application; -import com.example.solidconnection.common.VerifyStatus; import com.example.solidconnection.application.dto.ApplicationSubmissionResponse; import com.example.solidconnection.application.dto.ApplyRequest; import com.example.solidconnection.application.dto.UnivApplyInfoChoiceRequest; import com.example.solidconnection.application.repository.ApplicationRepository; +import com.example.solidconnection.common.VerifyStatus; import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.score.domain.GpaScore; import com.example.solidconnection.score.domain.LanguageTestScore; @@ -22,14 +30,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import static com.example.solidconnection.application.service.ApplicationSubmissionService.APPLICATION_UPDATE_COUNT_LIMIT; -import static com.example.solidconnection.common.exception.ErrorCode.APPLY_UPDATE_LIMIT_EXCEED; -import static com.example.solidconnection.common.exception.ErrorCode.INVALID_GPA_SCORE_STATUS; -import static com.example.solidconnection.common.exception.ErrorCode.INVALID_LANGUAGE_TEST_SCORE_STATUS; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.AssertionsForClassTypes.assertThatCode; -import static org.junit.jupiter.api.Assertions.assertAll; - @TestContainerSpringBootTest @DisplayName("지원서 제출 서비스 테스트") class ApplicationSubmissionServiceTest { @@ -115,7 +115,7 @@ void setUp() { // when & then assertThatCode(() -> - applicationSubmissionService.apply(user, request) + applicationSubmissionService.apply(user, request) ) .isInstanceOf(CustomException.class) .hasMessage(INVALID_GPA_SCORE_STATUS.getMessage()); @@ -135,7 +135,7 @@ void setUp() { // when & then assertThatCode(() -> - applicationSubmissionService.apply(user, request) + applicationSubmissionService.apply(user, request) ) .isInstanceOf(CustomException.class) .hasMessage(INVALID_LANGUAGE_TEST_SCORE_STATUS.getMessage()); @@ -159,7 +159,7 @@ void setUp() { // when & then assertThatCode(() -> - applicationSubmissionService.apply(user, request) + applicationSubmissionService.apply(user, request) ) .isInstanceOf(CustomException.class) .hasMessage(APPLY_UPDATE_LIMIT_EXCEED.getMessage()); diff --git a/src/test/java/com/example/solidconnection/auth/service/AuthServiceTest.java b/src/test/java/com/example/solidconnection/auth/service/AuthServiceTest.java index c4c2a1708..e0f926b9c 100644 --- a/src/test/java/com/example/solidconnection/auth/service/AuthServiceTest.java +++ b/src/test/java/com/example/solidconnection/auth/service/AuthServiceTest.java @@ -1,5 +1,10 @@ package com.example.solidconnection.auth.service; +import static com.example.solidconnection.common.exception.ErrorCode.REFRESH_TOKEN_EXPIRED; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatCode; +import static org.junit.jupiter.api.Assertions.assertAll; + import com.example.solidconnection.auth.domain.TokenType; import com.example.solidconnection.auth.dto.ReissueRequest; import com.example.solidconnection.auth.dto.ReissueResponse; @@ -8,19 +13,13 @@ import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.support.TestContainerSpringBootTest; +import java.time.LocalDate; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; -import java.time.LocalDate; - -import static com.example.solidconnection.common.exception.ErrorCode.REFRESH_TOKEN_EXPIRED; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatCode; -import static org.junit.jupiter.api.Assertions.assertAll; - @DisplayName("인증 서비스 테스트") @TestContainerSpringBootTest class AuthServiceTest { diff --git a/src/test/java/com/example/solidconnection/auth/service/AuthTokenProviderTest.java b/src/test/java/com/example/solidconnection/auth/service/AuthTokenProviderTest.java index b6c111f24..b2e588a59 100644 --- a/src/test/java/com/example/solidconnection/auth/service/AuthTokenProviderTest.java +++ b/src/test/java/com/example/solidconnection/auth/service/AuthTokenProviderTest.java @@ -1,5 +1,8 @@ package com.example.solidconnection.auth.service; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertAll; + import com.example.solidconnection.auth.domain.TokenType; import com.example.solidconnection.support.TestContainerSpringBootTest; import org.junit.jupiter.api.BeforeEach; @@ -9,9 +12,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertAll; - @TestContainerSpringBootTest @DisplayName("인증 토큰 제공자 테스트") class AuthTokenProviderTest { diff --git a/src/test/java/com/example/solidconnection/auth/service/EmailSignInServiceTest.java b/src/test/java/com/example/solidconnection/auth/service/EmailSignInServiceTest.java index 84c0f362b..02a833f88 100644 --- a/src/test/java/com/example/solidconnection/auth/service/EmailSignInServiceTest.java +++ b/src/test/java/com/example/solidconnection/auth/service/EmailSignInServiceTest.java @@ -1,5 +1,8 @@ package com.example.solidconnection.auth.service; +import static org.assertj.core.api.Assertions.assertThatCode; +import static org.junit.jupiter.api.Assertions.assertAll; + import com.example.solidconnection.auth.dto.EmailSignInRequest; import com.example.solidconnection.auth.dto.SignInResponse; import com.example.solidconnection.common.exception.CustomException; @@ -13,9 +16,6 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import static org.assertj.core.api.Assertions.assertThatCode; -import static org.junit.jupiter.api.Assertions.assertAll; - @DisplayName("이메일 로그인 서비스 테스트") @TestContainerSpringBootTest class EmailSignInServiceTest { diff --git a/src/test/java/com/example/solidconnection/auth/service/JwtTokenProviderTest.java b/src/test/java/com/example/solidconnection/auth/service/JwtTokenProviderTest.java index c36a0bb39..f7aa82a25 100644 --- a/src/test/java/com/example/solidconnection/auth/service/JwtTokenProviderTest.java +++ b/src/test/java/com/example/solidconnection/auth/service/JwtTokenProviderTest.java @@ -1,28 +1,27 @@ package com.example.solidconnection.auth.service; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatCode; +import static org.junit.jupiter.api.Assertions.assertAll; + import com.example.solidconnection.auth.domain.TokenType; import com.example.solidconnection.auth.token.JwtTokenProvider; +import com.example.solidconnection.auth.token.config.JwtProperties; import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.common.exception.ErrorCode; -import com.example.solidconnection.auth.token.config.JwtProperties; import com.example.solidconnection.support.TestContainerSpringBootTest; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatCode; -import static org.junit.jupiter.api.Assertions.assertAll; - @DisplayName("토큰 제공자 테스트") @TestContainerSpringBootTest class JwtTokenProviderTest { diff --git a/src/test/java/com/example/solidconnection/auth/service/SignInServiceTest.java b/src/test/java/com/example/solidconnection/auth/service/SignInServiceTest.java index 463bc4957..da06aa3e4 100644 --- a/src/test/java/com/example/solidconnection/auth/service/SignInServiceTest.java +++ b/src/test/java/com/example/solidconnection/auth/service/SignInServiceTest.java @@ -1,21 +1,20 @@ package com.example.solidconnection.auth.service; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertAll; + import com.example.solidconnection.auth.domain.TokenType; import com.example.solidconnection.auth.dto.SignInResponse; import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.support.TestContainerSpringBootTest; +import java.time.LocalDate; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; -import java.time.LocalDate; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertAll; - @DisplayName("로그인 서비스 테스트") @TestContainerSpringBootTest class SignInServiceTest { diff --git a/src/test/java/com/example/solidconnection/auth/service/TokenBlackListServiceTest.java b/src/test/java/com/example/solidconnection/auth/service/TokenBlackListServiceTest.java index e1974cc93..49328315a 100644 --- a/src/test/java/com/example/solidconnection/auth/service/TokenBlackListServiceTest.java +++ b/src/test/java/com/example/solidconnection/auth/service/TokenBlackListServiceTest.java @@ -1,5 +1,8 @@ package com.example.solidconnection.auth.service; +import static com.example.solidconnection.auth.domain.TokenType.BLACKLIST; +import static org.assertj.core.api.Assertions.assertThat; + import com.example.solidconnection.auth.token.TokenBlackListService; import com.example.solidconnection.support.TestContainerSpringBootTest; import org.junit.jupiter.api.Nested; @@ -7,9 +10,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; -import static com.example.solidconnection.auth.domain.TokenType.BLACKLIST; -import static org.assertj.core.api.Assertions.assertThat; - @TestContainerSpringBootTest class TokenBlackListServiceTest { diff --git a/src/test/java/com/example/solidconnection/auth/service/oauth/OAuthSignUpTokenProviderTest.java b/src/test/java/com/example/solidconnection/auth/service/oauth/OAuthSignUpTokenProviderTest.java index c748987c1..b1f5683b6 100644 --- a/src/test/java/com/example/solidconnection/auth/service/oauth/OAuthSignUpTokenProviderTest.java +++ b/src/test/java/com/example/solidconnection/auth/service/oauth/OAuthSignUpTokenProviderTest.java @@ -1,5 +1,12 @@ package com.example.solidconnection.auth.service.oauth; +import static com.example.solidconnection.auth.service.oauth.OAuthSignUpTokenProvider.AUTH_TYPE_CLAIM_KEY; +import static com.example.solidconnection.common.exception.ErrorCode.SIGN_UP_TOKEN_INVALID; +import static com.example.solidconnection.common.exception.ErrorCode.SIGN_UP_TOKEN_NOT_ISSUED_BY_SERVER; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatCode; +import static org.junit.jupiter.api.Assertions.assertAll; + import com.example.solidconnection.auth.domain.TokenType; import com.example.solidconnection.auth.service.TokenProvider; import com.example.solidconnection.auth.token.config.JwtProperties; @@ -10,23 +17,15 @@ import io.jsonwebtoken.JwtBuilder; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -import static com.example.solidconnection.auth.service.oauth.OAuthSignUpTokenProvider.AUTH_TYPE_CLAIM_KEY; -import static com.example.solidconnection.common.exception.ErrorCode.SIGN_UP_TOKEN_INVALID; -import static com.example.solidconnection.common.exception.ErrorCode.SIGN_UP_TOKEN_NOT_ISSUED_BY_SERVER; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatCode; -import static org.junit.jupiter.api.Assertions.assertAll; - @TestContainerSpringBootTest @DisplayName("OAuth 회원가입 토큰 제공자 테스트") class OAuthSignUpTokenProviderTest { diff --git a/src/test/java/com/example/solidconnection/common/exception/CustomAccessDeniedHandlerTest.java b/src/test/java/com/example/solidconnection/common/exception/CustomAccessDeniedHandlerTest.java index 977733785..22caee3a9 100644 --- a/src/test/java/com/example/solidconnection/common/exception/CustomAccessDeniedHandlerTest.java +++ b/src/test/java/com/example/solidconnection/common/exception/CustomAccessDeniedHandlerTest.java @@ -1,8 +1,12 @@ package com.example.solidconnection.common.exception; +import static com.example.solidconnection.common.exception.ErrorCode.ACCESS_DENIED; +import static org.assertj.core.api.Assertions.assertThat; + import com.example.solidconnection.common.response.ErrorResponse; import com.example.solidconnection.support.TestContainerSpringBootTest; import com.fasterxml.jackson.databind.ObjectMapper; +import java.io.IOException; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -11,11 +15,6 @@ import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.security.access.AccessDeniedException; -import java.io.IOException; - -import static com.example.solidconnection.common.exception.ErrorCode.ACCESS_DENIED; -import static org.assertj.core.api.Assertions.assertThat; - @TestContainerSpringBootTest @DisplayName("커스텀 인가 예외 처리 테스트") class CustomAccessDeniedHandlerTest { diff --git a/src/test/java/com/example/solidconnection/common/exception/CustomAuthenticationEntryPointTest.java b/src/test/java/com/example/solidconnection/common/exception/CustomAuthenticationEntryPointTest.java index a10fed5df..8193cdf47 100644 --- a/src/test/java/com/example/solidconnection/common/exception/CustomAuthenticationEntryPointTest.java +++ b/src/test/java/com/example/solidconnection/common/exception/CustomAuthenticationEntryPointTest.java @@ -1,8 +1,12 @@ package com.example.solidconnection.common.exception; +import static com.example.solidconnection.common.exception.ErrorCode.AUTHENTICATION_FAILED; +import static org.assertj.core.api.Assertions.assertThat; + import com.example.solidconnection.common.response.ErrorResponse; import com.example.solidconnection.support.TestContainerSpringBootTest; import com.fasterxml.jackson.databind.ObjectMapper; +import java.io.IOException; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -12,11 +16,6 @@ import org.springframework.security.authentication.AuthenticationServiceException; import org.springframework.security.core.AuthenticationException; -import java.io.IOException; - -import static com.example.solidconnection.common.exception.ErrorCode.AUTHENTICATION_FAILED; -import static org.assertj.core.api.Assertions.assertThat; - @TestContainerSpringBootTest @DisplayName("커스텀 인증 예외 처리 테스트") class CustomAuthenticationEntryPointTest { diff --git a/src/test/java/com/example/solidconnection/common/resolver/AuthorizedUserResolverTest.java b/src/test/java/com/example/solidconnection/common/resolver/AuthorizedUserResolverTest.java index 7eb144214..dd34783d2 100644 --- a/src/test/java/com/example/solidconnection/common/resolver/AuthorizedUserResolverTest.java +++ b/src/test/java/com/example/solidconnection/common/resolver/AuthorizedUserResolverTest.java @@ -1,5 +1,11 @@ package com.example.solidconnection.common.resolver; +import static com.example.solidconnection.common.exception.ErrorCode.AUTHENTICATION_FAILED; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatCode; +import static org.mockito.BDDMockito.given; +import static org.mockito.Mockito.mock; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.security.authentication.SiteUserAuthentication; import com.example.solidconnection.security.userdetails.SiteUserDetails; @@ -15,12 +21,6 @@ import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; -import static com.example.solidconnection.common.exception.ErrorCode.AUTHENTICATION_FAILED; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatCode; -import static org.mockito.BDDMockito.given; -import static org.mockito.Mockito.mock; - @TestContainerSpringBootTest @DisplayName("인증된 사용자 argument resolver 테스트") class AuthorizedUserResolverTest { diff --git a/src/test/java/com/example/solidconnection/common/resolver/CustomPageableHandlerMethodArgumentResolverTest.java b/src/test/java/com/example/solidconnection/common/resolver/CustomPageableHandlerMethodArgumentResolverTest.java index 5d1bc0faa..da4fcc852 100644 --- a/src/test/java/com/example/solidconnection/common/resolver/CustomPageableHandlerMethodArgumentResolverTest.java +++ b/src/test/java/com/example/solidconnection/common/resolver/CustomPageableHandlerMethodArgumentResolverTest.java @@ -1,6 +1,10 @@ package com.example.solidconnection.common.resolver; +import static org.assertj.core.api.Assertions.assertThat; + import com.example.solidconnection.support.TestContainerSpringBootTest; +import java.lang.reflect.Method; +import java.util.stream.Stream; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -14,11 +18,6 @@ import org.springframework.web.context.request.NativeWebRequest; import org.springframework.web.context.request.ServletWebRequest; -import java.lang.reflect.Method; -import java.util.stream.Stream; - -import static org.assertj.core.api.Assertions.assertThat; - @TestContainerSpringBootTest @DisplayName("커스텀 페이지 요청 argument resolver 테스트") class CustomPageableHandlerMethodArgumentResolverTest { diff --git a/src/test/java/com/example/solidconnection/community/board/fixture/BoardFixture.java b/src/test/java/com/example/solidconnection/community/board/fixture/BoardFixture.java index 16dc920d2..23815cf02 100644 --- a/src/test/java/com/example/solidconnection/community/board/fixture/BoardFixture.java +++ b/src/test/java/com/example/solidconnection/community/board/fixture/BoardFixture.java @@ -1,14 +1,14 @@ package com.example.solidconnection.community.board.fixture; -import com.example.solidconnection.community.board.domain.Board; -import lombok.RequiredArgsConstructor; -import org.springframework.boot.test.context.TestComponent; - import static com.example.solidconnection.community.board.domain.BoardCode.AMERICAS; import static com.example.solidconnection.community.board.domain.BoardCode.ASIA; import static com.example.solidconnection.community.board.domain.BoardCode.EUROPE; import static com.example.solidconnection.community.board.domain.BoardCode.FREE; +import com.example.solidconnection.community.board.domain.Board; +import lombok.RequiredArgsConstructor; +import org.springframework.boot.test.context.TestComponent; + @TestComponent @RequiredArgsConstructor public class BoardFixture { diff --git a/src/test/java/com/example/solidconnection/community/board/repository/BoardRepositoryForTest.java b/src/test/java/com/example/solidconnection/community/board/repository/BoardRepositoryForTest.java index bc6470e2c..c27d62452 100644 --- a/src/test/java/com/example/solidconnection/community/board/repository/BoardRepositoryForTest.java +++ b/src/test/java/com/example/solidconnection/community/board/repository/BoardRepositoryForTest.java @@ -1,12 +1,11 @@ package com.example.solidconnection.community.board.repository; import com.example.solidconnection.community.board.domain.Board; +import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; -import java.util.Optional; - public interface BoardRepositoryForTest extends JpaRepository { @Query("SELECT b FROM Board b WHERE b.code = :code") diff --git a/src/test/java/com/example/solidconnection/community/comment/service/CommentServiceTest.java b/src/test/java/com/example/solidconnection/community/comment/service/CommentServiceTest.java index 136500502..870696e74 100644 --- a/src/test/java/com/example/solidconnection/community/comment/service/CommentServiceTest.java +++ b/src/test/java/com/example/solidconnection/community/comment/service/CommentServiceTest.java @@ -1,5 +1,13 @@ package com.example.solidconnection.community.comment.service; +import static com.example.solidconnection.common.exception.ErrorCode.CAN_NOT_UPDATE_DEPRECATED_COMMENT; +import static com.example.solidconnection.common.exception.ErrorCode.INVALID_COMMENT_ID; +import static com.example.solidconnection.common.exception.ErrorCode.INVALID_COMMENT_LEVEL; +import static com.example.solidconnection.common.exception.ErrorCode.INVALID_POST_ACCESS; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; +import static org.junit.jupiter.api.Assertions.assertAll; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.community.board.fixture.BoardFixture; import com.example.solidconnection.community.comment.domain.Comment; @@ -19,22 +27,13 @@ import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.support.TestContainerSpringBootTest; import jakarta.transaction.Transactional; +import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import java.util.List; - -import static com.example.solidconnection.common.exception.ErrorCode.CAN_NOT_UPDATE_DEPRECATED_COMMENT; -import static com.example.solidconnection.common.exception.ErrorCode.INVALID_COMMENT_ID; -import static com.example.solidconnection.common.exception.ErrorCode.INVALID_COMMENT_LEVEL; -import static com.example.solidconnection.common.exception.ErrorCode.INVALID_POST_ACCESS; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; -import static org.junit.jupiter.api.Assertions.assertAll; - @TestContainerSpringBootTest @DisplayName("댓글 서비스 테스트") class CommentServiceTest { @@ -196,7 +195,7 @@ class 댓글_생성_테스트 { @Test void 댓글을_성공적으로_생성한다() { // given - CommentCreateRequest request = new CommentCreateRequest(post.getId(),"댓글", null); + CommentCreateRequest request = new CommentCreateRequest(post.getId(), "댓글", null); // when CommentCreateResponse response = commentService.createComment(user1, request); @@ -241,10 +240,10 @@ class 댓글_생성_테스트 { // when & then assertThatThrownBy(() -> - commentService.createComment( - user1, - request - )) + commentService.createComment( + user1, + request + )) .isInstanceOf(CustomException.class) .hasMessage(INVALID_COMMENT_LEVEL.getMessage()); } @@ -257,10 +256,10 @@ class 댓글_생성_테스트 { // when & then assertThatThrownBy(() -> - commentService.createComment( - user1, - request - )) + commentService.createComment( + user1, + request + )) .isInstanceOf(CustomException.class) .hasMessage(INVALID_COMMENT_ID.getMessage()); } @@ -297,11 +296,11 @@ class 댓글_수정_테스트 { // when & then assertThatThrownBy(() -> - commentService.updateComment( - user2, - comment.getId(), - request - )) + commentService.updateComment( + user2, + comment.getId(), + request + )) .isInstanceOf(CustomException.class) .hasMessage(INVALID_POST_ACCESS.getMessage()); } @@ -314,11 +313,11 @@ class 댓글_수정_테스트 { // when & then assertThatThrownBy(() -> - commentService.updateComment( - user1, - comment.getId(), - request - )) + commentService.updateComment( + user1, + comment.getId(), + request + )) .isInstanceOf(CustomException.class) .hasMessage(CAN_NOT_UPDATE_DEPRECATED_COMMENT.getMessage()); } @@ -404,10 +403,10 @@ class 댓글_삭제_테스트 { // when & then assertThatThrownBy(() -> - commentService.deleteCommentById( - user2, - comment.getId() - )) + commentService.deleteCommentById( + user2, + comment.getId() + )) .isInstanceOf(CustomException.class) .hasMessage(INVALID_POST_ACCESS.getMessage()); } diff --git a/src/test/java/com/example/solidconnection/community/post/fixture/PostFixture.java b/src/test/java/com/example/solidconnection/community/post/fixture/PostFixture.java index 92fa64a37..5d6eaea55 100644 --- a/src/test/java/com/example/solidconnection/community/post/fixture/PostFixture.java +++ b/src/test/java/com/example/solidconnection/community/post/fixture/PostFixture.java @@ -14,22 +14,22 @@ public class PostFixture { private final PostFixtureBuilder postFixtureBuilder; public Post 게시글( - String title, - String content, - Boolean isQuestion, - PostCategory postCategory, - Board board, - SiteUser siteUser + String title, + String content, + Boolean isQuestion, + PostCategory postCategory, + Board board, + SiteUser siteUser ) { return postFixtureBuilder - .title(title) - .content(content) - .isQuestion(isQuestion) - .likeCount(0L) - .viewCount(0L) - .postCategory(postCategory) - .board(board) - .siteUser(siteUser) - .create(); + .title(title) + .content(content) + .isQuestion(isQuestion) + .likeCount(0L) + .viewCount(0L) + .postCategory(postCategory) + .board(board) + .siteUser(siteUser) + .create(); } } diff --git a/src/test/java/com/example/solidconnection/community/post/service/PostCommandServiceTest.java b/src/test/java/com/example/solidconnection/community/post/service/PostCommandServiceTest.java index 2cf253cf7..2e572334e 100644 --- a/src/test/java/com/example/solidconnection/community/post/service/PostCommandServiceTest.java +++ b/src/test/java/com/example/solidconnection/community/post/service/PostCommandServiceTest.java @@ -1,5 +1,17 @@ package com.example.solidconnection.community.post.service; +import static com.example.solidconnection.common.exception.ErrorCode.CAN_NOT_DELETE_OR_UPDATE_QUESTION; +import static com.example.solidconnection.common.exception.ErrorCode.CAN_NOT_UPLOAD_MORE_THAN_FIVE_IMAGES; +import static com.example.solidconnection.common.exception.ErrorCode.INVALID_POST_ACCESS; +import static com.example.solidconnection.common.exception.ErrorCode.INVALID_POST_CATEGORY; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; +import static org.junit.jupiter.api.Assertions.assertAll; +import static org.mockito.BDDMockito.any; +import static org.mockito.BDDMockito.eq; +import static org.mockito.BDDMockito.given; +import static org.mockito.BDDMockito.then; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.community.board.fixture.BoardFixture; import com.example.solidconnection.community.post.domain.Post; @@ -21,6 +33,7 @@ import com.example.solidconnection.support.TestContainerSpringBootTest; import com.example.solidconnection.util.RedisUtils; import jakarta.transaction.Transactional; +import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; @@ -30,20 +43,6 @@ import org.springframework.mock.web.MockMultipartFile; import org.springframework.web.multipart.MultipartFile; -import java.util.List; - -import static com.example.solidconnection.common.exception.ErrorCode.CAN_NOT_DELETE_OR_UPDATE_QUESTION; -import static com.example.solidconnection.common.exception.ErrorCode.CAN_NOT_UPLOAD_MORE_THAN_FIVE_IMAGES; -import static com.example.solidconnection.common.exception.ErrorCode.INVALID_POST_ACCESS; -import static com.example.solidconnection.common.exception.ErrorCode.INVALID_POST_CATEGORY; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; -import static org.junit.jupiter.api.Assertions.assertAll; -import static org.mockito.BDDMockito.any; -import static org.mockito.BDDMockito.eq; -import static org.mockito.BDDMockito.given; -import static org.mockito.BDDMockito.then; - @TestContainerSpringBootTest @DisplayName("게시글 생성/수정/삭제 서비스 테스트") class PostCommandServiceTest { @@ -135,7 +134,7 @@ class 게시글_생성_테스트 { // when & then assertThatThrownBy(() -> - postCommandService.createPost(user1, request, imageFiles)) + postCommandService.createPost(user1, request, imageFiles)) .isInstanceOf(CustomException.class) .hasMessage(INVALID_POST_CATEGORY.getMessage()); } @@ -148,7 +147,7 @@ class 게시글_생성_테스트 { // when & then assertThatThrownBy(() -> - postCommandService.createPost(user1, request, imageFiles)) + postCommandService.createPost(user1, request, imageFiles)) .isInstanceOf(CustomException.class) .hasMessage(INVALID_POST_CATEGORY.getMessage()); } @@ -161,7 +160,7 @@ class 게시글_생성_테스트 { // when & then assertThatThrownBy(() -> - postCommandService.createPost(user1, request, imageFiles)) + postCommandService.createPost(user1, request, imageFiles)) .isInstanceOf(CustomException.class) .hasMessage(CAN_NOT_UPLOAD_MORE_THAN_FIVE_IMAGES.getMessage()); } @@ -212,12 +211,12 @@ class 게시글_수정_테스트 { // when & then assertThatThrownBy(() -> - postCommandService.updatePost( - user2, - post.getId(), - request, - imageFiles - )) + postCommandService.updatePost( + user2, + post.getId(), + request, + imageFiles + )) .isInstanceOf(CustomException.class) .hasMessage(INVALID_POST_ACCESS.getMessage()); } @@ -230,12 +229,12 @@ class 게시글_수정_테스트 { // when & then assertThatThrownBy(() -> - postCommandService.updatePost( - user1, - questionPost.getId(), - request, - imageFiles - )) + postCommandService.updatePost( + user1, + questionPost.getId(), + request, + imageFiles + )) .isInstanceOf(CustomException.class) .hasMessage(CAN_NOT_DELETE_OR_UPDATE_QUESTION.getMessage()); } @@ -248,12 +247,12 @@ class 게시글_수정_테스트 { // when & then assertThatThrownBy(() -> - postCommandService.updatePost( - user1, - post.getId(), - request, - imageFiles - )) + postCommandService.updatePost( + user1, + post.getId(), + request, + imageFiles + )) .isInstanceOf(CustomException.class) .hasMessage(CAN_NOT_UPLOAD_MORE_THAN_FIVE_IMAGES.getMessage()); } @@ -289,10 +288,10 @@ class 게시글_삭제_테스트 { // when & then assertThatThrownBy(() -> - postCommandService.deletePostById( - user2, - post.getId() - )) + postCommandService.deletePostById( + user2, + post.getId() + )) .isInstanceOf(CustomException.class) .hasMessage(INVALID_POST_ACCESS.getMessage()); } @@ -301,10 +300,10 @@ class 게시글_삭제_테스트 { void 질문_게시글을_삭제하면_예외_응답을_반환한다() { // when & then assertThatThrownBy(() -> - postCommandService.deletePostById( - user1, - questionPost.getId() - )) + postCommandService.deletePostById( + user1, + questionPost.getId() + )) .isInstanceOf(CustomException.class) .hasMessage(CAN_NOT_DELETE_OR_UPDATE_QUESTION.getMessage()); } diff --git a/src/test/java/com/example/solidconnection/community/post/service/PostLikeServiceTest.java b/src/test/java/com/example/solidconnection/community/post/service/PostLikeServiceTest.java index 3f5833006..f0361520b 100644 --- a/src/test/java/com/example/solidconnection/community/post/service/PostLikeServiceTest.java +++ b/src/test/java/com/example/solidconnection/community/post/service/PostLikeServiceTest.java @@ -1,5 +1,11 @@ package com.example.solidconnection.community.post.service; +import static com.example.solidconnection.common.exception.ErrorCode.DUPLICATE_POST_LIKE; +import static com.example.solidconnection.common.exception.ErrorCode.INVALID_POST_LIKE; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; +import static org.junit.jupiter.api.Assertions.assertAll; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.community.board.fixture.BoardFixture; import com.example.solidconnection.community.post.domain.Post; @@ -18,12 +24,6 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import static com.example.solidconnection.common.exception.ErrorCode.DUPLICATE_POST_LIKE; -import static com.example.solidconnection.common.exception.ErrorCode.INVALID_POST_LIKE; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; -import static org.junit.jupiter.api.Assertions.assertAll; - @TestContainerSpringBootTest @DisplayName("게시글 좋아요 서비스 테스트") class PostLikeServiceTest { @@ -90,10 +90,10 @@ class 게시글_좋아요_테스트 { // when & then assertThatThrownBy(() -> - postLikeService.likePost( - user, - post.getId() - )) + postLikeService.likePost( + user, + post.getId() + )) .isInstanceOf(CustomException.class) .hasMessage(DUPLICATE_POST_LIKE.getMessage()); } @@ -125,10 +125,10 @@ class 게시글_좋아요_취소_테스트 { void 좋아요하지_않은_게시글을_좋아요_취소하면_예외_응답을_반환한다() { // when & then assertThatThrownBy(() -> - postLikeService.dislikePost( - user, - post.getId() - )) + postLikeService.dislikePost( + user, + post.getId() + )) .isInstanceOf(CustomException.class) .hasMessage(INVALID_POST_LIKE.getMessage()); } diff --git a/src/test/java/com/example/solidconnection/community/post/service/PostQueryServiceTest.java b/src/test/java/com/example/solidconnection/community/post/service/PostQueryServiceTest.java index 3d198251a..d3c474ba0 100644 --- a/src/test/java/com/example/solidconnection/community/post/service/PostQueryServiceTest.java +++ b/src/test/java/com/example/solidconnection/community/post/service/PostQueryServiceTest.java @@ -1,5 +1,8 @@ package com.example.solidconnection.community.post.service; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertAll; + import com.example.solidconnection.community.board.domain.BoardCode; import com.example.solidconnection.community.board.fixture.BoardFixture; import com.example.solidconnection.community.comment.domain.Comment; @@ -14,17 +17,13 @@ import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.support.TestContainerSpringBootTest; import com.example.solidconnection.util.RedisUtils; +import java.time.ZonedDateTime; +import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import java.time.ZonedDateTime; -import java.util.List; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertAll; - @TestContainerSpringBootTest @DisplayName("게시글 조회 서비스 테스트") class PostQueryServiceTest { diff --git a/src/test/java/com/example/solidconnection/concurrency/PostLikeCountConcurrencyTest.java b/src/test/java/com/example/solidconnection/concurrency/PostLikeCountConcurrencyTest.java index 7c2e61bb0..8c36bfbab 100644 --- a/src/test/java/com/example/solidconnection/concurrency/PostLikeCountConcurrencyTest.java +++ b/src/test/java/com/example/solidconnection/concurrency/PostLikeCountConcurrencyTest.java @@ -1,5 +1,7 @@ package com.example.solidconnection.concurrency; +import static org.junit.jupiter.api.Assertions.assertEquals; + import com.example.solidconnection.community.board.domain.Board; import com.example.solidconnection.community.board.fixture.BoardFixture; import com.example.solidconnection.community.post.domain.Post; @@ -10,17 +12,14 @@ import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.support.TestContainerSpringBootTest; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; - import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; - -import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; @TestContainerSpringBootTest @DisplayName("게시글 좋아요 동시성 테스트") diff --git a/src/test/java/com/example/solidconnection/concurrency/PostViewCountConcurrencyTest.java b/src/test/java/com/example/solidconnection/concurrency/PostViewCountConcurrencyTest.java index 8f61f0e75..4396e697b 100644 --- a/src/test/java/com/example/solidconnection/concurrency/PostViewCountConcurrencyTest.java +++ b/src/test/java/com/example/solidconnection/concurrency/PostViewCountConcurrencyTest.java @@ -1,5 +1,8 @@ package com.example.solidconnection.concurrency; +import static com.example.solidconnection.community.post.service.RedisConstants.VALIDATE_VIEW_COUNT_TTL; +import static org.junit.jupiter.api.Assertions.assertEquals; + import com.example.solidconnection.community.board.domain.Board; import com.example.solidconnection.community.board.repository.BoardRepository; import com.example.solidconnection.community.post.domain.Post; @@ -10,20 +13,16 @@ import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.support.TestContainerSpringBootTest; import com.example.solidconnection.util.RedisUtils; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.TimeUnit; - -import static com.example.solidconnection.community.post.service.RedisConstants.VALIDATE_VIEW_COUNT_TTL; -import static org.junit.jupiter.api.Assertions.assertEquals; - @TestContainerSpringBootTest @DisplayName("게시글 조회수 동시성 테스트") class PostViewCountConcurrencyTest { diff --git a/src/test/java/com/example/solidconnection/concurrency/ThunderingHerdTest.java b/src/test/java/com/example/solidconnection/concurrency/ThunderingHerdTest.java index d2cadca65..566d2c8d0 100644 --- a/src/test/java/com/example/solidconnection/concurrency/ThunderingHerdTest.java +++ b/src/test/java/com/example/solidconnection/concurrency/ThunderingHerdTest.java @@ -4,12 +4,6 @@ import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.support.TestContainerSpringBootTest; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.redis.core.RedisTemplate; - import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -17,6 +11,11 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; @TestContainerSpringBootTest @DisplayName("ThunderingHerd 테스트") diff --git a/src/test/java/com/example/solidconnection/database/DatabaseConnectionTest.java b/src/test/java/com/example/solidconnection/database/DatabaseConnectionTest.java index ca3c64c7a..aa7297083 100644 --- a/src/test/java/com/example/solidconnection/database/DatabaseConnectionTest.java +++ b/src/test/java/com/example/solidconnection/database/DatabaseConnectionTest.java @@ -1,5 +1,12 @@ package com.example.solidconnection.database; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatCode; +import static org.junit.jupiter.api.Assertions.assertAll; + +import java.sql.DatabaseMetaData; +import java.sql.SQLException; +import java.util.Objects; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -9,14 +16,6 @@ import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; import org.springframework.jdbc.core.JdbcTemplate; -import java.sql.DatabaseMetaData; -import java.sql.SQLException; -import java.util.Objects; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatCode; -import static org.junit.jupiter.api.Assertions.assertAll; - @Disabled @AutoConfigureTestDatabase(connection = EmbeddedDatabaseConnection.H2, replace = AutoConfigureTestDatabase.Replace.ANY) @DataJpaTest diff --git a/src/test/java/com/example/solidconnection/database/RedisConnectionTest.java b/src/test/java/com/example/solidconnection/database/RedisConnectionTest.java index 527ae7e07..487811392 100644 --- a/src/test/java/com/example/solidconnection/database/RedisConnectionTest.java +++ b/src/test/java/com/example/solidconnection/database/RedisConnectionTest.java @@ -1,5 +1,7 @@ package com.example.solidconnection.database; +import static org.assertj.core.api.Assertions.assertThat; + import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -7,8 +9,6 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.redis.core.RedisTemplate; -import static org.assertj.core.api.Assertions.assertThat; - @Disabled @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) class RedisConnectionTest { diff --git a/src/test/java/com/example/solidconnection/location/country/repository/CountryRepositoryForTest.java b/src/test/java/com/example/solidconnection/location/country/repository/CountryRepositoryForTest.java index c9c7400a9..6e9e1c52f 100644 --- a/src/test/java/com/example/solidconnection/location/country/repository/CountryRepositoryForTest.java +++ b/src/test/java/com/example/solidconnection/location/country/repository/CountryRepositoryForTest.java @@ -1,9 +1,8 @@ package com.example.solidconnection.location.country.repository; import com.example.solidconnection.location.country.domain.Country; -import org.springframework.data.jpa.repository.JpaRepository; - import java.util.Optional; +import org.springframework.data.jpa.repository.JpaRepository; public interface CountryRepositoryForTest extends JpaRepository { diff --git a/src/test/java/com/example/solidconnection/location/country/repository/InterestedCountryRepositoryTest.java b/src/test/java/com/example/solidconnection/location/country/repository/InterestedCountryRepositoryTest.java index 4daeb55e1..846a7aae7 100644 --- a/src/test/java/com/example/solidconnection/location/country/repository/InterestedCountryRepositoryTest.java +++ b/src/test/java/com/example/solidconnection/location/country/repository/InterestedCountryRepositoryTest.java @@ -1,5 +1,8 @@ package com.example.solidconnection.location.country.repository; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatCode; + import com.example.solidconnection.location.country.domain.Country; import com.example.solidconnection.location.country.domain.InterestedCountry; import com.example.solidconnection.location.country.fixture.CountryFixture; @@ -11,9 +14,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataIntegrityViolationException; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatCode; - @TestContainerSpringBootTest public class InterestedCountryRepositoryTest { @@ -34,12 +34,12 @@ class 사용자와_나라는_복합_유니크_제약_조건을_가진다 { // given SiteUser user = siteUserFixture.사용자(); Country country = countryFixture.미국(); - + InterestedCountry firstInterest = new InterestedCountry(user, country); interestedCountryRepository.save(firstInterest); - + InterestedCountry secondInterest = new InterestedCountry(user, country); - + // when & then assertThatCode(() -> interestedCountryRepository.save(secondInterest)) .isInstanceOf(DataIntegrityViolationException.class); @@ -51,12 +51,12 @@ class 사용자와_나라는_복합_유니크_제약_조건을_가진다 { SiteUser user1 = siteUserFixture.사용자(1, "user1"); SiteUser user2 = siteUserFixture.사용자(2, "user2"); Country country = countryFixture.미국(); - + InterestedCountry firstInterest = new InterestedCountry(user1, country); interestedCountryRepository.save(firstInterest); - + InterestedCountry secondInterest = new InterestedCountry(user2, country); - + // when & then assertThatCode(() -> { InterestedCountry saved = interestedCountryRepository.save(secondInterest); @@ -70,12 +70,12 @@ class 사용자와_나라는_복합_유니크_제약_조건을_가진다 { SiteUser user = siteUserFixture.사용자(); Country country1 = countryFixture.미국(); Country country2 = countryFixture.일본(); - + InterestedCountry firstInterest = new InterestedCountry(user, country1); interestedCountryRepository.save(firstInterest); - + InterestedCountry secondInterest = new InterestedCountry(user, country2); - + // when & then assertThatCode(() -> { InterestedCountry saved = interestedCountryRepository.save(secondInterest); diff --git a/src/test/java/com/example/solidconnection/location/region/repository/InterestedRegionRepositoryTest.java b/src/test/java/com/example/solidconnection/location/region/repository/InterestedRegionRepositoryTest.java index a9594e0f8..1f45c011a 100644 --- a/src/test/java/com/example/solidconnection/location/region/repository/InterestedRegionRepositoryTest.java +++ b/src/test/java/com/example/solidconnection/location/region/repository/InterestedRegionRepositoryTest.java @@ -1,5 +1,8 @@ package com.example.solidconnection.location.region.repository; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatCode; + import com.example.solidconnection.location.region.domain.InterestedRegion; import com.example.solidconnection.location.region.domain.Region; import com.example.solidconnection.location.region.fixture.RegionFixture; @@ -11,9 +14,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataIntegrityViolationException; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatCode; - @TestContainerSpringBootTest public class InterestedRegionRepositoryTest { diff --git a/src/test/java/com/example/solidconnection/location/region/repository/RegionRepositoryForTest.java b/src/test/java/com/example/solidconnection/location/region/repository/RegionRepositoryForTest.java index a27c16b9b..05935f63f 100644 --- a/src/test/java/com/example/solidconnection/location/region/repository/RegionRepositoryForTest.java +++ b/src/test/java/com/example/solidconnection/location/region/repository/RegionRepositoryForTest.java @@ -1,9 +1,8 @@ package com.example.solidconnection.location.region.repository; import com.example.solidconnection.location.region.domain.Region; -import org.springframework.data.jpa.repository.JpaRepository; - import java.util.Optional; +import org.springframework.data.jpa.repository.JpaRepository; public interface RegionRepositoryForTest extends JpaRepository { diff --git a/src/test/java/com/example/solidconnection/mentor/fixture/MentoringFixture.java b/src/test/java/com/example/solidconnection/mentor/fixture/MentoringFixture.java index 3d5896662..0315777ab 100644 --- a/src/test/java/com/example/solidconnection/mentor/fixture/MentoringFixture.java +++ b/src/test/java/com/example/solidconnection/mentor/fixture/MentoringFixture.java @@ -1,15 +1,14 @@ package com.example.solidconnection.mentor.fixture; +import static java.time.ZoneOffset.UTC; +import static java.time.temporal.ChronoUnit.MICROS; + import com.example.solidconnection.common.VerifyStatus; import com.example.solidconnection.mentor.domain.Mentoring; +import java.time.ZonedDateTime; import lombok.RequiredArgsConstructor; import org.springframework.boot.test.context.TestComponent; -import java.time.ZonedDateTime; - -import static java.time.ZoneOffset.UTC; -import static java.time.temporal.ChronoUnit.MICROS; - @TestComponent @RequiredArgsConstructor public class MentoringFixture { diff --git a/src/test/java/com/example/solidconnection/mentor/fixture/MentoringFixtureBuilder.java b/src/test/java/com/example/solidconnection/mentor/fixture/MentoringFixtureBuilder.java index 0c579de5b..9400a0a0f 100644 --- a/src/test/java/com/example/solidconnection/mentor/fixture/MentoringFixtureBuilder.java +++ b/src/test/java/com/example/solidconnection/mentor/fixture/MentoringFixtureBuilder.java @@ -3,11 +3,10 @@ import com.example.solidconnection.common.VerifyStatus; import com.example.solidconnection.mentor.domain.Mentoring; import com.example.solidconnection.mentor.repository.MentoringRepository; +import java.time.ZonedDateTime; import lombok.RequiredArgsConstructor; import org.springframework.boot.test.context.TestComponent; -import java.time.ZonedDateTime; - @TestComponent @RequiredArgsConstructor public class MentoringFixtureBuilder { diff --git a/src/test/java/com/example/solidconnection/mentor/repository/ChannelRepositoryForTest.java b/src/test/java/com/example/solidconnection/mentor/repository/ChannelRepositoryForTest.java index 9e6fee1de..16000dddc 100644 --- a/src/test/java/com/example/solidconnection/mentor/repository/ChannelRepositoryForTest.java +++ b/src/test/java/com/example/solidconnection/mentor/repository/ChannelRepositoryForTest.java @@ -1,9 +1,8 @@ package com.example.solidconnection.mentor.repository; import com.example.solidconnection.mentor.domain.Channel; -import org.springframework.data.jpa.repository.JpaRepository; - import java.util.List; +import org.springframework.data.jpa.repository.JpaRepository; public interface ChannelRepositoryForTest extends JpaRepository { diff --git a/src/test/java/com/example/solidconnection/mentor/repository/MentorBatchQueryRepositoryTest.java b/src/test/java/com/example/solidconnection/mentor/repository/MentorBatchQueryRepositoryTest.java index c68deedb7..ffa55dd13 100644 --- a/src/test/java/com/example/solidconnection/mentor/repository/MentorBatchQueryRepositoryTest.java +++ b/src/test/java/com/example/solidconnection/mentor/repository/MentorBatchQueryRepositoryTest.java @@ -1,22 +1,21 @@ package com.example.solidconnection.mentor.repository; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertAll; + import com.example.solidconnection.mentor.domain.Mentor; import com.example.solidconnection.mentor.fixture.MentorFixture; import com.example.solidconnection.mentor.fixture.MentoringFixture; import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.support.TestContainerSpringBootTest; +import java.util.List; +import java.util.Map; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import java.util.List; -import java.util.Map; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertAll; - @DisplayName("멘토 배치 조회 레포지토리 테스트") @TestContainerSpringBootTest class MentorBatchQueryRepositoryTest { diff --git a/src/test/java/com/example/solidconnection/mentor/service/MentorMyPageServiceTest.java b/src/test/java/com/example/solidconnection/mentor/service/MentorMyPageServiceTest.java index b7c5724a7..e00eaadae 100644 --- a/src/test/java/com/example/solidconnection/mentor/service/MentorMyPageServiceTest.java +++ b/src/test/java/com/example/solidconnection/mentor/service/MentorMyPageServiceTest.java @@ -1,5 +1,10 @@ package com.example.solidconnection.mentor.service; +import static com.example.solidconnection.mentor.domain.ChannelType.BLOG; +import static com.example.solidconnection.mentor.domain.ChannelType.INSTAGRAM; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertAll; + import com.example.solidconnection.mentor.domain.Channel; import com.example.solidconnection.mentor.domain.Mentor; import com.example.solidconnection.mentor.dto.ChannelRequest; @@ -13,19 +18,13 @@ import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.support.TestContainerSpringBootTest; +import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import java.util.List; - -import static com.example.solidconnection.mentor.domain.ChannelType.BLOG; -import static com.example.solidconnection.mentor.domain.ChannelType.INSTAGRAM; -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertAll; - @TestContainerSpringBootTest @DisplayName("멘토 마이페이지 서비스 테스트") class MentorMyPageServiceTest { diff --git a/src/test/java/com/example/solidconnection/mentor/service/MentorQueryServiceTest.java b/src/test/java/com/example/solidconnection/mentor/service/MentorQueryServiceTest.java index 421d24a12..4e7f6a311 100644 --- a/src/test/java/com/example/solidconnection/mentor/service/MentorQueryServiceTest.java +++ b/src/test/java/com/example/solidconnection/mentor/service/MentorQueryServiceTest.java @@ -1,5 +1,9 @@ package com.example.solidconnection.mentor.service; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatCode; +import static org.junit.jupiter.api.Assertions.assertAll; + import com.example.solidconnection.common.dto.SliceResponse; import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.common.exception.ErrorCode; @@ -14,6 +18,9 @@ import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.support.TestContainerSpringBootTest; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; @@ -21,14 +28,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; -import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatCode; -import static org.junit.jupiter.api.Assertions.assertAll; - @DisplayName("멘토 조회 서비스 테스트") @TestContainerSpringBootTest class MentorQueryServiceTest { diff --git a/src/test/java/com/example/solidconnection/mentor/service/MentoringCommandServiceTest.java b/src/test/java/com/example/solidconnection/mentor/service/MentoringCommandServiceTest.java index e9d218716..f9098f5c5 100644 --- a/src/test/java/com/example/solidconnection/mentor/service/MentoringCommandServiceTest.java +++ b/src/test/java/com/example/solidconnection/mentor/service/MentoringCommandServiceTest.java @@ -1,5 +1,13 @@ package com.example.solidconnection.mentor.service; +import static com.example.solidconnection.common.exception.ErrorCode.MENTORING_ALREADY_CONFIRMED; +import static com.example.solidconnection.common.exception.ErrorCode.MENTORING_NOT_FOUND; +import static com.example.solidconnection.common.exception.ErrorCode.REJECTED_REASON_REQUIRED; +import static com.example.solidconnection.common.exception.ErrorCode.UNAUTHORIZED_MENTORING; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.jupiter.api.Assertions.assertAll; + import com.example.solidconnection.common.VerifyStatus; import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.mentor.domain.Mentor; @@ -22,14 +30,6 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import static com.example.solidconnection.common.exception.ErrorCode.MENTORING_ALREADY_CONFIRMED; -import static com.example.solidconnection.common.exception.ErrorCode.MENTORING_NOT_FOUND; -import static com.example.solidconnection.common.exception.ErrorCode.REJECTED_REASON_REQUIRED; -import static com.example.solidconnection.common.exception.ErrorCode.UNAUTHORIZED_MENTORING; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static org.junit.jupiter.api.Assertions.assertAll; - @TestContainerSpringBootTest @DisplayName("멘토링 CUD 서비스 테스트") class MentoringCommandServiceTest { @@ -148,7 +148,7 @@ class 멘토링_승인_거절_테스트 { // when & then assertThatThrownBy(() -> - mentoringCommandService.confirmMentoring(mentorUser1.getId(), mentoring.getId(), request)) + mentoringCommandService.confirmMentoring(mentorUser1.getId(), mentoring.getId(), request)) .isInstanceOf(CustomException.class) .hasMessage(REJECTED_REASON_REQUIRED.getMessage()); } diff --git a/src/test/java/com/example/solidconnection/mentor/service/MentoringQueryServiceTest.java b/src/test/java/com/example/solidconnection/mentor/service/MentoringQueryServiceTest.java index 869de8a3c..5951920ff 100644 --- a/src/test/java/com/example/solidconnection/mentor/service/MentoringQueryServiceTest.java +++ b/src/test/java/com/example/solidconnection/mentor/service/MentoringQueryServiceTest.java @@ -1,5 +1,8 @@ package com.example.solidconnection.mentor.service; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertAll; + import com.example.solidconnection.mentor.domain.Mentor; import com.example.solidconnection.mentor.domain.Mentoring; import com.example.solidconnection.mentor.dto.MentoringCountResponse; @@ -16,9 +19,6 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertAll; - @TestContainerSpringBootTest @DisplayName("멘토링 조회 서비스 테스트") class MentoringQueryServiceTest { diff --git a/src/test/java/com/example/solidconnection/news/service/NewsCommandServiceTest.java b/src/test/java/com/example/solidconnection/news/service/NewsCommandServiceTest.java index 681c2a959..7f04693ba 100644 --- a/src/test/java/com/example/solidconnection/news/service/NewsCommandServiceTest.java +++ b/src/test/java/com/example/solidconnection/news/service/NewsCommandServiceTest.java @@ -1,5 +1,15 @@ package com.example.solidconnection.news.service; +import static com.example.solidconnection.common.exception.ErrorCode.INVALID_NEWS_ACCESS; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.AssertionsForClassTypes.assertThatCode; +import static org.junit.jupiter.api.Assertions.assertAll; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.BDDMockito.given; +import static org.mockito.BDDMockito.never; +import static org.mockito.BDDMockito.then; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.news.config.NewsProperties; import com.example.solidconnection.news.domain.News; @@ -23,16 +33,6 @@ import org.springframework.mock.web.MockMultipartFile; import org.springframework.web.multipart.MultipartFile; -import static com.example.solidconnection.common.exception.ErrorCode.INVALID_NEWS_ACCESS; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.AssertionsForClassTypes.assertThatCode; -import static org.junit.jupiter.api.Assertions.assertAll; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.BDDMockito.given; -import static org.mockito.BDDMockito.never; -import static org.mockito.BDDMockito.then; - @TestContainerSpringBootTest @DisplayName("소식지 생성/수정/삭제 서비스 테스트") class NewsCommandServiceTest { diff --git a/src/test/java/com/example/solidconnection/news/service/NewsLikeServiceTest.java b/src/test/java/com/example/solidconnection/news/service/NewsLikeServiceTest.java index 1bf26bc3c..3b530ec02 100644 --- a/src/test/java/com/example/solidconnection/news/service/NewsLikeServiceTest.java +++ b/src/test/java/com/example/solidconnection/news/service/NewsLikeServiceTest.java @@ -1,5 +1,10 @@ package com.example.solidconnection.news.service; +import static com.example.solidconnection.common.exception.ErrorCode.ALREADY_LIKED_NEWS; +import static com.example.solidconnection.common.exception.ErrorCode.NOT_LIKED_NEWS; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.AssertionsForClassTypes.assertThatCode; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.news.domain.News; import com.example.solidconnection.news.dto.LikedNewsResponse; @@ -14,11 +19,6 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import static com.example.solidconnection.common.exception.ErrorCode.ALREADY_LIKED_NEWS; -import static com.example.solidconnection.common.exception.ErrorCode.NOT_LIKED_NEWS; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.AssertionsForClassTypes.assertThatCode; - @TestContainerSpringBootTest @DisplayName("소식지 좋아요 서비스 테스트") class NewsLikeServiceTest { @@ -88,8 +88,8 @@ class 소식지_좋아요를_등록한다 { // when & then assertThatCode(() -> newsLikeService.addNewsLike(user.getId(), news.getId())) - .isInstanceOf(CustomException.class) - .hasMessage(ALREADY_LIKED_NEWS.getMessage()); + .isInstanceOf(CustomException.class) + .hasMessage(ALREADY_LIKED_NEWS.getMessage()); } } @@ -112,8 +112,8 @@ class 소식지_좋아요를_취소한다 { void 좋아요하지_않았으면_예외_응답을_반환한다() { // when & then assertThatCode(() -> newsLikeService.cancelNewsLike(user.getId(), news.getId())) - .isInstanceOf(CustomException.class) - .hasMessage(NOT_LIKED_NEWS.getMessage()); + .isInstanceOf(CustomException.class) + .hasMessage(NOT_LIKED_NEWS.getMessage()); } } } diff --git a/src/test/java/com/example/solidconnection/news/service/NewsQueryServiceTest.java b/src/test/java/com/example/solidconnection/news/service/NewsQueryServiceTest.java index 73926a6dc..12bfe2c59 100644 --- a/src/test/java/com/example/solidconnection/news/service/NewsQueryServiceTest.java +++ b/src/test/java/com/example/solidconnection/news/service/NewsQueryServiceTest.java @@ -1,22 +1,21 @@ package com.example.solidconnection.news.service; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertAll; + import com.example.solidconnection.news.domain.News; -import com.example.solidconnection.news.dto.NewsResponse; import com.example.solidconnection.news.dto.NewsListResponse; +import com.example.solidconnection.news.dto.NewsResponse; import com.example.solidconnection.news.fixture.NewsFixture; import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.support.TestContainerSpringBootTest; +import java.util.Comparator; +import java.util.List; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import java.util.Comparator; -import java.util.List; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertAll; - @TestContainerSpringBootTest @DisplayName("소식지 조회 서비스 테스트") class NewsQueryServiceTest { @@ -47,8 +46,8 @@ class NewsQueryServiceTest { assertAll( () -> assertThat(response.newsResponseList()).hasSize(newsList.size()), () -> assertThat(response.newsResponseList()) - .extracting(NewsResponse::updatedAt) - .isSortedAccordingTo(Comparator.reverseOrder()) + .extracting(NewsResponse::updatedAt) + .isSortedAccordingTo(Comparator.reverseOrder()) ); } } diff --git a/src/test/java/com/example/solidconnection/score/fixture/GpaScoreFixture.java b/src/test/java/com/example/solidconnection/score/fixture/GpaScoreFixture.java index 49938a284..256e5c720 100644 --- a/src/test/java/com/example/solidconnection/score/fixture/GpaScoreFixture.java +++ b/src/test/java/com/example/solidconnection/score/fixture/GpaScoreFixture.java @@ -13,7 +13,7 @@ public class GpaScoreFixture { private final GpaScoreFixtureBuilder gpaScoreFixtureBuilder; - public GpaScore GPA_점수 (VerifyStatus verifyStatus, SiteUser siteUser) { + public GpaScore GPA_점수(VerifyStatus verifyStatus, SiteUser siteUser) { return gpaScoreFixtureBuilder.gpaScore() .gpa(new Gpa(4.0, 4.5, "/gpa-report.pdf")) .verifyStatus(verifyStatus) diff --git a/src/test/java/com/example/solidconnection/score/fixture/LanguageTestScoreFixture.java b/src/test/java/com/example/solidconnection/score/fixture/LanguageTestScoreFixture.java index 476783fe9..ce146a21c 100644 --- a/src/test/java/com/example/solidconnection/score/fixture/LanguageTestScoreFixture.java +++ b/src/test/java/com/example/solidconnection/score/fixture/LanguageTestScoreFixture.java @@ -1,5 +1,7 @@ package com.example.solidconnection.score.fixture; +import static com.example.solidconnection.university.domain.LanguageTestType.TOEIC; + import com.example.solidconnection.application.domain.LanguageTest; import com.example.solidconnection.common.VerifyStatus; import com.example.solidconnection.score.domain.LanguageTestScore; @@ -7,15 +9,13 @@ import lombok.RequiredArgsConstructor; import org.springframework.boot.test.context.TestComponent; -import static com.example.solidconnection.university.domain.LanguageTestType.TOEIC; - @TestComponent @RequiredArgsConstructor public class LanguageTestScoreFixture { private final LanguageTestScoreFixtureBuilder languageTestScoreFixtureBuilder; - public LanguageTestScore 어학_점수 (VerifyStatus verifyStatus, SiteUser siteUser) { + public LanguageTestScore 어학_점수(VerifyStatus verifyStatus, SiteUser siteUser) { return languageTestScoreFixtureBuilder.languageTestScore() .languageTest(new LanguageTest(TOEIC, "500", "/language-report.pdf")) .verifyStatus(verifyStatus) diff --git a/src/test/java/com/example/solidconnection/score/service/ScoreServiceTest.java b/src/test/java/com/example/solidconnection/score/service/ScoreServiceTest.java index 1f6dfad1e..e143579df 100644 --- a/src/test/java/com/example/solidconnection/score/service/ScoreServiceTest.java +++ b/src/test/java/com/example/solidconnection/score/service/ScoreServiceTest.java @@ -1,5 +1,8 @@ package com.example.solidconnection.score.service; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.BDDMockito.given; + import com.example.solidconnection.common.VerifyStatus; import com.example.solidconnection.s3.domain.ImgType; import com.example.solidconnection.s3.dto.UploadedFileUrlResponse; @@ -18,6 +21,7 @@ import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.support.TestContainerSpringBootTest; import com.example.solidconnection.university.domain.LanguageTestType; +import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -25,11 +29,6 @@ import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.mock.web.MockMultipartFile; -import java.util.List; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.BDDMockito.given; - @TestContainerSpringBootTest @DisplayName("점수 서비스 테스트") class ScoreServiceTest { diff --git a/src/test/java/com/example/solidconnection/security/aspect/RoleAuthorizationAspectTest.java b/src/test/java/com/example/solidconnection/security/aspect/RoleAuthorizationAspectTest.java index a3a1333e8..62be411ee 100644 --- a/src/test/java/com/example/solidconnection/security/aspect/RoleAuthorizationAspectTest.java +++ b/src/test/java/com/example/solidconnection/security/aspect/RoleAuthorizationAspectTest.java @@ -1,5 +1,9 @@ package com.example.solidconnection.security.aspect; +import static com.example.solidconnection.common.exception.ErrorCode.ACCESS_DENIED; +import static org.assertj.core.api.AssertionsForClassTypes.assertThatCode; +import static org.junit.jupiter.api.Assertions.assertAll; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.security.annotation.RequireRoleAccess; import com.example.solidconnection.siteuser.domain.Role; @@ -13,10 +17,6 @@ import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; -import static com.example.solidconnection.common.exception.ErrorCode.ACCESS_DENIED; -import static org.assertj.core.api.AssertionsForClassTypes.assertThatCode; -import static org.junit.jupiter.api.Assertions.assertAll; - @TestContainerSpringBootTest @DisplayName("권한 검사 Aspect 테스트") class RoleAuthorizationAspectTest { @@ -30,7 +30,7 @@ class RoleAuthorizationAspectTest { @Test void 요구하는_역할을_가진_사용자는_메서드를_정상적으로_호출할_수_있다() { // given - SiteUser admin = siteUserFixture.관리자(); + SiteUser admin = siteUserFixture.관리자(); SiteUser mentor = siteUserFixture.멘토(1, "mentor"); // when & then @@ -56,9 +56,9 @@ class RoleAuthorizationAspectTest { @Test void 역할을_요구하지_않는_메서드는_누구나_호출할_수_있다() { // given - SiteUser admin = siteUserFixture.관리자(); + SiteUser admin = siteUserFixture.관리자(); SiteUser mentor = siteUserFixture.멘토(1, "mentor"); - SiteUser user = siteUserFixture.사용자(); + SiteUser user = siteUserFixture.사용자(); // when & then assertAll( @@ -73,6 +73,7 @@ class RoleAuthorizationAspectTest { @TestConfiguration static class TestConfig { + @Bean public TestService testService() { return new TestService(); diff --git a/src/test/java/com/example/solidconnection/security/authentication/SiteUserAuthenticationTest.java b/src/test/java/com/example/solidconnection/security/authentication/SiteUserAuthenticationTest.java index 29b47869d..e4586019e 100644 --- a/src/test/java/com/example/solidconnection/security/authentication/SiteUserAuthenticationTest.java +++ b/src/test/java/com/example/solidconnection/security/authentication/SiteUserAuthenticationTest.java @@ -1,13 +1,13 @@ package com.example.solidconnection.security.authentication; +import static org.assertj.core.api.Assertions.assertThat; + import com.example.solidconnection.security.userdetails.SiteUserDetails; import com.example.solidconnection.siteuser.domain.ExchangeStatus; import com.example.solidconnection.siteuser.domain.Role; import com.example.solidconnection.siteuser.domain.SiteUser; import org.junit.jupiter.api.Test; -import static org.assertj.core.api.Assertions.assertThat; - class SiteUserAuthenticationTest { @Test diff --git a/src/test/java/com/example/solidconnection/security/filter/AuthorizationHeaderParserTest.java b/src/test/java/com/example/solidconnection/security/filter/AuthorizationHeaderParserTest.java index 1d4ba2533..809fb8c8a 100644 --- a/src/test/java/com/example/solidconnection/security/filter/AuthorizationHeaderParserTest.java +++ b/src/test/java/com/example/solidconnection/security/filter/AuthorizationHeaderParserTest.java @@ -1,16 +1,15 @@ package com.example.solidconnection.security.filter; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertAll; + import com.example.solidconnection.support.TestContainerSpringBootTest; +import java.util.Optional; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mock.web.MockHttpServletRequest; -import java.util.Optional; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertAll; - @TestContainerSpringBootTest class AuthorizationHeaderParserTest { diff --git a/src/test/java/com/example/solidconnection/security/filter/ExceptionHandlerFilterTest.java b/src/test/java/com/example/solidconnection/security/filter/ExceptionHandlerFilterTest.java index 4fa01a234..f70aaeb32 100644 --- a/src/test/java/com/example/solidconnection/security/filter/ExceptionHandlerFilterTest.java +++ b/src/test/java/com/example/solidconnection/security/filter/ExceptionHandlerFilterTest.java @@ -1,11 +1,19 @@ package com.example.solidconnection.security.filter; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.BDDMockito.then; +import static org.mockito.BDDMockito.willDoNothing; +import static org.mockito.BDDMockito.willThrow; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.common.exception.ErrorCode; import com.example.solidconnection.support.TestContainerSpringBootTest; import jakarta.servlet.FilterChain; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import java.util.stream.Stream; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; @@ -19,15 +27,6 @@ import org.springframework.security.core.authority.AuthorityUtils; import org.springframework.security.core.context.SecurityContextHolder; -import java.util.stream.Stream; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.BDDMockito.then; -import static org.mockito.BDDMockito.willDoNothing; -import static org.mockito.BDDMockito.willThrow; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.spy; - @TestContainerSpringBootTest class ExceptionHandlerFilterTest { diff --git a/src/test/java/com/example/solidconnection/security/filter/JwtAuthenticationFilterTest.java b/src/test/java/com/example/solidconnection/security/filter/JwtAuthenticationFilterTest.java index 229fed27b..009275e06 100644 --- a/src/test/java/com/example/solidconnection/security/filter/JwtAuthenticationFilterTest.java +++ b/src/test/java/com/example/solidconnection/security/filter/JwtAuthenticationFilterTest.java @@ -1,7 +1,11 @@ package com.example.solidconnection.security.filter; -import com.example.solidconnection.security.authentication.SiteUserAuthentication; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.BDDMockito.then; +import static org.mockito.Mockito.spy; + import com.example.solidconnection.auth.token.config.JwtProperties; +import com.example.solidconnection.security.authentication.SiteUserAuthentication; import com.example.solidconnection.security.userdetails.SiteUserDetailsService; import com.example.solidconnection.support.TestContainerSpringBootTest; import io.jsonwebtoken.Jwts; @@ -9,6 +13,7 @@ import jakarta.servlet.FilterChain; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import java.util.Date; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -18,12 +23,6 @@ import org.springframework.mock.web.MockHttpServletResponse; import org.springframework.security.core.context.SecurityContextHolder; -import java.util.Date; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.BDDMockito.then; -import static org.mockito.Mockito.spy; - @TestContainerSpringBootTest @DisplayName("토큰 인증 필터 테스트") class JwtAuthenticationFilterTest { diff --git a/src/test/java/com/example/solidconnection/security/filter/SignOutCheckFilterTest.java b/src/test/java/com/example/solidconnection/security/filter/SignOutCheckFilterTest.java index 80e927203..b53ceb87e 100644 --- a/src/test/java/com/example/solidconnection/security/filter/SignOutCheckFilterTest.java +++ b/src/test/java/com/example/solidconnection/security/filter/SignOutCheckFilterTest.java @@ -1,13 +1,21 @@ package com.example.solidconnection.security.filter; -import com.example.solidconnection.common.exception.CustomException; +import static com.example.solidconnection.auth.domain.TokenType.BLACKLIST; +import static com.example.solidconnection.common.exception.ErrorCode.USER_ALREADY_SIGN_OUT; +import static org.assertj.core.api.Assertions.assertThatCode; +import static org.mockito.BDDMockito.then; +import static org.mockito.Mockito.spy; + import com.example.solidconnection.auth.token.config.JwtProperties; +import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.support.TestContainerSpringBootTest; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import jakarta.servlet.FilterChain; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import java.util.Date; +import java.util.Objects; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -16,15 +24,6 @@ import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; -import java.util.Date; -import java.util.Objects; - -import static com.example.solidconnection.auth.domain.TokenType.BLACKLIST; -import static com.example.solidconnection.common.exception.ErrorCode.USER_ALREADY_SIGN_OUT; -import static org.assertj.core.api.Assertions.assertThatCode; -import static org.mockito.BDDMockito.then; -import static org.mockito.Mockito.spy; - @TestContainerSpringBootTest @DisplayName("로그아웃 체크 필터 테스트") class SignOutCheckFilterTest { diff --git a/src/test/java/com/example/solidconnection/security/provider/SiteUserAuthenticationProviderTest.java b/src/test/java/com/example/solidconnection/security/provider/SiteUserAuthenticationProviderTest.java index 0bbb6677f..c945f6f17 100644 --- a/src/test/java/com/example/solidconnection/security/provider/SiteUserAuthenticationProviderTest.java +++ b/src/test/java/com/example/solidconnection/security/provider/SiteUserAuthenticationProviderTest.java @@ -1,14 +1,22 @@ package com.example.solidconnection.security.provider; +import static com.example.solidconnection.common.exception.ErrorCode.AUTHENTICATION_FAILED; +import static com.example.solidconnection.common.exception.ErrorCode.INVALID_TOKEN; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatCode; +import static org.junit.jupiter.api.Assertions.assertAll; + +import com.example.solidconnection.auth.token.config.JwtProperties; import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.security.authentication.SiteUserAuthentication; -import com.example.solidconnection.auth.token.config.JwtProperties; import com.example.solidconnection.security.userdetails.SiteUserDetails; import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.support.TestContainerSpringBootTest; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; +import java.net.PasswordAuthentication; +import java.util.Date; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; @@ -16,15 +24,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.Authentication; -import java.net.PasswordAuthentication; -import java.util.Date; - -import static com.example.solidconnection.common.exception.ErrorCode.AUTHENTICATION_FAILED; -import static com.example.solidconnection.common.exception.ErrorCode.INVALID_TOKEN; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatCode; -import static org.junit.jupiter.api.Assertions.assertAll; - @TestContainerSpringBootTest @DisplayName("사용자 인증정보 provider 테스트") class SiteUserAuthenticationProviderTest { diff --git a/src/test/java/com/example/solidconnection/security/userdetails/SiteUserDetailsServiceTest.java b/src/test/java/com/example/solidconnection/security/userdetails/SiteUserDetailsServiceTest.java index c292203af..e47d96db7 100644 --- a/src/test/java/com/example/solidconnection/security/userdetails/SiteUserDetailsServiceTest.java +++ b/src/test/java/com/example/solidconnection/security/userdetails/SiteUserDetailsServiceTest.java @@ -1,23 +1,22 @@ package com.example.solidconnection.security.userdetails; +import static com.example.solidconnection.common.exception.ErrorCode.AUTHENTICATION_FAILED; +import static com.example.solidconnection.common.exception.ErrorCode.INVALID_TOKEN; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatCode; +import static org.junit.jupiter.api.Assertions.assertAll; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.siteuser.repository.SiteUserRepository; import com.example.solidconnection.support.TestContainerSpringBootTest; +import java.time.LocalDate; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import java.time.LocalDate; - -import static com.example.solidconnection.common.exception.ErrorCode.AUTHENTICATION_FAILED; -import static com.example.solidconnection.common.exception.ErrorCode.INVALID_TOKEN; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatCode; -import static org.junit.jupiter.api.Assertions.assertAll; - @DisplayName("사용자 인증 정보 서비스 테스트") @TestContainerSpringBootTest class SiteUserDetailsServiceTest { diff --git a/src/test/java/com/example/solidconnection/security/userdetails/SiteUserDetailsTest.java b/src/test/java/com/example/solidconnection/security/userdetails/SiteUserDetailsTest.java index 8f533e8b7..5d59e99f9 100644 --- a/src/test/java/com/example/solidconnection/security/userdetails/SiteUserDetailsTest.java +++ b/src/test/java/com/example/solidconnection/security/userdetails/SiteUserDetailsTest.java @@ -1,17 +1,16 @@ package com.example.solidconnection.security.userdetails; +import static org.assertj.core.api.Assertions.assertThat; + import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.support.TestContainerSpringBootTest; +import java.util.Collection; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.GrantedAuthority; -import java.util.Collection; - -import static org.assertj.core.api.Assertions.assertThat; - @DisplayName("사용자 인증 정보 테스트") @TestContainerSpringBootTest class SiteUserDetailsTest { diff --git a/src/test/java/com/example/solidconnection/siteuser/repository/SiteUserRepositoryTest.java b/src/test/java/com/example/solidconnection/siteuser/repository/SiteUserRepositoryTest.java index 115e40e77..7074d0ebf 100644 --- a/src/test/java/com/example/solidconnection/siteuser/repository/SiteUserRepositoryTest.java +++ b/src/test/java/com/example/solidconnection/siteuser/repository/SiteUserRepositoryTest.java @@ -1,5 +1,7 @@ package com.example.solidconnection.siteuser.repository; +import static org.assertj.core.api.Assertions.assertThatCode; + import com.example.solidconnection.siteuser.domain.AuthType; import com.example.solidconnection.siteuser.domain.ExchangeStatus; import com.example.solidconnection.siteuser.domain.Role; @@ -10,8 +12,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataIntegrityViolationException; -import static org.assertj.core.api.Assertions.assertThatCode; - @TestContainerDataJpaTest class SiteUserRepositoryTest { diff --git a/src/test/java/com/example/solidconnection/siteuser/service/MyPageServiceTest.java b/src/test/java/com/example/solidconnection/siteuser/service/MyPageServiceTest.java index d317ed542..4ca461061 100644 --- a/src/test/java/com/example/solidconnection/siteuser/service/MyPageServiceTest.java +++ b/src/test/java/com/example/solidconnection/siteuser/service/MyPageServiceTest.java @@ -1,5 +1,17 @@ package com.example.solidconnection.siteuser.service; +import static com.example.solidconnection.common.exception.ErrorCode.CAN_NOT_CHANGE_NICKNAME_YET; +import static com.example.solidconnection.siteuser.service.MyPageService.MIN_DAYS_BETWEEN_NICKNAME_CHANGES; +import static com.example.solidconnection.siteuser.service.MyPageService.NICKNAME_LAST_CHANGE_DATE_FORMAT; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.AssertionsForClassTypes.assertThatCode; +import static org.mockito.ArgumentMatchers.argThat; +import static org.mockito.BDDMockito.any; +import static org.mockito.BDDMockito.eq; +import static org.mockito.BDDMockito.given; +import static org.mockito.BDDMockito.never; +import static org.mockito.BDDMockito.then; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.s3.domain.ImgType; import com.example.solidconnection.s3.dto.UploadedFileUrlResponse; @@ -15,6 +27,7 @@ import com.example.solidconnection.university.domain.LikedUnivApplyInfo; import com.example.solidconnection.university.fixture.UnivApplyInfoFixture; import com.example.solidconnection.university.repository.LikedUnivApplyInfoRepository; +import java.time.LocalDateTime; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -24,20 +37,6 @@ import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.mock.web.MockMultipartFile; -import java.time.LocalDateTime; - -import static com.example.solidconnection.common.exception.ErrorCode.CAN_NOT_CHANGE_NICKNAME_YET; -import static com.example.solidconnection.siteuser.service.MyPageService.MIN_DAYS_BETWEEN_NICKNAME_CHANGES; -import static com.example.solidconnection.siteuser.service.MyPageService.NICKNAME_LAST_CHANGE_DATE_FORMAT; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.AssertionsForClassTypes.assertThatCode; -import static org.mockito.ArgumentMatchers.argThat; -import static org.mockito.BDDMockito.any; -import static org.mockito.BDDMockito.eq; -import static org.mockito.BDDMockito.given; -import static org.mockito.BDDMockito.never; -import static org.mockito.BDDMockito.then; - @TestContainerSpringBootTest @DisplayName("마이페이지 서비스 테스트") class MyPageServiceTest { @@ -78,7 +77,6 @@ void setUp() { // when MyPageResponse response = myPageService.getMyPageInfo(user); - // then Assertions.assertAll( () -> assertThat(response.nickname()).isEqualTo(user.getNickname()), @@ -137,7 +135,7 @@ class 프로필_이미지_수정_테스트 { // then then(s3Service).should().deleteExProfile(argThat(user -> - user.getId().equals(커스텀_프로필_사용자.getId()))); + user.getId().equals(커스텀_프로필_사용자.getId()))); } } diff --git a/src/test/java/com/example/solidconnection/siteuser/service/SiteUserServiceTest.java b/src/test/java/com/example/solidconnection/siteuser/service/SiteUserServiceTest.java index 665fb11da..3a81d40e2 100644 --- a/src/test/java/com/example/solidconnection/siteuser/service/SiteUserServiceTest.java +++ b/src/test/java/com/example/solidconnection/siteuser/service/SiteUserServiceTest.java @@ -1,5 +1,7 @@ package com.example.solidconnection.siteuser.service; +import static org.assertj.core.api.Assertions.assertThat; + import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.dto.NicknameExistsResponse; import com.example.solidconnection.siteuser.fixture.SiteUserFixture; @@ -10,8 +12,6 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import static org.assertj.core.api.Assertions.assertThat; - @TestContainerSpringBootTest @DisplayName("유저 서비스 테스트") class SiteUserServiceTest { diff --git a/src/test/java/com/example/solidconnection/support/DatabaseCleaner.java b/src/test/java/com/example/solidconnection/support/DatabaseCleaner.java index aee6a2bc6..b8dd72670 100644 --- a/src/test/java/com/example/solidconnection/support/DatabaseCleaner.java +++ b/src/test/java/com/example/solidconnection/support/DatabaseCleaner.java @@ -2,14 +2,13 @@ import jakarta.persistence.EntityManager; import jakarta.persistence.PersistenceContext; +import java.util.List; +import java.util.Objects; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.Objects; - @Component public class DatabaseCleaner { @@ -38,11 +37,11 @@ private void truncate() { @SuppressWarnings("unchecked") private List getTruncateQueries() { String sql = """ - SELECT CONCAT('TRUNCATE TABLE ', TABLE_NAME, ';') AS q - FROM INFORMATION_SCHEMA.TABLES - WHERE TABLE_SCHEMA = (SELECT DATABASE()) - AND TABLE_TYPE = 'BASE TABLE' - """; + SELECT CONCAT('TRUNCATE TABLE ', TABLE_NAME, ';') AS q + FROM INFORMATION_SCHEMA.TABLES + WHERE TABLE_SCHEMA = (SELECT DATABASE()) + AND TABLE_TYPE = 'BASE TABLE' + """; return em.createNativeQuery(sql).getResultList(); } diff --git a/src/test/java/com/example/solidconnection/support/TestContainerDataJpaTest.java b/src/test/java/com/example/solidconnection/support/TestContainerDataJpaTest.java index 415b21e78..31f5f6d2a 100644 --- a/src/test/java/com/example/solidconnection/support/TestContainerDataJpaTest.java +++ b/src/test/java/com/example/solidconnection/support/TestContainerDataJpaTest.java @@ -1,14 +1,13 @@ package com.example.solidconnection.support; -import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; -import org.springframework.test.context.ContextConfiguration; -import org.testcontainers.junit.jupiter.Testcontainers; - import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.test.context.ContextConfiguration; +import org.testcontainers.junit.jupiter.Testcontainers; @DataJpaTest @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) @@ -17,4 +16,5 @@ @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface TestContainerDataJpaTest { + } diff --git a/src/test/java/com/example/solidconnection/support/TestContainerSpringBootTest.java b/src/test/java/com/example/solidconnection/support/TestContainerSpringBootTest.java index 462400400..c99044a43 100644 --- a/src/test/java/com/example/solidconnection/support/TestContainerSpringBootTest.java +++ b/src/test/java/com/example/solidconnection/support/TestContainerSpringBootTest.java @@ -1,5 +1,9 @@ package com.example.solidconnection.support; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase; import org.springframework.boot.test.context.SpringBootTest; @@ -7,11 +11,6 @@ import org.springframework.test.context.ContextConfiguration; import org.testcontainers.junit.jupiter.Testcontainers; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - @ComponentScan(basePackages = "com.example.solidconnection") @ExtendWith({DatabaseClearExtension.class}) @ContextConfiguration(initializers = {RedisTestContainer.class, MySQLTestContainer.class}) @@ -21,4 +20,5 @@ @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface TestContainerSpringBootTest { + } diff --git a/src/test/java/com/example/solidconnection/university/dto/validation/ValidUnivApplyInfoChoiceValidatorTest.java b/src/test/java/com/example/solidconnection/university/dto/validation/ValidUnivApplyInfoChoiceValidatorTest.java index 84a41d801..a4f1e5d9f 100644 --- a/src/test/java/com/example/solidconnection/university/dto/validation/ValidUnivApplyInfoChoiceValidatorTest.java +++ b/src/test/java/com/example/solidconnection/university/dto/validation/ValidUnivApplyInfoChoiceValidatorTest.java @@ -1,21 +1,20 @@ package com.example.solidconnection.university.dto.validation; +import static com.example.solidconnection.common.exception.ErrorCode.DUPLICATE_UNIV_APPLY_INFO_CHOICE; +import static com.example.solidconnection.common.exception.ErrorCode.FIRST_CHOICE_REQUIRED; +import static com.example.solidconnection.common.exception.ErrorCode.THIRD_CHOICE_REQUIRES_SECOND; +import static org.assertj.core.api.Assertions.assertThat; + import com.example.solidconnection.application.dto.UnivApplyInfoChoiceRequest; import jakarta.validation.ConstraintViolation; import jakarta.validation.Validation; import jakarta.validation.Validator; import jakarta.validation.ValidatorFactory; +import java.util.Set; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import java.util.Set; - -import static com.example.solidconnection.common.exception.ErrorCode.DUPLICATE_UNIV_APPLY_INFO_CHOICE; -import static com.example.solidconnection.common.exception.ErrorCode.FIRST_CHOICE_REQUIRED; -import static com.example.solidconnection.common.exception.ErrorCode.THIRD_CHOICE_REQUIRES_SECOND; -import static org.assertj.core.api.Assertions.assertThat; - @DisplayName("대학 선택 유효성 검사 테스트") class ValidUnivApplyInfoChoiceValidatorTest { diff --git a/src/test/java/com/example/solidconnection/university/fixture/UnivApplyInfoFixtureBuilder.java b/src/test/java/com/example/solidconnection/university/fixture/UnivApplyInfoFixtureBuilder.java index 0989beaca..55f81e9eb 100644 --- a/src/test/java/com/example/solidconnection/university/fixture/UnivApplyInfoFixtureBuilder.java +++ b/src/test/java/com/example/solidconnection/university/fixture/UnivApplyInfoFixtureBuilder.java @@ -1,16 +1,15 @@ package com.example.solidconnection.university.fixture; -import com.example.solidconnection.university.domain.University; +import static com.example.solidconnection.university.domain.SemesterAvailableForDispatch.ONE_SEMESTER; +import static com.example.solidconnection.university.domain.TuitionFeeType.HOME_UNIVERSITY_PAYMENT; + import com.example.solidconnection.university.domain.UnivApplyInfo; +import com.example.solidconnection.university.domain.University; import com.example.solidconnection.university.repository.UnivApplyInfoRepository; +import java.util.HashSet; import lombok.RequiredArgsConstructor; import org.springframework.boot.test.context.TestComponent; -import java.util.HashSet; - -import static com.example.solidconnection.university.domain.SemesterAvailableForDispatch.ONE_SEMESTER; -import static com.example.solidconnection.university.domain.TuitionFeeType.HOME_UNIVERSITY_PAYMENT; - @TestComponent @RequiredArgsConstructor public class UnivApplyInfoFixtureBuilder { diff --git a/src/test/java/com/example/solidconnection/university/repository/LikedUnivApplyInfoRepositoryTest.java b/src/test/java/com/example/solidconnection/university/repository/LikedUnivApplyInfoRepositoryTest.java index 59b09d628..6279b7d5b 100644 --- a/src/test/java/com/example/solidconnection/university/repository/LikedUnivApplyInfoRepositoryTest.java +++ b/src/test/java/com/example/solidconnection/university/repository/LikedUnivApplyInfoRepositoryTest.java @@ -1,5 +1,7 @@ package com.example.solidconnection.university.repository; +import static org.assertj.core.api.AssertionsForClassTypes.assertThatCode; + import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.support.TestContainerSpringBootTest; @@ -12,8 +14,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataIntegrityViolationException; -import static org.assertj.core.api.AssertionsForClassTypes.assertThatCode; - @TestContainerSpringBootTest @DisplayName("대학교 좋아요 레파지토리 테스트") public class LikedUnivApplyInfoRepositoryTest { diff --git a/src/test/java/com/example/solidconnection/university/service/GeneralUnivApplyInfoRecommendServiceTest.java b/src/test/java/com/example/solidconnection/university/service/GeneralUnivApplyInfoRecommendServiceTest.java index e2dcdd255..4e22897ef 100644 --- a/src/test/java/com/example/solidconnection/university/service/GeneralUnivApplyInfoRecommendServiceTest.java +++ b/src/test/java/com/example/solidconnection/university/service/GeneralUnivApplyInfoRecommendServiceTest.java @@ -1,20 +1,19 @@ package com.example.solidconnection.university.service; +import static com.example.solidconnection.university.service.UnivApplyInfoRecommendService.RECOMMEND_UNIV_APPLY_INFO_NUM; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertAll; + import com.example.solidconnection.support.TestContainerSpringBootTest; import com.example.solidconnection.university.domain.UnivApplyInfo; import com.example.solidconnection.university.fixture.UnivApplyInfoFixture; +import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import java.util.List; - -import static com.example.solidconnection.university.service.UnivApplyInfoRecommendService.RECOMMEND_UNIV_APPLY_INFO_NUM; -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertAll; - @TestContainerSpringBootTest @DisplayName("대학 지원 정보 공통 추천 서비스 테스트") class GeneralUnivApplyInfoRecommendServiceTest { diff --git a/src/test/java/com/example/solidconnection/university/service/LikedUnivApplyInfoServiceTest.java b/src/test/java/com/example/solidconnection/university/service/LikedUnivApplyInfoServiceTest.java index d8d4c0b9b..deaa158d8 100644 --- a/src/test/java/com/example/solidconnection/university/service/LikedUnivApplyInfoServiceTest.java +++ b/src/test/java/com/example/solidconnection/university/service/LikedUnivApplyInfoServiceTest.java @@ -1,5 +1,11 @@ package com.example.solidconnection.university.service; +import static com.example.solidconnection.common.exception.ErrorCode.ALREADY_LIKED_UNIV_APPLY_INFO; +import static com.example.solidconnection.common.exception.ErrorCode.NOT_LIKED_UNIV_APPLY_INFO; +import static com.example.solidconnection.common.exception.ErrorCode.UNIV_APPLY_INFO_NOT_FOUND; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.AssertionsForClassTypes.assertThatCode; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.fixture.SiteUserFixture; @@ -10,20 +16,13 @@ import com.example.solidconnection.university.dto.UnivApplyInfoPreviewResponse; import com.example.solidconnection.university.fixture.UnivApplyInfoFixture; import com.example.solidconnection.university.repository.LikedUnivApplyInfoRepository; +import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import java.util.List; - -import static com.example.solidconnection.common.exception.ErrorCode.ALREADY_LIKED_UNIV_APPLY_INFO; -import static com.example.solidconnection.common.exception.ErrorCode.NOT_LIKED_UNIV_APPLY_INFO; -import static com.example.solidconnection.common.exception.ErrorCode.UNIV_APPLY_INFO_NOT_FOUND; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.AssertionsForClassTypes.assertThatCode; - @TestContainerSpringBootTest @DisplayName("대학 지원 정보 좋아요 서비스 테스트") class LikedUnivApplyInfoServiceTest { diff --git a/src/test/java/com/example/solidconnection/university/service/UnivApplyInfoQueryServiceTest.java b/src/test/java/com/example/solidconnection/university/service/UnivApplyInfoQueryServiceTest.java index 1c58316dc..14dc9ff53 100644 --- a/src/test/java/com/example/solidconnection/university/service/UnivApplyInfoQueryServiceTest.java +++ b/src/test/java/com/example/solidconnection/university/service/UnivApplyInfoQueryServiceTest.java @@ -1,5 +1,11 @@ package com.example.solidconnection.university.service; +import static com.example.solidconnection.common.exception.ErrorCode.UNIV_APPLY_INFO_NOT_FOUND; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.AssertionsForClassTypes.assertThatExceptionOfType; +import static org.mockito.BDDMockito.then; +import static org.mockito.Mockito.times; + import com.example.solidconnection.common.exception.CustomException; import com.example.solidconnection.support.TestContainerSpringBootTest; import com.example.solidconnection.university.domain.LanguageTestType; @@ -11,19 +17,12 @@ import com.example.solidconnection.university.fixture.UnivApplyInfoFixture; import com.example.solidconnection.university.repository.UnivApplyInfoRepository; import com.example.solidconnection.university.repository.custom.UnivApplyInfoFilterRepository; +import java.util.List; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.mock.mockito.SpyBean; -import java.util.List; - -import static com.example.solidconnection.common.exception.ErrorCode.UNIV_APPLY_INFO_NOT_FOUND; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.AssertionsForClassTypes.assertThatExceptionOfType; -import static org.mockito.BDDMockito.then; -import static org.mockito.Mockito.times; - @TestContainerSpringBootTest @DisplayName("대학 지원 정보 조회 서비스 테스트") class UnivApplyInfoQueryServiceTest { diff --git a/src/test/java/com/example/solidconnection/university/service/UnivApplyInfoRecommendServiceTest.java b/src/test/java/com/example/solidconnection/university/service/UnivApplyInfoRecommendServiceTest.java index 96e8bf81d..94ad7b9ee 100644 --- a/src/test/java/com/example/solidconnection/university/service/UnivApplyInfoRecommendServiceTest.java +++ b/src/test/java/com/example/solidconnection/university/service/UnivApplyInfoRecommendServiceTest.java @@ -1,5 +1,8 @@ package com.example.solidconnection.university.service; +import static com.example.solidconnection.university.service.UnivApplyInfoRecommendService.RECOMMEND_UNIV_APPLY_INFO_NUM; +import static org.assertj.core.api.Assertions.assertThat; + import com.example.solidconnection.location.country.domain.InterestedCountry; import com.example.solidconnection.location.country.fixture.CountryFixture; import com.example.solidconnection.location.country.repository.InterestedCountryRepository; @@ -13,16 +16,12 @@ import com.example.solidconnection.university.dto.UnivApplyInfoPreviewResponse; import com.example.solidconnection.university.dto.UnivApplyInfoRecommendsResponse; import com.example.solidconnection.university.fixture.UnivApplyInfoFixture; +import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import java.util.List; - -import static com.example.solidconnection.university.service.UnivApplyInfoRecommendService.RECOMMEND_UNIV_APPLY_INFO_NUM; -import static org.assertj.core.api.Assertions.assertThat; - @TestContainerSpringBootTest @DisplayName("대학 지원 정보 추천 서비스 테스트") class UnivApplyInfoRecommendServiceTest { @@ -146,6 +145,7 @@ void setUp() { .map(UnivApplyInfoPreviewResponse::from).toList() ); } + @Test void 일반_추천_대학_지원_정보를_조회한다() { // when