Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[#232] 유저 테스트 코드 리팩토링 #249

Merged
merged 20 commits into from Jul 26, 2021
Merged

[#232] 유저 테스트 코드 리팩토링 #249

merged 20 commits into from Jul 26, 2021

Conversation

da-nyee
Copy link
Collaborator

@da-nyee da-nyee commented Jul 24, 2021

상세 내용

슬라이스 테스트 - 컨트롤러

getAuthenticatedUserProfile

  • 사용자는 내 프로필을 조회할 수 있다.
  • 게스트는 내 프로필을 조회할 수 없다. - 401 예외

getUserProfile

  • 사용자는 타인의 프로필을 조회할 수 있다.
  • 게스트는 타인의 프로필을 조회할 수 있다.

followUser

  • 사용자는 팔로우를 할 수 있다.
  • 게스트는 팔로우를 할 수 없다. - 401 예외

unfollowUser

  • 사용자는 언팔로우를 할 수 있다.
  • 게스트는 언팔로우를 할 수 없다. - 401 예외

슬라이스 테스트 - 서비스

getAuthenticatedUserProfile

  • 사용자는 내 이름으로 내 프로필을 조회할 수 있다.

getUserProfile

  • 게스트는 유저 이름으로 검색하여 유저의 프로필을 조회할 수 있다.
  • 사용자는 유저 이름으로 검색하여 유저의 프로필을 조회할 수 있다.
  • 게스트는 존재하지 않는 유저 이름으로 프로필을 조회할 수 없다. - 400 예외
  • 사용자는 존재하지 않는 유저 이름으로 프로필을 조회할 수 없다. - 400 예외

followUser

  • source 유저는 target 유저를 팔로우할 수 있다.
  • 이미 팔로우 중이라면 팔로우를 할 수 없다. - 400 예외

unfollowUser

  • source 유저는 target 유저를 언팔로우할 수 있다.
  • 이미 언팔로우 중이라면 언팔로우할 수 없다. - 400 예외

단위 테스트

FollowTest - isFollowing

  • 팔로잉을 하고 있다. - target == targetUser
  • 팔로잉을 하고 있지 않다. - target != targetUser

슬라이스 테스트 - Data JPA

findUserByBasicProfile_Name

  • 유저 이름으로 유저를 조회한다.
  • 등록되지 않은 유저 이름으로 유저를 조회할 수 없다.- 400 예외

통합 테스트

getAuthenticatedUserProfile

  • 사용자는 자신의 프로필을 조회할 수 있다.

getUserProfile

  • 게스트는 유저 이름으로 검색하여 유저의 프로필을 조회할 수 있다.
  • 사용자는 유저 이름으로 검색하여 유저의 프로필을 조회할 수 있다. - 팔로잉을 한 경우
  • 사용자는 유저 이름으로 검색하여 유저의 프로필을 조회할 수 있다. - 팔로잉을 하지 않은 경우
  • 게스트는 존재하지 않는 유저 이름으로 프로필을 조회할 수 없다. - 400 예외
  • 사용자는 존재하지 않는 유저 이름으로 프로필을 조회할 수 없다. - 400 예외

followUser

  • source 유저는 target 유저를 팔로우할 수 있다.
  • 이미 팔로우 중이라면 팔로우할 수 없다. - 400 예외

unfollowUser

  • source 유저는 target 유저를 언팔로우할 수 있다.
  • 이미 언팔로우 중이라면 언팔로우할 수 없다. - 400 예외

인수 테스트

getAuthenticatedUserProfile

  • 사용자는 자신의 프로필을 조회할 수 있다.
  • 사용자는 유효하지 않은 토큰으로 자신의 프로필을 조회할 수 없다. - 401 예외
  • 사용자는 토큰 없이 자신의 프로필을 조회할 수 없다. - 401 예외

getUserProfile

  • 사용자는 팔로우한 유저의 프로필을 조회할 수 있다.
  • 사용자는 팔로우하지 않은 유저의 프로필을 조회할 수 있다.
  • 게스트는 유저의 프로필을 조회할 수 있다.
  • 게스트는 존재하지 않는 유저 이름으로 프로필을 조회할 수 없다. - 400 예외
  • 사용자는 존재하지 않는 유저 이름으로 프로필을 조회할 수 없다. - 400 예외

followUser

  • source 유저는 target 유저를 팔로우할 수 있다.
  • source 유저와 target 유저가 동일하면 팔로우할 수 없다. - 400 예외
  • source 유저는 존재하지 않는 유저를 팔로우할 수 없다. - 400 예외
  • source 유저는 이미 팔로우한 유저를 팔로우할 수 없다. - 400 예외

unfollowUser

  • source 유저는 target 유저를 언팔로우할 수 있다.
  • source 유저와 target 유저가 동일하면 언팔로우할 수 없다. - 400 예외
  • source 유저는 존재하지 않는 유저를 언팔로우할 수 없다. - 400 예외
  • source 유저는 존재하지 않는 팔로우에 대해 언팔로우할 수 없다. - 400 예외

Close #232

@da-nyee da-nyee added backend 백엔드 이슈 test 테스트 이슈 labels Jul 24, 2021
@da-nyee da-nyee self-assigned this Jul 24, 2021
Copy link
Collaborator

@xlffm3 xlffm3 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

안녕하세요 다니, 테스트 꼼꼼하게 작성하시느라 고생많으셨어요. 몇 가지 커멘트남겼습니다.
아울러 현재 UserService에서 DTO들이 Builder를 적용하지 않고 new 연산자를 이용하는데 이 부분도 리팩토링이 필요해보입니다.

Comment on lines 52 to 66
private UserProfileResponse createUserProfileResponse(
UserProfileResponseDto userProfileResponseDto) {
return new UserProfileResponse(
userProfileResponseDto.getName(),
userProfileResponseDto.getImage(),
userProfileResponseDto.getDescription(),
userProfileResponseDto.getFollowerCount(),
userProfileResponseDto.getFollowingCount(),
userProfileResponseDto.getPostCount(),
userProfileResponseDto.getGithubUrl(),
userProfileResponseDto.getCompany(),
userProfileResponseDto.getLocation(),
userProfileResponseDto.getWebsite(),
userProfileResponseDto.getTwitter(),
userProfileResponseDto.getFollowing());
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. Builder를 사용하지 않는 이유가 있을까요?
  2. UserProfileResponseDto를 반환하지 않고 내부 코드가 동일한 UserProfileResponse로 변경해서 반환하는 특별한 이유가 있을까요?
    • 응답과 관련된 API 스펙이 변경되면 서비스에서 반환하는 DTO의 변경 + 컨트롤러에서 맵핑하는 Response의 변경 두 가지 작업이 발생할 것 같습니다.
    • 컨트롤러가 별도의 DTO를 가진다면 여러 도메인의 정보(여기서는 여러 서비스가 반환하는 DTO)를 조합해서 응답을 작성해야 하는 요구 사항 변화가 생겼을 때 지네릭 반환 타입의 변경없이 변경할 수 있다는 장점이 있어보이는데요. 다만, 이런 방식을 사용하다 보면 컨트롤러가 의존하게 되는 서비스의 개수가 비대해질 수 있으며, 응용 계층 로직이 컨트롤러에 포함될 것 같다는 생각이 드는데요. (아울러서 여러 서비스를 개별 호출하면 트랜잭션을 묶는데 어려움이 있을 것 같다는 생각도 들구요.)

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 부분은 제가 구현한 부분에 대해서 다니가 리팩토링 한 것으로 보이는데요!
이전에 DTO에서 합의 본 부분이 controller -> service로 갈때 별도의 DTO 를 사용 + service -> controller 용 DTO와 controller -> View DTO를 따로 두기로 합의봤던 것 같아요! 그때 service에서 사용되는 UserProfileResponseDto를 그대로 view까지 반환한다면 layer를 건너뛰어서 application layer의 dto가 view까지 전달이 된다는 문제가 있다는 의견이 있었던 걸로 기억합니다.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. Builder 사용을 깜빡했어요! 리팩토링 하겠습니다.
  2. 잊을만 하면 돌아오는 정산 신병들 글에서 2. Controller와 Service 레이어의 강한 결합 부분을 읽어주세요. 이런 이유로 설계 당시 코다 말대로 View - Controller / Controller - Service 사이의 DTO를 분리해서 작성하기로 결정했습니다. 그래서 두 DTO가 동일한 필드를 가지고 있어도 컨벤션대로 변환해서 반환하게 했습니다.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@yjksw @da-nyee Post쪽은 이러한 부분이 전혀 반영이 안 되어있어서 드린 말씀이었어요. 그런데 해당 합의 사항에 대한 노션 문서 등이 있을까요? Controller -> Service, Service -> Controller는 기억나는데 Controller -> View에 대한 논의는 기억나지 않아서요.

그리고 다니가 링크로 준 글의 요지는

  • Service가 Controller에서 주는 DTO에 의존하게 되면, 단방향 흐름 (P -> A -> D - > I)이 깨지고, Presentation Layer가 Application Layer에 의존하면서 동시에 Application Layer 또한 Presentation Layer에 의존하는 문제가 발생.
  • 따라서 Service는 P와는 독립적인 DTO를 받고, 반환 -> 이를 통해 A는 P를 전혀 모르게 되며 P만 A에 의존.

인 것 같은데요. 현재 저희는 해당 부분을 잘 지키고 있다고 생각해요.

제가 궁금한 점은 View나 Controller나 어차피 같은 Presentation Layer이고, Service에서 반환한 DTO에 대해 단뱡항적으로 Presentation Layer(View, Controller)가 의존하는데 Bypass 성격의 Response로 한 번 더 감쌀때 어떤 이점이 있을지입니다.

Service Layer가 반환하는 엔티티를 캡슐화한 DTO가 Controller에서 별도로 포장되지 않은채 View로 가게 된다면 어떤 위험한 점이 존재하나요?

@@ -35,8 +40,6 @@ public void remove(Follow follow) {

public Boolean isFollowing(User targetUser) {
return followings.stream()
.filter(follow -> follow.getTarget().equals(targetUser))
.findAny().isPresent();
.anyMatch(follow -> follow.getTarget().equals(targetUser));
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

getter를 사용하지 않고 Follow 객체에게 메서드를 위임할 수 있어보입니다.

new AuthUserServiceDto(appUser.getUsername());
@Authenticated AppUser user,
@PathVariable String username) {
validateIsGuest(user);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

게스트인지 아닌지 판별하는 로직을 나중에 별도의 커스텀 애너테이션을 활용해서 validate할 수 있을지 알아봐야겠네요... 어렵군

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

인터셉터에서 걸러주는데 필요할까요 ?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@yjksw 저는 필요하다고 생각해요! 요청이 무조건 Interceptor를 거쳐서 Controller로 들어올 거라 생각이 되긴 하지만, 바로 Controller로 들어오는 혹시 모를 상황이 생길 수도 있지 않을까 싶어요!

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@xlffm3 리졸버 하나 더 달아서 충분히 가능할듯? 근데 다니 생각대로라면 AOP를 활용한 validation으로는 충족시켜주기 힘들듯.

@Test
public void getUserProfile_GuestFindUserInfoByName_Success() {
public void getUserProfile_FindByNameInCaseOfGuestUser_Success() {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

테스트에 public 접근제어자는 지워도 괜찮을것같습니다.

@@ -33,195 +34,195 @@
@ActiveProfiles("test")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 부분은 저도 확실하지 않은데요. WebEnvironment를 None으로 하면 톰캣 컨테이너를 실행하지 않는다고 알고 있습니다.
포트가 필요하지 않으니 변경하는건 어떨까요? (성능에 차이가 있으려나...?)

https://www.programmersought.com/article/36295439001/

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

두 옵션을 비교해봤는데,

  • RANDOM_PORT의 경우 14sec 946ms
  • NONE의 경우 11sec 445ms

약 3초 정도 테스트 시간에 차이가 있네요! NONE으로 변경하겠습니다 👍

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

첨언하고 가자면 NONE이랑, 단순히 어노테이션만 붙이는거랑 동일합니다 :)


sourceUserAccessToken = 로그인_되어있음(sourceUser).getToken();
loginUserAccessToken = 로그인_되어있음(loginUser).getToken();
targetUserAccessToken = 로그인_되어있음(targetUser).getToken();
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

안쓰는 필드네요.

}

@DisplayName("한 로그인 유저가 없는 유저를 팔로우하면 예외가 발생한다.")
@DisplayName("source 유저는 존재하지 않는 유저를 팔로우할 수 없다. - 400 예외")
Copy link
Collaborator

@xlffm3 xlffm3 Jul 25, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

팔로우/언팔로우 인수테스트 관련해서 비로그인시 상황도 테스트 추가가 필요해보입니다. 인수테스트였구나

Copy link
Collaborator

@yjksw yjksw left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

다니~~!! 코드가 훨씬 더 깔끔해졌네요.
넘나 수고하셨습니당 👍😊

new AuthUserServiceDto(appUser.getUsername())
);
@Authenticated AppUser user) {
validateIsGuest(user);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

인터셉터에서 이미 반드시 authenticated 된 유저인지 확인하는데 여기서 더 확인할 필요가 있을까요?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 코멘트와 의견 동일합니다!

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@yjksw 레이어별로 validation을 따로 진행해주는게 좋은게 사실입니다. 이러한 불편함으로 인해 생겨난것이 spring validation이구요.

new AuthUserServiceDto(appUser.getUsername());
@Authenticated AppUser user,
@PathVariable String username) {
validateIsGuest(user);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

인터셉터에서 걸러주는데 필요할까요 ?

Copy link
Collaborator

@binghe819 binghe819 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

다니 고생 많으셨어요~~~

몇 가지 피드백 남겼습니다 :)

Comment on lines 40 to 45
return new UserProfileResponseDto(
target.getName(), target.getImage(), target.getDescription(),
target.getFollowerCount(), target.getFollowingCount(),
target.getPostCount(),
target.getGithubUrl(), target.getCompany(), target.getLocation(),
target.getWebsite(), target.getTwitter(), null);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

빌더 패턴 사용하면 가독성이 더 좋아질 듯 합니다!

Comment on lines 21 to 25
public UserProfileResponseDto(
String name, String image, String description,
int followerCount, int followingCount, int postCount,
String githubUrl, String company, String location, String website, String twitter,
Boolean following) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

유저 관련된 Response는 진짜 다 어마어마하네요..

@@ -33,195 +34,195 @@
@ActiveProfiles("test")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이부분은 저도 @SpringBootTest로 했었는데요. UserServiceUserRepository에만 의존하고 있다면, 굳이 @SpringBootTest말고 @DataJpaTest로도 충분할 것 같습니다!

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

제가 이해하기로는 @DataJpaTest는 컴포넌트 스캔을 하지 않는데요.
해당 테스트에서 UserService를 DI하고 사용하고 있으니까 @DataJpaTest는 사용할 수 없지 않을까요?!

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 테스트에선 UserService를 스프링에 의존하지 않고, 직접 new를 통해 만들어도 상관 없을 것 같아서요!

즉, JPA 컴포넌트 (UserRepository)만을 스캔하고, UserService는 직접 만들어서 사용하는 것이 테스트 비용을 줄이는 것이라 생각듭니다!


기존 코드

@Import(InfrastructureTestConfiguration.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
@DirtiesContext(classMode = ClassMode.BEFORE_EACH_TEST_METHOD)
@ActiveProfiles("test")
class UserServiceIntegrationTest {

    private static final String NAME = "yjksw";
    private static final String IMAGE = "http://img.com";
    private static final String DESCRIPTION = "The Best";
    private static final String GITHUB_URL = "https://github.com/yjksw";
    private static final String COMPANY = "woowacourse";
    private static final String LOCATION = "Seoul";
    private static final String WEBSITE = "www.pick-git.com";
    private static final String TWITTER = "pick-git twitter";

    @Autowired
    private UserService userService;

    @Autowired
    private UserRepository userRepository;

DataJpaTest로 수정후 코드

@Import(InfrastructureTestConfiguration.class)
@DataJpaTest
@DirtiesContext(classMode = ClassMode.BEFORE_EACH_TEST_METHOD)
@ActiveProfiles("test")
class UserServiceIntegrationTest {

    private static final String NAME = "yjksw";
    private static final String IMAGE = "http://img.com";
    private static final String DESCRIPTION = "The Best";
    private static final String GITHUB_URL = "https://github.com/yjksw";
    private static final String COMPANY = "woowacourse";
    private static final String LOCATION = "Seoul";
    private static final String WEBSITE = "www.pick-git.com";
    private static final String TWITTER = "pick-git twitter";

    @Autowired
    private UserRepository userRepository;

    private UserService userService;

    @BeforeEach
    void setUp() {
        userService = new UserService(userRepository);
    }

.... 테스트 코드들

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

빙허 의견 재미있다고 생각됩니다. 테스트 최적화 방법 중 하나라고 생각해요.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아하 좋아요!! 이 부분도 반영해서 리팩토링 하겠습니다 🙌

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

와 방금 @SpringBootTest@DataJpaTest 비교해봤는데,

  • SpringBootTest의 경우 12sec 447ms
  • DataJpaTest의 경우 823ms

약 11초 정도 차이가 있습니다...! 대박 앞으로 이 방법 애용해야겠네요 👍

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아무래도 @SpringBootTest는 사용하지 않는 빈 (ex. 이 테스트에서 사용하지 않는 다른 Service 빈들)도 등록하기 때문에 오래 걸리는 것 같아요!

오... 성능 테스트까지! 굳굳! 앞으로 이 방법을 더 애용해야겠네요ㅎㅎ

Copy link
Collaborator

@bperhaps bperhaps left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

안녕하세요 다니~ 꼼꼼한 테스트도 대단하고 코드 퀄리티도 상당하네요! 잘 봤습니다!

@@ -85,7 +113,7 @@ private User findUserByName(String githubName) {
}

private void validateDifferentSourceTarget(User source, User target) {
if (source.getId() == target.getId()) {
if (source.getId().equals(target.getId())) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👀👍

new AuthUserServiceDto(appUser.getUsername())
);
@Authenticated AppUser user) {
validateIsGuest(user);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@yjksw 레이어별로 validation을 따로 진행해주는게 좋은게 사실입니다. 이러한 불편함으로 인해 생겨난것이 spring validation이구요.

new AuthUserServiceDto(appUser.getUsername());
@Authenticated AppUser user,
@PathVariable String username) {
validateIsGuest(user);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@xlffm3 리졸버 하나 더 달아서 충분히 가능할듯? 근데 다니 생각대로라면 AOP를 활용한 validation으로는 충족시켜주기 힘들듯.

@@ -33,195 +34,195 @@
@ActiveProfiles("test")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

첨언하고 가자면 NONE이랑, 단순히 어노테이션만 붙이는거랑 동일합니다 :)

@@ -33,195 +34,195 @@
@ActiveProfiles("test")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

빙허 의견 재미있다고 생각됩니다. 테스트 최적화 방법 중 하나라고 생각해요.

Copy link
Collaborator

@xlffm3 xlffm3 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다!

@da-nyee da-nyee deleted the test/user branch July 26, 2021 06:01
bperhaps added a commit that referenced this pull request Jul 28, 2021
bperhaps added a commit that referenced this pull request Aug 1, 2021
* refactor: infrastructure 유닛테스트, comment 유닛테스트 리팩토링

* test: Post 관련 유닛테스트 리팩토링

* test: Post application 레이어 관련 테스트 리팩토링

* test: Post 인수 테스트 리팩토링

* test: PostControllerTest 리팩토링 추가

* test: post builder를 사용하도록 변경

* refactor: 리베이스 후 깨지는 테스트 수정 및 누락된 테스트 추가

refactor: Post의 Tag관련 비즈니스 로직 PostTags로 이동 (#259)

이동과 함께 Post의 Build 패턴 적용과 리팩토링.

refactor: PostService와 PostController의 책임 분리. 및 s3Storage 파일 저장 방식 추가 (#259)

feed관련과, 게시물 관련으로 분리하여 관심사를 맞춤.

refactor: 전체적인 import 정리 (#259)

refactor: 패키지 정리 (#259)

refactor: Post의 getImageUrl 중복 메서드 제거 (#259)

refactor: CommentResponse의 도메인 참조 제거 및 DtoAssembler 리팩토링 (#259)

refactor: Feed관련 컨트롤러, 서비스, PostDto어셈블러  리팩토링, 레이어에 맞지 않는 DTO 이동 (#259)

refactor: CommentRequestDto 패키지 변경 및 PostController 리팩토링 (#259)

refactor: PostResponseDto가 presentation~presentation까지 사용되던것을 분리 (#259)

refactor: showRepositories -> userRepositories 메서드명 변경 (#259)

refactor: RepositoryResponse, domain -> controller까지 사용 되던것을 분리 (#259)

style: domain을 제외한 레이어의 구글 컨벤션 체크 (#259)

refactor: PostImageUrlResponseDto Builder 사용하도록 변경

refactor: Post 컨벤션 및 메서드 순서 정리 (#259)

refactor: Post user 관련 메서드명 author로 변경 및 필드, 메서드 정리 (#249)

refactor: PostTag equals getId()로 변경 및 필드 순서 정리 (#249)

refactor: Like를 VO로 취급, Likes를 컨테이너로 취급하도록 변경 (#249)

refactor: Image VO로 취급 및 도움 메서드 네이밍 변경, PostContent validation로직 변경 (#249)

refactor: CommentContent VO 취급, comment 도움메서드 이름 변경 및 책임 변경 (#249)

refactor: Post equals getter를 사용하도록 변경 (#249)

refactor: 연관관계 도움 메서드 반환깂 없도록 변경 (#249)

style: 구글 컨벤션 적용 (#249)

refactor: 추상화 수준 평탄화 작업 (#249)
bperhaps added a commit that referenced this pull request Aug 1, 2021
* refactor: infrastructure 유닛테스트, comment 유닛테스트 리팩토링

* test: Post 관련 유닛테스트 리팩토링

* test: Post application 레이어 관련 테스트 리팩토링

* test: Post 인수 테스트 리팩토링

* test: PostControllerTest 리팩토링 추가

* test: post builder를 사용하도록 변경

* refactor: 리베이스 후 깨지는 테스트 수정 및 누락된 테스트 추가

refactor: Post의 Tag관련 비즈니스 로직 PostTags로 이동 (#259)

이동과 함께 Post의 Build 패턴 적용과 리팩토링.

refactor: PostService와 PostController의 책임 분리. 및 s3Storage 파일 저장 방식 추가 (#259)

feed관련과, 게시물 관련으로 분리하여 관심사를 맞춤.

refactor: 전체적인 import 정리 (#259)

refactor: 패키지 정리 (#259)

refactor: Post의 getImageUrl 중복 메서드 제거 (#259)

refactor: CommentResponse의 도메인 참조 제거 및 DtoAssembler 리팩토링 (#259)

refactor: Feed관련 컨트롤러, 서비스, PostDto어셈블러  리팩토링, 레이어에 맞지 않는 DTO 이동 (#259)

refactor: CommentRequestDto 패키지 변경 및 PostController 리팩토링 (#259)

refactor: PostResponseDto가 presentation~presentation까지 사용되던것을 분리 (#259)

refactor: showRepositories -> userRepositories 메서드명 변경 (#259)

refactor: RepositoryResponse, domain -> controller까지 사용 되던것을 분리 (#259)

style: domain을 제외한 레이어의 구글 컨벤션 체크 (#259)

refactor: PostImageUrlResponseDto Builder 사용하도록 변경

refactor: Post 컨벤션 및 메서드 순서 정리 (#259)

refactor: Post user 관련 메서드명 author로 변경 및 필드, 메서드 정리 (#249)

refactor: PostTag equals getId()로 변경 및 필드 순서 정리 (#249)

refactor: Like를 VO로 취급, Likes를 컨테이너로 취급하도록 변경 (#249)

refactor: Image VO로 취급 및 도움 메서드 네이밍 변경, PostContent validation로직 변경 (#249)

refactor: CommentContent VO 취급, comment 도움메서드 이름 변경 및 책임 변경 (#249)

refactor: Post equals getter를 사용하도록 변경 (#249)

refactor: 연관관계 도움 메서드 반환깂 없도록 변경 (#249)

style: 구글 컨벤션 적용 (#249)

refactor: 추상화 수준 평탄화 작업 (#249)
da-nyee pushed a commit that referenced this pull request Aug 4, 2021
* refactor: Post 프로덕션 코드 리팩토링 (#252)

* refactor: infrastructure 유닛테스트, comment 유닛테스트 리팩토링

* test: Post 관련 유닛테스트 리팩토링

* test: Post application 레이어 관련 테스트 리팩토링

* test: Post 인수 테스트 리팩토링

* test: PostControllerTest 리팩토링 추가

* test: post builder를 사용하도록 변경

* refactor: 리베이스 후 깨지는 테스트 수정 및 누락된 테스트 추가

refactor: Post의 Tag관련 비즈니스 로직 PostTags로 이동 (#259)

이동과 함께 Post의 Build 패턴 적용과 리팩토링.

refactor: PostService와 PostController의 책임 분리. 및 s3Storage 파일 저장 방식 추가 (#259)

feed관련과, 게시물 관련으로 분리하여 관심사를 맞춤.

refactor: 전체적인 import 정리 (#259)

refactor: 패키지 정리 (#259)

refactor: Post의 getImageUrl 중복 메서드 제거 (#259)

refactor: CommentResponse의 도메인 참조 제거 및 DtoAssembler 리팩토링 (#259)

refactor: Feed관련 컨트롤러, 서비스, PostDto어셈블러  리팩토링, 레이어에 맞지 않는 DTO 이동 (#259)

refactor: CommentRequestDto 패키지 변경 및 PostController 리팩토링 (#259)

refactor: PostResponseDto가 presentation~presentation까지 사용되던것을 분리 (#259)

refactor: showRepositories -> userRepositories 메서드명 변경 (#259)

refactor: RepositoryResponse, domain -> controller까지 사용 되던것을 분리 (#259)

style: domain을 제외한 레이어의 구글 컨벤션 체크 (#259)

refactor: PostImageUrlResponseDto Builder 사용하도록 변경

refactor: Post 컨벤션 및 메서드 순서 정리 (#259)

refactor: Post user 관련 메서드명 author로 변경 및 필드, 메서드 정리 (#249)

refactor: PostTag equals getId()로 변경 및 필드 순서 정리 (#249)

refactor: Like를 VO로 취급, Likes를 컨테이너로 취급하도록 변경 (#249)

refactor: Image VO로 취급 및 도움 메서드 네이밍 변경, PostContent validation로직 변경 (#249)

refactor: CommentContent VO 취급, comment 도움메서드 이름 변경 및 책임 변경 (#249)

refactor: Post equals getter를 사용하도록 변경 (#249)

refactor: 연관관계 도움 메서드 반환깂 없도록 변경 (#249)

style: 구글 컨벤션 적용 (#249)

refactor: 추상화 수준 평탄화 작업 (#249)

* refactor: 리베이스 후 깨지는 파일 수정

* fix: User 비교 로직 버그 해결

* refactor: 메서드의 네이밍 변경

* refactor: 디미터의 원칙 준수

* refactor: 사용하지 않는 메서드 제거

* refactor: 깨지는 테스트 수정

* refactor: 타입 추론 변수를 타입형으로 변경

* refactor: 의미가 없는 변수명 제거 like -> 메서드참조

* style: 팀 컨벤션 적용
da-nyee added a commit that referenced this pull request Aug 4, 2021
* refactor: 코드 정리 (#232)

* refactor: 사용자 유효성 검증 추가 (#232)

- 게스트인 경우 UnauthorizedException 발생

* refactor: DTO 관련 네이밍 정리 (#232)

* test: 컨트롤러 테스트 리팩토링 (#232)

* test: 서비스 테스트 리팩토링 (#232)

* test: Data JPA 테스트 리팩토링 (#232)

* test: 불필요한 상수 삭제 (#232)

* test: 유저 이름 변경 (#232)

- loginUser/guestUser -> testUser로 통일

* test: 서비스 테스트 추가 (#232)

* test: 서비스 테스트 리팩토링 (#232)

* test: 통합 테스트 리팩토링 (#232)

* test: 인수 테스트 리팩토링 (#232)

* refactor: Builder 사용 (#232)

* refactor: Follow 객체에 책임 위임 (#232)

* test: 접근 제어자 수정 (#232)

* refactor: DTO 리팩토링 (#232)

* test: 불필요한 필드 삭제 (#232)

* test: WebEnvironment 옵션을 RANDOM_PORT -> NONE으로 변경 (#232)

* test: @SpringBootTest -> @DataJpaTest 변경 (#232)

* refactor: API 명세에 맞게 필드명 변경 (#232)

- image -> imageUrl 변경
da-nyee pushed a commit that referenced this pull request Aug 4, 2021
* refactor: Post 프로덕션 코드 리팩토링 (#252)

* refactor: infrastructure 유닛테스트, comment 유닛테스트 리팩토링

* test: Post 관련 유닛테스트 리팩토링

* test: Post application 레이어 관련 테스트 리팩토링

* test: Post 인수 테스트 리팩토링

* test: PostControllerTest 리팩토링 추가

* test: post builder를 사용하도록 변경

* refactor: 리베이스 후 깨지는 테스트 수정 및 누락된 테스트 추가

refactor: Post의 Tag관련 비즈니스 로직 PostTags로 이동 (#259)

이동과 함께 Post의 Build 패턴 적용과 리팩토링.

refactor: PostService와 PostController의 책임 분리. 및 s3Storage 파일 저장 방식 추가 (#259)

feed관련과, 게시물 관련으로 분리하여 관심사를 맞춤.

refactor: 전체적인 import 정리 (#259)

refactor: 패키지 정리 (#259)

refactor: Post의 getImageUrl 중복 메서드 제거 (#259)

refactor: CommentResponse의 도메인 참조 제거 및 DtoAssembler 리팩토링 (#259)

refactor: Feed관련 컨트롤러, 서비스, PostDto어셈블러  리팩토링, 레이어에 맞지 않는 DTO 이동 (#259)

refactor: CommentRequestDto 패키지 변경 및 PostController 리팩토링 (#259)

refactor: PostResponseDto가 presentation~presentation까지 사용되던것을 분리 (#259)

refactor: showRepositories -> userRepositories 메서드명 변경 (#259)

refactor: RepositoryResponse, domain -> controller까지 사용 되던것을 분리 (#259)

style: domain을 제외한 레이어의 구글 컨벤션 체크 (#259)

refactor: PostImageUrlResponseDto Builder 사용하도록 변경

refactor: Post 컨벤션 및 메서드 순서 정리 (#259)

refactor: Post user 관련 메서드명 author로 변경 및 필드, 메서드 정리 (#249)

refactor: PostTag equals getId()로 변경 및 필드 순서 정리 (#249)

refactor: Like를 VO로 취급, Likes를 컨테이너로 취급하도록 변경 (#249)

refactor: Image VO로 취급 및 도움 메서드 네이밍 변경, PostContent validation로직 변경 (#249)

refactor: CommentContent VO 취급, comment 도움메서드 이름 변경 및 책임 변경 (#249)

refactor: Post equals getter를 사용하도록 변경 (#249)

refactor: 연관관계 도움 메서드 반환깂 없도록 변경 (#249)

style: 구글 컨벤션 적용 (#249)

refactor: 추상화 수준 평탄화 작업 (#249)

* refactor: 리베이스 후 깨지는 파일 수정

* fix: User 비교 로직 버그 해결

* refactor: 메서드의 네이밍 변경

* refactor: 디미터의 원칙 준수

* refactor: 사용하지 않는 메서드 제거

* refactor: 깨지는 테스트 수정

* refactor: 타입 추론 변수를 타입형으로 변경

* refactor: 의미가 없는 변수명 제거 like -> 메서드참조

* style: 팀 컨벤션 적용
da-nyee added a commit that referenced this pull request Aug 4, 2021
* refactor: 코드 정리 (#232)

* refactor: 사용자 유효성 검증 추가 (#232)

- 게스트인 경우 UnauthorizedException 발생

* refactor: DTO 관련 네이밍 정리 (#232)

* test: 컨트롤러 테스트 리팩토링 (#232)

* test: 서비스 테스트 리팩토링 (#232)

* test: Data JPA 테스트 리팩토링 (#232)

* test: 불필요한 상수 삭제 (#232)

* test: 유저 이름 변경 (#232)

- loginUser/guestUser -> testUser로 통일

* test: 서비스 테스트 추가 (#232)

* test: 서비스 테스트 리팩토링 (#232)

* test: 통합 테스트 리팩토링 (#232)

* test: 인수 테스트 리팩토링 (#232)

* refactor: Builder 사용 (#232)

* refactor: Follow 객체에 책임 위임 (#232)

* test: 접근 제어자 수정 (#232)

* refactor: DTO 리팩토링 (#232)

* test: 불필요한 필드 삭제 (#232)

* test: WebEnvironment 옵션을 RANDOM_PORT -> NONE으로 변경 (#232)

* test: @SpringBootTest -> @DataJpaTest 변경 (#232)

* refactor: API 명세에 맞게 필드명 변경 (#232)

- image -> imageUrl 변경
da-nyee pushed a commit that referenced this pull request Aug 4, 2021
* refactor: Post 프로덕션 코드 리팩토링 (#252)

* refactor: infrastructure 유닛테스트, comment 유닛테스트 리팩토링

* test: Post 관련 유닛테스트 리팩토링

* test: Post application 레이어 관련 테스트 리팩토링

* test: Post 인수 테스트 리팩토링

* test: PostControllerTest 리팩토링 추가

* test: post builder를 사용하도록 변경

* refactor: 리베이스 후 깨지는 테스트 수정 및 누락된 테스트 추가

refactor: Post의 Tag관련 비즈니스 로직 PostTags로 이동 (#259)

이동과 함께 Post의 Build 패턴 적용과 리팩토링.

refactor: PostService와 PostController의 책임 분리. 및 s3Storage 파일 저장 방식 추가 (#259)

feed관련과, 게시물 관련으로 분리하여 관심사를 맞춤.

refactor: 전체적인 import 정리 (#259)

refactor: 패키지 정리 (#259)

refactor: Post의 getImageUrl 중복 메서드 제거 (#259)

refactor: CommentResponse의 도메인 참조 제거 및 DtoAssembler 리팩토링 (#259)

refactor: Feed관련 컨트롤러, 서비스, PostDto어셈블러  리팩토링, 레이어에 맞지 않는 DTO 이동 (#259)

refactor: CommentRequestDto 패키지 변경 및 PostController 리팩토링 (#259)

refactor: PostResponseDto가 presentation~presentation까지 사용되던것을 분리 (#259)

refactor: showRepositories -> userRepositories 메서드명 변경 (#259)

refactor: RepositoryResponse, domain -> controller까지 사용 되던것을 분리 (#259)

style: domain을 제외한 레이어의 구글 컨벤션 체크 (#259)

refactor: PostImageUrlResponseDto Builder 사용하도록 변경

refactor: Post 컨벤션 및 메서드 순서 정리 (#259)

refactor: Post user 관련 메서드명 author로 변경 및 필드, 메서드 정리 (#249)

refactor: PostTag equals getId()로 변경 및 필드 순서 정리 (#249)

refactor: Like를 VO로 취급, Likes를 컨테이너로 취급하도록 변경 (#249)

refactor: Image VO로 취급 및 도움 메서드 네이밍 변경, PostContent validation로직 변경 (#249)

refactor: CommentContent VO 취급, comment 도움메서드 이름 변경 및 책임 변경 (#249)

refactor: Post equals getter를 사용하도록 변경 (#249)

refactor: 연관관계 도움 메서드 반환깂 없도록 변경 (#249)

style: 구글 컨벤션 적용 (#249)

refactor: 추상화 수준 평탄화 작업 (#249)

* refactor: 리베이스 후 깨지는 파일 수정

* fix: User 비교 로직 버그 해결

* refactor: 메서드의 네이밍 변경

* refactor: 디미터의 원칙 준수

* refactor: 사용하지 않는 메서드 제거

* refactor: 깨지는 테스트 수정

* refactor: 타입 추론 변수를 타입형으로 변경

* refactor: 의미가 없는 변수명 제거 like -> 메서드참조

* style: 팀 컨벤션 적용
da-nyee added a commit that referenced this pull request Aug 4, 2021
* refactor: 코드 정리 (#232)

* refactor: 사용자 유효성 검증 추가 (#232)

- 게스트인 경우 UnauthorizedException 발생

* refactor: DTO 관련 네이밍 정리 (#232)

* test: 컨트롤러 테스트 리팩토링 (#232)

* test: 서비스 테스트 리팩토링 (#232)

* test: Data JPA 테스트 리팩토링 (#232)

* test: 불필요한 상수 삭제 (#232)

* test: 유저 이름 변경 (#232)

- loginUser/guestUser -> testUser로 통일

* test: 서비스 테스트 추가 (#232)

* test: 서비스 테스트 리팩토링 (#232)

* test: 통합 테스트 리팩토링 (#232)

* test: 인수 테스트 리팩토링 (#232)

* refactor: Builder 사용 (#232)

* refactor: Follow 객체에 책임 위임 (#232)

* test: 접근 제어자 수정 (#232)

* refactor: DTO 리팩토링 (#232)

* test: 불필요한 필드 삭제 (#232)

* test: WebEnvironment 옵션을 RANDOM_PORT -> NONE으로 변경 (#232)

* test: @SpringBootTest -> @DataJpaTest 변경 (#232)

* refactor: API 명세에 맞게 필드명 변경 (#232)

- image -> imageUrl 변경
da-nyee pushed a commit that referenced this pull request Aug 4, 2021
* refactor: Post 프로덕션 코드 리팩토링 (#252)

* refactor: infrastructure 유닛테스트, comment 유닛테스트 리팩토링

* test: Post 관련 유닛테스트 리팩토링

* test: Post application 레이어 관련 테스트 리팩토링

* test: Post 인수 테스트 리팩토링

* test: PostControllerTest 리팩토링 추가

* test: post builder를 사용하도록 변경

* refactor: 리베이스 후 깨지는 테스트 수정 및 누락된 테스트 추가

refactor: Post의 Tag관련 비즈니스 로직 PostTags로 이동 (#259)

이동과 함께 Post의 Build 패턴 적용과 리팩토링.

refactor: PostService와 PostController의 책임 분리. 및 s3Storage 파일 저장 방식 추가 (#259)

feed관련과, 게시물 관련으로 분리하여 관심사를 맞춤.

refactor: 전체적인 import 정리 (#259)

refactor: 패키지 정리 (#259)

refactor: Post의 getImageUrl 중복 메서드 제거 (#259)

refactor: CommentResponse의 도메인 참조 제거 및 DtoAssembler 리팩토링 (#259)

refactor: Feed관련 컨트롤러, 서비스, PostDto어셈블러  리팩토링, 레이어에 맞지 않는 DTO 이동 (#259)

refactor: CommentRequestDto 패키지 변경 및 PostController 리팩토링 (#259)

refactor: PostResponseDto가 presentation~presentation까지 사용되던것을 분리 (#259)

refactor: showRepositories -> userRepositories 메서드명 변경 (#259)

refactor: RepositoryResponse, domain -> controller까지 사용 되던것을 분리 (#259)

style: domain을 제외한 레이어의 구글 컨벤션 체크 (#259)

refactor: PostImageUrlResponseDto Builder 사용하도록 변경

refactor: Post 컨벤션 및 메서드 순서 정리 (#259)

refactor: Post user 관련 메서드명 author로 변경 및 필드, 메서드 정리 (#249)

refactor: PostTag equals getId()로 변경 및 필드 순서 정리 (#249)

refactor: Like를 VO로 취급, Likes를 컨테이너로 취급하도록 변경 (#249)

refactor: Image VO로 취급 및 도움 메서드 네이밍 변경, PostContent validation로직 변경 (#249)

refactor: CommentContent VO 취급, comment 도움메서드 이름 변경 및 책임 변경 (#249)

refactor: Post equals getter를 사용하도록 변경 (#249)

refactor: 연관관계 도움 메서드 반환깂 없도록 변경 (#249)

style: 구글 컨벤션 적용 (#249)

refactor: 추상화 수준 평탄화 작업 (#249)

* refactor: 리베이스 후 깨지는 파일 수정

* fix: User 비교 로직 버그 해결

* refactor: 메서드의 네이밍 변경

* refactor: 디미터의 원칙 준수

* refactor: 사용하지 않는 메서드 제거

* refactor: 깨지는 테스트 수정

* refactor: 타입 추론 변수를 타입형으로 변경

* refactor: 의미가 없는 변수명 제거 like -> 메서드참조

* style: 팀 컨벤션 적용
da-nyee added a commit that referenced this pull request Aug 4, 2021
* 프론트엔드 기본 환경 설정 (#3)

* chore: 기본 환경설정 (#2)

* chore: 필수 의존성 설치 (#2)

* Chip 컴포넌트 구현 (#18)

* feat: 전역 스타일링 적용(#2)

Co-authored-by: SONG WON LEE <swon3210@users.noreply.github.com>

* chore: 스토리북 기본설정

Co-authored-by: SONG WON LEE <swon3210@users.noreply.github.com>

* chore: svg inline loader 설치 및 적용

Co-authored-by: SONG WON LEE <swon3210@users.noreply.github.com>

* feat: Chip 컴포넌트 구현

Co-authored-by: SONG WON LEE <swon3210@users.noreply.github.com>

Co-authored-by: SONG WON LEE <swon3210@users.noreply.github.com>

* feat: Avatar 컴포넌트 구현 (#13) (#20)

* CountIndicator 컴포넌트 구현 (#19)

* feat: CountIndicator 컴포넌트 구현 (# 15)

* feat: CountIndicator 컴포넌트에 theme 적용 (#15)

* chore: styled-components 의 theme 객체에 타입을 부여 (#22) (#23)

Co-authored-by: LEESONGWON <swon3210@skku.edu>

* chore: css normalize 적용 (#21) (#24)

* type declare error 해결 (#25)

* chore: svg-inline-loader를 svgr과 url-loader로 대체

* fix: 오타수정

* fix: type declare오류 수정

- styled components type declare
- svg module declare

* 스토리북 webpack 에 svgr 적용 (#27)

* chore: svg 파일 추가 및 svg 컴포넌트를 하나의 파일에서 import 해올 수 있도록 설정 (#29)

Co-authored-by: LEESONGWON <swon3210@skku.edu>

* chore: 백엔드 기본 환경 설정 (#30)

* chore: 패키지 구조 분리 및 스켈레톤 코드 작성 (#33)

* feat: CricleIcon 컴포넌트 구현 (#12) (#31)

* [#6] NavigationHeader 컴포넌트 구현 (#42)

* fix: a 태그에 전역으로 부여된 hover 텍스트 color 제거

* chore: 이미지 파일 모듈에 대한 typing 적용

* feat: NavigationHeader 컴포넌트 구현

* feat: NavigationHeader 컴포넌트의 a 태그를 react-router-dom 의 Link 컴포넌트로 교체

- Link 컴포넌트에 경로 prop 할당

* [#17] TextEditor 컴포넌트 구현 (#43)

* feat: svg 파일을 react component로 불러와 적용

* feat: TextEditor 컴포넌트 구현 (#17)

* chore: s3proxy 기본 환경 설정 (#56)

* [#7] StepHeader 컴포넌트 구현 (#47)

* feat: StepHeader 컴포넌트 구현 - close #7

* feat: padding, width 값 px -> rem 으로 전환

* [#44] API Layer 추상화 및 profile request 구현 (#59)

* chore: axios 설치

Co-authored-by: SONG WON LEE <swon3210@users.noreply.github.com>

* chore: 디렉터리 및 파일 이름 변경

Co-authored-by: SONG WON LEE <swon3210@users.noreply.github.com>

* feat: useLocalStorage hook 구현

Co-authored-by: LEE SONG WON <swon3210@gmail.com>

* feat: Profile reqest 및 query 구현

Co-authored-by: LEE SONG WON <swon3210@gmail.com>

* fix: 잘못사용한 메서드 수정

* feat: json-server를 통해 resource mocking

Co-authored-by: SONG WON LEE <swon3210@users.noreply.github.com>
Co-authored-by: LEE SONG WON <swon3210@gmail.com>

* [#8] SearchHeader 컴포넌트 구현 (#60)

* chore: StepHeader 컴포넌트 폴더 위치 변경

* feat: SearchHeader 컴포넌트 구현

* feat: Tabs 컴포넌트 구현 (#14) (#64)

* feat: ContributionGraph 컴포넌트 구현 (#67)

* feat: Input 컴포넌트 구현 (#65)

* feat: ImageUploader 컴포넌트 구현 (#66)

* feat: Button 컴포넌트 구현 (#41) (#72)

* [#71] 초기 패키지 및 세팅을 설정 (#74)

* chore: 초기 설정 및 엔티티 맵핑 보완 (#71)

* chore: Authentication 패키지 스켈레톤 코드 작성 (#71)

* [#46] Github OAuth 2.0을 사용한 로그인 기능 구현 (#75)

* feat: pick-git 도메인이 등록된 Github Login URL을 받아오는 기능 구현

* fix: 존재하지 않는 패키지 import로 인해 발생하는 문제 해결

* feat: 사용자가 Github 로그인 후 Github Authorization Server로부터 AccessToken 가져오는 기능 구현

* refactor: application.yml에서 Github관련 구조 수정

* feat: 로그인시 Github Profile 최신화 및 토큰 생성하여 반환하는 기능 구현

* test: 로그인 관련 표현 계층 테스트 추가

* feat: DB로 부터 User 정보가 존재하는지 확인하기 위해 User 도메인 구현

* feat: 회원가입(첫 로그인)과 로그인(두번째 로그인부터)시 DB에 저장하는 기능 구현

- 회원가입(첫 로그인시) Github Profile을 가져와서 DB에 저장한다.
- 로그인(두번째 로그인부터) Github Profile과 관련된 정보만 수정한다.

* feat: 회원 인증을 위한 인터셉터와 HandlerMethodArgumentResolver 구현

* refactor: OAuth 액세스 토큰 DB에 접근하는 DAO 인터페이스로 분리 및 테스트 코드 추가

* refactor: OAuth로부터 Profile가져오는 코드 분리

* test: OAuthService 슬라이스 테스트 추가

* chore: 애플리케이션 설정 수정

* refactor: rebase과정에서 발생한 문제 해결 및 리팩토링

* feat: Comment 컴포넌트 구현 (#63) (#73)

* [#4] ImageSlider 컴포넌트 구현 (#77)

* feat: goBack, goForward svg가 currnetColor을 받도록 수정

* feat: useTrottle 구현

* feat: ImageComponent 구현 (#4)

* fix: 색상코드 오타 수정

* [#5] PostItem 컴포넌트 구현 (#81)

* feat: PostItem 컴포넌트 구현

- svg 아이콘 4개 추가

Co-authored-by: Tanney102 <Tanney-102@users.noreply.github.com>

* refactor: Comment 컴포넌트 props 수정

- name -> authorName
- like -> 삭제(authorName을 활용하여 직접 link 생성)

* fix: TextEditor 컴포넌트 fontSize prop 이 적용되지 않는 문제 해결

* refactor: Input 컴포넌트 Ref 사용 구문 단순화

Co-authored-by: Tanney102 <Tanney-102@users.noreply.github.com>

* [#76] 로그인 기능 리팩토링 및 테스트 추가 (#80)

* refactor: OAuthController 목킹 애노테이션(WebMvcTest) 매개변수 수정

* refactor: Mock을 사용한 OAuthService 리팩토링 및  UserService(JPA)사용한 통합 테스트 작성

* fix: OAuth 관련 URL앞에 /api 없던 문제 수정

* refactor: 로그인 관련 요청 반환값으로 json형식이 반환되도록 리팩토링

* test: 인증 인터셉터 테스트 추가

* test: 인증 핸들러 메서드 아규먼트 리졸버 테스트 추가

* test: JWT 토큰을 통해 AppUser 반환하는 테스트 추가

* test: 로그인 URL 요청 및 로그인 인수 테스트 추가

* test: 로그인 URL 요청 및 로그인 인수 테스트 추가

* fix: OAuthService 통합테스트시 같은 AccessTokenDB를 Bean으로 공유해서 같은 토큰이 발행되는 테스트 문제 해결

* refactor: 인수테스트시 로그인하면 토큰을 주는 메서드 추가

* refactor: 게시물과 프로필 조회시 로그인 상태가 아니여도 인터셉터 통과하도록 리팩토링

* [#40] 게시물 작성 기능 구현 (#68)

* feat: 게시물 작성 기능 구현

* fix: rebase conflict 해결

* refactor: @authenticated AppUser 바인딩 추가

* test: 슬라이스 테스트 작성

* refactor: URI.create() 메소드 추출

* refactor: 메소드명 변경

* feat: Bean Validation 예외 핸들링

* test: 메소드명 변경

* test: 슬라이스 테스트 보완

* test: 통합 테스트 작성

* feat: 유효성 검증 로직 추가

* test: 슬라이스 테스트 수정

* style: 필드 선언 순서 변경

* test: 인수 테스트 작성

* test: 인수 테스트 추가

* test: Data JPA 테스트 수정

* [#51 #53] 파일 업로드 기능 구현 (#69)

* feat: S3-EC2 파일 업로드 기능 구현

* feat: 파일 업로드 API 구현

* feat: 파일 확장자 확인 기능 구현 (#54)

* test: 인수테스트 작성

* refactor: 테스트 이름 재작성

* [#35 #36] 선택한 Github 레포지토리의 사용 언어 태그 추출 및 태그 저장/조회 기능 구현 (#52)

* chore: 인수 테스트를 위한 RestAssured 의존성 추가 및 테스트 환경 구성 (#35)

* feat: GIthub 특정 Repository에서 Language Tags 추출 (#35)

* feat: Github Tag 추출 서비스 구현 (#35)

* feat: Github Tag 추출 표현 계층 구현 (#35)

* refactor: 태그 추출 기능 중 Github API 호출 부분 인터페이스 분리 (#35)

* refactor: stub token으로 변경

* refactor: controlleradvice tag 패키지 범위 지정

* refactor: GithubTagExtractor 구현체 ObjectMapper 주입 (#35)

* refactor: TagExtractor 피드백 반영 및 컨트롤러 슬라이싱 테스트 추가 (#35)

* refactor: 태그 추출에 로그인 기능 포함 (#35)

* feat: Post 저장시 등록된 Tag도 함께 저장 (#36)

* feat: 이름에 해당하는 Tag가 없을때만 Tag 생성하는 서비스 구현 (#36)

* refactor: 현재 글에 존재하는 Tag와 중복되는 이름의 태그 추가시 예외 발생 (#35)

* refactor: Post에 Tag 정상 등록하는 테스트 추가 (#36)

* refactor: 태그 unique 제약 추가 및 @transactional 적용 (#36)

* refactor: 태그 도메인 생성 유효성 검사 추가 (#36)

* refactor: 태그 인수 테스트 추가 및 패키지 구조 변경 (#36)

* chore: secret 삭제

* refactor: Rebase 이후 인수 테스트에 로그인 요청 모듈 추가 (#35)

* refactor: 잘못된 토큰으로 요청시 예외 확인 인수 테스트 추가 (#35)

* fix: rebase 이후 실패하는 테스트 보완

* refactor: 태그 추가 실패 에러 및 플랫폼 에러를 커스텀 예외로 변환 및 TagController 반환타입 변경 (#35)

* [#55 #57] 유저 프로필 조회 기능 구현 및 팔로우 팔로잉 기능 구현 (#61)

* feat: 유저 프로필 조회 기능 구현 (#55)

* feat: 유저 프로필 정보에 github url 추가 및 누락 파일 추가 (#55)

* feat: 유저 팔로우 팔로잉 기능 구현 (#57)

* test: 유저 프로필 및 팔로우/팔로잉 테스트 구현 (#55 #57)

* test: 유저 프로필 및 팔로우/팔로잉 테스트 구현(#55 #57)

* refactor: 유저 프로필 및 팔로우/팔로잉 피드백 반영 (#55 #57)

* test: verify() 추가 (#55 #57)

* [#88] LoginPage 구현 (#98)

* fix: 오타 수정

* chore: storybook 설정에 full screen 옵션 추가

* feat: 웹폰트 추가

* feat: GithubIconLarge svg 추가

* fix: button attribute type 오류 해결

* feat: github login mock api 추가

* feat: user context 구현

* fix: ProfileQuery accessToken type error 해결

* feat: github login link 조회 api 구현

* feat: github login 페이지 구현(#88)

* fix: UserContextProvider Props 타이핑 간소화

* feat: Provider 분리 및 UserContextProvider 추가

* feat: access token 조회 api 구현(#88)

* feat: github OAuth 로그인을 처리하는 페이지 구현

* [#104] merge시 누락된 코드 추가 (#105)

* fix: 누락된 interface 정의 추가

* fix: 누락된 prop 추가(commentId)

* fix: 누락된 url constants 추가

* feat: 파일 업로드 기능 구현 (#100)

* [#108] 예외 처리 전략 구현 (#112)

* feat: 예외 처리 전략 구현

* refactor: GlobalExceptionHandler에서 최상위 카테고리인 ApplicationException만 받도록 수정

* refactor: RestControllerAdvice로 수정

* refactor: 예외 로깅용 예외 message 생성자 파라미터 추가

* feat: Button 컴포넌트 kind type 추가(#107) (#111)

- SquaredBlock, RoundedInline추가

* [#102] 게시물에 Github Repository 주소 추가 기능 구현  (#109)

* feat: post 업로드 시 github repository 주소 함께 저장 (#102)

* fix: 불필요한 파일 삭제 (#102)

* refactor: 피드백 반영 (#102)

* [#34] 댓글 기능 구현 (#84)

* feat: Comment 유효성 검증 로직 추가 (#34)

* feat: Post 영속시 Comment 함께 영속화하는 기능 추가 (#34)

* feat: User가 특정 Post에 Comment 추가하는 기능 구현 (#34)

* feat: 등록된 게시물에 Comment 추가하는 서비스 구현 (#34)

* test: Service 통합 테스트 추가 (#34)

* feat: 댓글 추가 API 단위 및 인수 테스트 추가 (#34)

* refactor: CommentFormat 예외 상태코드 변경 및 에러 코드 테스트 검증 (#34)

* refactor: ControllerAdvice 이름을 특정 컨트롤러로 명시 (#34)

* refactor: 코드 병합으로 인한 테스트 코드 및 설정 수정 (#34)

* refactor: rebase 병합 해결 (#34)

* [#37] Github Repositories 조회 기능 구현 (#58)

* feat: Github Repositories 조회 기능 구현

* test: 슬라이스 테스트 작성

* refactor: get -> show 메소드명 수정

* refactor: 클래스명 수정

* refactor: Repository -> Repositories 클래스명 변경

* fix: rebase conflict 해결

* refactor: application -> domain <- infrastructure 방향으로 의존성 흐르도록 수정

* test: given-when-then 구문 수정

* refactor: HttpEntity -> RequestEntity 변경

* test: given-when-then 구문 수정

* refactor: Github Repositories 조회 기능 수정

* test: 컨트롤러 테스트 수정

* test: 슬라이스 테스트 수정

* test: 슬라이스 테스트 작성

* test: 인수 테스트 작성

* test: 통합 테스트 작성

* test: rebase conflict 해결

* feat: 프로필 조회시 팔로우 여부 판단 기능 구현 (#113) (#117)

* [#95] 홈 피드 게시글 조회 (#114)

* feat: 페이징을 통해 게시물을 조회하고 DTO로 변환 (#95)

* refactor: rebase 병합으로 인한 충돌 해결 (#95)

* feat: 게시물 조회 페이징 기능 서비스 테스트 추가 (#95)

* refactor: 게시글 목록 조회 기능 인수 테스트 추가 및 태그 DTO 정리 (#95)

* refactor: Post 조회 RestAssured 메서드 중복 리팩토링 (#95)

* refactor: 병합으로 인한 충돌 해결 (#95)

* refactor: batch size를 통한 페이징 쿼리 성능 개선 (#95)

* refactor: 페이징 fetch join 추가 (#95)

* [#119] 서브모듈 적용 (#120)

* chore: 서브모듈 추가 (#119)

* chore: 서브모듈 적용 (#119)

* chore: 서브모듈 수정 (#119)

* [#87] HomeFeedPage 페이지 컴포넌트 구현 (#121)

* refactor: Provider 와 Global Style 적용을 App.tsx -> Index.tsx 에서 수행

Co-authored-by: Tanney102 <Tanney-102@users.noreply.github.com>

* feat: Profile 페이지 query 초기화

* refactor: CommentData 타입 변경 & Comment 컴포넌트 Props 의 CommentData 타입 의존성 제거

* fix: PostItem 컴포넌트에 댓글 달기 버튼 추가 & Tag 들을 나타내는 Chip 들 추가

- send.svg 추가
- PostItem 스타일링 변경

* chore: webpack 이미지 파일 로더 룰 추가

* feat: TextEditor 컴포넌트 배경색 prop 제거

- 기본 border-radius 제거

* feat: Button kind 별 padding 변화 적용

* feat: 상속용 Styled Component 제작

* feat: Header 컴포넌트들에 모듈 Styled Component 상속 적용

* chore: .vscode 를 gitignore 목록에 추가

* feat: PostItem 컴포넌트 마크업 구조 수정

- 필요하지 않은 prop 할당 삭제

* feat: Header 컴포넌트에 일괄적으로 적용할 높이값 상수화

* feat: PostItem 스타일 속성 수정

* feat: Feed 컴포넌트 구현

* feat: HomeFeedPage 페이지 구현

* feat: FAILURE_MESSAGE & LIMIT 상수 추가

- LIMIT 는 어플리케이션에서 제한하는 데이터 형식을 나타내는 상수들을 담은 객체
- FAILURE_MESSAGE 는 요청 혹은 동작이 실패했을 때 사용자 피드백에 활용될 메세지들을 담은 객체

* feat: HomeFeedPage 라우팅 적용

Co-authored-by: Tanney102 <Tanney-102@users.noreply.github.com>

* [#118] 예외 처리 전략을 적용 및 Entity에 id 동등성 추가  (#122)

* refactor: Authentication 커스텀 예외처리 구현

* refactor: User, Tag 커스텀 예외처리 구현

* refactor: Post, Comment 커스텀 예외처리 구현

* refactor: 엔티티 id 동등성 정의

* refactor: 플랫폼 이니셜 V로 수정

* fix: DataJpaTest에 Date 관련 테스트 설정 추가 (#123)

* [#89] Profile Page 구현 (#126)

* refactor: Provider 와 Global Style 적용을 App.tsx -> Index.tsx 에서 수행

Co-authored-by: Tanney102 <Tanney-102@users.noreply.github.com>

* feat: Profile 페이지 query 초기화

* feat: Avatar 컴포넌트 name의 fontWeight을 bold로 변경

* feat: storybook dummy token 추가

* feat: mock data 및 routes 추가

* chore: svg 아이콘 추가

* fix: Profile interface 수정

* Revert "feat: mock data 및 routes 추가"

This reverts commit ea74c1bfda40c4bacf71283d193fad62927859d7.

* feat: ProfileHeader 컴포넌트 구현 (#89)

* feat: Profile 컴포넌트의 api로직 및 query 구현

* feat: Profile 컴포넌트 구현(#89)

* chore: assets/images의 파일을 .png, .jpg 로 통일

* chore: 이미지 확장자에 대해 url loader추가

* feat: profile 관련 mock api 추가

* feat: default Profile 이미지를 svg에서 png 파일로 변경

* refactor: profile page url을 하나로 통일

* feat: main 태그 추가

* feat: Profile컴포넌트 story 추가

* refactor: Profile url에 userType param 추가

* refactor: isMyProfile 속성을 Profile컴포넌트의 상위로 이동

* feat: Tabs 컴포넌트에 해당 탭에 대한 컨텐츠 추가

* feat: LoggedInWrapper util로 분리

* feat: ProfileFeed 컴포넌트 레이아웃 구현

* feat: mock data 추가

* feat: svg icon 추가

* refactor: 불필요한 코드 제거 및 누락 코드 보충

- 불필요한 의존성 제거
- 누락된 key prop 추가
- tab 스타일 변경
- 중복된 코드 제거

* feat: 프로필 피드에 비동기 로직 추가

* feat: GithubStatistics 컴포넌트 구현

* feat: Profile Page 구현(#89)

* refactor: 불필요한 interface 제거

* feat: 로그인 페이지 레이아웃 수정 및 홈 버튼 추가

* feat: 레이아웃 수정

* fix: 누락된 accessToken 추가

* refactor: 불필요한 코드 제거

* feat: 스타일 변경

- main widht를 모바일 사이즈로 고정
- black button 패딩 조정

* feat: 데모를 위해 항상 로그인 상태를 유지하도록 수정

* feat: 반응형 레이아웃 적용

* refactor: optional한 엘리먼트를 JSX로 처리

* refactor: error에 따른 ui 분기를 선언적으로 명시

Co-authored-by: SONG WON LEE <swon3210@gmail.com>
Co-authored-by: Tanney102 <Tanney-102@users.noreply.github.com>

* feat: 젠킨스 설정 파일 생성 (#133)

* refactor: 비로그인 유저로도 홈 피드 조회를 하도록 수정 (#134) (#135)

* fix: 파라미터 없이 route하도록 url 및 관련 코드 수정 (#131)

* fix: s3storage bean 탐색을 하지 못하는 버그 수정 (#136)

* [hotfix] CORS 버그 해결 (#138)

* fix: CORS 버그 해결

* chore: security 수정

* [#137] 내 프로필 계정의 게시물을 조회한다. (#139)

* feat: 내 프로필 계정의 게시물을 조회 기능 구현 (#137)

* refactor: Jenkins 빌드 스크립트 sleep을 3에서 10으로 변경

* [chore] api mocking 관련 코드 수정 (#140)

* feat: 무한스크롤 구현 전임을 감안하여 posts 조회시 page, limit mock

* feat: login mock 제거

* chore: 배포 환경에 따라 api proxy여부 분기

* chore: 운영 환경 설정 서브 모듈을 추가 (#143) (#144)

* [#141] 다른 유저의 프로필 계정의 게시물 조회  (#142)

* feat: 다른 유저의 프로필 피드를 조회하는 기능 구현 (#141)

* refactor: Pageable 사용하도록 수정 (#141)

* fix: PostRepository에 @param 추가 (#145)

* [#146] 로그인 반환 값에 유저 네임 추가 및 인터셉터 매치 기능 리팩토링 (#147)

* refactor: PathPattern 인터셉터 URL과 Method를 통해 매치되도록 리팩토링

* refactor: 로그인후 반환할 때 토큰과 함께 유저 네임도 보내도록 수정

* fix: 응답 파싱 에러 수정 (#148)

* [#129] follow 추가, 취소 기능 구현 (#149)

* fix: 폰트 import 위치 변경

* feat: follow 추가, 취소 기능 구현(#129)

* feat: 어플리케이션 진입시 로그인 상태 확인

* refactor: submodule의 remote branch 기준을 main으로 변경 (#155)

master -> main

* refactor: 젠킨슨 빌드 유발 방식 변경에 따른 스크립트 수정 (#157)

* [#152] 응답 파싱 에러 수정 (#153)

* fix: 응답 파싱 에러 수정

* refactor: build.gradle 형식 통일

* fix: 비정상 파일 이름및 확장자 도출 버그 해결 (#160)

* [#163] 빌드 에러를 확인하다. (#164)

* fix: 비정상 파일 이름및 확장자 도출 버그 해결

* fix: 사용하지 않는 모듈 import로 인한 빌드 에러 수정

* fix: 사용하지 않는 모듈 import로 인한 빌드 에러 수정 (#165)

* [#106] request DTO 유효성 검사 추가 (#151)

* refactor: Client - Controller DTO명 변경 (#106)

* style: 파라미터 개행 수정 (#106)

* style: 메소드 개행 수정 (#106)

* test: 클래스명 변경 및 패키지 구조 변경 (#106)

* test: 불필요한 주석 삭제 (#106)

* feat: 서브모듈 추가 (#143)

* refactor: 기본 생성자 접근 제어자 변경 (#106)

* refactor: application-prod.yml 삭제 (#106)

* refactor: 적용되지 않는 Bean Validation 삭제 (#106)

* refactor: request DTO에 Bean Validation 추가 (#106)

* refactor: application-prod.yml 삭제 (#106)

* refactor: 서브모듈 수정

* refactor: 에러 메시지 수정 (#106)

* refactor: DTO 네이밍 수정 (#106)

* [#169] 파일 주소가 제대로 반환되지 않는 버그 수정 (#170)

* fix: 사용하지 않는 모듈 import로 인한 빌드 에러 수정

* fix: 파일 경로가 제대로 반환되지 않는 버그 수정

* refactor:사용하지 않는 import 제거

* [fix] 프론트엔드 이슈 수정 (#171)

* fix: 새로고침시 로그인 상태를 유지하도록 수정

* fix: 오타수정

* fix: query에 자기 이름으로 profile페이지 들어올 경우 redirect

* feat: 프로필 페이지 빈 게시물 표시 추가

* [fix] 프론트엔드 버그 수정 (#172)

* refactor: 불필요한 의존성 제거

* fix: url 오타 수정

* fix: 게시물 태그 문자열 파싱 오류 해결

* [#173] Feature/loader and infinite scroll container (#175)

* feat: Loader 컴포넌트 구현

* feat: InfiniteScrollContainer 컴포넌트 구현

* [#90] AddPostPage 페이지 컴포넌트 구현 (#176)

* feat: AddPostPage 구성 컴포넌트 구현

- PostAddStepHeader 컴포넌트 구현
- PostContentUploader 컴포넌트 구현
- RepositorySelector 컴포넌트 구현
- TagInputForm 컴포넌트 구현
- githube 아이콘 추가

* feat: separatorColor theme 색상 추가

* feat: AddPostPage 구현

- ImageUploader 컴포넌트 prop 명 변경
- 게시물 업로드에 사용되는 객체들의 타입 추가
- 게시물 업로드에 사용되는 API_URL, GITHUB_URL, STEPS 상수 추가
- PostAddDataContext & PostAddStepContext 추가

* fix: Noto Sans 웹폰트가 로드되지 않는 문제 해결

* feat: requestAddPost 요청 함수 구현

* feat: Input 컴포넌트에 name prop 추가

* feat: LIMIT 상수 객체에 FEED_COUNT_PER_FETCH 속성 추가

* feat: requestGetHomeFeedPosts 요청 함수에 기본 pageIndex 제공

* feat: PostAddDataContextProvider 적용 지점 변경 App -> AddPostPage 컴포넌트 바로 위

* feat: 태그 추가 후 태그 입력 Input 내용이 비워지도록 설정

* [#161] 회원/비회원 모두 받을 수 있는 API 토큰 검증 로직 수정 (#167)

* refactor: 표현 계층과 응용 계층의 반환하는 DTO 네이밍 통일

* refactor: 회원/비회원 모두 받을 수 있는 API 토큰 검증 로직을 수정한다.

- 기존 로직: 회원/비회원 모두 처리하는 API (ex. /api/posts)에서 토큰이 잘못된 경우 GuestUser로 처리.
- 수정 로직: 회원/비회원 모두 처리하는 API (ex. /api/posts)에서 토큰이 잘못된 경우 401 예외 발생.

* chore: 설정 수정

* refactor: 상수화

* refactor: 포맷팅 수정

* [#128] Infinite Scroll 기능 구현 (#178)

* feat: Infinite Scroll 기능 구현

* feat: 페이지 컴포넌트에서 데이터를 fetch 받도록 수정

* feat: TagFeedPage & UserFeed 페이지 추가

- 기능 구현 X
- PAGE_URL 상수 추가

* feat: 기존의 평문으로 제공되던 userName 을 로그인 된 유저 이름이 제공되도록 변경

* [#177] 게시물 시간 형식 추가 (#180)

* feat: 게시물 시간 정보 수정

* fix: 시간 형식 수정

* [#181] 요청에 userName 이 동적으로 들어가지 않는 문제를 해결 (#182)

* feat: Infinite Scroll 기능 구현

* feat: 페이지 컴포넌트에서 데이터를 fetch 받도록 수정

* feat: TagFeedPage & UserFeed 페이지 추가

- 기능 구현 X
- PAGE_URL 상수 추가

* feat: 기존의 평문으로 제공되던 userName 을 로그인 된 유저 이름이 제공되도록 변경

* fix: 요청에 userName 이 동적으로 들어가지 않는 문제 해결

- 필요없는 console.log 제거

* fix: userName 과 repositoryName 이 없을 때 데이터가 fetch 되는 버그를 해결 (#186)

- userName 이 파라미터로 들어가지 않은 문제 해결

* refactor: 홈피드를 최신 순으로 조회하도록 수정 (#189) (#191)

* [#162] 태그 추출 API 명세 변경 (#166)

* refactor: 태그 추출 api에서 name 제외 (#162)

* [#106] request DTO 유효성 검사 추가 (#151)

* refactor: Client - Controller DTO명 변경 (#106)

* style: 파라미터 개행 수정 (#106)

* style: 메소드 개행 수정 (#106)

* test: 클래스명 변경 및 패키지 구조 변경 (#106)

* test: 불필요한 주석 삭제 (#106)

* feat: 서브모듈 추가 (#143)

* refactor: 기본 생성자 접근 제어자 변경 (#106)

* refactor: application-prod.yml 삭제 (#106)

* refactor: 적용되지 않는 Bean Validation 삭제 (#106)

* refactor: request DTO에 Bean Validation 추가 (#106)

* refactor: application-prod.yml 삭제 (#106)

* refactor: 서브모듈 수정

* refactor: 에러 메시지 수정 (#106)

* refactor: DTO 네이밍 수정 (#106)

* [#169] 파일 주소가 제대로 반환되지 않는 버그 수정 (#170)

* fix: 사용하지 않는 모듈 import로 인한 빌드 에러 수정

* fix: 파일 경로가 제대로 반환되지 않는 버그 수정

* refactor:사용하지 않는 import 제거

* [fix] 프론트엔드 이슈 수정 (#171)

* fix: 새로고침시 로그인 상태를 유지하도록 수정

* fix: 오타수정

* fix: query에 자기 이름으로 profile페이지 들어올 경우 redirect

* feat: 프로필 페이지 빈 게시물 표시 추가

* [fix] 프론트엔드 버그 수정 (#172)

* refactor: 불필요한 의존성 제거

* fix: url 오타 수정

* fix: 게시물 태그 문자열 파싱 오류 해결

* [#173] Feature/loader and infinite scroll container (#175)

* feat: Loader 컴포넌트 구현

* feat: InfiniteScrollContainer 컴포넌트 구현

* [#90] AddPostPage 페이지 컴포넌트 구현 (#176)

* feat: AddPostPage 구성 컴포넌트 구현

- PostAddStepHeader 컴포넌트 구현
- PostContentUploader 컴포넌트 구현
- RepositorySelector 컴포넌트 구현
- TagInputForm 컴포넌트 구현
- githube 아이콘 추가

* feat: separatorColor theme 색상 추가

* feat: AddPostPage 구현

- ImageUploader 컴포넌트 prop 명 변경
- 게시물 업로드에 사용되는 객체들의 타입 추가
- 게시물 업로드에 사용되는 API_URL, GITHUB_URL, STEPS 상수 추가
- PostAddDataContext & PostAddStepContext 추가

* fix: Noto Sans 웹폰트가 로드되지 않는 문제 해결

* feat: requestAddPost 요청 함수 구현

* feat: Input 컴포넌트에 name prop 추가

* feat: LIMIT 상수 객체에 FEED_COUNT_PER_FETCH 속성 추가

* feat: requestGetHomeFeedPosts 요청 함수에 기본 pageIndex 제공

* feat: PostAddDataContextProvider 적용 지점 변경 App -> AddPostPage 컴포넌트 바로 위

* feat: 태그 추가 후 태그 입력 Input 내용이 비워지도록 설정

* [#161] 회원/비회원 모두 받을 수 있는 API 토큰 검증 로직 수정 (#167)

* refactor: 표현 계층과 응용 계층의 반환하는 DTO 네이밍 통일

* refactor: 회원/비회원 모두 받을 수 있는 API 토큰 검증 로직을 수정한다.

- 기존 로직: 회원/비회원 모두 처리하는 API (ex. /api/posts)에서 토큰이 잘못된 경우 GuestUser로 처리.
- 수정 로직: 회원/비회원 모두 처리하는 API (ex. /api/posts)에서 토큰이 잘못된 경우 401 예외 발생.

* chore: 설정 수정

* refactor: 상수화

* refactor: 포맷팅 수정

* [#128] Infinite Scroll 기능 구현 (#178)

* feat: Infinite Scroll 기능 구현

* feat: 페이지 컴포넌트에서 데이터를 fetch 받도록 수정

* feat: TagFeedPage & UserFeed 페이지 추가

- 기능 구현 X
- PAGE_URL 상수 추가

* feat: 기존의 평문으로 제공되던 userName 을 로그인 된 유저 이름이 제공되도록 변경

* [#177] 게시물 시간 형식 추가 (#180)

* feat: 게시물 시간 정보 수정

* fix: 시간 형식 수정

* [#181] 요청에 userName 이 동적으로 들어가지 않는 문제를 해결 (#182)

* feat: Infinite Scroll 기능 구현

* feat: 페이지 컴포넌트에서 데이터를 fetch 받도록 수정

* feat: TagFeedPage & UserFeed 페이지 추가

- 기능 구현 X
- PAGE_URL 상수 추가

* feat: 기존의 평문으로 제공되던 userName 을 로그인 된 유저 이름이 제공되도록 변경

* fix: 요청에 userName 이 동적으로 들어가지 않는 문제 해결

- 필요없는 console.log 제거

* fix: userName 과 repositoryName 이 없을 때 데이터가 fetch 되는 버그를 해결 (#186)

- userName 이 파라미터로 들어가지 않은 문제 해결

* refactor: 홈피드를 최신 순으로 조회하도록 수정 (#189) (#191)

* refactor: 태그 추출 api에서 name 제외 (#162)

Co-authored-by: DAEUN LEE <leede0418@gmail.com>
Co-authored-by: Minsung Son <sns2831@gmail.com>
Co-authored-by: Tanney102 <57767891+Tanney-102@users.noreply.github.com>
Co-authored-by: SONG WON LEE <swon3210@gmail.com>
Co-authored-by: binghe819 <56860124+binghe819@users.noreply.github.com>

* [#192] 프로필 페이지 401에러 미처리 이슈 해결 (#196)

* refactor: 변수 이름 수정, userName을 username으로 통일

* refactor: localStorage관련 로직 변경

* fix: 유효하지 않은 토큰에 대해 프로필 정보 리패치

* refactor: storage 모듈이 각 함수를 export 하도록 변경

* fix: 유효하지 않은 토큰에 대해 프로필 피드 리패치

* fix: github tas api url 변경 반영

* refactor: 타입가드 추가

* [#179] Github Repositories 조회 기능 수정 (#195)

* refactor: 서브모듈 수정

* refactor: Github Repository URL도 함께 응답 (#179)

* refactor: htmlUrl -> url 변수명 변경 (#179)

* [#197] 레이아웃 및 UI를 개선 (#198)

* feat: 더 이상 불러올 데이터가 없으면 Loader 가 사라지도록 Infinite Scroll 기능 수정

- Feed 데이터를 Page 에서 넘겨주도록 재설정
- 세부 기능이 구현되지 않은 TagFeedPage, UserFeedPage 페이지 컴포넌트 추가(HomeFeedPage 와 현재는 기능 동일)
- 데이터 로딩 시 화면에 나타낼 PageLoading 컴포넌트 구현

* feat: 모든 ul 태그의 margin을 0으로 하는 전역 스타일링 적용

* feat: 데이터 로딩 시 PageLoading 컴포넌트가 나타나도록 설정

- Profile, RepositorySelector, TagInputForm 컴포넌트에 적용

* feat: PostItem 컴포넌트 padding 값 수정

* feat: 모바일 반응형 break point 재설정 &  각 페이지 컴포넌트의 Container 에 Page 스타일드 컴포넌트 확장 적용

* feat: RepositorySelector 컴포넌트의 RepositoryList 에 고정 높이 값 적용

- 내용물이 높이값을 초과할 시 스크롤이 나타나도록 설정

* feat: 로그아웃 버튼 추가 (#203)

* [#194] REST Docs 적용 (#201)

* feat: 문서화 코드 작성

* feature: 문서화 로직 및 기반 파일 구성

* [#207] 배포 자동화 버그 수정 (#208)

* refactor: 빌드와 테스트를 하나의 stage로 합침.

* refactor: 기존 process 제거 시 SIGKILL로 변경

* fix: 누락된 스크립트 추가.

* [#91] Snackbar 구현 (#209)

* fix: 컴포넌트 이름과 중복되는 interface 이름 변경

* feat: 스낵바 구현

* chore: 배포 환경에 따라 api url 분기 (#211)

* chore: 프론트엔드 빌드 커맨드 수정 (#214)

* [#200, #205] 태그 관련 이슈 해결 (#216)

* fix: 게시글 추가 시, 초기에 불러온 기본 tag 들이 사라지지 않는 문제를 해결

* feat: 게시글 추가 중 태그 삭제 기능 구현

* fix: break point 에 맞게 어플리케이션 최대 너비를 375px -> 425px 로 조정

* [#217, #110] 테스트 패키지 구조 정리 (#218)

* chore: 인수/통합 테스트 및 common(픽스쳐 팩토리, mock api) 패키지 분리  (#217)

* chore: 기존 도메인 테스트 패키지들을 unit 하위로 이동 (#217)

* refactor: Tag 관련 Github 플랫폼 클래스 이름에 Tag 명시 (#217)

* chore: Test 관련 Configuration 통일 및 Github API 관련 클래스 프로필 설정 (#217)

* chore: 롬복 의존성 추가 (#217)

* refactor: TestConfiguration 클래스명에 Infrastructure 명시 (#217)

* refactor: PostFactory 빌더 패턴 적용하여 가독성 향상

* refactor: 실패하는 테스트 리팩토링

* refactor: UserFactory 빌더 패턴 적용하여 가독성 향상

* refactor: PostFactory 의미 없는 메서드 제거

* refactor: Test Configuration 이름 변경

* refactor: user fixture setUp로직 위치 변경

* refactor: DTO Builder 어노테이션 적용 및 Builder 제공 클래스 제거

* refactor: gradle.build 파일 정리

* style: 의미없는 공백 제거

Co-authored-by: Minsung <sns2831@gmail.com>

* [#223, #229] API 변경사항 반영 및 Post 중복제거 (#235)

* fix: API 명세 변경 사항 반영

- image와 imageUrl에 대한 키값 구분
- public repo를 가져오는 api 명에서 username 제거

* refactor: 불필요한 의존성 제거

* feat: 새로 패치된 post 중복제거

* fix: InfiniteScrollContainer effect 의존성 수정

* refactor: Snackbar 컴포넌트의 위치를 @layout으로 변경

* fix: post interface 수정

* refactor: 스낵바 메시지를 push 하는 메서드 이름을 더 명시적으로 변경

* fix: 중복된 key prop 수정

* feat:  http error 처리 유틸 구현

* refactor: HomeFeedPage의 상태로직을 훅으로 분리

* [#204] Issue 및 PR Template 수정 (#239)

* docs: PR 템플릿 수정

* docs: 이슈 템플릿 등록

* docs: 이슈 템플릿 수정

* docs: 이슈 템플릿 수정

* [#222] 프로필 페이지 피드 버그 수정 (#242)

* refactor: 중복된 게시물을 제거하는 로직을 util로 분리

* feat: 프로필 피드에 무한 스크롤 기능 추가

* refactor: profile page의 상태를 context로 분리

* feat: 팔로우 버튼에 로딩 애니메이션 추가

* refactor: 불필요한 컨테이너 제거

* refactor: ProfilePage 구조 개선

- 훅을 끌어올리는 수준을 작은 범위로 수정
- context를 제거하고 컨테이너 역할을 하는 컴포넌트를 추가

* [#219] 게시글 추가 중 발생하는 에러에 대한 피드백, 핸들링 구현 (#241)

* feat: BackDrop & MessageModalPortal 컴포넌트 구현

- index.html 에 div#modal 태그 추가
- MessageModalPortal 은 리액트 포털을 적용하여 구현
- 해당 컴포넌트를 사용하기 편하도록 useMessageModal 커스텀 훅 제작

* refactor: 필요 없는 import 구문 삭제

* feat: PostContentUploader 컴포넌트 안의 ImageSlider & ImageUploader 와 TextEditor 간의 margin 추가

* feat: 새로운 limits, messages 상수 추가

- message -> messages 로 파일 이름 변경

* feat: 게시글 추가 step 라우팅 path 에 한글이 들어가는 문제 해결

* fix: 필요한 변수 import 경로 수정

* feat: 게시글 추가 중 각각의 에러에 대한 이용자 피드백 구현
- PostAddFormData -> PostUploadData으로 변경
- 이용자의 깃허브 상에 올라와 있는 public repository 가 없으면 피드백 후 이전 페이지로 리다이렉트 시킨다.
- repository 를 선택하지 않고 이미지 & 글 작성으로 넘어가려 한다면 이를 피드백한다.
- 업로드한 이미지가 정해진 용량을 초과할 경우 피드백한다.
- 업로드한 이미지 개수가 정해진 개수를 초과할 경우 피드백한다.
- 이미지 개수가 정해진 개수를 초과할 경우 피드백한다.
- 텍스트 길이가 정해진 길이를 초과할 경우 피드백한다.
- 들어간 태그들 중 중복이 있으면 피드백한다.
- 태그에 '-', '_' 를 제외한 특수문자가 들어갔다면 이를 피드백한다.

* feat: ErrorResponse 타입 생성 및 적용

* feat: API 요청 에러 핸들링 구현

* [#232] 유저 테스트 코드 리팩토링 (#249)

* refactor: 코드 정리 (#232)

* refactor: 사용자 유효성 검증 추가 (#232)

- 게스트인 경우 UnauthorizedException 발생

* refactor: DTO 관련 네이밍 정리 (#232)

* test: 컨트롤러 테스트 리팩토링 (#232)

* test: 서비스 테스트 리팩토링 (#232)

* test: Data JPA 테스트 리팩토링 (#232)

* test: 불필요한 상수 삭제 (#232)

* test: 유저 이름 변경 (#232)

- loginUser/guestUser -> testUser로 통일

* test: 서비스 테스트 추가 (#232)

* test: 서비스 테스트 리팩토링 (#232)

* test: 통합 테스트 리팩토링 (#232)

* test: 인수 테스트 리팩토링 (#232)

* refactor: Builder 사용 (#232)

* refactor: Follow 객체에 책임 위임 (#232)

* test: 접근 제어자 수정 (#232)

* refactor: DTO 리팩토링 (#232)

* test: 불필요한 필드 삭제 (#232)

* test: WebEnvironment 옵션을 RANDOM_PORT -> NONE으로 변경 (#232)

* test: @SpringBootTest -> @DataJpaTest 변경 (#232)

* refactor: API 명세에 맞게 필드명 변경 (#232)

- image -> imageUrl 변경

* [#240] Authentication 관련 테스트 코드 리팩토링 (#247)

* test: authentication 관련 테스트 코드 리팩토링 (#240)

* test: 테스트 코드 리팩토링 (#240)

* refactor: 깃헙 인증 예외 변경 (#240)

* test: Authentication 테스트 코드 피드백 적용 (#240)

* test: HttpHeaders.AUTHORIZATION 으로 변경 (#240)

* [#226, #227] 프로필 수정 모달 구현 (#255)

* feat: Button 컴포넌트에 padding prop 추가

* feat: cancel-no-circle 아이콘 추가

* refactpr: BackDrop을 스타일드 컴포넌트로 수정

* refactor: textEditor 배경을 투명하게 수정

* chore: eslint no empty function 옵션 off

* refactor: css keyframes 파일로 분리

* feat: 카메라 아이콘 추가

* feat: TextEditor 컴포넌트에 indicator 추가(#226)

* refactor: z-index를 컨벤션에 맞게 수정

* feat: 프로필 수정 모달 구현(#227)

* [#246] 댓글 테스트 코드를 리팩토링 (#250)

* refactor: 댓글 관련 테스트 리팩토링

* refactor: 케빈 피드백 반영

* refactor: 댓글 조회 반환시 프로필 이미지 나오도록 수정

* [#220, #226] 네비게이션 ui 수정 및 이미지 인디케이터 추가 (#256)

* refactor: 비로그인 시에도 홈네이게이션 노출

* fix: header와 image slider의 쌓임 순서 버그 해결

* feat: 이미지 인디케이터 구현

* [#234] 태그 테스트 코드를 리팩토링 (#245)

* refactor: 태그 도메인 부분 테스트 리팩토링

* refactor: 태그 슬라이싱 테스트 리팩토링

* refactor: 태그 통합 테스트 리팩토링

* refactor: 태그 인수 테스트 리팩토링

* refactor: connection pool 사용하는 커스텀 RestTemplate 적용

* refactor: Post와 Tag 연관관계 부분 프로덕션 및 테스트 코드 리팩토링

* refactor: 케빈 피드백 적용

- ParameterizedTest 이용하도록 수정
- 중복된 테스트 제거

* refactor: 피드백 반영

* refactor: 소문자로 자동 변환되도록 수정

* refactor: 너잘 피드백 적용

* refactor: 깃헙에서 태그 가져올 때 소문자로 변환되도록 리팩토링

* [#221, #225] 프로필 피드 클릭시 유저 피드 페이지로 이동 (#260)

* fix: 헤더에서 height가 큰 요소들의 레이아웃이 깨지는 버그 해결

* fix: slideButtonKind 복구

* refactor: 타입 단언 제거

* feat: 프로필피드에서 포스트 클릭시 유저 피드 페이지로 이동

* [#251] Post 테스트 코드를 리팩토링  (#252)

* refactor: infrastructure 유닛테스트, comment 유닛테스트 리팩토링

* test: Post 관련 유닛테스트 리팩토링

* test: Post application 레이어 관련 테스트 리팩토링

* test: Post 인수 테스트 리팩토링

* test: PostControllerTest 리팩토링 추가

* test: post builder를 사용하도록 변경

* refactor: 리베이스 후 깨지는 테스트 수정 및 누락된 테스트 추가

* [#183] 게시글 댓글 기능을 구현 (#265)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* feat: HomeFeed 컴포넌트에서 로그인 된 상태에서 자신의 개시글만 수정 아이콘이 뜨도록 변경

* feat: BottomSliderPortal 컴포넌트 구현

* feat: CommentSlider 컴포넌트 구현

* chore: Layout 상수 객체 이름 LAYOUT 으로 변경

* feat: getLastHash util 함수 구현

* feat: getTabTextColor util 함수 구현

* feat: useBottomSlider 훅 구현

* refactor: PostItem 컴포넌트 수정

- 해당 컴포넌트에서 댓글 입력 값 저장 및 수정을 담당하지 않도록 수정
- 댓글 추가 아이콘 버튼 삭제
- Post, CommentData 타입의 id 속성 타입을 string -> number 로 수정

* feat: 댓글 추가 기능 구현

- Tabs 컴포넌트가 tabIndicatorKind 값에 따라 다른 indicator 를 사용하도록 수정
- useFeed -> useFeedMutation 으로 수정
- HomeFeedPage 상에서 useFeed 를 사용하는 것을 useHomeFeed 를 사용하도록 수정
- COMMENT_INPUT_HEIGHT 레이아웃 상수 추가
- 임시용 UserFeedPage 와 TagFeedPage 업데이트 (여전히 임시용)

* fix: CommentSlider 해시 라우팅으로 인해 특정 UserFeedPage 렌더링이 되지 않는 문제 해결

- CommentSlider 를 토글할 때도 history.location 의 state 와 query param 을 그대로 사용하도록 수정
- NavigationHeader 컴포넌트의 height: content-fit 속성 삭제 & 로그아웃 버튼의 padding 값 수정
- HomeFeed -> Feed 로 컴포넌트 이름 수정

* feat: 댓글 저장 시 예외 처리 추가

* [#199, #248, #184] 게시글 삭제 & 게시글 기본 이미지 구현 (#271)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* feat: 게시글 삭제 기능 구현 & 이미지가 없을 시 기본 이미지 보여주기 구현

- 삭제 버튼을 나타나게 만들기 위한 ButtonDrawer 컴포넌트 구현

* feat: TagInputForm 상에서 Tag 입력 중 모바일 가상 키보드가 레이아웃을 깨뜨리는 문제 해결

- 에러 발생시 tag input 을 blur 처리

* [#243] s3 proxy 관련 테스트 리팩토링 (#244)

* chore: s3-proxy properties 포맷을 yaml로 수정 (#243)

* chore: 프로덕션 패키지명 컨벤션맞게 수정 (#243)

* test: S3Storage 슬라이싱 테스트 추가 (#243)

* test: StorageService 슬라이싱 테스트 케이스 추가 (#243)

* refactor: StorageController 슬라이싱 테스트 불필요한 given절 삭제 (#243)

* refactor: 인수 테스트 불필요한 throws절 삭제 (#243)

* refactor: 커스텀 예외 컨벤션에 맞게 에러 코드 추가 (#243)

* refactor: 패키지명 변경 및 구글 컨벤션에 맞게 수정 (#243)

* refactor: 1장이라도 업로드 실패시 예외 발생하도록 변경 (#243)

* [#230] 검색페이지 구현 (#274)

* feat: 검색 mock data 추가

* fix: LoginWrapper children 타입 수정

* feat: search context 추가

* feat: SearchHeader에 SearchContext 적용

* feat: SearchPage 및 검색 기능 구현

* fix: 오타수정

* 추가

* refactor: 불필요한 의존성 제거

* refactor: useFollow분리 및 follow mutation 에러처리 수준 변경

* feat: 유저 검색 결과에서 팔로우 기능 구현

* fix: 검색페이지 진입시 이전 검색 기록 초기화

* [#253] Github 통계 조회 기능 구현 (#263)

* feat: Github 통계 조회 기능 구현 (#253)

* test: 컨트롤러 테스트 작성 (#253)

* test: 서비스 테스트 작성 (#253)

* test: 통합 테스트 작성 (#253)

* test: 인수 테스트 작성 (#253)

* test: 단위 테스트 작성 (#253)

* style: 개행 추가 (#253)

* refactor: 클래스명 변경 (#253)

- PlatformExtractor -> PlatformContributionExtractor
- PlatformApiRequester -> PlatformContributionApiRequester

* refactor: @Profile 추가 (#253)

* refactor: 상수 -> @value 변경 (#253)

* refactor: 커스텀 예외 추가 (#253)

* test: 단위 테스트 추가 (#253)

* refactor: Calculator 객체로 비즈니스 로직 분리 (#253)

- Service에 있던 비즈니스 로직을 Calculator 객체로 이동
- 단위 테스트 추가

* test: 불필요한 import 삭제

* refactor: 패키지 위치 변경 (#253)

- 인터페이스는 domain, 구현체는 infrastructure에 위치

* style: 접근 제어자 삭제 (#253)

* refactor: Calculator 인터페이스 메소드 반환 타입 변경 (#253)

* refactor: try-catch 문으로 예외 핸들링 (#253)

* test: 단위 테스트 수정 (#253)

* refactor: Calculator 인터페이스 메소드 반환 타입 변경 (#253)

- DTO -> Domain Object

* [#277] useFollow 테스트 작성 (#278)

* feat: SearchPage 및 검색 기능 구현

* refactor: useFollow분리 및 follow mutation 에러처리 수준 변경

* refactor: acceessToken이 없는 경우에 대한 에러코드 추가

* chore: hook 테스트를 위한 라이브러리 설치 및 설정

* refactor: ErrorCode 타입 추가

* refactor: handleHTTPError 모듈 분리

- handleHTTPError 함수를 utils/error.ts로 이동
- 상수 및 타입 분리

* test: useFollow 테스트 코드 작성

* refactor: 파일이름 변경

- constants/httpError.ts 를 constants/error.ts 로 변경

* refactor: useFollow 에러처리

- accesstoken이 없을 경우에 대한 에러처리 추가
- client error를 처리하기 위한 객체 구현

* [#124, #262, #275, #276] 요청 관련 이슈 해결 (#280)

* fix: 프로필 수정 api 형식 변경

- put메서드에서 post메서드로 변경
- 변경된 이미지가 없을경우 빈 파일 객체 전송
- 한 줄 소개가 변경되지 않아도 그대로 보내기

* fix: 검색 api url 변경

* fix: github stats 요소 및 api url 변경

* refactor: 최초 페이지 진입시 토큰이 유효하지 않으면 로그아웃

* fix: 내 게시물의 프로필 영역을 클릭하면 내 프로필 페이지로 이동하도록 수정

* refactor: 유저프로필, 내프로필 분기를 ProfilePage에게 위임

* feat: 최초 진입 이펙트 app으로 분리

* [#257] 게시물 좋아요 기능 구현 (#264)

* feat: 게시물 좋아요 기능 구현 (#257)

* feat: 게시물 좋아요 및 좋아요 취소 기능 테스트 구현 (#257)

* refactor : 피드백 반영 (#257)

* [#236] 로깅 기능 세팅 (#237)

* chore: 활성 프로필에 따른 logback 환경 설정 (#236)

* feat: 전역 예외 어드바이저에 로거 추가 및 DB / 런타임 예외 바인딩 (#236)

* chore: s3proxy directory logback 설정 추가 (#236)

* feat: s3proxy 예외 어드바이저 추가 (#236)

* refactor: applicationException 핸들러 어드바이저 메서드명 수정 (#236)

* refactor: 백엔드 프로젝트 로깅 전략 수정 (#236)

- 테스트 로깅 전략 콘솔로 수정
- DB 관련 로거 종류 프로필별 재정의
- 부모 로거가 찍히지 않도록 additivity false 추가
- 글로벌 예외 어드바이저에 로깅 양식 정의

* chore: logback-access 설정 추가 및 프로필별 설정 구성 (#236)

* chore: s3proxy 프로젝트 logback-access 설정 추가 (#236)

* refactor: s3proxy, backend 프로젝트 log 포맷 변경 (#236)

* chore: backend logger DB, Access 등 용도별 분리 (#236)

* chore: s3proxy logger DB, Access 등 용도별 분리 (#236)

* [#254] 유저 검색 기능을 구현 (#266)

* feat: User 검색 기능 구현

* refactor: 피드백 반영 리팩토링

* refactor: 프론트측과 협의한 부분 리팩토링

* fix: 검색 요청시 user와 tag 분리 (#283)

* [#267] 프로필 수정 기능을 구현 (#279)

* feat: 유저 프로필 수정 기능 구현

* refactor: 피드백 적용

* refactor: 피드백 리팩토링

* [#269] 게시물 수정 및 삭제 기능 구현 (#272)

* feat: 게시물 수정 및 삭제 기능 구현 (#269)

* fix: 게시물 수정 기능 버그 해결 (#269)

* test: 게시물 수정 기능 통합 테스트 작성 (#269)

* fix: 게시물 삭제 기능 버그 해결 (#269)

* test: 게시물 삭제 기능 통합 테스트 작성 (#269)

* test: 게시물 수정 기능 서비스 테스트 작성 (#269)

* test: 게시물 삭제 기능 서비스 테스트 작성 (#269)

* test: 게시물 수정 기능 컨트롤러 테스트 작성 (#269)

* test: 게시물 삭제 기능 컨트롤러 테스트 작성 (#269)

* test: 게시물 수정 기능 인수 테스트 작성 (#269)

* test: 게시물 삭제 기능 인수 테스트 작성 (#269)

* refactor: 정적 팩토리 메소드 삭제 (#269)

* test: 불필요한 테스트 삭제 (#269)

* refactor: Command, Query 분리 (CQS) (#269)

* test: verify() 값 지정 (#269)

* refactor: 상태별로 update() 분리 (#269)

* fix: 해당하는 사용자의 게시물인지 확인하는 로직 추가 (#269)

* [#284] 게시물 수정 및 삭제 버그 해결 (#285)

* test: 통합 테스트 버그 해결 (#284)

* test: 불필요한 테스트 삭제 (#284)

* fix: Github 통계 조회 버그 해결 (#287) (#288)

* refactor: like 관련 DTO 필드명 번경 (#289) (#291)

* fix: restDocs 필드명 수정 및 Boolean으로 변경 (#292) (#297)

* [#228] 게시글 수정 기능 구현 (#286)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* refactor: 게시글 추가 과정에서 필요한 데이터를 일반 컴포넌트에서 불러오지 않고 Page 컴포넌트에서 내려주도록 수정

* feat: 게시글 추가 기능 구현

- 컨벤션에 맞게 useGithubTagsQuery 메서드 수정
- EditPostPage 페이지 컴포넌트 구현
- PostEditDataContext, PostEditStepContext 추가
- usePostEdit, usePostStep 훅 추가

* [#258] 유저 프로덕션 코드 및 테스트 리팩토링 (#268)

* refactor: User 도메인 부족한 팔로우, 언팔로우 등 테스트 추가 (#258)

* refactor: User equals & hashCode 정의시 getter 사용 (#258)

* refactor: Follow 도메인 equals & hashCode 정의시 getter 사용 (#258)

* refactor: Following, Follwers 메서드명 및 선언 순서 변경 (#258)

* refactor: Followings, Followers 테스트 추가 및 생성자 추가 (#258)

* refactor: User.profile 관련 도메인 코드 포맷팅 및 setter 삭제 (#258)

* refacotr: User 내부 Posts에 생성자 변경 및 UserRepository 영속성 테스트 추가 (#258)

* refactor: User 응용 계층 메서드 추출 리팩토링 및 DTO getter 추가 (#258)

* refactor: AppUser의 UserService 침투 제거 및 테스트 코드 계층 분리 (#258)

- AppUser가 서비스 코드에 침투하는 것을 막기 위해 AppUser 추상 클래스에 별도의 이름 호출 메서드를 추가함

* refactor: UserService 통합 테스트 계층적으로 리팩토링 (#258)

* refactor: AuthUserRequest 안쓰는 DTO 및 생성자 삭제와 메서드 파라미터명 통일 (#258)

* refactor: User 테스트 메서드 nested 적용 (#258)

* refactor: User 불필요한 임베디드 타입 getter 삭제 및 테스트 리팩토링 (#258)

* refactor: User 엔티티 내부 임베디드 타입 클래스의 기본 생성자를 protected로 변경 (#258)

* refactor: UserRepository 테스트 nested 적용 (#258)

* refactor: UserService 슬라이싱 테스트 verify 구체화 및 메서드 분리 (#258)

* refactor: UserService 통합 테스트 반복되는 given 부분 메서드 추출 (#258)

* refactor: UserController 슬라이싱 테스트 로그인여부 분리 및 DTO Getter 추가 (#258)

* refactor: User 인수 테스트 반복되는 api 호출 메서드 통일 (#258)

* refactor: 병합 충돌 해결 (#258)

* refactor: UserDataJpaTest Nested C-D-I 명세 변경 (#258)

* refactor: 유저 컨트롤러 슬라이싱 테스트 verify 추가 및 테스트 오류 수정 (#258)

- 기존 unfollow 테스트가 잘못 진행되고 있었던 부분을 해결

* chore: UserService 헬퍼 메서드 위치 수정 (#258)

* refactor: UserController 응답 생성 헬퍼 메서드 위치 이동 (#258)

* refactor: Follow, Unfollow시 두 유저 동등성 비교 로직 Follow 클래스로 이동 (#258)

* refactor: User의 팔로우, 언팔로우 조건 검사 로직을 Followers, Followings로 이동 (#258)

* chore: User.addComment 테스트 삭제 (#258)

* refactor: AuthUserRequestDto의 AppUser에 대한 정적 팩토리 메서드 추가 (#258)

* refactor: User 컨트롤러 테스트 anyString given/verify 인자 변경 (#258)

* fix: 프로덕션 및 테스트 코드 순서 변경 및 SpringBoot 통합테스트로 인한 Nested 제거 (#258)

* refactor: 병합 충돌 해결 및 AppUser를 서비스에서 사용못하도록 변경 (#258)

* chore: 프로덕션 코드 순서 정렬 및 DTO 필드명 변경 (#258)

* chore: User 관련 테스트 코드 순서 정렬 및 포맷팅 (#258)

* [#293] Logback 인식 불가 버그 해결 (#299)

* fix: logback appender 경로 수정 (#293)

* chore: rest docs 문서 변경

* [#273, #301] profile page 에러처리 수준 수정 및 기타 버그 해결 (#302)

* refactor: 프로필 수정 페이지 서비스로직 분리 및 에러처리 수준 수정

* refactor: 중복되는 validation 제거

* refactor: 불필요한 의존성 제거

* feat: 유저 검색 결과에 유저 프로필 페이지 링크 추가

* fix: 프로필 수정 후 반영이 안되는 이슈 해결

* refactor: api url 변경

* fix: 로그인으로 게시글 조회시 게스트로 인식하던 문제 해결 (#298)

* [#295] 게시물 수정 및 삭제 DB 버그 해결 (#300)

* refactor: findPostByUser -> findPostByIdAndUser 변경 (#295)

* test: Data JPA 테스트 추가 (#295)

* refactor: 생성자 수정 (#295)

* test: 예외 발생 -> Optional.empty() 검증 변경 (#295)

* refactor: 불필요한 코드 삭제 (#295)

* refactor: 해당하는 사용자의 게시물이 맞는지 확인하는 과정 수정 (#295)

- DB에서 처리 -> 비즈니스 로직에서 처리로 변경

* refactor: 불필요한 코드 삭제 (#295)

* test: 불필요한 import 삭제 (#295)

* [#290] 중간 데모 버그를 해결 (#303)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 중간 데모 버그 해결

- 게시글 데이터 속성 중 isLiked -> liked 로 변경
- 로그인 했을 때만 좋아요 버튼이 나타나도록 수정
- 로그인 했을 때만 댓글 달기 버튼이 나타나도록 수정
- 좋아요, 좋아요 취소 상태 반영
로그인 버튼 padding 수정
- 댓글을 추가했을 때 바로 추가된 댓글을 화면에서 확인할 수 있게 수정
- 댓글이 게시글 조회시에는 최대 10개만 나올 수 있도록 수정
- 기존의 댓글 달기 input 을 댓글 슬라이더 토글 버튼으로 변환

* fix: api url 수정 (#305)

* fix: Post - Comments 영속성 전이 버그 해결 (#306) (#307)

* [#308] 게시물 수정 버그 해결 (#309)

* fix: orphanremoval = true 옵션 추가 (#308)

* test: 통합 테스트 추가 (#308)

* [#310] 팀데모 결과 반영 - 프로필 페이지 (#311)

* fix: api url 오타 수정

* fix: 누락된 key prop 추가

* fix: 깃헙통계 기능 임시 api로 수정

* 프로필 페이지 하단 레이아웃 버그 수정

* [#312] 두번째 팀 데모에서 발견된 버그 해결 (#313)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 두번째 팀 데모에서 발견된 버그 해결

- 댓글 추가 시 최근 댓글로 스크롤이 되지 않는 문제 해결
- 게시글 추가, 삭제 시 스낵바를 통해 피드백
- 게시글 좋아요 & 좋아요 취소 결과가 화면에 나타나지 않는 문제 해결
- 게시글 tags 정보 파싱 문제 해결 (보낼 땐 , 기반 join 문자열로, 받을
  때는 일반 문자열 배열로)

* fix: 모바일 상의 레이아웃 및 그래픽 문제 해결

- 모바일 상에서 버튼이나 링크 클릭시 나타나는 기본 하이라이트 컬러 제거
- 댓글 input 패딩 조정
- 프로필 잔디 배경 투명 -> 흰색으로 변경
- kind 가 pills 인 Tabs 컴포넌트의 hover 이펙트 제거(모바일 상에서 클릭된 글씨가 희미해지는 문제 해결)

* [#314] 세번째 팀 데모에서 발견된 버그 해결 (#315)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 2차 데모 세번째 버그 수정

- 댓글 프로필 이미지, 유저 이름이 고정되어 있는 문제 해결
- 게시글 추가 시 레포지터리 목록을 불러오기 위한 계정이 하나로 고정되어 있는 문제 해결
- 임시 레포목록 검색 기능 추가

* [#316] 3차데모 검색 페이지 및 UI 관련 이슈 해결 (#317)

* fix: 검색 결과 리스트에서 팔로우시 깜박거리는 버그 해결

* feat: 게시물 삭제시 컨펌 추가

* fix: 이미지 및 텍스트 인디케이터 사이즈 고정

* feat: 간략히 버튼 추가

* [#318] 네번째 팀 데모에서 발견된 버그 해결 (#319)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 네번째 팀 데모에서 발견된 버그 해결

- 댓글 슬라이더 가로 스크롤링 되는 문제 해결
- 이미지들 총 용량 제한 1MB 로 수정
- 게시글 내용의 개행이 실제로 반영되도록 수정
- 게시글 추가 중 태그 입력 후 tagInputLength 가 0 으로 초기화 되도록 수정

* [#320] 게시물 추가 시 이미지가 없으면 alert처리 (#321)

* fix: 게시물 추가 시 이미지가 없으면 alert 처리

* refactor: 더보기, 간략히 정책 변경

* [#322] 게시글 수정 시 추가 되었다는 메세지가 아닌 수정 되었다는 메세지가 뜨도록 변경 (#323)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 게시글 수정 시 추가 되었다는 메세지가 아닌 수정 되었다는 메세지가 뜨도록 변경

* [#324] 다른 이용자의 UserFeed 좋아요가 동작하지 않는 문제를 해결 (#325)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 다른 이용자의 UserFeed 좋아요가 동작하지 않는 문제 해결

- currentUsername(접속한 이용자) -> username(이용자 피드 페이지의 대상 이용자) 으로 대상 변경

* [#259] 포스트 프로덕션 코드 리팩토링 (#270)

* refactor: Post 프로덕션 코드 리팩토링 (#252)

* refactor: infrastructure 유닛테스트, comment 유닛테스트 리팩토링

* test: Post 관련 유닛테스트 리팩토링

* test: Post application 레이어 관련 테스트 리팩토링

* test: Post 인수 테스트 리팩토링

* test: PostControllerTest 리팩토링 추가

* test: post builder를 사용하도록 변경

* refactor: 리베이스 후 깨지는 테스트 수정 및 누락된 테스트 추가

refactor: Post의 Tag관련 비즈니스 로직 PostTags로 이동 (#259)

이동과 함께 Post의 Build 패턴 적용과 리팩토링.

refactor: PostService와 PostController의 책임 분리. 및 s3Storage 파일 저장 방식 추가 (#259)

feed관련과, 게시물 관련으로 분리하여 관심사를 맞춤.

refactor: 전체적인 import 정리 (#259)

refactor: 패키지 정리 (#259)

refactor: Post의 getImageUrl 중복 메서드 제거 (#259)

refactor: CommentResponse의 도메인 참조 제거 및 DtoAssembler 리팩토링 (#259)

refactor: Feed관련 컨트롤러, 서비스, PostDto어셈블러  리팩토링, 레이어에 맞지 않는 DTO 이동 (#259)

refactor: CommentRequestDto 패키지 변경 및 PostController 리팩토링 (#259)

refactor: PostResponseDto가 presentation~presentation까지 사용되던것을 분리 (#259)

refactor: showRepositories -> userRepositories 메서드명 변경 (#259)

refactor: RepositoryResponse, domain -> controller까지 사용 되던것을 분리 (#259)

style: domain을 제외한 레이어의 구글 컨벤션 체크 (#259)

refactor: PostImageUrlResponseDto Builder 사용하도록 변경

refactor: Post 컨벤션 및 메서드 순서 정리 (#259)

refactor: Post user 관련 메서드명 author로 변경 및 필드, 메서드 정리 (#249)

refactor: PostTag equals getId()로 변경 및 필드 순서 정리 (#249)

refactor: Like를 VO로 취급, Likes를 컨테이너로 취급하도록 변경 (#249)

refactor: Image VO로 취급 및 도움 메서드 네이밍 변경, PostContent validation로직 변경 (#249)

refactor: CommentContent VO 취급, comment 도움메서드 이름 변경 및 책임 변경 (#249)

refactor: Post equals getter를 사용하도록 변경 (#249)

refactor: 연관관계 도움 메서드 반환깂 없도록 변경 (#249)

style: 구글 컨벤션 적용 (#249)

refactor: 추상화 수준 평탄화 작업 (#249)

* refactor: 리베이스 후 깨지는 파일 수정

* fix: User 비교 로직 버그 해결

* refactor: 메서드의 네이밍 변경

* refactor: 디미터의 원칙 준수

* refactor: 사용하지 않는 메서드 제거

* refactor: 깨지는 테스트 수정

* refactor: 타입 추론 변수를 타입형으로 변경

* refactor: 의미가 없는 변수명 제거 like -> 메서드참조

* style: 팀 컨벤션 적용

Co-authored-by: Tanney102 <57767891+Tanney-102@users.noreply.github.com>
Co-authored-by: SONG WON LEE <swon3210@users.noreply.github.com>
Co-authored-by: SONG WON LEE <swon3210@gmail.com>
Co-authored-by: LEESONGWON <swon3210@skku.edu>
Co-authored-by: Minsung Son <sns2831@gmail.com>
Co-authored-by: Jinhong <xlffm3@gmail.com>
Co-authored-by: binghe819 <56860124+binghe819@users.noreply.github.com>
Co-authored-by: Tanney102 <Tanney-102@users.noreply.github.com>
Co-authored-by: YunTroubleshooter <63405904+yjksw@users.noreply.github.com>
bperhaps added a commit that referenced this pull request Aug 4, 2021
* [#200, #205] 태그 관련 이슈 해결 (#216)

* fix: 게시글 추가 시, 초기에 불러온 기본 tag 들이 사라지지 않는 문제를 해결

* feat: 게시글 추가 중 태그 삭제 기능 구현

* fix: break point 에 맞게 어플리케이션 최대 너비를 375px -> 425px 로 조정

* [#217, #110] 테스트 패키지 구조 정리 (#218)

* chore: 인수/통합 테스트 및 common(픽스쳐 팩토리, mock api) 패키지 분리  (#217)

* chore: 기존 도메인 테스트 패키지들을 unit 하위로 이동 (#217)

* refactor: Tag 관련 Github 플랫폼 클래스 이름에 Tag 명시 (#217)

* chore: Test 관련 Configuration 통일 및 Github API 관련 클래스 프로필 설정 (#217)

* chore: 롬복 의존성 추가 (#217)

* refactor: TestConfiguration 클래스명에 Infrastructure 명시 (#217)

* refactor: PostFactory 빌더 패턴 적용하여 가독성 향상

* refactor: 실패하는 테스트 리팩토링

* refactor: UserFactory 빌더 패턴 적용하여 가독성 향상

* refactor: PostFactory 의미 없는 메서드 제거

* refactor: Test Configuration 이름 변경

* refactor: user fixture setUp로직 위치 변경

* refactor: DTO Builder 어노테이션 적용 및 Builder 제공 클래스 제거

* refactor: gradle.build 파일 정리

* style: 의미없는 공백 제거

Co-authored-by: Minsung <sns2831@gmail.com>

* [#223, #229] API 변경사항 반영 및 Post 중복제거 (#235)

* fix: API 명세 변경 사항 반영

- image와 imageUrl에 대한 키값 구분
- public repo를 가져오는 api 명에서 username 제거

* refactor: 불필요한 의존성 제거

* feat: 새로 패치된 post 중복제거

* fix: InfiniteScrollContainer effect 의존성 수정

* refactor: Snackbar 컴포넌트의 위치를 @layout으로 변경

* fix: post interface 수정

* refactor: 스낵바 메시지를 push 하는 메서드 이름을 더 명시적으로 변경

* fix: 중복된 key prop 수정

* feat:  http error 처리 유틸 구현

* refactor: HomeFeedPage의 상태로직을 훅으로 분리

* [#204] Issue 및 PR Template 수정 (#239)

* docs: PR 템플릿 수정

* docs: 이슈 템플릿 등록

* docs: 이슈 템플릿 수정

* docs: 이슈 템플릿 수정

* [#222] 프로필 페이지 피드 버그 수정 (#242)

* refactor: 중복된 게시물을 제거하는 로직을 util로 분리

* feat: 프로필 피드에 무한 스크롤 기능 추가

* refactor: profile page의 상태를 context로 분리

* feat: 팔로우 버튼에 로딩 애니메이션 추가

* refactor: 불필요한 컨테이너 제거

* refactor: ProfilePage 구조 개선

- 훅을 끌어올리는 수준을 작은 범위로 수정
- context를 제거하고 컨테이너 역할을 하는 컴포넌트를 추가

* [#219] 게시글 추가 중 발생하는 에러에 대한 피드백, 핸들링 구현 (#241)

* feat: BackDrop & MessageModalPortal 컴포넌트 구현

- index.html 에 div#modal 태그 추가
- MessageModalPortal 은 리액트 포털을 적용하여 구현
- 해당 컴포넌트를 사용하기 편하도록 useMessageModal 커스텀 훅 제작

* refactor: 필요 없는 import 구문 삭제

* feat: PostContentUploader 컴포넌트 안의 ImageSlider & ImageUploader 와 TextEditor 간의 margin 추가

* feat: 새로운 limits, messages 상수 추가

- message -> messages 로 파일 이름 변경

* feat: 게시글 추가 step 라우팅 path 에 한글이 들어가는 문제 해결

* fix: 필요한 변수 import 경로 수정

* feat: 게시글 추가 중 각각의 에러에 대한 이용자 피드백 구현
- PostAddFormData -> PostUploadData으로 변경
- 이용자의 깃허브 상에 올라와 있는 public repository 가 없으면 피드백 후 이전 페이지로 리다이렉트 시킨다.
- repository 를 선택하지 않고 이미지 & 글 작성으로 넘어가려 한다면 이를 피드백한다.
- 업로드한 이미지가 정해진 용량을 초과할 경우 피드백한다.
- 업로드한 이미지 개수가 정해진 개수를 초과할 경우 피드백한다.
- 이미지 개수가 정해진 개수를 초과할 경우 피드백한다.
- 텍스트 길이가 정해진 길이를 초과할 경우 피드백한다.
- 들어간 태그들 중 중복이 있으면 피드백한다.
- 태그에 '-', '_' 를 제외한 특수문자가 들어갔다면 이를 피드백한다.

* feat: ErrorResponse 타입 생성 및 적용

* feat: API 요청 에러 핸들링 구현

* [#232] 유저 테스트 코드 리팩토링 (#249)

* refactor: 코드 정리 (#232)

* refactor: 사용자 유효성 검증 추가 (#232)

- 게스트인 경우 UnauthorizedException 발생

* refactor: DTO 관련 네이밍 정리 (#232)

* test: 컨트롤러 테스트 리팩토링 (#232)

* test: 서비스 테스트 리팩토링 (#232)

* test: Data JPA 테스트 리팩토링 (#232)

* test: 불필요한 상수 삭제 (#232)

* test: 유저 이름 변경 (#232)

- loginUser/guestUser -> testUser로 통일

* test: 서비스 테스트 추가 (#232)

* test: 서비스 테스트 리팩토링 (#232)

* test: 통합 테스트 리팩토링 (#232)

* test: 인수 테스트 리팩토링 (#232)

* refactor: Builder 사용 (#232)

* refactor: Follow 객체에 책임 위임 (#232)

* test: 접근 제어자 수정 (#232)

* refactor: DTO 리팩토링 (#232)

* test: 불필요한 필드 삭제 (#232)

* test: WebEnvironment 옵션을 RANDOM_PORT -> NONE으로 변경 (#232)

* test: @SpringBootTest -> @DataJpaTest 변경 (#232)

* refactor: API 명세에 맞게 필드명 변경 (#232)

- image -> imageUrl 변경

* [#240] Authentication 관련 테스트 코드 리팩토링 (#247)

* test: authentication 관련 테스트 코드 리팩토링 (#240)

* test: 테스트 코드 리팩토링 (#240)

* refactor: 깃헙 인증 예외 변경 (#240)

* test: Authentication 테스트 코드 피드백 적용 (#240)

* test: HttpHeaders.AUTHORIZATION 으로 변경 (#240)

* [#226, #227] 프로필 수정 모달 구현 (#255)

* feat: Button 컴포넌트에 padding prop 추가

* feat: cancel-no-circle 아이콘 추가

* refactpr: BackDrop을 스타일드 컴포넌트로 수정

* refactor: textEditor 배경을 투명하게 수정

* chore: eslint no empty function 옵션 off

* refactor: css keyframes 파일로 분리

* feat: 카메라 아이콘 추가

* feat: TextEditor 컴포넌트에 indicator 추가(#226)

* refactor: z-index를 컨벤션에 맞게 수정

* feat: 프로필 수정 모달 구현(#227)

* [#246] 댓글 테스트 코드를 리팩토링 (#250)

* refactor: 댓글 관련 테스트 리팩토링

* refactor: 케빈 피드백 반영

* refactor: 댓글 조회 반환시 프로필 이미지 나오도록 수정

* [#220, #226] 네비게이션 ui 수정 및 이미지 인디케이터 추가 (#256)

* refactor: 비로그인 시에도 홈네이게이션 노출

* fix: header와 image slider의 쌓임 순서 버그 해결

* feat: 이미지 인디케이터 구현

* [#234] 태그 테스트 코드를 리팩토링 (#245)

* refactor: 태그 도메인 부분 테스트 리팩토링

* refactor: 태그 슬라이싱 테스트 리팩토링

* refactor: 태그 통합 테스트 리팩토링

* refactor: 태그 인수 테스트 리팩토링

* refactor: connection pool 사용하는 커스텀 RestTemplate 적용

* refactor: Post와 Tag 연관관계 부분 프로덕션 및 테스트 코드 리팩토링

* refactor: 케빈 피드백 적용

- ParameterizedTest 이용하도록 수정
- 중복된 테스트 제거

* refactor: 피드백 반영

* refactor: 소문자로 자동 변환되도록 수정

* refactor: 너잘 피드백 적용

* refactor: 깃헙에서 태그 가져올 때 소문자로 변환되도록 리팩토링

* [#221, #225] 프로필 피드 클릭시 유저 피드 페이지로 이동 (#260)

* fix: 헤더에서 height가 큰 요소들의 레이아웃이 깨지는 버그 해결

* fix: slideButtonKind 복구

* refactor: 타입 단언 제거

* feat: 프로필피드에서 포스트 클릭시 유저 피드 페이지로 이동

* [#251] Post 테스트 코드를 리팩토링  (#252)

* refactor: infrastructure 유닛테스트, comment 유닛테스트 리팩토링

* test: Post 관련 유닛테스트 리팩토링

* test: Post application 레이어 관련 테스트 리팩토링

* test: Post 인수 테스트 리팩토링

* test: PostControllerTest 리팩토링 추가

* test: post builder를 사용하도록 변경

* refactor: 리베이스 후 깨지는 테스트 수정 및 누락된 테스트 추가

* [#183] 게시글 댓글 기능을 구현 (#265)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* feat: HomeFeed 컴포넌트에서 로그인 된 상태에서 자신의 개시글만 수정 아이콘이 뜨도록 변경

* feat: BottomSliderPortal 컴포넌트 구현

* feat: CommentSlider 컴포넌트 구현

* chore: Layout 상수 객체 이름 LAYOUT 으로 변경

* feat: getLastHash util 함수 구현

* feat: getTabTextColor util 함수 구현

* feat: useBottomSlider 훅 구현

* refactor: PostItem 컴포넌트 수정

- 해당 컴포넌트에서 댓글 입력 값 저장 및 수정을 담당하지 않도록 수정
- 댓글 추가 아이콘 버튼 삭제
- Post, CommentData 타입의 id 속성 타입을 string -> number 로 수정

* feat: 댓글 추가 기능 구현

- Tabs 컴포넌트가 tabIndicatorKind 값에 따라 다른 indicator 를 사용하도록 수정
- useFeed -> useFeedMutation 으로 수정
- HomeFeedPage 상에서 useFeed 를 사용하는 것을 useHomeFeed 를 사용하도록 수정
- COMMENT_INPUT_HEIGHT 레이아웃 상수 추가
- 임시용 UserFeedPage 와 TagFeedPage 업데이트 (여전히 임시용)

* fix: CommentSlider 해시 라우팅으로 인해 특정 UserFeedPage 렌더링이 되지 않는 문제 해결

- CommentSlider 를 토글할 때도 history.location 의 state 와 query param 을 그대로 사용하도록 수정
- NavigationHeader 컴포넌트의 height: content-fit 속성 삭제 & 로그아웃 버튼의 padding 값 수정
- HomeFeed -> Feed 로 컴포넌트 이름 수정

* feat: 댓글 저장 시 예외 처리 추가

* [#199, #248, #184] 게시글 삭제 & 게시글 기본 이미지 구현 (#271)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* feat: 게시글 삭제 기능 구현 & 이미지가 없을 시 기본 이미지 보여주기 구현

- 삭제 버튼을 나타나게 만들기 위한 ButtonDrawer 컴포넌트 구현

* feat: TagInputForm 상에서 Tag 입력 중 모바일 가상 키보드가 레이아웃을 깨뜨리는 문제 해결

- 에러 발생시 tag input 을 blur 처리

* [#243] s3 proxy 관련 테스트 리팩토링 (#244)

* chore: s3-proxy properties 포맷을 yaml로 수정 (#243)

* chore: 프로덕션 패키지명 컨벤션맞게 수정 (#243)

* test: S3Storage 슬라이싱 테스트 추가 (#243)

* test: StorageService 슬라이싱 테스트 케이스 추가 (#243)

* refactor: StorageController 슬라이싱 테스트 불필요한 given절 삭제 (#243)

* refactor: 인수 테스트 불필요한 throws절 삭제 (#243)

* refactor: 커스텀 예외 컨벤션에 맞게 에러 코드 추가 (#243)

* refactor: 패키지명 변경 및 구글 컨벤션에 맞게 수정 (#243)

* refactor: 1장이라도 업로드 실패시 예외 발생하도록 변경 (#243)

* [#230] 검색페이지 구현 (#274)

* feat: 검색 mock data 추가

* fix: LoginWrapper children 타입 수정

* feat: search context 추가

* feat: SearchHeader에 SearchContext 적용

* feat: SearchPage 및 검색 기능 구현

* fix: 오타수정

* 추가

* refactor: 불필요한 의존성 제거

* refactor: useFollow분리 및 follow mutation 에러처리 수준 변경

* feat: 유저 검색 결과에서 팔로우 기능 구현

* fix: 검색페이지 진입시 이전 검색 기록 초기화

* [#253] Github 통계 조회 기능 구현 (#263)

* feat: Github 통계 조회 기능 구현 (#253)

* test: 컨트롤러 테스트 작성 (#253)

* test: 서비스 테스트 작성 (#253)

* test: 통합 테스트 작성 (#253)

* test: 인수 테스트 작성 (#253)

* test: 단위 테스트 작성 (#253)

* style: 개행 추가 (#253)

* refactor: 클래스명 변경 (#253)

- PlatformExtractor -> PlatformContributionExtractor
- PlatformApiRequester -> PlatformContributionApiRequester

* refactor: @Profile 추가 (#253)

* refactor: 상수 -> @value 변경 (#253)

* refactor: 커스텀 예외 추가 (#253)

* test: 단위 테스트 추가 (#253)

* refactor: Calculator 객체로 비즈니스 로직 분리 (#253)

- Service에 있던 비즈니스 로직을 Calculator 객체로 이동
- 단위 테스트 추가

* test: 불필요한 import 삭제

* refactor: 패키지 위치 변경 (#253)

- 인터페이스는 domain, 구현체는 infrastructure에 위치

* style: 접근 제어자 삭제 (#253)

* refactor: Calculator 인터페이스 메소드 반환 타입 변경 (#253)

* refactor: try-catch 문으로 예외 핸들링 (#253)

* test: 단위 테스트 수정 (#253)

* refactor: Calculator 인터페이스 메소드 반환 타입 변경 (#253)

- DTO -> Domain Object

* [#277] useFollow 테스트 작성 (#278)

* feat: SearchPage 및 검색 기능 구현

* refactor: useFollow분리 및 follow mutation 에러처리 수준 변경

* refactor: acceessToken이 없는 경우에 대한 에러코드 추가

* chore: hook 테스트를 위한 라이브러리 설치 및 설정

* refactor: ErrorCode 타입 추가

* refactor: handleHTTPError 모듈 분리

- handleHTTPError 함수를 utils/error.ts로 이동
- 상수 및 타입 분리

* test: useFollow 테스트 코드 작성

* refactor: 파일이름 변경

- constants/httpError.ts 를 constants/error.ts 로 변경

* refactor: useFollow 에러처리

- accesstoken이 없을 경우에 대한 에러처리 추가
- client error를 처리하기 위한 객체 구현

* [#124, #262, #275, #276] 요청 관련 이슈 해결 (#280)

* fix: 프로필 수정 api 형식 변경

- put메서드에서 post메서드로 변경
- 변경된 이미지가 없을경우 빈 파일 객체 전송
- 한 줄 소개가 변경되지 않아도 그대로 보내기

* fix: 검색 api url 변경

* fix: github stats 요소 및 api url 변경

* refactor: 최초 페이지 진입시 토큰이 유효하지 않으면 로그아웃

* fix: 내 게시물의 프로필 영역을 클릭하면 내 프로필 페이지로 이동하도록 수정

* refactor: 유저프로필, 내프로필 분기를 ProfilePage에게 위임

* feat: 최초 진입 이펙트 app으로 분리

* [#257] 게시물 좋아요 기능 구현 (#264)

* feat: 게시물 좋아요 기능 구현 (#257)

* feat: 게시물 좋아요 및 좋아요 취소 기능 테스트 구현 (#257)

* refactor : 피드백 반영 (#257)

* [#236] 로깅 기능 세팅 (#237)

* chore: 활성 프로필에 따른 logback 환경 설정 (#236)

* feat: 전역 예외 어드바이저에 로거 추가 및 DB / 런타임 예외 바인딩 (#236)

* chore: s3proxy directory logback 설정 추가 (#236)

* feat: s3proxy 예외 어드바이저 추가 (#236)

* refactor: applicationException 핸들러 어드바이저 메서드명 수정 (#236)

* refactor: 백엔드 프로젝트 로깅 전략 수정 (#236)

- 테스트 로깅 전략 콘솔로 수정
- DB 관련 로거 종류 프로필별 재정의
- 부모 로거가 찍히지 않도록 additivity false 추가
- 글로벌 예외 어드바이저에 로깅 양식 정의

* chore: logback-access 설정 추가 및 프로필별 설정 구성 (#236)

* chore: s3proxy 프로젝트 logback-access 설정 추가 (#236)

* refactor: s3proxy, backend 프로젝트 log 포맷 변경 (#236)

* chore: backend logger DB, Access 등 용도별 분리 (#236)

* chore: s3proxy logger DB, Access 등 용도별 분리 (#236)

* [#254] 유저 검색 기능을 구현 (#266)

* feat: User 검색 기능 구현

* refactor: 피드백 반영 리팩토링

* refactor: 프론트측과 협의한 부분 리팩토링

* fix: 검색 요청시 user와 tag 분리 (#283)

* [#267] 프로필 수정 기능을 구현 (#279)

* feat: 유저 프로필 수정 기능 구현

* refactor: 피드백 적용

* refactor: 피드백 리팩토링

* [#269] 게시물 수정 및 삭제 기능 구현 (#272)

* feat: 게시물 수정 및 삭제 기능 구현 (#269)

* fix: 게시물 수정 기능 버그 해결 (#269)

* test: 게시물 수정 기능 통합 테스트 작성 (#269)

* fix: 게시물 삭제 기능 버그 해결 (#269)

* test: 게시물 삭제 기능 통합 테스트 작성 (#269)

* test: 게시물 수정 기능 서비스 테스트 작성 (#269)

* test: 게시물 삭제 기능 서비스 테스트 작성 (#269)

* test: 게시물 수정 기능 컨트롤러 테스트 작성 (#269)

* test: 게시물 삭제 기능 컨트롤러 테스트 작성 (#269)

* test: 게시물 수정 기능 인수 테스트 작성 (#269)

* test: 게시물 삭제 기능 인수 테스트 작성 (#269)

* refactor: 정적 팩토리 메소드 삭제 (#269)

* test: 불필요한 테스트 삭제 (#269)

* refactor: Command, Query 분리 (CQS) (#269)

* test: verify() 값 지정 (#269)

* refactor: 상태별로 update() 분리 (#269)

* fix: 해당하는 사용자의 게시물인지 확인하는 로직 추가 (#269)

* [#284] 게시물 수정 및 삭제 버그 해결 (#285)

* test: 통합 테스트 버그 해결 (#284)

* test: 불필요한 테스트 삭제 (#284)

* fix: Github 통계 조회 버그 해결 (#287) (#288)

* refactor: like 관련 DTO 필드명 번경 (#289) (#291)

* fix: restDocs 필드명 수정 및 Boolean으로 변경 (#292) (#297)

* [#228] 게시글 수정 기능 구현 (#286)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* refactor: 게시글 추가 과정에서 필요한 데이터를 일반 컴포넌트에서 불러오지 않고 Page 컴포넌트에서 내려주도록 수정

* feat: 게시글 추가 기능 구현

- 컨벤션에 맞게 useGithubTagsQuery 메서드 수정
- EditPostPage 페이지 컴포넌트 구현
- PostEditDataContext, PostEditStepContext 추가
- usePostEdit, usePostStep 훅 추가

* [#258] 유저 프로덕션 코드 및 테스트 리팩토링 (#268)

* refactor: User 도메인 부족한 팔로우, 언팔로우 등 테스트 추가 (#258)

* refactor: User equals & hashCode 정의시 getter 사용 (#258)

* refactor: Follow 도메인 equals & hashCode 정의시 getter 사용 (#258)

* refactor: Following, Follwers 메서드명 및 선언 순서 변경 (#258)

* refactor: Followings, Followers 테스트 추가 및 생성자 추가 (#258)

* refactor: User.profile 관련 도메인 코드 포맷팅 및 setter 삭제 (#258)

* refacotr: User 내부 Posts에 생성자 변경 및 UserRepository 영속성 테스트 추가 (#258)

* refactor: User 응용 계층 메서드 추출 리팩토링 및 DTO getter 추가 (#258)

* refactor: AppUser의 UserService 침투 제거 및 테스트 코드 계층 분리 (#258)

- AppUser가 서비스 코드에 침투하는 것을 막기 위해 AppUser 추상 클래스에 별도의 이름 호출 메서드를 추가함

* refactor: UserService 통합 테스트 계층적으로 리팩토링 (#258)

* refactor: AuthUserRequest 안쓰는 DTO 및 생성자 삭제와 메서드 파라미터명 통일 (#258)

* refactor: User 테스트 메서드 nested 적용 (#258)

* refactor: User 불필요한 임베디드 타입 getter 삭제 및 테스트 리팩토링 (#258)

* refactor: User 엔티티 내부 임베디드 타입 클래스의 기본 생성자를 protected로 변경 (#258)

* refactor: UserRepository 테스트 nested 적용 (#258)

* refactor: UserService 슬라이싱 테스트 verify 구체화 및 메서드 분리 (#258)

* refactor: UserService 통합 테스트 반복되는 given 부분 메서드 추출 (#258)

* refactor: UserController 슬라이싱 테스트 로그인여부 분리 및 DTO Getter 추가 (#258)

* refactor: User 인수 테스트 반복되는 api 호출 메서드 통일 (#258)

* refactor: 병합 충돌 해결 (#258)

* refactor: UserDataJpaTest Nested C-D-I 명세 변경 (#258)

* refactor: 유저 컨트롤러 슬라이싱 테스트 verify 추가 및 테스트 오류 수정 (#258)

- 기존 unfollow 테스트가 잘못 진행되고 있었던 부분을 해결

* chore: UserService 헬퍼 메서드 위치 수정 (#258)

* refactor: UserController 응답 생성 헬퍼 메서드 위치 이동 (#258)

* refactor: Follow, Unfollow시 두 유저 동등성 비교 로직 Follow 클래스로 이동 (#258)

* refactor: User의 팔로우, 언팔로우 조건 검사 로직을 Followers, Followings로 이동 (#258)

* chore: User.addComment 테스트 삭제 (#258)

* refactor: AuthUserRequestDto의 AppUser에 대한 정적 팩토리 메서드 추가 (#258)

* refactor: User 컨트롤러 테스트 anyString given/verify 인자 변경 (#258)

* fix: 프로덕션 및 테스트 코드 순서 변경 및 SpringBoot 통합테스트로 인한 Nested 제거 (#258)

* refactor: 병합 충돌 해결 및 AppUser를 서비스에서 사용못하도록 변경 (#258)

* chore: 프로덕션 코드 순서 정렬 및 DTO 필드명 변경 (#258)

* chore: User 관련 테스트 코드 순서 정렬 및 포맷팅 (#258)

* [#293]  Logback 인식 불가 버그 해결 (#299)

* fix: logback appender 경로 수정 (#293)

* chore: rest docs 문서 변경

* [#273, #301] profile page 에러처리 수준 수정 및 기타 버그 해결 (#302)

* refactor: 프로필 수정 페이지 서비스로직 분리 및 에러처리 수준 수정

* refactor: 중복되는 validation 제거

* refactor: 불필요한 의존성 제거

* feat: 유저 검색 결과에 유저 프로필 페이지 링크 추가

* fix: 프로필 수정 후 반영이 안되는 이슈 해결

* refactor: api url 변경

* fix: 로그인으로 게시글 조회시 게스트로 인식하던 문제 해결 (#298)

* [#295] 게시물 수정 및 삭제 DB 버그 해결 (#300)

* refactor: findPostByUser -> findPostByIdAndUser 변경 (#295)

* test: Data JPA 테스트 추가 (#295)

* refactor: 생성자 수정 (#295)

* test: 예외 발생 -> Optional.empty() 검증 변경 (#295)

* refactor: 불필요한 코드 삭제 (#295)

* refactor: 해당하는 사용자의 게시물이 맞는지 확인하는 과정 수정 (#295)

- DB에서 처리 -> 비즈니스 로직에서 처리로 변경

* refactor: 불필요한 코드 삭제 (#295)

* test: 불필요한 import 삭제 (#295)

* [#290] 중간 데모 버그를 해결 (#303)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 중간 데모 버그 해결

- 게시글 데이터 속성 중 isLiked -> liked 로 변경
- 로그인 했을 때만 좋아요 버튼이 나타나도록 수정
- 로그인 했을 때만 댓글 달기 버튼이 나타나도록 수정
- 좋아요, 좋아요 취소 상태 반영
로그인 버튼 padding 수정
- 댓글을 추가했을 때 바로 추가된 댓글을 화면에서 확인할 수 있게 수정
- 댓글이 게시글 조회시에는 최대 10개만 나올 수 있도록 수정
- 기존의 댓글 달기 input 을 댓글 슬라이더 토글 버튼으로 변환

* fix: api url 수정 (#305)

* fix: Post - Comments 영속성 전이 버그 해결 (#306) (#307)

* [#308] 게시물 수정 버그 해결 (#309)

* fix: orphanremoval = true 옵션 추가 (#308)

* test: 통합 테스트 추가 (#308)

* [#310] 팀데모 결과 반영 - 프로필 페이지 (#311)

* fix: api url 오타 수정

* fix: 누락된 key prop 추가

* fix: 깃헙통계 기능 임시 api로 수정

* 프로필 페이지 하단 레이아웃 버그 수정

* [#312] 두번째 팀 데모에서 발견된 버그 해결 (#313)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 두번째 팀 데모에서 발견된 버그 해결

- 댓글 추가 시 최근 댓글로 스크롤이 되지 않는 문제 해결
- 게시글 추가, 삭제 시 스낵바를 통해 피드백
- 게시글 좋아요 & 좋아요 취소 결과가 화면에 나타나지 않는 문제 해결
- 게시글 tags 정보 파싱 문제 해결 (보낼 땐 , 기반 join 문자열로, 받을
  때는 일반 문자열 배열로)

* fix: 모바일 상의 레이아웃 및 그래픽 문제 해결

- 모바일 상에서 버튼이나 링크 클릭시 나타나는 기본 하이라이트 컬러 제거
- 댓글 input 패딩 조정
- 프로필 잔디 배경 투명 -> 흰색으로 변경
- kind 가 pills 인 Tabs 컴포넌트의 hover 이펙트 제거(모바일 상에서 클릭된 글씨가 희미해지는 문제 해결)

* [#314] 세번째 팀 데모에서 발견된 버그 해결 (#315)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 2차 데모 세번째 버그 수정

- 댓글 프로필 이미지, 유저 이름이 고정되어 있는 문제 해결
- 게시글 추가 시 레포지터리 목록을 불러오기 위한 계정이 하나로 고정되어 있는 문제 해결
- 임시 레포목록 검색 기능 추가

* [#316] 3차데모 검색 페이지 및 UI 관련 이슈 해결 (#317)

* fix: 검색 결과 리스트에서 팔로우시 깜박거리는 버그 해결

* feat: 게시물 삭제시 컨펌 추가

* fix: 이미지 및 텍스트 인디케이터 사이즈 고정

* feat: 간략히 버튼 추가

* [#318] 네번째 팀 데모에서 발견된 버그 해결 (#319)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 네번째 팀 데모에서 발견된 버그 해결

- 댓글 슬라이더 가로 스크롤링 되는 문제 해결
- 이미지들 총 용량 제한 1MB 로 수정
- 게시글 내용의 개행이 실제로 반영되도록 수정
- 게시글 추가 중 태그 입력 후 tagInputLength 가 0 으로 초기화 되도록 수정

* [#320] 게시물 추가 시 이미지가 없으면 alert처리 (#321)

* fix: 게시물 추가 시 이미지가 없으면 alert 처리

* refactor: 더보기, 간략히 정책 변경

* [#322] 게시글 수정 시 추가 되었다는 메세지가 아닌 수정 되었다는 메세지가 뜨도록 변경 (#323)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 게시글 수정 시 추가 되었다는 메세지가 아닌 수정 되었다는 메세지가 뜨도록 변경

* [#324] 다른 이용자의 UserFeed 좋아요가 동작하지 않는 문제를 해결 (#325)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 다른 이용자의 UserFeed 좋아요가 동작하지 않는 문제 해결

- currentUsername(접속한 이용자) -> username(이용자 피드 페이지의 대상 이용자) 으로 대상 변경

* [#259] 포스트 프로덕션 코드 리팩토링 (#270)

* refactor: Post 프로덕션 코드 리팩토링 (#252)

* refactor: infrastructure 유닛테스트, comment 유닛테스트 리팩토링

* test: Post 관련 유닛테스트 리팩토링

* test: Post application 레이어 관련 테스트 리팩토링

* test: Post 인수 테스트 리팩토링

* test: PostControllerTest 리팩토링 추가

* test: post builder를 사용하도록 변경

* refactor: 리베이스 후 깨지는 테스트 수정 및 누락된 테스트 추가

refactor: Post의 Tag관련 비즈니스 로직 PostTags로 이동 (#259)

이동과 함께 Post의 Build 패턴 적용과 리팩토링.

refactor: PostService와 PostController의 책임 분리. 및 s3Storage 파일 저장 방식 추가 (#259)

feed관련과, 게시물 관련으로 분리하여 관심사를 맞춤.

refactor: 전체적인 import 정리 (#259)

refactor: 패키지 정리 (#259)

refactor: Post의 getImageUrl 중복 메서드 제거 (#259)

refactor: CommentResponse의 도메인 참조 제거 및 DtoAssembler 리팩토링 (#259)

refactor: Feed관련 컨트롤러, 서비스, PostDto어셈블러  리팩토링, 레이어에 맞지 않는 DTO 이동 (#259)

refactor: CommentRequestDto 패키지 변경 및 PostController 리팩토링 (#259)

refactor: PostResponseDto가 presentation~presentation까지 사용되던것을 분리 (#259)

refactor: showRepositories -> userRepositories 메서드명 변경 (#259)

refactor: RepositoryResponse, domain -> controller까지 사용 되던것을 분리 (#259)

style: domain을 제외한 레이어의 구글 컨벤션 체크 (#259)

refactor: PostImageUrlResponseDto Builder 사용하도록 변경

refactor: Post 컨벤션 및 메서드 순서 정리 (#259)

refactor: Post user 관련 메서드명 author로 변경 및 필드, 메서드 정리 (#249)

refactor: PostTag equals getId()로 변경 및 필드 순서 정리 (#249)

refactor: Like를 VO로 취급, Likes를 컨테이너로 취급하도록 변경 (#249)

refactor: Image VO로 취급 및 도움 메서드 네이밍 변경, PostContent validation로직 변경 (#249)

refactor: CommentContent VO 취급, comment 도움메서드 이름 변경 및 책임 변경 (#249)

refactor: Post equals getter를 사용하도록 변경 (#249)

refactor: 연관관계 도움 메서드 반환깂 없도록 변경 (#249)

style: 구글 컨벤션 적용 (#249)

refactor: 추상화 수준 평탄화 작업 (#249)

* refactor: 리베이스 후 깨지는 파일 수정

* fix: User 비교 로직 버그 해결

* refactor: 메서드의 네이밍 변경

* refactor: 디미터의 원칙 준수

* refactor: 사용하지 않는 메서드 제거

* refactor: 깨지는 테스트 수정

* refactor: 타입 추론 변수를 타입형으로 변경

* refactor: 의미가 없는 변수명 제거 like -> 메서드참조

* style: 팀 컨벤션 적용

* feat: PickgitRequest Post Builder 구현

* refactor: PickgitRequest Post Builder 구조 변경

* feat: 명세에 따른 API 구현

* refactor: File을 body로 넣을 시 byte 변환 추가

* refactor: 로그인 모킹 방식 변경

* refactor: 빌더 내부 로그인 기능 구현.

* refactor: initAllParams 메서드 생성

Co-authored-by: SONG WON LEE <swon3210@gmail.com>
Co-authored-by: Jinhong <xlffm3@gmail.com>
Co-authored-by: Tanney102 <57767891+Tanney-102@users.noreply.github.com>
Co-authored-by: DAEUN LEE <leede0418@gmail.com>
Co-authored-by: YunTroubleshooter <63405904+yjksw@users.noreply.github.com>
Co-authored-by: binghe819 <56860124+binghe819@users.noreply.github.com>
da-nyee added a commit that referenced this pull request Aug 24, 2021
* 프론트엔드 기본 환경 설정 (#3)

* chore: 기본 환경설정 (#2)

* chore: 필수 의존성 설치 (#2)

* Chip 컴포넌트 구현 (#18)

* feat: 전역 스타일링 적용(#2)

Co-authored-by: SONG WON LEE <swon3210@users.noreply.github.com>

* chore: 스토리북 기본설정

Co-authored-by: SONG WON LEE <swon3210@users.noreply.github.com>

* chore: svg inline loader 설치 및 적용

Co-authored-by: SONG WON LEE <swon3210@users.noreply.github.com>

* feat: Chip 컴포넌트 구현

Co-authored-by: SONG WON LEE <swon3210@users.noreply.github.com>

Co-authored-by: SONG WON LEE <swon3210@users.noreply.github.com>

* feat: Avatar 컴포넌트 구현 (#13) (#20)

* CountIndicator 컴포넌트 구현 (#19)

* feat: CountIndicator 컴포넌트 구현 (# 15)

* feat: CountIndicator 컴포넌트에 theme 적용 (#15)

* chore: styled-components 의 theme 객체에 타입을 부여 (#22) (#23)

Co-authored-by: LEESONGWON <swon3210@skku.edu>

* chore: css normalize 적용 (#21) (#24)

* type declare error 해결 (#25)

* chore: svg-inline-loader를 svgr과 url-loader로 대체

* fix: 오타수정

* fix: type declare오류 수정

- styled components type declare
- svg module declare

* 스토리북 webpack 에 svgr 적용 (#27)

* chore: svg 파일 추가 및 svg 컴포넌트를 하나의 파일에서 import 해올 수 있도록 설정 (#29)

Co-authored-by: LEESONGWON <swon3210@skku.edu>

* chore: 백엔드 기본 환경 설정 (#30)

* chore: 패키지 구조 분리 및 스켈레톤 코드 작성 (#33)

* feat: CricleIcon 컴포넌트 구현 (#12) (#31)

* [#6] NavigationHeader 컴포넌트 구현 (#42)

* fix: a 태그에 전역으로 부여된 hover 텍스트 color 제거

* chore: 이미지 파일 모듈에 대한 typing 적용

* feat: NavigationHeader 컴포넌트 구현

* feat: NavigationHeader 컴포넌트의 a 태그를 react-router-dom 의 Link 컴포넌트로 교체

- Link 컴포넌트에 경로 prop 할당

* [#17] TextEditor 컴포넌트 구현 (#43)

* feat: svg 파일을 react component로 불러와 적용

* feat: TextEditor 컴포넌트 구현 (#17)

* chore: s3proxy 기본 환경 설정 (#56)

* [#7] StepHeader 컴포넌트 구현 (#47)

* feat: StepHeader 컴포넌트 구현 - close #7

* feat: padding, width 값 px -> rem 으로 전환

* [#44] API Layer 추상화 및 profile request 구현 (#59)

* chore: axios 설치

Co-authored-by: SONG WON LEE <swon3210@users.noreply.github.com>

* chore: 디렉터리 및 파일 이름 변경

Co-authored-by: SONG WON LEE <swon3210@users.noreply.github.com>

* feat: useLocalStorage hook 구현

Co-authored-by: LEE SONG WON <swon3210@gmail.com>

* feat: Profile reqest 및 query 구현

Co-authored-by: LEE SONG WON <swon3210@gmail.com>

* fix: 잘못사용한 메서드 수정

* feat: json-server를 통해 resource mocking

Co-authored-by: SONG WON LEE <swon3210@users.noreply.github.com>
Co-authored-by: LEE SONG WON <swon3210@gmail.com>

* [#8] SearchHeader 컴포넌트 구현 (#60)

* chore: StepHeader 컴포넌트 폴더 위치 변경

* feat: SearchHeader 컴포넌트 구현

* feat: Tabs 컴포넌트 구현 (#14) (#64)

* feat: ContributionGraph 컴포넌트 구현 (#67)

* feat: Input 컴포넌트 구현 (#65)

* feat: ImageUploader 컴포넌트 구현 (#66)

* feat: Button 컴포넌트 구현 (#41) (#72)

* [#71] 초기 패키지 및 세팅을 설정 (#74)

* chore: 초기 설정 및 엔티티 맵핑 보완 (#71)

* chore: Authentication 패키지 스켈레톤 코드 작성 (#71)

* [#46] Github OAuth 2.0을 사용한 로그인 기능 구현 (#75)

* feat: pick-git 도메인이 등록된 Github Login URL을 받아오는 기능 구현

* fix: 존재하지 않는 패키지 import로 인해 발생하는 문제 해결

* feat: 사용자가 Github 로그인 후 Github Authorization Server로부터 AccessToken 가져오는 기능 구현

* refactor: application.yml에서 Github관련 구조 수정

* feat: 로그인시 Github Profile 최신화 및 토큰 생성하여 반환하는 기능 구현

* test: 로그인 관련 표현 계층 테스트 추가

* feat: DB로 부터 User 정보가 존재하는지 확인하기 위해 User 도메인 구현

* feat: 회원가입(첫 로그인)과 로그인(두번째 로그인부터)시 DB에 저장하는 기능 구현

- 회원가입(첫 로그인시) Github Profile을 가져와서 DB에 저장한다.
- 로그인(두번째 로그인부터) Github Profile과 관련된 정보만 수정한다.

* feat: 회원 인증을 위한 인터셉터와 HandlerMethodArgumentResolver 구현

* refactor: OAuth 액세스 토큰 DB에 접근하는 DAO 인터페이스로 분리 및 테스트 코드 추가

* refactor: OAuth로부터 Profile가져오는 코드 분리

* test: OAuthService 슬라이스 테스트 추가

* chore: 애플리케이션 설정 수정

* refactor: rebase과정에서 발생한 문제 해결 및 리팩토링

* feat: Comment 컴포넌트 구현 (#63) (#73)

* [#4] ImageSlider 컴포넌트 구현 (#77)

* feat: goBack, goForward svg가 currnetColor을 받도록 수정

* feat: useTrottle 구현

* feat: ImageComponent 구현 (#4)

* fix: 색상코드 오타 수정

* [#5] PostItem 컴포넌트 구현 (#81)

* feat: PostItem 컴포넌트 구현

- svg 아이콘 4개 추가

Co-authored-by: Tanney102 <Tanney-102@users.noreply.github.com>

* refactor: Comment 컴포넌트 props 수정

- name -> authorName
- like -> 삭제(authorName을 활용하여 직접 link 생성)

* fix: TextEditor 컴포넌트 fontSize prop 이 적용되지 않는 문제 해결

* refactor: Input 컴포넌트 Ref 사용 구문 단순화

Co-authored-by: Tanney102 <Tanney-102@users.noreply.github.com>

* [#76] 로그인 기능 리팩토링 및 테스트 추가 (#80)

* refactor: OAuthController 목킹 애노테이션(WebMvcTest) 매개변수 수정

* refactor: Mock을 사용한 OAuthService 리팩토링 및  UserService(JPA)사용한 통합 테스트 작성

* fix: OAuth 관련 URL앞에 /api 없던 문제 수정

* refactor: 로그인 관련 요청 반환값으로 json형식이 반환되도록 리팩토링

* test: 인증 인터셉터 테스트 추가

* test: 인증 핸들러 메서드 아규먼트 리졸버 테스트 추가

* test: JWT 토큰을 통해 AppUser 반환하는 테스트 추가

* test: 로그인 URL 요청 및 로그인 인수 테스트 추가

* test: 로그인 URL 요청 및 로그인 인수 테스트 추가

* fix: OAuthService 통합테스트시 같은 AccessTokenDB를 Bean으로 공유해서 같은 토큰이 발행되는 테스트 문제 해결

* refactor: 인수테스트시 로그인하면 토큰을 주는 메서드 추가

* refactor: 게시물과 프로필 조회시 로그인 상태가 아니여도 인터셉터 통과하도록 리팩토링

* [#40] 게시물 작성 기능 구현 (#68)

* feat: 게시물 작성 기능 구현

* fix: rebase conflict 해결

* refactor: @Authenticated AppUser 바인딩 추가

* test: 슬라이스 테스트 작성

* refactor: URI.create() 메소드 추출

* refactor: 메소드명 변경

* feat: Bean Validation 예외 핸들링

* test: 메소드명 변경

* test: 슬라이스 테스트 보완

* test: 통합 테스트 작성

* feat: 유효성 검증 로직 추가

* test: 슬라이스 테스트 수정

* style: 필드 선언 순서 변경

* test: 인수 테스트 작성

* test: 인수 테스트 추가

* test: Data JPA 테스트 수정

* [#51 #53] 파일 업로드 기능 구현 (#69)

* feat: S3-EC2 파일 업로드 기능 구현

* feat: 파일 업로드 API 구현

* feat: 파일 확장자 확인 기능 구현 (#54)

* test: 인수테스트 작성

* refactor: 테스트 이름 재작성

* [#35 #36] 선택한 Github 레포지토리의 사용 언어 태그 추출 및 태그 저장/조회 기능 구현 (#52)

* chore: 인수 테스트를 위한 RestAssured 의존성 추가 및 테스트 환경 구성 (#35)

* feat: GIthub 특정 Repository에서 Language Tags 추출 (#35)

* feat: Github Tag 추출 서비스 구현 (#35)

* feat: Github Tag 추출 표현 계층 구현 (#35)

* refactor: 태그 추출 기능 중 Github API 호출 부분 인터페이스 분리 (#35)

* refactor: stub token으로 변경

* refactor: controlleradvice tag 패키지 범위 지정

* refactor: GithubTagExtractor 구현체 ObjectMapper 주입 (#35)

* refactor: TagExtractor 피드백 반영 및 컨트롤러 슬라이싱 테스트 추가 (#35)

* refactor: 태그 추출에 로그인 기능 포함 (#35)

* feat: Post 저장시 등록된 Tag도 함께 저장 (#36)

* feat: 이름에 해당하는 Tag가 없을때만 Tag 생성하는 서비스 구현 (#36)

* refactor: 현재 글에 존재하는 Tag와 중복되는 이름의 태그 추가시 예외 발생 (#35)

* refactor: Post에 Tag 정상 등록하는 테스트 추가 (#36)

* refactor: 태그 unique 제약 추가 및 @Transactional 적용 (#36)

* refactor: 태그 도메인 생성 유효성 검사 추가 (#36)

* refactor: 태그 인수 테스트 추가 및 패키지 구조 변경 (#36)

* chore: secret 삭제

* refactor: Rebase 이후 인수 테스트에 로그인 요청 모듈 추가 (#35)

* refactor: 잘못된 토큰으로 요청시 예외 확인 인수 테스트 추가 (#35)

* fix: rebase 이후 실패하는 테스트 보완

* refactor: 태그 추가 실패 에러 및 플랫폼 에러를 커스텀 예외로 변환 및 TagController 반환타입 변경 (#35)

* [#55 #57] 유저 프로필 조회 기능 구현 및 팔로우 팔로잉 기능 구현 (#61)

* feat: 유저 프로필 조회 기능 구현 (#55)

* feat: 유저 프로필 정보에 github url 추가 및 누락 파일 추가 (#55)

* feat: 유저 팔로우 팔로잉 기능 구현 (#57)

* test: 유저 프로필 및 팔로우/팔로잉 테스트 구현 (#55 #57)

* test: 유저 프로필 및 팔로우/팔로잉 테스트 구현(#55 #57)

* refactor: 유저 프로필 및 팔로우/팔로잉 피드백 반영 (#55 #57)

* test: verify() 추가 (#55 #57)

* [#88] LoginPage 구현 (#98)

* fix: 오타 수정

* chore: storybook 설정에 full screen 옵션 추가

* feat: 웹폰트 추가

* feat: GithubIconLarge svg 추가

* fix: button attribute type 오류 해결

* feat: github login mock api 추가

* feat: user context 구현

* fix: ProfileQuery accessToken type error 해결

* feat: github login link 조회 api 구현

* feat: github login 페이지 구현(#88)

* fix: UserContextProvider Props 타이핑 간소화

* feat: Provider 분리 및 UserContextProvider 추가

* feat: access token 조회 api 구현(#88)

* feat: github OAuth 로그인을 처리하는 페이지 구현

* [#104] merge시 누락된 코드 추가 (#105)

* fix: 누락된 interface 정의 추가

* fix: 누락된 prop 추가(commentId)

* fix: 누락된 url constants 추가

* feat: 파일 업로드 기능 구현 (#100)

* [#108] 예외 처리 전략 구현 (#112)

* feat: 예외 처리 전략 구현

* refactor: GlobalExceptionHandler에서 최상위 카테고리인 ApplicationException만 받도록 수정

* refactor: RestControllerAdvice로 수정

* refactor: 예외 로깅용 예외 message 생성자 파라미터 추가

* feat: Button 컴포넌트 kind type 추가(#107) (#111)

- SquaredBlock, RoundedInline추가

* [#102] 게시물에 Github Repository 주소 추가 기능 구현  (#109)

* feat: post 업로드 시 github repository 주소 함께 저장 (#102)

* fix: 불필요한 파일 삭제 (#102)

* refactor: 피드백 반영 (#102)

* [#34] 댓글 기능 구현 (#84)

* feat: Comment 유효성 검증 로직 추가 (#34)

* feat: Post 영속시 Comment 함께 영속화하는 기능 추가 (#34)

* feat: User가 특정 Post에 Comment 추가하는 기능 구현 (#34)

* feat: 등록된 게시물에 Comment 추가하는 서비스 구현 (#34)

* test: Service 통합 테스트 추가 (#34)

* feat: 댓글 추가 API 단위 및 인수 테스트 추가 (#34)

* refactor: CommentFormat 예외 상태코드 변경 및 에러 코드 테스트 검증 (#34)

* refactor: ControllerAdvice 이름을 특정 컨트롤러로 명시 (#34)

* refactor: 코드 병합으로 인한 테스트 코드 및 설정 수정 (#34)

* refactor: rebase 병합 해결 (#34)

* [#37] Github Repositories 조회 기능 구현 (#58)

* feat: Github Repositories 조회 기능 구현

* test: 슬라이스 테스트 작성

* refactor: get -> show 메소드명 수정

* refactor: 클래스명 수정

* refactor: Repository -> Repositories 클래스명 변경

* fix: rebase conflict 해결

* refactor: application -> domain <- infrastructure 방향으로 의존성 흐르도록 수정

* test: given-when-then 구문 수정

* refactor: HttpEntity -> RequestEntity 변경

* test: given-when-then 구문 수정

* refactor: Github Repositories 조회 기능 수정

* test: 컨트롤러 테스트 수정

* test: 슬라이스 테스트 수정

* test: 슬라이스 테스트 작성

* test: 인수 테스트 작성

* test: 통합 테스트 작성

* test: rebase conflict 해결

* feat: 프로필 조회시 팔로우 여부 판단 기능 구현 (#113) (#117)

* [#95] 홈 피드 게시글 조회 (#114)

* feat: 페이징을 통해 게시물을 조회하고 DTO로 변환 (#95)

* refactor: rebase 병합으로 인한 충돌 해결 (#95)

* feat: 게시물 조회 페이징 기능 서비스 테스트 추가 (#95)

* refactor: 게시글 목록 조회 기능 인수 테스트 추가 및 태그 DTO 정리 (#95)

* refactor: Post 조회 RestAssured 메서드 중복 리팩토링 (#95)

* refactor: 병합으로 인한 충돌 해결 (#95)

* refactor: batch size를 통한 페이징 쿼리 성능 개선 (#95)

* refactor: 페이징 fetch join 추가 (#95)

* [#119] 서브모듈 적용 (#120)

* chore: 서브모듈 추가 (#119)

* chore: 서브모듈 적용 (#119)

* chore: 서브모듈 수정 (#119)

* [#87] HomeFeedPage 페이지 컴포넌트 구현 (#121)

* refactor: Provider 와 Global Style 적용을 App.tsx -> Index.tsx 에서 수행

Co-authored-by: Tanney102 <Tanney-102@users.noreply.github.com>

* feat: Profile 페이지 query 초기화

* refactor: CommentData 타입 변경 & Comment 컴포넌트 Props 의 CommentData 타입 의존성 제거

* fix: PostItem 컴포넌트에 댓글 달기 버튼 추가 & Tag 들을 나타내는 Chip 들 추가

- send.svg 추가
- PostItem 스타일링 변경

* chore: webpack 이미지 파일 로더 룰 추가

* feat: TextEditor 컴포넌트 배경색 prop 제거

- 기본 border-radius 제거

* feat: Button kind 별 padding 변화 적용

* feat: 상속용 Styled Component 제작

* feat: Header 컴포넌트들에 모듈 Styled Component 상속 적용

* chore: .vscode 를 gitignore 목록에 추가

* feat: PostItem 컴포넌트 마크업 구조 수정

- 필요하지 않은 prop 할당 삭제

* feat: Header 컴포넌트에 일괄적으로 적용할 높이값 상수화

* feat: PostItem 스타일 속성 수정

* feat: Feed 컴포넌트 구현

* feat: HomeFeedPage 페이지 구현

* feat: FAILURE_MESSAGE & LIMIT 상수 추가

- LIMIT 는 어플리케이션에서 제한하는 데이터 형식을 나타내는 상수들을 담은 객체
- FAILURE_MESSAGE 는 요청 혹은 동작이 실패했을 때 사용자 피드백에 활용될 메세지들을 담은 객체

* feat: HomeFeedPage 라우팅 적용

Co-authored-by: Tanney102 <Tanney-102@users.noreply.github.com>

* [#118] 예외 처리 전략을 적용 및 Entity에 id 동등성 추가  (#122)

* refactor: Authentication 커스텀 예외처리 구현

* refactor: User, Tag 커스텀 예외처리 구현

* refactor: Post, Comment 커스텀 예외처리 구현

* refactor: 엔티티 id 동등성 정의

* refactor: 플랫폼 이니셜 V로 수정

* fix: DataJpaTest에 Date 관련 테스트 설정 추가 (#123)

* [#89] Profile Page 구현 (#126)

* refactor: Provider 와 Global Style 적용을 App.tsx -> Index.tsx 에서 수행

Co-authored-by: Tanney102 <Tanney-102@users.noreply.github.com>

* feat: Profile 페이지 query 초기화

* feat: Avatar 컴포넌트 name의 fontWeight을 bold로 변경

* feat: storybook dummy token 추가

* feat: mock data 및 routes 추가

* chore: svg 아이콘 추가

* fix: Profile interface 수정

* Revert "feat: mock data 및 routes 추가"

This reverts commit ea74c1bfda40c4bacf71283d193fad62927859d7.

* feat: ProfileHeader 컴포넌트 구현 (#89)

* feat: Profile 컴포넌트의 api로직 및 query 구현

* feat: Profile 컴포넌트 구현(#89)

* chore: assets/images의 파일을 .png, .jpg 로 통일

* chore: 이미지 확장자에 대해 url loader추가

* feat: profile 관련 mock api 추가

* feat: default Profile 이미지를 svg에서 png 파일로 변경

* refactor: profile page url을 하나로 통일

* feat: main 태그 추가

* feat: Profile컴포넌트 story 추가

* refactor: Profile url에 userType param 추가

* refactor: isMyProfile 속성을 Profile컴포넌트의 상위로 이동

* feat: Tabs 컴포넌트에 해당 탭에 대한 컨텐츠 추가

* feat: LoggedInWrapper util로 분리

* feat: ProfileFeed 컴포넌트 레이아웃 구현

* feat: mock data 추가

* feat: svg icon 추가

* refactor: 불필요한 코드 제거 및 누락 코드 보충

- 불필요한 의존성 제거
- 누락된 key prop 추가
- tab 스타일 변경
- 중복된 코드 제거

* feat: 프로필 피드에 비동기 로직 추가

* feat: GithubStatistics 컴포넌트 구현

* feat: Profile Page 구현(#89)

* refactor: 불필요한 interface 제거

* feat: 로그인 페이지 레이아웃 수정 및 홈 버튼 추가

* feat: 레이아웃 수정

* fix: 누락된 accessToken 추가

* refactor: 불필요한 코드 제거

* feat: 스타일 변경

- main widht를 모바일 사이즈로 고정
- black button 패딩 조정

* feat: 데모를 위해 항상 로그인 상태를 유지하도록 수정

* feat: 반응형 레이아웃 적용

* refactor: optional한 엘리먼트를 JSX로 처리

* refactor: error에 따른 ui 분기를 선언적으로 명시

Co-authored-by: SONG WON LEE <swon3210@gmail.com>
Co-authored-by: Tanney102 <Tanney-102@users.noreply.github.com>

* feat: 젠킨스 설정 파일 생성 (#133)

* refactor: 비로그인 유저로도 홈 피드 조회를 하도록 수정 (#134) (#135)

* fix: 파라미터 없이 route하도록 url 및 관련 코드 수정 (#131)

* fix: s3storage bean 탐색을 하지 못하는 버그 수정 (#136)

* [hotfix] CORS 버그 해결 (#138)

* fix: CORS 버그 해결

* chore: security 수정

* [#137] 내 프로필 계정의 게시물을 조회한다. (#139)

* feat: 내 프로필 계정의 게시물을 조회 기능 구현 (#137)

* refactor: Jenkins 빌드 스크립트 sleep을 3에서 10으로 변경

* [chore] api mocking 관련 코드 수정 (#140)

* feat: 무한스크롤 구현 전임을 감안하여 posts 조회시 page, limit mock

* feat: login mock 제거

* chore: 배포 환경에 따라 api proxy여부 분기

* chore: 운영 환경 설정 서브 모듈을 추가 (#143) (#144)

* [#141] 다른 유저의 프로필 계정의 게시물 조회  (#142)

* feat: 다른 유저의 프로필 피드를 조회하는 기능 구현 (#141)

* refactor: Pageable 사용하도록 수정 (#141)

* fix: PostRepository에 @Param 추가 (#145)

* [#146] 로그인 반환 값에 유저 네임 추가 및 인터셉터 매치 기능 리팩토링 (#147)

* refactor: PathPattern 인터셉터 URL과 Method를 통해 매치되도록 리팩토링

* refactor: 로그인후 반환할 때 토큰과 함께 유저 네임도 보내도록 수정

* fix: 응답 파싱 에러 수정 (#148)

* [#129] follow 추가, 취소 기능 구현 (#149)

* fix: 폰트 import 위치 변경

* feat: follow 추가, 취소 기능 구현(#129)

* feat: 어플리케이션 진입시 로그인 상태 확인

* refactor: submodule의 remote branch 기준을 main으로 변경 (#155)

master -> main

* refactor: 젠킨슨 빌드 유발 방식 변경에 따른 스크립트 수정 (#157)

* [#152] 응답 파싱 에러 수정 (#153)

* fix: 응답 파싱 에러 수정

* refactor: build.gradle 형식 통일

* fix: 비정상 파일 이름및 확장자 도출 버그 해결 (#160)

* [#163] 빌드 에러를 확인하다. (#164)

* fix: 비정상 파일 이름및 확장자 도출 버그 해결

* fix: 사용하지 않는 모듈 import로 인한 빌드 에러 수정

* fix: 사용하지 않는 모듈 import로 인한 빌드 에러 수정 (#165)

* [#106] request DTO 유효성 검사 추가 (#151)

* refactor: Client - Controller DTO명 변경 (#106)

* style: 파라미터 개행 수정 (#106)

* style: 메소드 개행 수정 (#106)

* test: 클래스명 변경 및 패키지 구조 변경 (#106)

* test: 불필요한 주석 삭제 (#106)

* feat: 서브모듈 추가 (#143)

* refactor: 기본 생성자 접근 제어자 변경 (#106)

* refactor: application-prod.yml 삭제 (#106)

* refactor: 적용되지 않는 Bean Validation 삭제 (#106)

* refactor: request DTO에 Bean Validation 추가 (#106)

* refactor: application-prod.yml 삭제 (#106)

* refactor: 서브모듈 수정

* refactor: 에러 메시지 수정 (#106)

* refactor: DTO 네이밍 수정 (#106)

* [#169] 파일 주소가 제대로 반환되지 않는 버그 수정 (#170)

* fix: 사용하지 않는 모듈 import로 인한 빌드 에러 수정

* fix: 파일 경로가 제대로 반환되지 않는 버그 수정

* refactor:사용하지 않는 import 제거

* [fix] 프론트엔드 이슈 수정 (#171)

* fix: 새로고침시 로그인 상태를 유지하도록 수정

* fix: 오타수정

* fix: query에 자기 이름으로 profile페이지 들어올 경우 redirect

* feat: 프로필 페이지 빈 게시물 표시 추가

* [fix] 프론트엔드 버그 수정 (#172)

* refactor: 불필요한 의존성 제거

* fix: url 오타 수정

* fix: 게시물 태그 문자열 파싱 오류 해결

* [#173] Feature/loader and infinite scroll container (#175)

* feat: Loader 컴포넌트 구현

* feat: InfiniteScrollContainer 컴포넌트 구현

* [#90] AddPostPage 페이지 컴포넌트 구현 (#176)

* feat: AddPostPage 구성 컴포넌트 구현

- PostAddStepHeader 컴포넌트 구현
- PostContentUploader 컴포넌트 구현
- RepositorySelector 컴포넌트 구현
- TagInputForm 컴포넌트 구현
- githube 아이콘 추가

* feat: separatorColor theme 색상 추가

* feat: AddPostPage 구현

- ImageUploader 컴포넌트 prop 명 변경
- 게시물 업로드에 사용되는 객체들의 타입 추가
- 게시물 업로드에 사용되는 API_URL, GITHUB_URL, STEPS 상수 추가
- PostAddDataContext & PostAddStepContext 추가

* fix: Noto Sans 웹폰트가 로드되지 않는 문제 해결

* feat: requestAddPost 요청 함수 구현

* feat: Input 컴포넌트에 name prop 추가

* feat: LIMIT 상수 객체에 FEED_COUNT_PER_FETCH 속성 추가

* feat: requestGetHomeFeedPosts 요청 함수에 기본 pageIndex 제공

* feat: PostAddDataContextProvider 적용 지점 변경 App -> AddPostPage 컴포넌트 바로 위

* feat: 태그 추가 후 태그 입력 Input 내용이 비워지도록 설정

* [#161] 회원/비회원 모두 받을 수 있는 API 토큰 검증 로직 수정 (#167)

* refactor: 표현 계층과 응용 계층의 반환하는 DTO 네이밍 통일

* refactor: 회원/비회원 모두 받을 수 있는 API 토큰 검증 로직을 수정한다.

- 기존 로직: 회원/비회원 모두 처리하는 API (ex. /api/posts)에서 토큰이 잘못된 경우 GuestUser로 처리.
- 수정 로직: 회원/비회원 모두 처리하는 API (ex. /api/posts)에서 토큰이 잘못된 경우 401 예외 발생.

* chore: 설정 수정

* refactor: 상수화

* refactor: 포맷팅 수정

* [#128] Infinite Scroll 기능 구현 (#178)

* feat: Infinite Scroll 기능 구현

* feat: 페이지 컴포넌트에서 데이터를 fetch 받도록 수정

* feat: TagFeedPage & UserFeed 페이지 추가

- 기능 구현 X
- PAGE_URL 상수 추가

* feat: 기존의 평문으로 제공되던 userName 을 로그인 된 유저 이름이 제공되도록 변경

* [#177] 게시물 시간 형식 추가 (#180)

* feat: 게시물 시간 정보 수정

* fix: 시간 형식 수정

* [#181] 요청에 userName 이 동적으로 들어가지 않는 문제를 해결 (#182)

* feat: Infinite Scroll 기능 구현

* feat: 페이지 컴포넌트에서 데이터를 fetch 받도록 수정

* feat: TagFeedPage & UserFeed 페이지 추가

- 기능 구현 X
- PAGE_URL 상수 추가

* feat: 기존의 평문으로 제공되던 userName 을 로그인 된 유저 이름이 제공되도록 변경

* fix: 요청에 userName 이 동적으로 들어가지 않는 문제 해결

- 필요없는 console.log 제거

* fix: userName 과 repositoryName 이 없을 때 데이터가 fetch 되는 버그를 해결 (#186)

- userName 이 파라미터로 들어가지 않은 문제 해결

* refactor: 홈피드를 최신 순으로 조회하도록 수정 (#189) (#191)

* [#162] 태그 추출 API 명세 변경 (#166)

* refactor: 태그 추출 api에서 name 제외 (#162)

* [#106] request DTO 유효성 검사 추가 (#151)

* refactor: Client - Controller DTO명 변경 (#106)

* style: 파라미터 개행 수정 (#106)

* style: 메소드 개행 수정 (#106)

* test: 클래스명 변경 및 패키지 구조 변경 (#106)

* test: 불필요한 주석 삭제 (#106)

* feat: 서브모듈 추가 (#143)

* refactor: 기본 생성자 접근 제어자 변경 (#106)

* refactor: application-prod.yml 삭제 (#106)

* refactor: 적용되지 않는 Bean Validation 삭제 (#106)

* refactor: request DTO에 Bean Validation 추가 (#106)

* refactor: application-prod.yml 삭제 (#106)

* refactor: 서브모듈 수정

* refactor: 에러 메시지 수정 (#106)

* refactor: DTO 네이밍 수정 (#106)

* [#169] 파일 주소가 제대로 반환되지 않는 버그 수정 (#170)

* fix: 사용하지 않는 모듈 import로 인한 빌드 에러 수정

* fix: 파일 경로가 제대로 반환되지 않는 버그 수정

* refactor:사용하지 않는 import 제거

* [fix] 프론트엔드 이슈 수정 (#171)

* fix: 새로고침시 로그인 상태를 유지하도록 수정

* fix: 오타수정

* fix: query에 자기 이름으로 profile페이지 들어올 경우 redirect

* feat: 프로필 페이지 빈 게시물 표시 추가

* [fix] 프론트엔드 버그 수정 (#172)

* refactor: 불필요한 의존성 제거

* fix: url 오타 수정

* fix: 게시물 태그 문자열 파싱 오류 해결

* [#173] Feature/loader and infinite scroll container (#175)

* feat: Loader 컴포넌트 구현

* feat: InfiniteScrollContainer 컴포넌트 구현

* [#90] AddPostPage 페이지 컴포넌트 구현 (#176)

* feat: AddPostPage 구성 컴포넌트 구현

- PostAddStepHeader 컴포넌트 구현
- PostContentUploader 컴포넌트 구현
- RepositorySelector 컴포넌트 구현
- TagInputForm 컴포넌트 구현
- githube 아이콘 추가

* feat: separatorColor theme 색상 추가

* feat: AddPostPage 구현

- ImageUploader 컴포넌트 prop 명 변경
- 게시물 업로드에 사용되는 객체들의 타입 추가
- 게시물 업로드에 사용되는 API_URL, GITHUB_URL, STEPS 상수 추가
- PostAddDataContext & PostAddStepContext 추가

* fix: Noto Sans 웹폰트가 로드되지 않는 문제 해결

* feat: requestAddPost 요청 함수 구현

* feat: Input 컴포넌트에 name prop 추가

* feat: LIMIT 상수 객체에 FEED_COUNT_PER_FETCH 속성 추가

* feat: requestGetHomeFeedPosts 요청 함수에 기본 pageIndex 제공

* feat: PostAddDataContextProvider 적용 지점 변경 App -> AddPostPage 컴포넌트 바로 위

* feat: 태그 추가 후 태그 입력 Input 내용이 비워지도록 설정

* [#161] 회원/비회원 모두 받을 수 있는 API 토큰 검증 로직 수정 (#167)

* refactor: 표현 계층과 응용 계층의 반환하는 DTO 네이밍 통일

* refactor: 회원/비회원 모두 받을 수 있는 API 토큰 검증 로직을 수정한다.

- 기존 로직: 회원/비회원 모두 처리하는 API (ex. /api/posts)에서 토큰이 잘못된 경우 GuestUser로 처리.
- 수정 로직: 회원/비회원 모두 처리하는 API (ex. /api/posts)에서 토큰이 잘못된 경우 401 예외 발생.

* chore: 설정 수정

* refactor: 상수화

* refactor: 포맷팅 수정

* [#128] Infinite Scroll 기능 구현 (#178)

* feat: Infinite Scroll 기능 구현

* feat: 페이지 컴포넌트에서 데이터를 fetch 받도록 수정

* feat: TagFeedPage & UserFeed 페이지 추가

- 기능 구현 X
- PAGE_URL 상수 추가

* feat: 기존의 평문으로 제공되던 userName 을 로그인 된 유저 이름이 제공되도록 변경

* [#177] 게시물 시간 형식 추가 (#180)

* feat: 게시물 시간 정보 수정

* fix: 시간 형식 수정

* [#181] 요청에 userName 이 동적으로 들어가지 않는 문제를 해결 (#182)

* feat: Infinite Scroll 기능 구현

* feat: 페이지 컴포넌트에서 데이터를 fetch 받도록 수정

* feat: TagFeedPage & UserFeed 페이지 추가

- 기능 구현 X
- PAGE_URL 상수 추가

* feat: 기존의 평문으로 제공되던 userName 을 로그인 된 유저 이름이 제공되도록 변경

* fix: 요청에 userName 이 동적으로 들어가지 않는 문제 해결

- 필요없는 console.log 제거

* fix: userName 과 repositoryName 이 없을 때 데이터가 fetch 되는 버그를 해결 (#186)

- userName 이 파라미터로 들어가지 않은 문제 해결

* refactor: 홈피드를 최신 순으로 조회하도록 수정 (#189) (#191)

* refactor: 태그 추출 api에서 name 제외 (#162)

Co-authored-by: DAEUN LEE <leede0418@gmail.com>
Co-authored-by: Minsung Son <sns2831@gmail.com>
Co-authored-by: Tanney102 <57767891+Tanney-102@users.noreply.github.com>
Co-authored-by: SONG WON LEE <swon3210@gmail.com>
Co-authored-by: binghe819 <56860124+binghe819@users.noreply.github.com>

* [#192] 프로필 페이지 401에러 미처리 이슈 해결 (#196)

* refactor: 변수 이름 수정, userName을 username으로 통일

* refactor: localStorage관련 로직 변경

* fix: 유효하지 않은 토큰에 대해 프로필 정보 리패치

* refactor: storage 모듈이 각 함수를 export 하도록 변경

* fix: 유효하지 않은 토큰에 대해 프로필 피드 리패치

* fix: github tas api url 변경 반영

* refactor: 타입가드 추가

* [#179] Github Repositories 조회 기능 수정 (#195)

* refactor: 서브모듈 수정

* refactor: Github Repository URL도 함께 응답 (#179)

* refactor: htmlUrl -> url 변수명 변경 (#179)

* [#197] 레이아웃 및 UI를 개선 (#198)

* feat: 더 이상 불러올 데이터가 없으면 Loader 가 사라지도록 Infinite Scroll 기능 수정

- Feed 데이터를 Page 에서 넘겨주도록 재설정
- 세부 기능이 구현되지 않은 TagFeedPage, UserFeedPage 페이지 컴포넌트 추가(HomeFeedPage 와 현재는 기능 동일)
- 데이터 로딩 시 화면에 나타낼 PageLoading 컴포넌트 구현

* feat: 모든 ul 태그의 margin을 0으로 하는 전역 스타일링 적용

* feat: 데이터 로딩 시 PageLoading 컴포넌트가 나타나도록 설정

- Profile, RepositorySelector, TagInputForm 컴포넌트에 적용

* feat: PostItem 컴포넌트 padding 값 수정

* feat: 모바일 반응형 break point 재설정 &  각 페이지 컴포넌트의 Container 에 Page 스타일드 컴포넌트 확장 적용

* feat: RepositorySelector 컴포넌트의 RepositoryList 에 고정 높이 값 적용

- 내용물이 높이값을 초과할 시 스크롤이 나타나도록 설정

* feat: 로그아웃 버튼 추가 (#203)

* [#194] REST Docs 적용 (#201)

* feat: 문서화 코드 작성

* feature: 문서화 로직 및 기반 파일 구성

* [#207] 배포 자동화 버그 수정 (#208)

* refactor: 빌드와 테스트를 하나의 stage로 합침.

* refactor: 기존 process 제거 시 SIGKILL로 변경

* fix: 누락된 스크립트 추가.

* [#91] Snackbar 구현 (#209)

* fix: 컴포넌트 이름과 중복되는 interface 이름 변경

* feat: 스낵바 구현

* chore: 배포 환경에 따라 api url 분기 (#211)

* chore: 프론트엔드 빌드 커맨드 수정 (#214)

* [#200, #205] 태그 관련 이슈 해결 (#216)

* fix: 게시글 추가 시, 초기에 불러온 기본 tag 들이 사라지지 않는 문제를 해결

* feat: 게시글 추가 중 태그 삭제 기능 구현

* fix: break point 에 맞게 어플리케이션 최대 너비를 375px -> 425px 로 조정

* [#217, #110] 테스트 패키지 구조 정리 (#218)

* chore: 인수/통합 테스트 및 common(픽스쳐 팩토리, mock api) 패키지 분리  (#217)

* chore: 기존 도메인 테스트 패키지들을 unit 하위로 이동 (#217)

* refactor: Tag 관련 Github 플랫폼 클래스 이름에 Tag 명시 (#217)

* chore: Test 관련 Configuration 통일 및 Github API 관련 클래스 프로필 설정 (#217)

* chore: 롬복 의존성 추가 (#217)

* refactor: TestConfiguration 클래스명에 Infrastructure 명시 (#217)

* refactor: PostFactory 빌더 패턴 적용하여 가독성 향상

* refactor: 실패하는 테스트 리팩토링

* refactor: UserFactory 빌더 패턴 적용하여 가독성 향상

* refactor: PostFactory 의미 없는 메서드 제거

* refactor: Test Configuration 이름 변경

* refactor: user fixture setUp로직 위치 변경

* refactor: DTO Builder 어노테이션 적용 및 Builder 제공 클래스 제거

* refactor: gradle.build 파일 정리

* style: 의미없는 공백 제거

Co-authored-by: Minsung <sns2831@gmail.com>

* [#223, #229] API 변경사항 반영 및 Post 중복제거 (#235)

* fix: API 명세 변경 사항 반영

- image와 imageUrl에 대한 키값 구분
- public repo를 가져오는 api 명에서 username 제거

* refactor: 불필요한 의존성 제거

* feat: 새로 패치된 post 중복제거

* fix: InfiniteScrollContainer effect 의존성 수정

* refactor: Snackbar 컴포넌트의 위치를 @layout으로 변경

* fix: post interface 수정

* refactor: 스낵바 메시지를 push 하는 메서드 이름을 더 명시적으로 변경

* fix: 중복된 key prop 수정

* feat:  http error 처리 유틸 구현

* refactor: HomeFeedPage의 상태로직을 훅으로 분리

* [#204] Issue 및 PR Template 수정 (#239)

* docs: PR 템플릿 수정

* docs: 이슈 템플릿 등록

* docs: 이슈 템플릿 수정

* docs: 이슈 템플릿 수정

* [#222] 프로필 페이지 피드 버그 수정 (#242)

* refactor: 중복된 게시물을 제거하는 로직을 util로 분리

* feat: 프로필 피드에 무한 스크롤 기능 추가

* refactor: profile page의 상태를 context로 분리

* feat: 팔로우 버튼에 로딩 애니메이션 추가

* refactor: 불필요한 컨테이너 제거

* refactor: ProfilePage 구조 개선

- 훅을 끌어올리는 수준을 작은 범위로 수정
- context를 제거하고 컨테이너 역할을 하는 컴포넌트를 추가

* [#219] 게시글 추가 중 발생하는 에러에 대한 피드백, 핸들링 구현 (#241)

* feat: BackDrop & MessageModalPortal 컴포넌트 구현

- index.html 에 div#modal 태그 추가
- MessageModalPortal 은 리액트 포털을 적용하여 구현
- 해당 컴포넌트를 사용하기 편하도록 useMessageModal 커스텀 훅 제작

* refactor: 필요 없는 import 구문 삭제

* feat: PostContentUploader 컴포넌트 안의 ImageSlider & ImageUploader 와 TextEditor 간의 margin 추가

* feat: 새로운 limits, messages 상수 추가

- message -> messages 로 파일 이름 변경

* feat: 게시글 추가 step 라우팅 path 에 한글이 들어가는 문제 해결

* fix: 필요한 변수 import 경로 수정

* feat: 게시글 추가 중 각각의 에러에 대한 이용자 피드백 구현
- PostAddFormData -> PostUploadData으로 변경
- 이용자의 깃허브 상에 올라와 있는 public repository 가 없으면 피드백 후 이전 페이지로 리다이렉트 시킨다.
- repository 를 선택하지 않고 이미지 & 글 작성으로 넘어가려 한다면 이를 피드백한다.
- 업로드한 이미지가 정해진 용량을 초과할 경우 피드백한다.
- 업로드한 이미지 개수가 정해진 개수를 초과할 경우 피드백한다.
- 이미지 개수가 정해진 개수를 초과할 경우 피드백한다.
- 텍스트 길이가 정해진 길이를 초과할 경우 피드백한다.
- 들어간 태그들 중 중복이 있으면 피드백한다.
- 태그에 '-', '_' 를 제외한 특수문자가 들어갔다면 이를 피드백한다.

* feat: ErrorResponse 타입 생성 및 적용

* feat: API 요청 에러 핸들링 구현

* [#232] 유저 테스트 코드 리팩토링 (#249)

* refactor: 코드 정리 (#232)

* refactor: 사용자 유효성 검증 추가 (#232)

- 게스트인 경우 UnauthorizedException 발생

* refactor: DTO 관련 네이밍 정리 (#232)

* test: 컨트롤러 테스트 리팩토링 (#232)

* test: 서비스 테스트 리팩토링 (#232)

* test: Data JPA 테스트 리팩토링 (#232)

* test: 불필요한 상수 삭제 (#232)

* test: 유저 이름 변경 (#232)

- loginUser/guestUser -> testUser로 통일

* test: 서비스 테스트 추가 (#232)

* test: 서비스 테스트 리팩토링 (#232)

* test: 통합 테스트 리팩토링 (#232)

* test: 인수 테스트 리팩토링 (#232)

* refactor: Builder 사용 (#232)

* refactor: Follow 객체에 책임 위임 (#232)

* test: 접근 제어자 수정 (#232)

* refactor: DTO 리팩토링 (#232)

* test: 불필요한 필드 삭제 (#232)

* test: WebEnvironment 옵션을 RANDOM_PORT -> NONE으로 변경 (#232)

* test: @SpringBootTest -> @DataJpaTest 변경 (#232)

* refactor: API 명세에 맞게 필드명 변경 (#232)

- image -> imageUrl 변경

* [#240] Authentication 관련 테스트 코드 리팩토링 (#247)

* test: authentication 관련 테스트 코드 리팩토링 (#240)

* test: 테스트 코드 리팩토링 (#240)

* refactor: 깃헙 인증 예외 변경 (#240)

* test: Authentication 테스트 코드 피드백 적용 (#240)

* test: HttpHeaders.AUTHORIZATION 으로 변경 (#240)

* [#226, #227] 프로필 수정 모달 구현 (#255)

* feat: Button 컴포넌트에 padding prop 추가

* feat: cancel-no-circle 아이콘 추가

* refactpr: BackDrop을 스타일드 컴포넌트로 수정

* refactor: textEditor 배경을 투명하게 수정

* chore: eslint no empty function 옵션 off

* refactor: css keyframes 파일로 분리

* feat: 카메라 아이콘 추가

* feat: TextEditor 컴포넌트에 indicator 추가(#226)

* refactor: z-index를 컨벤션에 맞게 수정

* feat: 프로필 수정 모달 구현(#227)

* [#246] 댓글 테스트 코드를 리팩토링 (#250)

* refactor: 댓글 관련 테스트 리팩토링

* refactor: 케빈 피드백 반영

* refactor: 댓글 조회 반환시 프로필 이미지 나오도록 수정

* [#220, #226] 네비게이션 ui 수정 및 이미지 인디케이터 추가 (#256)

* refactor: 비로그인 시에도 홈네이게이션 노출

* fix: header와 image slider의 쌓임 순서 버그 해결

* feat: 이미지 인디케이터 구현

* [#234] 태그 테스트 코드를 리팩토링 (#245)

* refactor: 태그 도메인 부분 테스트 리팩토링

* refactor: 태그 슬라이싱 테스트 리팩토링

* refactor: 태그 통합 테스트 리팩토링

* refactor: 태그 인수 테스트 리팩토링

* refactor: connection pool 사용하는 커스텀 RestTemplate 적용

* refactor: Post와 Tag 연관관계 부분 프로덕션 및 테스트 코드 리팩토링

* refactor: 케빈 피드백 적용

- ParameterizedTest 이용하도록 수정
- 중복된 테스트 제거

* refactor: 피드백 반영

* refactor: 소문자로 자동 변환되도록 수정

* refactor: 너잘 피드백 적용

* refactor: 깃헙에서 태그 가져올 때 소문자로 변환되도록 리팩토링

* [#221, #225] 프로필 피드 클릭시 유저 피드 페이지로 이동 (#260)

* fix: 헤더에서 height가 큰 요소들의 레이아웃이 깨지는 버그 해결

* fix: slideButtonKind 복구

* refactor: 타입 단언 제거

* feat: 프로필피드에서 포스트 클릭시 유저 피드 페이지로 이동

* [#251] Post 테스트 코드를 리팩토링  (#252)

* refactor: infrastructure 유닛테스트, comment 유닛테스트 리팩토링

* test: Post 관련 유닛테스트 리팩토링

* test: Post application 레이어 관련 테스트 리팩토링

* test: Post 인수 테스트 리팩토링

* test: PostControllerTest 리팩토링 추가

* test: post builder를 사용하도록 변경

* refactor: 리베이스 후 깨지는 테스트 수정 및 누락된 테스트 추가

* [#183] 게시글 댓글 기능을 구현 (#265)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* feat: HomeFeed 컴포넌트에서 로그인 된 상태에서 자신의 개시글만 수정 아이콘이 뜨도록 변경

* feat: BottomSliderPortal 컴포넌트 구현

* feat: CommentSlider 컴포넌트 구현

* chore: Layout 상수 객체 이름 LAYOUT 으로 변경

* feat: getLastHash util 함수 구현

* feat: getTabTextColor util 함수 구현

* feat: useBottomSlider 훅 구현

* refactor: PostItem 컴포넌트 수정

- 해당 컴포넌트에서 댓글 입력 값 저장 및 수정을 담당하지 않도록 수정
- 댓글 추가 아이콘 버튼 삭제
- Post, CommentData 타입의 id 속성 타입을 string -> number 로 수정

* feat: 댓글 추가 기능 구현

- Tabs 컴포넌트가 tabIndicatorKind 값에 따라 다른 indicator 를 사용하도록 수정
- useFeed -> useFeedMutation 으로 수정
- HomeFeedPage 상에서 useFeed 를 사용하는 것을 useHomeFeed 를 사용하도록 수정
- COMMENT_INPUT_HEIGHT 레이아웃 상수 추가
- 임시용 UserFeedPage 와 TagFeedPage 업데이트 (여전히 임시용)

* fix: CommentSlider 해시 라우팅으로 인해 특정 UserFeedPage 렌더링이 되지 않는 문제 해결

- CommentSlider 를 토글할 때도 history.location 의 state 와 query param 을 그대로 사용하도록 수정
- NavigationHeader 컴포넌트의 height: content-fit 속성 삭제 & 로그아웃 버튼의 padding 값 수정
- HomeFeed -> Feed 로 컴포넌트 이름 수정

* feat: 댓글 저장 시 예외 처리 추가

* [#199, #248, #184] 게시글 삭제 & 게시글 기본 이미지 구현 (#271)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* feat: 게시글 삭제 기능 구현 & 이미지가 없을 시 기본 이미지 보여주기 구현

- 삭제 버튼을 나타나게 만들기 위한 ButtonDrawer 컴포넌트 구현

* feat: TagInputForm 상에서 Tag 입력 중 모바일 가상 키보드가 레이아웃을 깨뜨리는 문제 해결

- 에러 발생시 tag input 을 blur 처리

* [#243] s3 proxy 관련 테스트 리팩토링 (#244)

* chore: s3-proxy properties 포맷을 yaml로 수정 (#243)

* chore: 프로덕션 패키지명 컨벤션맞게 수정 (#243)

* test: S3Storage 슬라이싱 테스트 추가 (#243)

* test: StorageService 슬라이싱 테스트 케이스 추가 (#243)

* refactor: StorageController 슬라이싱 테스트 불필요한 given절 삭제 (#243)

* refactor: 인수 테스트 불필요한 throws절 삭제 (#243)

* refactor: 커스텀 예외 컨벤션에 맞게 에러 코드 추가 (#243)

* refactor: 패키지명 변경 및 구글 컨벤션에 맞게 수정 (#243)

* refactor: 1장이라도 업로드 실패시 예외 발생하도록 변경 (#243)

* [#230] 검색페이지 구현 (#274)

* feat: 검색 mock data 추가

* fix: LoginWrapper children 타입 수정

* feat: search context 추가

* feat: SearchHeader에 SearchContext 적용

* feat: SearchPage 및 검색 기능 구현

* fix: 오타수정

* 추가

* refactor: 불필요한 의존성 제거

* refactor: useFollow분리 및 follow mutation 에러처리 수준 변경

* feat: 유저 검색 결과에서 팔로우 기능 구현

* fix: 검색페이지 진입시 이전 검색 기록 초기화

* [#253] Github 통계 조회 기능 구현 (#263)

* feat: Github 통계 조회 기능 구현 (#253)

* test: 컨트롤러 테스트 작성 (#253)

* test: 서비스 테스트 작성 (#253)

* test: 통합 테스트 작성 (#253)

* test: 인수 테스트 작성 (#253)

* test: 단위 테스트 작성 (#253)

* style: 개행 추가 (#253)

* refactor: 클래스명 변경 (#253)

- PlatformExtractor -> PlatformContributionExtractor
- PlatformApiRequester -> PlatformContributionApiRequester

* refactor: @Profile 추가 (#253)

* refactor: 상수 -> @Value 변경 (#253)

* refactor: 커스텀 예외 추가 (#253)

* test: 단위 테스트 추가 (#253)

* refactor: Calculator 객체로 비즈니스 로직 분리 (#253)

- Service에 있던 비즈니스 로직을 Calculator 객체로 이동
- 단위 테스트 추가

* test: 불필요한 import 삭제

* refactor: 패키지 위치 변경 (#253)

- 인터페이스는 domain, 구현체는 infrastructure에 위치

* style: 접근 제어자 삭제 (#253)

* refactor: Calculator 인터페이스 메소드 반환 타입 변경 (#253)

* refactor: try-catch 문으로 예외 핸들링 (#253)

* test: 단위 테스트 수정 (#253)

* refactor: Calculator 인터페이스 메소드 반환 타입 변경 (#253)

- DTO -> Domain Object

* [#277] useFollow 테스트 작성 (#278)

* feat: SearchPage 및 검색 기능 구현

* refactor: useFollow분리 및 follow mutation 에러처리 수준 변경

* refactor: acceessToken이 없는 경우에 대한 에러코드 추가

* chore: hook 테스트를 위한 라이브러리 설치 및 설정

* refactor: ErrorCode 타입 추가

* refactor: handleHTTPError 모듈 분리

- handleHTTPError 함수를 utils/error.ts로 이동
- 상수 및 타입 분리

* test: useFollow 테스트 코드 작성

* refactor: 파일이름 변경

- constants/httpError.ts 를 constants/error.ts 로 변경

* refactor: useFollow 에러처리

- accesstoken이 없을 경우에 대한 에러처리 추가
- client error를 처리하기 위한 객체 구현

* [#124, #262, #275, #276] 요청 관련 이슈 해결 (#280)

* fix: 프로필 수정 api 형식 변경

- put메서드에서 post메서드로 변경
- 변경된 이미지가 없을경우 빈 파일 객체 전송
- 한 줄 소개가 변경되지 않아도 그대로 보내기

* fix: 검색 api url 변경

* fix: github stats 요소 및 api url 변경

* refactor: 최초 페이지 진입시 토큰이 유효하지 않으면 로그아웃

* fix: 내 게시물의 프로필 영역을 클릭하면 내 프로필 페이지로 이동하도록 수정

* refactor: 유저프로필, 내프로필 분기를 ProfilePage에게 위임

* feat: 최초 진입 이펙트 app으로 분리

* [#257] 게시물 좋아요 기능 구현 (#264)

* feat: 게시물 좋아요 기능 구현 (#257)

* feat: 게시물 좋아요 및 좋아요 취소 기능 테스트 구현 (#257)

* refactor : 피드백 반영 (#257)

* [#236] 로깅 기능 세팅 (#237)

* chore: 활성 프로필에 따른 logback 환경 설정 (#236)

* feat: 전역 예외 어드바이저에 로거 추가 및 DB / 런타임 예외 바인딩 (#236)

* chore: s3proxy directory logback 설정 추가 (#236)

* feat: s3proxy 예외 어드바이저 추가 (#236)

* refactor: applicationException 핸들러 어드바이저 메서드명 수정 (#236)

* refactor: 백엔드 프로젝트 로깅 전략 수정 (#236)

- 테스트 로깅 전략 콘솔로 수정
- DB 관련 로거 종류 프로필별 재정의
- 부모 로거가 찍히지 않도록 additivity false 추가
- 글로벌 예외 어드바이저에 로깅 양식 정의

* chore: logback-access 설정 추가 및 프로필별 설정 구성 (#236)

* chore: s3proxy 프로젝트 logback-access 설정 추가 (#236)

* refactor: s3proxy, backend 프로젝트 log 포맷 변경 (#236)

* chore: backend logger DB, Access 등 용도별 분리 (#236)

* chore: s3proxy logger DB, Access 등 용도별 분리 (#236)

* [#254] 유저 검색 기능을 구현 (#266)

* feat: User 검색 기능 구현

* refactor: 피드백 반영 리팩토링

* refactor: 프론트측과 협의한 부분 리팩토링

* fix: 검색 요청시 user와 tag 분리 (#283)

* [#267] 프로필 수정 기능을 구현 (#279)

* feat: 유저 프로필 수정 기능 구현

* refactor: 피드백 적용

* refactor: 피드백 리팩토링

* [#269] 게시물 수정 및 삭제 기능 구현 (#272)

* feat: 게시물 수정 및 삭제 기능 구현 (#269)

* fix: 게시물 수정 기능 버그 해결 (#269)

* test: 게시물 수정 기능 통합 테스트 작성 (#269)

* fix: 게시물 삭제 기능 버그 해결 (#269)

* test: 게시물 삭제 기능 통합 테스트 작성 (#269)

* test: 게시물 수정 기능 서비스 테스트 작성 (#269)

* test: 게시물 삭제 기능 서비스 테스트 작성 (#269)

* test: 게시물 수정 기능 컨트롤러 테스트 작성 (#269)

* test: 게시물 삭제 기능 컨트롤러 테스트 작성 (#269)

* test: 게시물 수정 기능 인수 테스트 작성 (#269)

* test: 게시물 삭제 기능 인수 테스트 작성 (#269)

* refactor: 정적 팩토리 메소드 삭제 (#269)

* test: 불필요한 테스트 삭제 (#269)

* refactor: Command, Query 분리 (CQS) (#269)

* test: verify() 값 지정 (#269)

* refactor: 상태별로 update() 분리 (#269)

* fix: 해당하는 사용자의 게시물인지 확인하는 로직 추가 (#269)

* [#284] 게시물 수정 및 삭제 버그 해결 (#285)

* test: 통합 테스트 버그 해결 (#284)

* test: 불필요한 테스트 삭제 (#284)

* fix: Github 통계 조회 버그 해결 (#287) (#288)

* refactor: like 관련 DTO 필드명 번경 (#289) (#291)

* fix: restDocs 필드명 수정 및 Boolean으로 변경 (#292) (#297)

* [#228] 게시글 수정 기능 구현 (#286)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* refactor: 게시글 추가 과정에서 필요한 데이터를 일반 컴포넌트에서 불러오지 않고 Page 컴포넌트에서 내려주도록 수정

* feat: 게시글 추가 기능 구현

- 컨벤션에 맞게 useGithubTagsQuery 메서드 수정
- EditPostPage 페이지 컴포넌트 구현
- PostEditDataContext, PostEditStepContext 추가
- usePostEdit, usePostStep 훅 추가

* [#258] 유저 프로덕션 코드 및 테스트 리팩토링 (#268)

* refactor: User 도메인 부족한 팔로우, 언팔로우 등 테스트 추가 (#258)

* refactor: User equals & hashCode 정의시 getter 사용 (#258)

* refactor: Follow 도메인 equals & hashCode 정의시 getter 사용 (#258)

* refactor: Following, Follwers 메서드명 및 선언 순서 변경 (#258)

* refactor: Followings, Followers 테스트 추가 및 생성자 추가 (#258)

* refactor: User.profile 관련 도메인 코드 포맷팅 및 setter 삭제 (#258)

* refacotr: User 내부 Posts에 생성자 변경 및 UserRepository 영속성 테스트 추가 (#258)

* refactor: User 응용 계층 메서드 추출 리팩토링 및 DTO getter 추가 (#258)

* refactor: AppUser의 UserService 침투 제거 및 테스트 코드 계층 분리 (#258)

- AppUser가 서비스 코드에 침투하는 것을 막기 위해 AppUser 추상 클래스에 별도의 이름 호출 메서드를 추가함

* refactor: UserService 통합 테스트 계층적으로 리팩토링 (#258)

* refactor: AuthUserRequest 안쓰는 DTO 및 생성자 삭제와 메서드 파라미터명 통일 (#258)

* refactor: User 테스트 메서드 nested 적용 (#258)

* refactor: User 불필요한 임베디드 타입 getter 삭제 및 테스트 리팩토링 (#258)

* refactor: User 엔티티 내부 임베디드 타입 클래스의 기본 생성자를 protected로 변경 (#258)

* refactor: UserRepository 테스트 nested 적용 (#258)

* refactor: UserService 슬라이싱 테스트 verify 구체화 및 메서드 분리 (#258)

* refactor: UserService 통합 테스트 반복되는 given 부분 메서드 추출 (#258)

* refactor: UserController 슬라이싱 테스트 로그인여부 분리 및 DTO Getter 추가 (#258)

* refactor: User 인수 테스트 반복되는 api 호출 메서드 통일 (#258)

* refactor: 병합 충돌 해결 (#258)

* refactor: UserDataJpaTest Nested C-D-I 명세 변경 (#258)

* refactor: 유저 컨트롤러 슬라이싱 테스트 verify 추가 및 테스트 오류 수정 (#258)

- 기존 unfollow 테스트가 잘못 진행되고 있었던 부분을 해결

* chore: UserService 헬퍼 메서드 위치 수정 (#258)

* refactor: UserController 응답 생성 헬퍼 메서드 위치 이동 (#258)

* refactor: Follow, Unfollow시 두 유저 동등성 비교 로직 Follow 클래스로 이동 (#258)

* refactor: User의 팔로우, 언팔로우 조건 검사 로직을 Followers, Followings로 이동 (#258)

* chore: User.addComment 테스트 삭제 (#258)

* refactor: AuthUserRequestDto의 AppUser에 대한 정적 팩토리 메서드 추가 (#258)

* refactor: User 컨트롤러 테스트 anyString given/verify 인자 변경 (#258)

* fix: 프로덕션 및 테스트 코드 순서 변경 및 SpringBoot 통합테스트로 인한 Nested 제거 (#258)

* refactor: 병합 충돌 해결 및 AppUser를 서비스에서 사용못하도록 변경 (#258)

* chore: 프로덕션 코드 순서 정렬 및 DTO 필드명 변경 (#258)

* chore: User 관련 테스트 코드 순서 정렬 및 포맷팅 (#258)

* [#293] Logback 인식 불가 버그 해결 (#299)

* fix: logback appender 경로 수정 (#293)

* chore: rest docs 문서 변경

* [#273, #301] profile page 에러처리 수준 수정 및 기타 버그 해결 (#302)

* refactor: 프로필 수정 페이지 서비스로직 분리 및 에러처리 수준 수정

* refactor: 중복되는 validation 제거

* refactor: 불필요한 의존성 제거

* feat: 유저 검색 결과에 유저 프로필 페이지 링크 추가

* fix: 프로필 수정 후 반영이 안되는 이슈 해결

* refactor: api url 변경

* fix: 로그인으로 게시글 조회시 게스트로 인식하던 문제 해결 (#298)

* [#295] 게시물 수정 및 삭제 DB 버그 해결 (#300)

* refactor: findPostByUser -> findPostByIdAndUser 변경 (#295)

* test: Data JPA 테스트 추가 (#295)

* refactor: 생성자 수정 (#295)

* test: 예외 발생 -> Optional.empty() 검증 변경 (#295)

* refactor: 불필요한 코드 삭제 (#295)

* refactor: 해당하는 사용자의 게시물이 맞는지 확인하는 과정 수정 (#295)

- DB에서 처리 -> 비즈니스 로직에서 처리로 변경

* refactor: 불필요한 코드 삭제 (#295)

* test: 불필요한 import 삭제 (#295)

* [#290] 중간 데모 버그를 해결 (#303)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 중간 데모 버그 해결

- 게시글 데이터 속성 중 isLiked -> liked 로 변경
- 로그인 했을 때만 좋아요 버튼이 나타나도록 수정
- 로그인 했을 때만 댓글 달기 버튼이 나타나도록 수정
- 좋아요, 좋아요 취소 상태 반영
로그인 버튼 padding 수정
- 댓글을 추가했을 때 바로 추가된 댓글을 화면에서 확인할 수 있게 수정
- 댓글이 게시글 조회시에는 최대 10개만 나올 수 있도록 수정
- 기존의 댓글 달기 input 을 댓글 슬라이더 토글 버튼으로 변환

* fix: api url 수정 (#305)

* fix: Post - Comments 영속성 전이 버그 해결 (#306) (#307)

* [#308] 게시물 수정 버그 해결 (#309)

* fix: orphanremoval = true 옵션 추가 (#308)

* test: 통합 테스트 추가 (#308)

* [#310] 팀데모 결과 반영 - 프로필 페이지 (#311)

* fix: api url 오타 수정

* fix: 누락된 key prop 추가

* fix: 깃헙통계 기능 임시 api로 수정

* 프로필 페이지 하단 레이아웃 버그 수정

* [#312] 두번째 팀 데모에서 발견된 버그 해결 (#313)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 두번째 팀 데모에서 발견된 버그 해결

- 댓글 추가 시 최근 댓글로 스크롤이 되지 않는 문제 해결
- 게시글 추가, 삭제 시 스낵바를 통해 피드백
- 게시글 좋아요 & 좋아요 취소 결과가 화면에 나타나지 않는 문제 해결
- 게시글 tags 정보 파싱 문제 해결 (보낼 땐 , 기반 join 문자열로, 받을
  때는 일반 문자열 배열로)

* fix: 모바일 상의 레이아웃 및 그래픽 문제 해결

- 모바일 상에서 버튼이나 링크 클릭시 나타나는 기본 하이라이트 컬러 제거
- 댓글 input 패딩 조정
- 프로필 잔디 배경 투명 -> 흰색으로 변경
- kind 가 pills 인 Tabs 컴포넌트의 hover 이펙트 제거(모바일 상에서 클릭된 글씨가 희미해지는 문제 해결)

* [#314] 세번째 팀 데모에서 발견된 버그 해결 (#315)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 2차 데모 세번째 버그 수정

- 댓글 프로필 이미지, 유저 이름이 고정되어 있는 문제 해결
- 게시글 추가 시 레포지터리 목록을 불러오기 위한 계정이 하나로 고정되어 있는 문제 해결
- 임시 레포목록 검색 기능 추가

* [#316] 3차데모 검색 페이지 및 UI 관련 이슈 해결 (#317)

* fix: 검색 결과 리스트에서 팔로우시 깜박거리는 버그 해결

* feat: 게시물 삭제시 컨펌 추가

* fix: 이미지 및 텍스트 인디케이터 사이즈 고정

* feat: 간략히 버튼 추가

* [#318] 네번째 팀 데모에서 발견된 버그 해결 (#319)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 네번째 팀 데모에서 발견된 버그 해결

- 댓글 슬라이더 가로 스크롤링 되는 문제 해결
- 이미지들 총 용량 제한 1MB 로 수정
- 게시글 내용의 개행이 실제로 반영되도록 수정
- 게시글 추가 중 태그 입력 후 tagInputLength 가 0 으로 초기화 되도록 수정

* [#320] 게시물 추가 시 이미지가 없으면 alert처리 (#321)

* fix: 게시물 추가 시 이미지가 없으면 alert 처리

* refactor: 더보기, 간략히 정책 변경

* [#322] 게시글 수정 시 추가 되었다는 메세지가 아닌 수정 되었다는 메세지가 뜨도록 변경 (#323)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 게시글 수정 시 추가 되었다는 메세지가 아닌 수정 되었다는 메세지가 뜨도록 변경

* [#324] 다른 이용자의 UserFeed 좋아요가 동작하지 않는 문제를 해결 (#325)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 다른 이용자의 UserFeed 좋아요가 동작하지 않는 문제 해결

- currentUsername(접속한 이용자) -> username(이용자 피드 페이지의 대상 이용자) 으로 대상 변경

* [#259] 포스트 프로덕션 코드 리팩토링 (#270)

* refactor: Post 프로덕션 코드 리팩토링 (#252)

* refactor: infrastructure 유닛테스트, comment 유닛테스트 리팩토링

* test: Post 관련 유닛테스트 리팩토링

* test: Post application 레이어 관련 테스트 리팩토링

* test: Post 인수 테스트 리팩토링

* test: PostControllerTest 리팩토링 추가

* test: post builder를 사용하도록 변경

* refactor: 리베이스 후 깨지는 테스트 수정 및 누락된 테스트 추가

refactor: Post의 Tag관련 비즈니스 로직 PostTags로 이동 (#259)

이동과 함께 Post의 Build 패턴 적용과 리팩토링.

refactor: PostService와 PostController의 책임 분리. 및 s3Storage 파일 저장 방식 추가 (#259)

feed관련과, 게시물 관련으로 분리하여 관심사를 맞춤.

refactor: 전체적인 import 정리 (#259)

refactor: 패키지 정리 (#259)

refactor: Post의 getImageUrl 중복 메서드 제거 (#259)

refactor: CommentResponse의 도메인 참조 제거 및 DtoAssembler 리팩토링 (#259)

refactor: Feed관련 컨트롤러, 서비스, PostDto어셈블러  리팩토링, 레이어에 맞지 않는 DTO 이동 (#259)

refactor: CommentRequestDto 패키지 변경 및 PostController 리팩토링 (#259)

refactor: PostResponseDto가 presentation~presentation까지 사용되던것을 분리 (#259)

refactor: showRepositories -> userRepositories 메서드명 변경 (#259)

refactor: RepositoryResponse, domain -> controller까지 사용 되던것을 분리 (#259)

style: domain을 제외한 레이어의 구글 컨벤션 체크 (#259)

refactor: PostImageUrlResponseDto Builder 사용하도록 변경

refactor: Post 컨벤션 및 메서드 순서 정리 (#259)

refactor: Post user 관련 메서드명 author로 변경 및 필드, 메서드 정리 (#249)

refactor: PostTag equals getId()로 변경 및 필드 순서 정리 (#249)

refactor: Like를 VO로 취급, Likes를 컨테이너로 취급하도록 변경 (#249)

refactor: Image VO로 취급 및 도움 메서드 네이밍 변경, PostContent validation로직 변경 (#249)

refactor: CommentContent VO 취급, comment 도움메서드 이름 변경 및 책임 변경 (#249)

refactor: Post equals getter를 사용하도록 변경 (#249)

refactor: 연관관계 도움 메서드 반환깂 없도록 변경 (#249)

style: 구글 컨벤션 적용 (#249)

refactor: 추상화 수준 평탄화 작업 (#249)

* refactor: 리베이스 후 깨지는 파일 수정

* fix: User 비교 로직 버그 해결

* refactor: 메서드의 네이밍 변경

* refactor: 디미터의 원칙 준수

* refactor: 사용하지 않는 메서드 제거

* refactor: 깨지는 테스트 수정

* refactor: 타입 추론 변수를 타입형으로 변경

* refactor: 의미가 없는 변수명 제거 like -> 메서드참조

* style: 팀 컨벤션 적용

* [#332] Acceptance Test를 위한 Request builder 기능을 구현. (#333)

* [#200, #205] 태그 관련 이슈 해결 (#216)

* fix: 게시글 추가 시, 초기에 불러온 기본 tag 들이 사라지지 않는 문제를 해결

* feat: 게시글 추가 중 태그 삭제 기능 구현

* fix: break point 에 맞게 어플리케이션 최대 너비를 375px -> 425px 로 조정

* [#217, #110] 테스트 패키지 구조 정리 (#218)

* chore: 인수/통합 테스트 및 common(픽스쳐 팩토리, mock api) 패키지 분리  (#217)

* chore: 기존 도메인 테스트 패키지들을 unit 하위로 이동 (#217)

* refactor: Tag 관련 Github 플랫폼 클래스 이름에 Tag 명시 (#217)

* chore: Test 관련 Configuration 통일 및 Github API 관련 클래스 프로필 설정 (#217)

* chore: 롬복 의존성 추가 (#217)

* refactor: TestConfiguration 클래스명에 Infrastructure 명시 (#217)

* refactor: PostFactory 빌더 패턴 적용하여 가독성 향상

* refactor: 실패하는 테스트 리팩토링

* refactor: UserFactory 빌더 패턴 적용하여 가독성 향상

* refactor: PostFactory 의미 없는 메서드 제거

* refactor: Test Configuration 이름 변경

* refactor: user fixture setUp로직 위치 변경

* refactor: DTO Builder 어노테이션 적용 및 Builder 제공 클래스 제거

* refactor: gradle.build 파일 정리

* style: 의미없는 공백 제거

Co-authored-by: Minsung <sns2831@gmail.com>

* [#223, #229] API 변경사항 반영 및 Post 중복제거 (#235)

* fix: API 명세 변경 사항 반영

- image와 imageUrl에 대한 키값 구분
- public repo를 가져오는 api 명에서 username 제거

* refactor: 불필요한 의존성 제거

* feat: 새로 패치된 post 중복제거

* fix: InfiniteScrollContainer effect 의존성 수정

* refactor: Snackbar 컴포넌트의 위치를 @layout으로 변경

* fix: post interface 수정

* refactor: 스낵바 메시지를 push 하는 메서드 이름을 더 명시적으로 변경

* fix: 중복된 key prop 수정

* feat:  http error 처리 유틸 구현

* refactor: HomeFeedPage의 상태로직을 훅으로 분리

* [#204] Issue 및 PR Template 수정 (#239)

* docs: PR 템플릿 수정

* docs: 이슈 템플릿 등록

* docs: 이슈 템플릿 수정

* docs: 이슈 템플릿 수정

* [#222] 프로필 페이지 피드 버그 수정 (#242)

* refactor: 중복된 게시물을 제거하는 로직을 util로 분리

* feat: 프로필 피드에 무한 스크롤 기능 추가

* refactor: profile page의 상태를 context로 분리

* feat: 팔로우 버튼에 로딩 애니메이션 추가

* refactor: 불필요한 컨테이너 제거

* refactor: ProfilePage 구조 개선

- 훅을 끌어올리는 수준을 작은 범위로 수정
- context를 제거하고 컨테이너 역할을 하는 컴포넌트를 추가

* [#219] 게시글 추가 중 발생하는 에러에 대한 피드백, 핸들링 구현 (#241)

* feat: BackDrop & MessageModalPortal 컴포넌트 구현

- index.html 에 div#modal 태그 추가
- MessageModalPortal 은 리액트 포털을 적용하여 구현
- 해당 컴포넌트를 사용하기 편하도록 useMessageModal 커스텀 훅 제작

* refactor: 필요 없는 import 구문 삭제

* feat: PostContentUploader 컴포넌트 안의 ImageSlider & ImageUploader 와 TextEditor 간의 margin 추가

* feat: 새로운 limits, messages 상수 추가

- message -> messages 로 파일 이름 변경

* feat: 게시글 추가 step 라우팅 path 에 한글이 들어가는 문제 해결

* fix: 필요한 변수 import 경로 수정

* feat: 게시글 추가 중 각각의 에러에 대한 이용자 피드백 구현
- PostAddFormData -> PostUploadData으로 변경
- 이용자의 깃허브 상에 올라와 있는 public repository 가 없으면 피드백 후 이전 페이지로 리다이렉트 시킨다.
- repository 를 선택하지 않고 이미지 & 글 작성으로 넘어가려 한다면 이를 피드백한다.
- 업로드한 이미지가 정해진 용량을 초과할 경우 피드백한다.
- 업로드한 이미지 개수가 정해진 개수를 초과할 경우 피드백한다.
- 이미지 개수가 정해진 개수를 초과할 경우 피드백한다.
- 텍스트 길이가 정해진 길이를 초과할 경우 피드백한다.
- 들어간 태그들 중 중복이 있으면 피드백한다.
- 태그에 '-', '_' 를 제외한 특수문자가 들어갔다면 이를 피드백한다.

* feat: ErrorResponse 타입 생성 및 적용

* feat: API 요청 에러 핸들링 구현

* [#232] 유저 테스트 코드 리팩토링 (#249)

* refactor: 코드 정리 (#232)

* refactor: 사용자 유효성 검증 추가 (#232)

- 게스트인 경우 UnauthorizedException 발생

* refactor: DTO 관련 네이밍 정리 (#232)

* test: 컨트롤러 테스트 리팩토링 (#232)

* test: 서비스 테스트 리팩토링 (#232)

* test: Data JPA 테스트 리팩토링 (#232)

* test: 불필요한 상수 삭제 (#232)

* test: 유저 이름 변경 (#232)

- loginUser/guestUser -> testUser로 통일

* test: 서비스 테스트 추가 (#232)

* test: 서비스 테스트 리팩토링 (#232)

* test: 통합 테스트 리팩토링 (#232)

* test: 인수 테스트 리팩토링 (#232)

* refactor: Builder 사용 (#232)

* refactor: Follow 객체에 책임 위임 (#232)

* test: 접근 제어자 수정 (#232)

* refactor: DTO 리팩토링 (#232)

* test: 불필요한 필드 삭제 (#232)

* test: WebEnvironment 옵션을 RANDOM_PORT -> NONE으로 변경 (#232)

* test: @SpringBootTest -> @DataJpaTest 변경 (#232)

* refactor: API 명세에 맞게 필드명 변경 (#232)

- image -> imageUrl 변경

* [#240] Authentication 관련 테스트 코드 리팩토링 (#247)

* test: authentication 관련 테스트 코드 리팩토링 (#240)

* test: 테스트 코드 리팩토링 (#240)

* refactor: 깃헙 인증 예외 변경 (#240)

* test: Authentication 테스트 코드 피드백 적용 (#240)

* test: HttpHeaders.AUTHORIZATION 으로 변경 (#240)

* [#226, #227] 프로필 수정 모달 구현 (#255)

* feat: Button 컴포넌트에 padding prop 추가

* feat: cancel-no-circle 아이콘 추가

* refactpr: BackDrop을 스타일드 컴포넌트로 수정

* refactor: textEditor 배경을 투명하게 수정

* chore: eslint no empty function 옵션 off

* refactor: css keyframes 파일로 분리

* feat: 카메라 아이콘 추가

* feat: TextEditor 컴포넌트에 indicator 추가(#226)

* refactor: z-index를 컨벤션에 맞게 수정

* feat: 프로필 수정 모달 구현(#227)

* [#246] 댓글 테스트 코드를 리팩토링 (#250)

* refactor: 댓글 관련 테스트 리팩토링

* refactor: 케빈 피드백 반영

* refactor: 댓글 조회 반환시 프로필 이미지 나오도록 수정

* [#220, #226] 네비게이션 ui 수정 및 이미지 인디케이터 추가 (#256)

* refactor: 비로그인 시에도 홈네이게이션 노출

* fix: header와 image slider의 쌓임 순서 버그 해결

* feat: 이미지 인디케이터 구현

* [#234] 태그 테스트 코드를 리팩토링 (#245)

* refactor: 태그 도메인 부분 테스트 리팩토링

* refactor: 태그 슬라이싱 테스트 리팩토링

* refactor: 태그 통합 테스트 리팩토링

* refactor: 태그 인수 테스트 리팩토링

* refactor: connection pool 사용하는 커스텀 RestTemplate 적용

* refactor: Post와 Tag 연관관계 부분 프로덕션 및 테스트 코드 리팩토링

* refactor: 케빈 피드백 적용

- ParameterizedTest 이용하도록 수정
- 중복된 테스트 제거

* refactor: 피드백 반영

* refactor: 소문자로 자동 변환되도록 수정

* refactor: 너잘 피드백 적용

* refactor: 깃헙에서 태그 가져올 때 소문자로 변환되도록 리팩토링

* [#221, #225] 프로필 피드 클릭시 유저 피드 페이지로 이동 (#260)

* fix: 헤더에서 height가 큰 요소들의 레이아웃이 깨지는 버그 해결

* fix: slideButtonKind 복구

* refactor: 타입 단언 제거

* feat: 프로필피드에서 포스트 클릭시 유저 피드 페이지로 이동

* [#251] Post 테스트 코드를 리팩토링  (#252)

* refactor: infrastructure 유닛테스트, comment 유닛테스트 리팩토링

* test: Post 관련 유닛테스트 리팩토링

* test: Post application 레이어 관련 테스트 리팩토링

* test: Post 인수 테스트 리팩토링

* test: PostControllerTest 리팩토링 추가

* test: post builder를 사용하도록 변경

* refactor: 리베이스 후 깨지는 테스트 수정 및 누락된 테스트 추가

* [#183] 게시글 댓글 기능을 구현 (#265)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* feat: HomeFeed 컴포넌트에서 로그인 된 상태에서 자신의 개시글만 수정 아이콘이 뜨도록 변경

* feat: BottomSliderPortal 컴포넌트 구현

* feat: CommentSlider 컴포넌트 구현

* chore: Layout 상수 객체 이름 LAYOUT 으로 변경

* feat: getLastHash util 함수 구현

* feat: getTabTextColor util 함수 구현

* feat: useBottomSlider 훅 구현

* refactor: PostItem 컴포넌트 수정

- 해당 컴포넌트에서 댓글 입력 값 저장 및 수정을 담당하지 않도록 수정
- 댓글 추가 아이콘 버튼 삭제
- Post, CommentData 타입의 id 속성 타입을 string -> number 로 수정

* feat: 댓글 추가 기능 구현

- Tabs 컴포넌트가 tabIndicatorKind 값에 따라 다른 indicator 를 사용하도록 수정
- useFeed -> useFeedMutation 으로 수정
- HomeFeedPage 상에서 useFeed 를 사용하는 것을 useHomeFeed 를 사용하도록 수정
- COMMENT_INPUT_HEIGHT 레이아웃 상수 추가
- 임시용 UserFeedPage 와 TagFeedPage 업데이트 (여전히 임시용)

* fix: CommentSlider 해시 라우팅으로 인해 특정 UserFeedPage 렌더링이 되지 않는 문제 해결

- CommentSlider 를 토글할 때도 history.location 의 state 와 query param 을 그대로 사용하도록 수정
- NavigationHeader 컴포넌트의 height: content-fit 속성 삭제 & 로그아웃 버튼의 padding 값 수정
- HomeFeed -> Feed 로 컴포넌트 이름 수정

* feat: 댓글 저장 시 예외 처리 추가

* [#199, #248, #184] 게시글 삭제 & 게시글 기본 이미지 구현 (#271)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* feat: 게시글 삭제 기능 구현 & 이미지가 없을 시 기본 이미지 보여주기 구현

- 삭제 버튼을 나타나게 만들기 위한 ButtonDrawer 컴포넌트 구현

* feat: TagInputForm 상에서 Tag 입력 중 모바일 가상 키보드가 레이아웃을 깨뜨리는 문제 해결

- 에러 발생시 tag input 을 blur 처리

* [#243] s3 proxy 관련 테스트 리팩토링 (#244)

* chore: s3-proxy properties 포맷을 yaml로 수정 (#243)

* chore: 프로덕션 패키지명 컨벤션맞게 수정 (#243)

* test: S3Storage 슬라이싱 테스트 추가 (#243)

* test: StorageService 슬라이싱 테스트 케이스 추가 (#243)

* refactor: StorageController 슬라이싱 테스트 불필요한 given절 삭제 (#243)

* refactor: 인수 테스트 불필요한 throws절 삭제 (#243)

* refactor: 커스텀 예외 컨벤션에 맞게 에러 코드 추가 (#243)

* refactor: 패키지명 변경 및 구글 컨벤션에 맞게 수정 (#243)

* refactor: 1장이라도 업로드 실패시 예외 발생하도록 변경 (#243)

* [#230] 검색페이지 구현 (#274)

* feat: 검색 mock data 추가

* fix: LoginWrapper children 타입 수정

* feat: search context 추가

* feat: SearchHeader에 SearchContext 적용

* feat: SearchPage 및 검색 기능 구현

* fix: 오타수정

* 추가

* refactor: 불필요한 의존성 제거

* refactor: useFollow분리 및 follow mutation 에러처리 수준 변경

* feat: 유저 검색 결과에서 팔로우 기능 구현

* fix: 검색페이지 진입시 이전 검색 기록 초기화

* [#253] Github 통계 조회 기능 구현 (#263)

* feat: Github 통계 조회 기능 구현 (#253)

* test: 컨트롤러 테스트 작성 (#253)

* test: 서비스 테스트 작성 (#253)

* test: 통합 테스트 작성 (#253)

* test: 인수 테스트 작성 (#253)

* test: 단위 테스트 작성 (#253)

* style: 개행 추가 (#253)

* refactor: 클래스명 변경 (#253)

- PlatformExtractor -> PlatformContributionExtractor
- PlatformApiRequester -> PlatformContributionApiRequester

* refactor: @Profile 추가 (#253)

* refactor: 상수 -> @Value 변경 (#253)

* refactor: 커스텀 예외 추가 (#253)

* test: 단위 테스트 추가 (#253)

* refactor: Calculator 객체로 비즈니스 로직 분리 (#253)

- Service에 있던 비즈니스 로직을 Calculator 객체로 이동
- 단위 테스트 추가

* test: 불필요한 import 삭제

* refactor: 패키지 위치 변경 (#253)

- 인터페이스는 domain, 구현체는 infrastructure에 위치

* style: 접근 제어자 삭제 (#253)

* refactor: Calculator 인터페이스 메소드 반환 타입 변경 (#253)

* refactor: try-catch 문으로 예외 핸들링 (#253)

* test: 단위 테스트 수정 (#253)

* refactor: Calculator 인터페이스 메소드 반환 타입 변경 (#253)

- DTO -> Domain Object

* [#277] useFollow 테스트 작성 (#278)

* feat: SearchPage 및 검색 기능 구현

* refactor: useFollow분리 및 follow mutation 에러처리 수준 변경

* refactor: acceessToken이 없는 경우에 대한 에러코드 추가

* chore: hook 테스트를 위한 라이브러리 설치 및 설정

* refactor: ErrorCode 타입 추가

* refactor: handleHTTPError 모듈 분리

- handleHTTPError 함수를 utils/error.ts로 이동
- 상수 및 타입 분리

* test: useFollow 테스트 코드 작성

* refactor: 파일이름 변경

- constants/httpError.ts 를 constants/error.ts 로 변경

* refactor: useFollow 에러처리

- accesstoken이 없을 경우에 대한 에러처리 추가
- client error를 처리하기 위한 객체 구현

* [#124, #262, #275, #276] 요청 관련 이슈 해결 (#280)

* fix: 프로필 수정 api 형식 변경

- put메서드에서 post메서드로 변경
- 변경된 이미지가 없을경우 빈 파일 객체 전송
- 한 줄 소개가 변경되지 않아도 그대로 보내기

* fix: 검색 api url 변경

* fix: github stats 요소 및 api url 변경

* refactor: 최초 페이지 진입시 토큰이 유효하지 않으면 로그아웃

* fix: 내 게시물의 프로필 영역을 클릭하면 내 프로필 페이지로 이동하도록 수정

* refactor: 유저프로필, 내프로필 분기를 ProfilePage에게 위임

* feat: 최초 진입 이펙트 app으로 분리

* [#257] 게시물 좋아요 기능 구현 (#264)

* feat: 게시물 좋아요 기능 구현 (#257)

* feat: 게시물 좋아요 및 좋아요 취소 기능 테스트 구현 (#257)

* refactor : 피드백 반영 (#257)

* [#236] 로깅 기능 세팅 (#237)

* chore: 활성 프로필에 따른 logback 환경 설정 (#236)

* feat: 전역 예외 어드바이저에 로거 추가 및 DB / 런타임 예외 바인딩 (#236)

* chore: s3proxy directory logback 설정 추가 (#236)

* feat: s3proxy 예외 어드바이저 추가 (#236)

* refactor: applicationException 핸들러 어드바이저 메서드명 수정 (#236)

* refactor: 백엔드 프로젝트 로깅 전략 수정 (#236)

- 테스트 로깅 전략 콘솔로 수정
- DB 관련 로거 종류 프로필별 재정의
- 부모 로거가 찍히지 않도록 additivity false 추가
- 글로벌 예외 어드바이저에 로깅 양식 정의

* chore: logback-access 설정 추가 및 프로필별 설정 구성 (#236)

* chore: s3proxy 프로젝트 logback-access 설정 추가 (#236)

* refactor: s3proxy, backend 프로젝트 log 포맷 변경 (#236)

* chore: backend logger DB, Access 등 용도별 분리 (#236)

* chore: s3proxy logger DB, Access 등 용도별 분리 (#236)

* [#254] 유저 검색 기능을 구현 (#266)

* feat: User 검색 기능 구현

* refactor: 피드백 반영 리팩토링

* refactor: 프론트측과 협의한 부분 리팩토링

* fix: 검색 요청시 user와 tag 분리 (#283)

* [#267] 프로필 수정 기능을 구현 (#279)

* feat: 유저 프로필 수정 기능 구현

* refactor: 피드백 적용

* refactor: 피드백 리팩토링

* [#269] 게시물 수정 및 삭제 기능 구현 (#272)

* feat: 게시물 수정 및 삭제 기능 구현 (#269)

* fix: 게시물 수정 기능 버그 해결 (#269)

* test: 게시물 수정 기능 통합 테스트 작성 (#269)

* fix: 게시물 삭제 기능 버그 해결 (#269)

* test: 게시물 삭제 기능 통합 테스트 작성 (#269)

* test: 게시물 수정 기능 서비스 테스트 작성 (#269)

* test: 게시물 삭제 기능 서비스 테스트 작성 (#269)

* test: 게시물 수정 기능 컨트롤러 테스트 작성 (#269)

* test: 게시물 삭제 기능 컨트롤러 테스트 작성 (#269)

* test: 게시물 수정 기능 인수 테스트 작성 (#269)

* test: 게시물 삭제 기능 인수 테스트 작성 (#269)

* refactor: 정적 팩토리 메소드 삭제 (#269)

* test: 불필요한 테스트 삭제 (#269)

* refactor: Command, Query 분리 (CQS) (#269)

* test: verify() 값 지정 (#269)

* refactor: 상태별로 update() 분리 (#269)

* fix: 해당하는 사용자의 게시물인지 확인하는 로직 추가 (#269)

* [#284] 게시물 수정 및 삭제 버그 해결 (#285)

* test: 통합 테스트 버그 해결 (#284)

* test: 불필요한 테스트 삭제 (#284)

* fix: Github 통계 조회 버그 해결 (#287) (#288)

* refactor: like 관련 DTO 필드명 번경 (#289) (#291)

* fix: restDocs 필드명 수정 및 Boolean으로 변경 (#292) (#297)

* [#228] 게시글 수정 기능 구현 (#286)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* refactor: 게시글 추가 과정에서 필요한 데이터를 일반 컴포넌트에서 불러오지 않고 Page 컴포넌트에서 내려주도록 수정

* feat: 게시글 추가 기능 구현

- 컨벤션에 맞게 useGithubTagsQuery 메서드 수정
- EditPostPage 페이지 컴포넌트 구현
- PostEditDataContext, PostEditStepContext 추가
- usePostEdit, usePostStep 훅 추가

* [#258] 유저 프로덕션 코드 및 테스트 리팩토링 (#268)

* refactor: User 도메인 부족한 팔로우, 언팔로우 등 테스트 추가 (#258)

* refactor: User equals & hashCode 정의시 getter 사용 (#258)

* refactor: Follow 도메인 equals & hashCode 정의시 getter 사용 (#258)

* refactor: Following, Follwers 메서드명 및 선언 순서 변경 (#258)

* refactor: Followings, Followers 테스트 추가 및 생성자 추가 (#258)

* refactor: User.profile 관련 도메인 코드 포맷팅 및 setter 삭제 (#258)

* refacotr: User 내부 Posts에 생성자 변경 및 UserRepository 영속성 테스트 추가 (#258)

* refactor: User 응용 계층 메서드 추출 리팩토링 및 DTO getter 추가 (#258)

* refactor: AppUser의 UserService 침투 제거 및 테스트 코드 계층 분리 (#258)

- AppUser가 서비스 코드에 침투하는 것을 막기 위해 AppUser 추상 클래스에 별도의 이름 호출 메서드를 추가함

* refactor: UserService 통합 테스트 계층적으로 리팩토링 (#258)

* refactor: AuthUserRequest 안쓰는 DTO 및 생성자 삭제와 메서드 파라미터명 통일 (#258)

* refactor: User 테스트 메서드 nested 적용 (#258)

* refactor: User 불필요한 임베디드 타입 getter 삭제 및 테스트 리팩토링 (#258)

* refactor: User 엔티티 내부 임베디드 타입 클래스의 기본 생성자를 protected로 변경 (#258)

* refactor: UserRepository 테스트 nested 적용 (#258)

* refactor: UserService 슬라이싱 테스트 verify 구체화 및 메서드 분리 (#258)

* refactor: UserService 통합 테스트 반복되는 given 부분 메서드 추출 (#258)

* refactor: UserController 슬라이싱 테스트 로그인여부 분리 및 DTO Getter 추가 (#258)

* refactor: User 인수 테스트 반복되는 api 호출 메서드 통일 (#258)

* refactor: 병합 충돌 해결 (#258)

* refactor: UserDataJpaTest Nested C-D-I 명세 변경 (#258)

* refactor: 유저 컨트롤러 슬라이싱 테스트 verify 추가 및 테스트 오류 수정 (#258)

- 기존 unfollow 테스트가 잘못 진행되고 있었던 부분을 해결

* chore: UserService 헬퍼 메서드 위치 수정 (#258)

* refactor: UserController 응답 생성 헬퍼 메서드 위치 이동 (#258)

* refactor: Follow, Unfollow시 두 유저 동등성 비교 로직 Follow 클래스로 이동 (#258)

* refactor: User의 팔로우, 언팔로우 조건 검사 로직을 Followers, Followings로 이동 (#258)

* chore: User.addComment 테스트 삭제 (#258)

* refactor: AuthUserRequestDto의 AppUser에 대한 정적 팩토리 메서드 추가 (#258)

* refactor: User 컨트롤러 테스트 anyString given/verify 인자 변경 (#258)

* fix: 프로덕션 및 테스트 코드 순서 변경 및 SpringBoot 통합테스트로 인한 Nested 제거 (#258)

* refactor: 병합 충돌 해결 및 AppUser를 서비스에서 사용못하도록 변경 (#258)

* chore: 프로덕션 코드 순서 정렬 및 DTO 필드명 변경 (#258)

* chore: User 관련 테스트 코드 순서 정렬 및 포맷팅 (#258)

* [#293]  Logback 인식 불가 버그 해결 (#299)

* fix: logback appender 경로 수정 (#293)

* chore: rest docs 문서 변경

* [#273, #301] profile page 에러처리 수준 수정 및 기타 버그 해결 (#302)

* refactor: 프로필 수정 페이지 서비스로직 분리 및 에러처리 수준 수정

* refactor: 중복되는 validation 제거

* refactor: 불필요한 의존성 제거

* feat: 유저 검색 결과에 유저 프로필 페이지 링크 추가

* fix: 프로필 수정 후 반영이 안되는 이슈 해결

* refactor: api url 변경

* fix: 로그인으로 게시글 조회시 게스트로 인식하던 문제 해결 (#298)

* [#295] 게시물 수정 및 삭제 DB 버그 해결 (#300)

* refactor: findPostByUser -> findPostByIdAndUser 변경 (#295)

* test: Data JPA 테스트 추가 (#295)

* refactor: 생성자 수정 (#295)

* test: 예외 발생 -> Optional.empty() 검증 변경 (#295)

* refactor: 불필요한 코드 삭제 (#295)

* refactor: 해당하는 사용자의 게시물이 맞는지 확인하는 과정 수정 (#295)

- DB에서 처리 -> 비즈니스 로직에서 처리로 변경

* refactor: 불필요한 코드 삭제 (#295)

* test: 불필요한 import 삭제 (#295)

* [#290] 중간 데모 버그를 해결 (#303)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 중간 데모 버그 해결

- 게시글 데이터 속성 중 isLiked -> liked 로 변경
- 로그인 했을 때만 좋아요 버튼이 나타나도록 수정
- 로그인 했을 때만 댓글 달기 버튼이 나타나도록 수정
- 좋아요, 좋아요 취소 상태 반영
로그인 버튼 padding 수정
- 댓글을 추가했을 때 바로 추가된 댓글을 화면에서 확인할 수 있게 수정
- 댓글이 게시글 조회시에는 최대 10개만 나올 수 있도록 수정
- 기존의 댓글 달기 input 을 댓글 슬라이더 토글 버튼으로 변환

* fix: api url 수정 (#305)

* fix: Post - Comments 영속성 전이 버그 해결 (#306) (#307)

* [#308] 게시물 수정 버그 해결 (#309)

* fix: orphanremoval = true 옵션 추가 (#308)

* test: 통합 테스트 추가 (#308)

* [#310] 팀데모 결과 반영 - 프로필 페이지 (#311)

* fix: api url 오타 수정

* fix: 누락된 key prop 추가

* fix: 깃헙통계 기능 임시 api로 수정

* 프로필 페이지 하단 레이아웃 버그 수정

* [#312] 두번째 팀 데모에서 발견된 버그 해결 (#313)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 두번째 팀 데모에서 발견된 버그 해결

- 댓글 추가 시 최근 댓글로 스크롤이 되지 않는 문제 해결
- 게시글 추가, 삭제 시 스낵바를 통해 피드백
- 게시글 좋아요 & 좋아요 취소 결과가 화면에 나타나지 않는 문제 해결
- 게시글 tags 정보 파싱 문제 해결 (보낼 땐 , 기반 join 문자열로, 받을
  때는 일반 문자열 배열로)

* fix: 모바일 상의 레이아웃 및 그래픽 문제 해결

- 모바일 상에서 버튼이나 링크 클릭시 나타나는 기본 하이라이트 컬러 제거
- 댓글 input 패딩 조정
- 프로필 잔디 배경 투명 -> 흰색으로 변경
- kind 가 pills 인 Tabs 컴포넌트의 hover 이펙트 제거(모바일 상에서 클릭된 글씨가 희미해지는 문제 해결)

* [#314] 세번째 팀 데모에서 발견된 버그 해결 (#315)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 2차 데모 세번째 버그 수정

- 댓글 프로필 이미지, 유저 이름이 고정되어 있는 문제 해결
- 게시글 추가 시 레포지터리 목록을 불러오기 위한 계정이 하나로 고정되어 있는 문제 해결
- 임시 레포목록 검색 기능 추가

* [#316] 3차데모 검색 페이지 및 UI 관련 이슈 해결 (#317)

* fix: 검색 결과 리스트에서 팔로우시 깜박거리는 버그 해결

* feat: 게시물 삭제시 컨펌 추가

* fix: 이미지 및 텍스트 인디케이터 사이즈 고정

* feat: 간략히 버튼 추가

* [#318] 네번째 팀 데모에서 발견된 버그 해결 (#319)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 네번째 팀 데모에서 발견된 버그 해결

- 댓글 슬라이더 가로 스크롤링 되는 문제 해결
- 이미지들 총 용량 제한 1MB 로 수정
- 게시글 내용의 개행이 실제로 반영되도록 수정
- 게시글 추가 중 태그 입력 후 tagInputLength 가 0 으로 초기화 되도록 수정

* [#320] 게시물 추가 시 이미지가 없으면 alert처리 (#321)

* fix: 게시물 추가 시 이미지가 없으면 alert 처리

* refactor: 더보기, 간략히 정책 변경

* [#322] 게시글 수정 시 추가 되었다는 메세지가 아닌 수정 되었다는 메세지가 뜨도록 변경 (#323)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 게시글 수정 시 추가 되었다는 메세지가 아닌 수정 되었다는 메세지가 뜨도록 변경

* [#324] 다른 이용자의 UserFeed 좋아요가 동작하지 않는 문제를 해결 (#325)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 다른 이용자의 UserFeed 좋아요가 동작하지 않는 문제 해결

- currentUsername(접속한 이용자) -> username(이용자 피드 페이지의 대상 이용자) 으로 대상 변경

* [#259] 포스트 프로덕션 코드 리팩토링 (#270)

* refactor: Post 프로덕션 코드 리팩토링 (#252)

* refactor: infrastructure 유닛테스트, comment 유닛테스트 리팩토링

* test: Post 관련 유닛테스트 리팩토링

* test: Post application 레이어 관련 테스트 리팩토링

* test: Post 인수 테스트 리팩토링

* test: PostControllerTest 리팩토링 추가

* test: post builder를 사용하도록 변경

* refactor: 리베이스 후 깨지는 테스트 수정 및 누락된 테스트 추가

refactor: Post의 Tag관련 비즈니스 로직 PostTags로 이동 (#259)

이동과 함께 Post의 Build 패턴 적용과 리팩토링.

refactor: PostService와 PostController의 책임 분리. 및 s3Storage 파일 저장 방식 추가 (#259)

feed관련과, 게시물 관련으로 분리하여 관심사를 맞춤.

refactor: 전체적인 import 정리 (#259)

refactor: 패키지 정리 (#259)

refactor: Post의 getImageUrl 중복 메서드 제거 (#259)

refactor: CommentResponse의 도메인 참조 제거 및 DtoAssembler 리팩토링 (#259)

refactor: Feed관련 컨트롤러, 서비스, PostDto어셈블러  리팩토링, 레이어에 맞지 않는 DTO 이동 (#259)

refactor: CommentRequestDto 패키지 변경 및 PostController 리팩토링 (#259)

refactor: PostResponseDto가 presentation~presentation까지 사용되던것을 분리 (#259)

refactor: showRepositories -> userRepositories 메서드명 변경 (#259)

refactor: RepositoryResponse, domain -> controller까지 사용 되던것을 분리 (#259)

style: domain을 제외한 레이어의 구글 컨벤션 체크 (#259)

refactor: PostImageUrlResponseDto Builder 사용하도록 변경

refactor: Post 컨벤션 및 메서드 순서 정리 (#259)

refactor: Post user 관련 메서드명 author로 변경 및 필드, 메서드 정리 (#249)

refactor: PostTag equals getId()로 변경 및 필드 순서 정리 (#249)

refactor: Like를 VO로 취급, Likes를 컨테이너로 취급하도록 변경 (#249)

refactor: Image VO로 취급 및 도움 메서드 네이밍 변경, PostContent validation로직 변경 (#249)

refactor: CommentContent VO 취급, comment 도움메서드 이름 변경 및 책임 변경 (#249)

refactor: Post equals getter를 사용하도록 변경 (#249)

refactor: 연관관계 도움 메서드 반환깂 없도록 변경 (#249)

style: 구글 컨벤션 적용 (#249)

refactor: 추상화 수준 평탄화 작업 (#249)

* refactor: 리베이스 후 깨지는 파일 수정

* fix: User 비교 로직 버그 해결

* refactor: 메서드의 네이밍 변경

* refactor: 디미터의 원칙 준수

* refactor: 사용하지 않는 메서드 제거

* refactor: 깨지는 테스트 수정

* refactor: 타입 추론 변수를 타입형으로 변경

* refactor: 의미가 없는 변수명 제거 like -> 메서드참조

* style: 팀 컨벤션 적용

* feat: PickgitRequest Post Builder 구현

* refactor: PickgitRequest Post Builder 구조 변경

* feat: 명세에 따른 API 구현

* refactor: File을 body로 넣을 시 byte 변환 추가

* refactor: 로그인 모킹 방식 변경

* refactor: 빌더 내부 로그인 기능 구현.

* refactor: initAllParams 메서드 생성

Co-authored-by: SONG WON LEE <swon3210@gmail.com>
Co-authored-by: Jinhong <xlffm3@gmail.com>
Co-authored-by: Tanney102 <57767891+Tanney-102@users.noreply.github.com>
Co-authored-by: DAEUN LEE <leede0418@gmail.com>
Co-authored-by: YunTroubleshooter <63405904+yjksw@users.noreply.github.com>
Co-authored-by: binghe819 <56860124+binghe819@users.noreply.github.com>

* feat: 레이아웃 수정 & 파비콘 추가 (#342)

- Comment, CommentSlider 의 댓글 좋아요 영역 삭제
- PostContentUploader 의 TextEditor 의 텍스트 line-height 재설정

* feat: github stat 훅 분리 및 로그인 시에만 이용하도록 수정 (#343)

* [#344] 태그 기반 검색 기능 구현 (#348)

* refactor: ProfileFeed를 GridFeed로  추상화

* feat: 태그 검색 관련 mock추가

* refactor: getPostsFromPages함수에서 null값도 고려하도록 수정

* feat: 키워드기반 검색 로직 및 훅 구현

* feat: 키워드 기반 검색 썸네일 피드 및 페이지 구현

* fix: search header input 레이아웃 수정

* fix: 검색시 키워드가 뒤늦게 업데이트 되는 이슈 해결

* feat: 다중 검색 지원

* [#349] 태그 클릭 시 검색 페이지로 이동 (#350)

* feat: 게시물 태그 호버 및 클릭 피드백 추가

* feat: 게시물 태그를 클릭하면 태그 기반 게시물 검색 페이지로 이동

* refactor: console.log 제거

* refactor: PostItem 태그 키를 태그 이름으로 변경

* feat: 팔로우/언팔로우 시 깃헙 연동 여부 추가 (#353)

* [#354] 팔로워, 팔로잉 페이지 구현 (#357)

* refactor: 컴포넌트 및 타입 이름 변경

* feat: 팔로잉, 팔로우 리스트 요청 로직 및 훅 구현

* feat: 팔로우, 팔로잉 리스트 페이지 구현

* feat: 팔로우, 팔로잉 페이지에 OneDepthHeader 추가

* [#329] Github 통계 조회 기능 리팩토링 (#345)

* refactor: Github 통계 조회 기능 리팩토링 (#329)

- 로그인 -> 통계 조회 가능
- 비로그인 -> 통계 조회 불가능

* test: 컨트롤러 테스트 추가 (#329)

* test: 서비스 테스트 추가 (#329)

* test: 단위 테스트 추가 (#329)

* test: 서비스 테스트 수정 (#329)

* test: 통합 테스트 수정 (#329)

* test: 인수 테스트 추가 (#329)

* refactor: 필드 초기화 -> 생성자 주입 초기화 변경 (#329)

* style: 코드 포맷팅 변경 (#329)

* refactor: PlatformContributionExtractor 위치 변경 (#329)

* fix: findByKeyToken() 삭제 (#329)

- OAuthAccessTokenDao -> Key로 pick-git JWT, Value로 Github JWT 가지고 있음
- ArgumentResolver -> pick-git JWT(authentication) 기반으로 AppUser(LoginUser)에 Github JWT(accessToken) 바인딩

* test: 컨트롤러 테스트 수정 (#329)

* test: 서비스 테스트 수정 (#329)

* refactor: @Profile 삭제 (#329)

* test: 불필요한 클래스 삭제 (#329)

* test: 인수 테스트 수정 (#329)

* feat: restDocs에 이미지 파일이 깨지는 버그를 수정하고 누락 스니펫을 추가 (#361) (#363)

* [#339] 팔로잉 및 팔로워 목록 조회 기능 (#347)

* feat: userRepository 특정 유저의 팔로잉 및 팔로워 목록 조회 기능 구현 (#339)

* feat: UserService 특정 유저의 팔로잉 목록 조회 기능 구현 (#339)

* feat: UserService 특정 유저의 팔로워 목록 조회 기능 구현 (#339)

* feat: UserController 특정 유저 팔로잉 및 팔로워 조회 기능 구현 (#339)

* feat: 팔로잉 및 팔로워 조회 인수 테스트 작성 (#339)

* refactor: UserController 헬퍼 메서드명 변경 (#339)

* refactor: 팔로잉/팔로워 목록 조회 인수 테스트 API 메서드 변경 (#339)

* chore: 팔로잉/팔로워 rest docs 스니펫 추가 (#339)

* [#330] Github Repositories 조회 기능 리팩토링 (#358)

* refactor: API URL Path에서 username 삭제 (#330)

* test: 불필요한 import 삭제

* refactor: Github Repositories 조회 기능 리팩토링 (#330)

- Pagination 추가 -> API URL Path에 Query Parameter(page, limit) 추가

* refactor: 불필요한 import 삭제

* test: 단위 테스트 추가 (#330)

* test: 서비스 테스트 추가 (#330)

* test: 단위 테스트 수정 (#330)

* refactor: Pageable 사용 (#330)

* [#337] 태그 기반 게시물 검색 기능 구현 (#346)

* feat: tag 기반 post 검색 repository 구현 (#337)

* feat: search service 구현 (#337)

* feat: search controller 구현 (#337)

* test: acceptance Test 구현 (#337)

* refactor: 페키지 구조 변경 (#337)

* test: TagType, SearchTypes 도메인 테스트 작성 (#337)

* test: 서비스 슬라이스 테스트 작성 (#337)

* refactor: 테스트 메소드명 변경 (#337)

* test: Integration test 작성 (#337)

* refactor: 의미 없는 어노테이션 제거

* fix: 스니펫 생성 경로 변경 (#364) (#365)

* [#368] 팀 1차 데모 버그 수정 (#371)

* fix: 팔로우 목록 패딩 조정

* fix: 프로필, 검색 페이지 오버플로우 조정

* fix: 검색 페이지네이션 동작하지 않는 버그 수정

* fix: 깃헙 통계 요소 이름 변경

* fix: 팔로우 시 깃헙 연동 컨펌 닫히지 않는 버그 수정, 컨펌 버튼 텍스트 수정

* fix: spring rest docs html 생성 버그 해결 (#373)

* refactor: 프로필 수정 api 분리 (#369)

* [#378] Logback 설정 리팩토링 (#379)

* refactor: 백엔드 프로젝트 로깅 구조 변경 (#378)

* refactor: s3 프로젝트 로깅 구조 변경 (#378)

* [#340] 프로필 이미지 수정/정보 수정 API 기능 분리 (#352)

* feat: 프로필 이미지 수정 및 한 줄 소개 수정 기능 구현

* chore: 서브 모듈 최신화

* refactor: 피드백 반영

* refactor: User패키지 S3 프록시에 접근하는 인터페이스 분리

* [#380, #335] 인피니트 스크롤링 적용 & CommentSlider -> CommentsPage 로 변경  (#381)

* feat: favicon 웹팩 설정 추가

* feat: 기존의 cancel 아이콘을 delete icon 으로 변경

* feat: RepositorySelector 에 인피니트 스크롤링 적용

- InfiniteScrollContainer 에 throttle 적용

* feat: CommentSlider 의 기능을 CommentsPage 에서 수행하도록 변경

* [#419] JaCoCo 추가 (#422)

* chore: 서…
da-nyee added a commit that referenced this pull request Oct 27, 2021
* [#35 #36] 선택한 Github 레포지토리의 사용 언어 태그 추출 및 태그 저장/조회 기능 구현 (#52)

* chore: 인수 테스트를 위한 RestAssured 의존성 추가 및 테스트 환경 구성 (#35)

* feat: GIthub 특정 Repository에서 Language Tags 추출 (#35)

* feat: Github Tag 추출 서비스 구현 (#35)

* feat: Github Tag 추출 표현 계층 구현 (#35)

* refactor: 태그 추출 기능 중 Github API 호출 부분 인터페이스 분리 (#35)

* refactor: stub token으로 변경

* refactor: controlleradvice tag 패키지 범위 지정

* refactor: GithubTagExtractor 구현체 ObjectMapper 주입 (#35)

* refactor: TagExtractor 피드백 반영 및 컨트롤러 슬라이싱 테스트 추가 (#35)

* refactor: 태그 추출에 로그인 기능 포함 (#35)

* feat: Post 저장시 등록된 Tag도 함께 저장 (#36)

* feat: 이름에 해당하는 Tag가 없을때만 Tag 생성하는 서비스 구현 (#36)

* refactor: 현재 글에 존재하는 Tag와 중복되는 이름의 태그 추가시 예외 발생 (#35)

* refactor: Post에 Tag 정상 등록하는 테스트 추가 (#36)

* refactor: 태그 unique 제약 추가 및 @Transactional 적용 (#36)

* refactor: 태그 도메인 생성 유효성 검사 추가 (#36)

* refactor: 태그 인수 테스트 추가 및 패키지 구조 변경 (#36)

* chore: secret 삭제

* refactor: Rebase 이후 인수 테스트에 로그인 요청 모듈 추가 (#35)

* refactor: 잘못된 토큰으로 요청시 예외 확인 인수 테스트 추가 (#35)

* fix: rebase 이후 실패하는 테스트 보완

* refactor: 태그 추가 실패 에러 및 플랫폼 에러를 커스텀 예외로 변환 및 TagController 반환타입 변경 (#35)

* [#55 #57] 유저 프로필 조회 기능 구현 및 팔로우 팔로잉 기능 구현 (#61)

* feat: 유저 프로필 조회 기능 구현 (#55)

* feat: 유저 프로필 정보에 github url 추가 및 누락 파일 추가 (#55)

* feat: 유저 팔로우 팔로잉 기능 구현 (#57)

* test: 유저 프로필 및 팔로우/팔로잉 테스트 구현 (#55 #57)

* test: 유저 프로필 및 팔로우/팔로잉 테스트 구현(#55 #57)

* refactor: 유저 프로필 및 팔로우/팔로잉 피드백 반영 (#55 #57)

* test: verify() 추가 (#55 #57)

* [#88] LoginPage 구현 (#98)

* fix: 오타 수정

* chore: storybook 설정에 full screen 옵션 추가

* feat: 웹폰트 추가

* feat: GithubIconLarge svg 추가

* fix: button attribute type 오류 해결

* feat: github login mock api 추가

* feat: user context 구현

* fix: ProfileQuery accessToken type error 해결

* feat: github login link 조회 api 구현

* feat: github login 페이지 구현(#88)

* fix: UserContextProvider Props 타이핑 간소화

* feat: Provider 분리 및 UserContextProvider 추가

* feat: access token 조회 api 구현(#88)

* feat: github OAuth 로그인을 처리하는 페이지 구현

* [#104] merge시 누락된 코드 추가 (#105)

* fix: 누락된 interface 정의 추가

* fix: 누락된 prop 추가(commentId)

* fix: 누락된 url constants 추가

* feat: 파일 업로드 기능 구현 (#100)

* [#108] 예외 처리 전략 구현 (#112)

* feat: 예외 처리 전략 구현

* refactor: GlobalExceptionHandler에서 최상위 카테고리인 ApplicationException만 받도록 수정

* refactor: RestControllerAdvice로 수정

* refactor: 예외 로깅용 예외 message 생성자 파라미터 추가

* feat: Button 컴포넌트 kind type 추가(#107) (#111)

- SquaredBlock, RoundedInline추가

* [#102] 게시물에 Github Repository 주소 추가 기능 구현  (#109)

* feat: post 업로드 시 github repository 주소 함께 저장 (#102)

* fix: 불필요한 파일 삭제 (#102)

* refactor: 피드백 반영 (#102)

* [#34] 댓글 기능 구현 (#84)

* feat: Comment 유효성 검증 로직 추가 (#34)

* feat: Post 영속시 Comment 함께 영속화하는 기능 추가 (#34)

* feat: User가 특정 Post에 Comment 추가하는 기능 구현 (#34)

* feat: 등록된 게시물에 Comment 추가하는 서비스 구현 (#34)

* test: Service 통합 테스트 추가 (#34)

* feat: 댓글 추가 API 단위 및 인수 테스트 추가 (#34)

* refactor: CommentFormat 예외 상태코드 변경 및 에러 코드 테스트 검증 (#34)

* refactor: ControllerAdvice 이름을 특정 컨트롤러로 명시 (#34)

* refactor: 코드 병합으로 인한 테스트 코드 및 설정 수정 (#34)

* refactor: rebase 병합 해결 (#34)

* [#37] Github Repositories 조회 기능 구현 (#58)

* feat: Github Repositories 조회 기능 구현

* test: 슬라이스 테스트 작성

* refactor: get -> show 메소드명 수정

* refactor: 클래스명 수정

* refactor: Repository -> Repositories 클래스명 변경

* fix: rebase conflict 해결

* refactor: application -> domain <- infrastructure 방향으로 의존성 흐르도록 수정

* test: given-when-then 구문 수정

* refactor: HttpEntity -> RequestEntity 변경

* test: given-when-then 구문 수정

* refactor: Github Repositories 조회 기능 수정

* test: 컨트롤러 테스트 수정

* test: 슬라이스 테스트 수정

* test: 슬라이스 테스트 작성

* test: 인수 테스트 작성

* test: 통합 테스트 작성

* test: rebase conflict 해결

* feat: 프로필 조회시 팔로우 여부 판단 기능 구현 (#113) (#117)

* [#95] 홈 피드 게시글 조회 (#114)

* feat: 페이징을 통해 게시물을 조회하고 DTO로 변환 (#95)

* refactor: rebase 병합으로 인한 충돌 해결 (#95)

* feat: 게시물 조회 페이징 기능 서비스 테스트 추가 (#95)

* refactor: 게시글 목록 조회 기능 인수 테스트 추가 및 태그 DTO 정리 (#95)

* refactor: Post 조회 RestAssured 메서드 중복 리팩토링 (#95)

* refactor: 병합으로 인한 충돌 해결 (#95)

* refactor: batch size를 통한 페이징 쿼리 성능 개선 (#95)

* refactor: 페이징 fetch join 추가 (#95)

* [#119] 서브모듈 적용 (#120)

* chore: 서브모듈 추가 (#119)

* chore: 서브모듈 적용 (#119)

* chore: 서브모듈 수정 (#119)

* [#87] HomeFeedPage 페이지 컴포넌트 구현 (#121)

* refactor: Provider 와 Global Style 적용을 App.tsx -> Index.tsx 에서 수행

Co-authored-by: Tanney102 <Tanney-102@users.noreply.github.com>

* feat: Profile 페이지 query 초기화

* refactor: CommentData 타입 변경 & Comment 컴포넌트 Props 의 CommentData 타입 의존성 제거

* fix: PostItem 컴포넌트에 댓글 달기 버튼 추가 & Tag 들을 나타내는 Chip 들 추가

- send.svg 추가
- PostItem 스타일링 변경

* chore: webpack 이미지 파일 로더 룰 추가

* feat: TextEditor 컴포넌트 배경색 prop 제거

- 기본 border-radius 제거

* feat: Button kind 별 padding 변화 적용

* feat: 상속용 Styled Component 제작

* feat: Header 컴포넌트들에 모듈 Styled Component 상속 적용

* chore: .vscode 를 gitignore 목록에 추가

* feat: PostItem 컴포넌트 마크업 구조 수정

- 필요하지 않은 prop 할당 삭제

* feat: Header 컴포넌트에 일괄적으로 적용할 높이값 상수화

* feat: PostItem 스타일 속성 수정

* feat: Feed 컴포넌트 구현

* feat: HomeFeedPage 페이지 구현

* feat: FAILURE_MESSAGE & LIMIT 상수 추가

- LIMIT 는 어플리케이션에서 제한하는 데이터 형식을 나타내는 상수들을 담은 객체
- FAILURE_MESSAGE 는 요청 혹은 동작이 실패했을 때 사용자 피드백에 활용될 메세지들을 담은 객체

* feat: HomeFeedPage 라우팅 적용

Co-authored-by: Tanney102 <Tanney-102@users.noreply.github.com>

* [#118] 예외 처리 전략을 적용 및 Entity에 id 동등성 추가  (#122)

* refactor: Authentication 커스텀 예외처리 구현

* refactor: User, Tag 커스텀 예외처리 구현

* refactor: Post, Comment 커스텀 예외처리 구현

* refactor: 엔티티 id 동등성 정의

* refactor: 플랫폼 이니셜 V로 수정

* fix: DataJpaTest에 Date 관련 테스트 설정 추가 (#123)

* [#89] Profile Page 구현 (#126)

* refactor: Provider 와 Global Style 적용을 App.tsx -> Index.tsx 에서 수행

Co-authored-by: Tanney102 <Tanney-102@users.noreply.github.com>

* feat: Profile 페이지 query 초기화

* feat: Avatar 컴포넌트 name의 fontWeight을 bold로 변경

* feat: storybook dummy token 추가

* feat: mock data 및 routes 추가

* chore: svg 아이콘 추가

* fix: Profile interface 수정

* Revert "feat: mock data 및 routes 추가"

This reverts commit ea74c1bfda40c4bacf71283d193fad62927859d7.

* feat: ProfileHeader 컴포넌트 구현 (#89)

* feat: Profile 컴포넌트의 api로직 및 query 구현

* feat: Profile 컴포넌트 구현(#89)

* chore: assets/images의 파일을 .png, .jpg 로 통일

* chore: 이미지 확장자에 대해 url loader추가

* feat: profile 관련 mock api 추가

* feat: default Profile 이미지를 svg에서 png 파일로 변경

* refactor: profile page url을 하나로 통일

* feat: main 태그 추가

* feat: Profile컴포넌트 story 추가

* refactor: Profile url에 userType param 추가

* refactor: isMyProfile 속성을 Profile컴포넌트의 상위로 이동

* feat: Tabs 컴포넌트에 해당 탭에 대한 컨텐츠 추가

* feat: LoggedInWrapper util로 분리

* feat: ProfileFeed 컴포넌트 레이아웃 구현

* feat: mock data 추가

* feat: svg icon 추가

* refactor: 불필요한 코드 제거 및 누락 코드 보충

- 불필요한 의존성 제거
- 누락된 key prop 추가
- tab 스타일 변경
- 중복된 코드 제거

* feat: 프로필 피드에 비동기 로직 추가

* feat: GithubStatistics 컴포넌트 구현

* feat: Profile Page 구현(#89)

* refactor: 불필요한 interface 제거

* feat: 로그인 페이지 레이아웃 수정 및 홈 버튼 추가

* feat: 레이아웃 수정

* fix: 누락된 accessToken 추가

* refactor: 불필요한 코드 제거

* feat: 스타일 변경

- main widht를 모바일 사이즈로 고정
- black button 패딩 조정

* feat: 데모를 위해 항상 로그인 상태를 유지하도록 수정

* feat: 반응형 레이아웃 적용

* refactor: optional한 엘리먼트를 JSX로 처리

* refactor: error에 따른 ui 분기를 선언적으로 명시

Co-authored-by: SONG WON LEE <swon3210@gmail.com>
Co-authored-by: Tanney102 <Tanney-102@users.noreply.github.com>

* feat: 젠킨스 설정 파일 생성 (#133)

* refactor: 비로그인 유저로도 홈 피드 조회를 하도록 수정 (#134) (#135)

* fix: 파라미터 없이 route하도록 url 및 관련 코드 수정 (#131)

* fix: s3storage bean 탐색을 하지 못하는 버그 수정 (#136)

* [hotfix] CORS 버그 해결 (#138)

* fix: CORS 버그 해결

* chore: security 수정

* [#137] 내 프로필 계정의 게시물을 조회한다. (#139)

* feat: 내 프로필 계정의 게시물을 조회 기능 구현 (#137)

* refactor: Jenkins 빌드 스크립트 sleep을 3에서 10으로 변경

* [chore] api mocking 관련 코드 수정 (#140)

* feat: 무한스크롤 구현 전임을 감안하여 posts 조회시 page, limit mock

* feat: login mock 제거

* chore: 배포 환경에 따라 api proxy여부 분기

* chore: 운영 환경 설정 서브 모듈을 추가 (#143) (#144)

* [#141] 다른 유저의 프로필 계정의 게시물 조회  (#142)

* feat: 다른 유저의 프로필 피드를 조회하는 기능 구현 (#141)

* refactor: Pageable 사용하도록 수정 (#141)

* fix: PostRepository에 @Param 추가 (#145)

* [#146] 로그인 반환 값에 유저 네임 추가 및 인터셉터 매치 기능 리팩토링 (#147)

* refactor: PathPattern 인터셉터 URL과 Method를 통해 매치되도록 리팩토링

* refactor: 로그인후 반환할 때 토큰과 함께 유저 네임도 보내도록 수정

* fix: 응답 파싱 에러 수정 (#148)

* [#129] follow 추가, 취소 기능 구현 (#149)

* fix: 폰트 import 위치 변경

* feat: follow 추가, 취소 기능 구현(#129)

* feat: 어플리케이션 진입시 로그인 상태 확인

* refactor: submodule의 remote branch 기준을 main으로 변경 (#155)

master -> main

* refactor: 젠킨슨 빌드 유발 방식 변경에 따른 스크립트 수정 (#157)

* [#152] 응답 파싱 에러 수정 (#153)

* fix: 응답 파싱 에러 수정

* refactor: build.gradle 형식 통일

* fix: 비정상 파일 이름및 확장자 도출 버그 해결 (#160)

* [#163] 빌드 에러를 확인하다. (#164)

* fix: 비정상 파일 이름및 확장자 도출 버그 해결

* fix: 사용하지 않는 모듈 import로 인한 빌드 에러 수정

* fix: 사용하지 않는 모듈 import로 인한 빌드 에러 수정 (#165)

* [#106] request DTO 유효성 검사 추가 (#151)

* refactor: Client - Controller DTO명 변경 (#106)

* style: 파라미터 개행 수정 (#106)

* style: 메소드 개행 수정 (#106)

* test: 클래스명 변경 및 패키지 구조 변경 (#106)

* test: 불필요한 주석 삭제 (#106)

* feat: 서브모듈 추가 (#143)

* refactor: 기본 생성자 접근 제어자 변경 (#106)

* refactor: application-prod.yml 삭제 (#106)

* refactor: 적용되지 않는 Bean Validation 삭제 (#106)

* refactor: request DTO에 Bean Validation 추가 (#106)

* refactor: application-prod.yml 삭제 (#106)

* refactor: 서브모듈 수정

* refactor: 에러 메시지 수정 (#106)

* refactor: DTO 네이밍 수정 (#106)

* [#169] 파일 주소가 제대로 반환되지 않는 버그 수정 (#170)

* fix: 사용하지 않는 모듈 import로 인한 빌드 에러 수정

* fix: 파일 경로가 제대로 반환되지 않는 버그 수정

* refactor:사용하지 않는 import 제거

* [fix] 프론트엔드 이슈 수정 (#171)

* fix: 새로고침시 로그인 상태를 유지하도록 수정

* fix: 오타수정

* fix: query에 자기 이름으로 profile페이지 들어올 경우 redirect

* feat: 프로필 페이지 빈 게시물 표시 추가

* [fix] 프론트엔드 버그 수정 (#172)

* refactor: 불필요한 의존성 제거

* fix: url 오타 수정

* fix: 게시물 태그 문자열 파싱 오류 해결

* [#173] Feature/loader and infinite scroll container (#175)

* feat: Loader 컴포넌트 구현

* feat: InfiniteScrollContainer 컴포넌트 구현

* [#90] AddPostPage 페이지 컴포넌트 구현 (#176)

* feat: AddPostPage 구성 컴포넌트 구현

- PostAddStepHeader 컴포넌트 구현
- PostContentUploader 컴포넌트 구현
- RepositorySelector 컴포넌트 구현
- TagInputForm 컴포넌트 구현
- githube 아이콘 추가

* feat: separatorColor theme 색상 추가

* feat: AddPostPage 구현

- ImageUploader 컴포넌트 prop 명 변경
- 게시물 업로드에 사용되는 객체들의 타입 추가
- 게시물 업로드에 사용되는 API_URL, GITHUB_URL, STEPS 상수 추가
- PostAddDataContext & PostAddStepContext 추가

* fix: Noto Sans 웹폰트가 로드되지 않는 문제 해결

* feat: requestAddPost 요청 함수 구현

* feat: Input 컴포넌트에 name prop 추가

* feat: LIMIT 상수 객체에 FEED_COUNT_PER_FETCH 속성 추가

* feat: requestGetHomeFeedPosts 요청 함수에 기본 pageIndex 제공

* feat: PostAddDataContextProvider 적용 지점 변경 App -> AddPostPage 컴포넌트 바로 위

* feat: 태그 추가 후 태그 입력 Input 내용이 비워지도록 설정

* [#161] 회원/비회원 모두 받을 수 있는 API 토큰 검증 로직 수정 (#167)

* refactor: 표현 계층과 응용 계층의 반환하는 DTO 네이밍 통일

* refactor: 회원/비회원 모두 받을 수 있는 API 토큰 검증 로직을 수정한다.

- 기존 로직: 회원/비회원 모두 처리하는 API (ex. /api/posts)에서 토큰이 잘못된 경우 GuestUser로 처리.
- 수정 로직: 회원/비회원 모두 처리하는 API (ex. /api/posts)에서 토큰이 잘못된 경우 401 예외 발생.

* chore: 설정 수정

* refactor: 상수화

* refactor: 포맷팅 수정

* [#128] Infinite Scroll 기능 구현 (#178)

* feat: Infinite Scroll 기능 구현

* feat: 페이지 컴포넌트에서 데이터를 fetch 받도록 수정

* feat: TagFeedPage & UserFeed 페이지 추가

- 기능 구현 X
- PAGE_URL 상수 추가

* feat: 기존의 평문으로 제공되던 userName 을 로그인 된 유저 이름이 제공되도록 변경

* [#177] 게시물 시간 형식 추가 (#180)

* feat: 게시물 시간 정보 수정

* fix: 시간 형식 수정

* [#181] 요청에 userName 이 동적으로 들어가지 않는 문제를 해결 (#182)

* feat: Infinite Scroll 기능 구현

* feat: 페이지 컴포넌트에서 데이터를 fetch 받도록 수정

* feat: TagFeedPage & UserFeed 페이지 추가

- 기능 구현 X
- PAGE_URL 상수 추가

* feat: 기존의 평문으로 제공되던 userName 을 로그인 된 유저 이름이 제공되도록 변경

* fix: 요청에 userName 이 동적으로 들어가지 않는 문제 해결

- 필요없는 console.log 제거

* fix: userName 과 repositoryName 이 없을 때 데이터가 fetch 되는 버그를 해결 (#186)

- userName 이 파라미터로 들어가지 않은 문제 해결

* refactor: 홈피드를 최신 순으로 조회하도록 수정 (#189) (#191)

* [#162] 태그 추출 API 명세 변경 (#166)

* refactor: 태그 추출 api에서 name 제외 (#162)

* [#106] request DTO 유효성 검사 추가 (#151)

* refactor: Client - Controller DTO명 변경 (#106)

* style: 파라미터 개행 수정 (#106)

* style: 메소드 개행 수정 (#106)

* test: 클래스명 변경 및 패키지 구조 변경 (#106)

* test: 불필요한 주석 삭제 (#106)

* feat: 서브모듈 추가 (#143)

* refactor: 기본 생성자 접근 제어자 변경 (#106)

* refactor: application-prod.yml 삭제 (#106)

* refactor: 적용되지 않는 Bean Validation 삭제 (#106)

* refactor: request DTO에 Bean Validation 추가 (#106)

* refactor: application-prod.yml 삭제 (#106)

* refactor: 서브모듈 수정

* refactor: 에러 메시지 수정 (#106)

* refactor: DTO 네이밍 수정 (#106)

* [#169] 파일 주소가 제대로 반환되지 않는 버그 수정 (#170)

* fix: 사용하지 않는 모듈 import로 인한 빌드 에러 수정

* fix: 파일 경로가 제대로 반환되지 않는 버그 수정

* refactor:사용하지 않는 import 제거

* [fix] 프론트엔드 이슈 수정 (#171)

* fix: 새로고침시 로그인 상태를 유지하도록 수정

* fix: 오타수정

* fix: query에 자기 이름으로 profile페이지 들어올 경우 redirect

* feat: 프로필 페이지 빈 게시물 표시 추가

* [fix] 프론트엔드 버그 수정 (#172)

* refactor: 불필요한 의존성 제거

* fix: url 오타 수정

* fix: 게시물 태그 문자열 파싱 오류 해결

* [#173] Feature/loader and infinite scroll container (#175)

* feat: Loader 컴포넌트 구현

* feat: InfiniteScrollContainer 컴포넌트 구현

* [#90] AddPostPage 페이지 컴포넌트 구현 (#176)

* feat: AddPostPage 구성 컴포넌트 구현

- PostAddStepHeader 컴포넌트 구현
- PostContentUploader 컴포넌트 구현
- RepositorySelector 컴포넌트 구현
- TagInputForm 컴포넌트 구현
- githube 아이콘 추가

* feat: separatorColor theme 색상 추가

* feat: AddPostPage 구현

- ImageUploader 컴포넌트 prop 명 변경
- 게시물 업로드에 사용되는 객체들의 타입 추가
- 게시물 업로드에 사용되는 API_URL, GITHUB_URL, STEPS 상수 추가
- PostAddDataContext & PostAddStepContext 추가

* fix: Noto Sans 웹폰트가 로드되지 않는 문제 해결

* feat: requestAddPost 요청 함수 구현

* feat: Input 컴포넌트에 name prop 추가

* feat: LIMIT 상수 객체에 FEED_COUNT_PER_FETCH 속성 추가

* feat: requestGetHomeFeedPosts 요청 함수에 기본 pageIndex 제공

* feat: PostAddDataContextProvider 적용 지점 변경 App -> AddPostPage 컴포넌트 바로 위

* feat: 태그 추가 후 태그 입력 Input 내용이 비워지도록 설정

* [#161] 회원/비회원 모두 받을 수 있는 API 토큰 검증 로직 수정 (#167)

* refactor: 표현 계층과 응용 계층의 반환하는 DTO 네이밍 통일

* refactor: 회원/비회원 모두 받을 수 있는 API 토큰 검증 로직을 수정한다.

- 기존 로직: 회원/비회원 모두 처리하는 API (ex. /api/posts)에서 토큰이 잘못된 경우 GuestUser로 처리.
- 수정 로직: 회원/비회원 모두 처리하는 API (ex. /api/posts)에서 토큰이 잘못된 경우 401 예외 발생.

* chore: 설정 수정

* refactor: 상수화

* refactor: 포맷팅 수정

* [#128] Infinite Scroll 기능 구현 (#178)

* feat: Infinite Scroll 기능 구현

* feat: 페이지 컴포넌트에서 데이터를 fetch 받도록 수정

* feat: TagFeedPage & UserFeed 페이지 추가

- 기능 구현 X
- PAGE_URL 상수 추가

* feat: 기존의 평문으로 제공되던 userName 을 로그인 된 유저 이름이 제공되도록 변경

* [#177] 게시물 시간 형식 추가 (#180)

* feat: 게시물 시간 정보 수정

* fix: 시간 형식 수정

* [#181] 요청에 userName 이 동적으로 들어가지 않는 문제를 해결 (#182)

* feat: Infinite Scroll 기능 구현

* feat: 페이지 컴포넌트에서 데이터를 fetch 받도록 수정

* feat: TagFeedPage & UserFeed 페이지 추가

- 기능 구현 X
- PAGE_URL 상수 추가

* feat: 기존의 평문으로 제공되던 userName 을 로그인 된 유저 이름이 제공되도록 변경

* fix: 요청에 userName 이 동적으로 들어가지 않는 문제 해결

- 필요없는 console.log 제거

* fix: userName 과 repositoryName 이 없을 때 데이터가 fetch 되는 버그를 해결 (#186)

- userName 이 파라미터로 들어가지 않은 문제 해결

* refactor: 홈피드를 최신 순으로 조회하도록 수정 (#189) (#191)

* refactor: 태그 추출 api에서 name 제외 (#162)

Co-authored-by: DAEUN LEE <leede0418@gmail.com>
Co-authored-by: Minsung Son <sns2831@gmail.com>
Co-authored-by: Tanney102 <57767891+Tanney-102@users.noreply.github.com>
Co-authored-by: SONG WON LEE <swon3210@gmail.com>
Co-authored-by: binghe819 <56860124+binghe819@users.noreply.github.com>

* [#192] 프로필 페이지 401에러 미처리 이슈 해결 (#196)

* refactor: 변수 이름 수정, userName을 username으로 통일

* refactor: localStorage관련 로직 변경

* fix: 유효하지 않은 토큰에 대해 프로필 정보 리패치

* refactor: storage 모듈이 각 함수를 export 하도록 변경

* fix: 유효하지 않은 토큰에 대해 프로필 피드 리패치

* fix: github tas api url 변경 반영

* refactor: 타입가드 추가

* [#179] Github Repositories 조회 기능 수정 (#195)

* refactor: 서브모듈 수정

* refactor: Github Repository URL도 함께 응답 (#179)

* refactor: htmlUrl -> url 변수명 변경 (#179)

* [#197] 레이아웃 및 UI를 개선 (#198)

* feat: 더 이상 불러올 데이터가 없으면 Loader 가 사라지도록 Infinite Scroll 기능 수정

- Feed 데이터를 Page 에서 넘겨주도록 재설정
- 세부 기능이 구현되지 않은 TagFeedPage, UserFeedPage 페이지 컴포넌트 추가(HomeFeedPage 와 현재는 기능 동일)
- 데이터 로딩 시 화면에 나타낼 PageLoading 컴포넌트 구현

* feat: 모든 ul 태그의 margin을 0으로 하는 전역 스타일링 적용

* feat: 데이터 로딩 시 PageLoading 컴포넌트가 나타나도록 설정

- Profile, RepositorySelector, TagInputForm 컴포넌트에 적용

* feat: PostItem 컴포넌트 padding 값 수정

* feat: 모바일 반응형 break point 재설정 &  각 페이지 컴포넌트의 Container 에 Page 스타일드 컴포넌트 확장 적용

* feat: RepositorySelector 컴포넌트의 RepositoryList 에 고정 높이 값 적용

- 내용물이 높이값을 초과할 시 스크롤이 나타나도록 설정

* feat: 로그아웃 버튼 추가 (#203)

* [#194] REST Docs 적용 (#201)

* feat: 문서화 코드 작성

* feature: 문서화 로직 및 기반 파일 구성

* [#207] 배포 자동화 버그 수정 (#208)

* refactor: 빌드와 테스트를 하나의 stage로 합침.

* refactor: 기존 process 제거 시 SIGKILL로 변경

* fix: 누락된 스크립트 추가.

* [#91] Snackbar 구현 (#209)

* fix: 컴포넌트 이름과 중복되는 interface 이름 변경

* feat: 스낵바 구현

* chore: 배포 환경에 따라 api url 분기 (#211)

* chore: 프론트엔드 빌드 커맨드 수정 (#214)

* [#200, #205] 태그 관련 이슈 해결 (#216)

* fix: 게시글 추가 시, 초기에 불러온 기본 tag 들이 사라지지 않는 문제를 해결

* feat: 게시글 추가 중 태그 삭제 기능 구현

* fix: break point 에 맞게 어플리케이션 최대 너비를 375px -> 425px 로 조정

* [#217, #110] 테스트 패키지 구조 정리 (#218)

* chore: 인수/통합 테스트 및 common(픽스쳐 팩토리, mock api) 패키지 분리  (#217)

* chore: 기존 도메인 테스트 패키지들을 unit 하위로 이동 (#217)

* refactor: Tag 관련 Github 플랫폼 클래스 이름에 Tag 명시 (#217)

* chore: Test 관련 Configuration 통일 및 Github API 관련 클래스 프로필 설정 (#217)

* chore: 롬복 의존성 추가 (#217)

* refactor: TestConfiguration 클래스명에 Infrastructure 명시 (#217)

* refactor: PostFactory 빌더 패턴 적용하여 가독성 향상

* refactor: 실패하는 테스트 리팩토링

* refactor: UserFactory 빌더 패턴 적용하여 가독성 향상

* refactor: PostFactory 의미 없는 메서드 제거

* refactor: Test Configuration 이름 변경

* refactor: user fixture setUp로직 위치 변경

* refactor: DTO Builder 어노테이션 적용 및 Builder 제공 클래스 제거

* refactor: gradle.build 파일 정리

* style: 의미없는 공백 제거

Co-authored-by: Minsung <sns2831@gmail.com>

* [#223, #229] API 변경사항 반영 및 Post 중복제거 (#235)

* fix: API 명세 변경 사항 반영

- image와 imageUrl에 대한 키값 구분
- public repo를 가져오는 api 명에서 username 제거

* refactor: 불필요한 의존성 제거

* feat: 새로 패치된 post 중복제거

* fix: InfiniteScrollContainer effect 의존성 수정

* refactor: Snackbar 컴포넌트의 위치를 @layout으로 변경

* fix: post interface 수정

* refactor: 스낵바 메시지를 push 하는 메서드 이름을 더 명시적으로 변경

* fix: 중복된 key prop 수정

* feat:  http error 처리 유틸 구현

* refactor: HomeFeedPage의 상태로직을 훅으로 분리

* [#204] Issue 및 PR Template 수정 (#239)

* docs: PR 템플릿 수정

* docs: 이슈 템플릿 등록

* docs: 이슈 템플릿 수정

* docs: 이슈 템플릿 수정

* [#222] 프로필 페이지 피드 버그 수정 (#242)

* refactor: 중복된 게시물을 제거하는 로직을 util로 분리

* feat: 프로필 피드에 무한 스크롤 기능 추가

* refactor: profile page의 상태를 context로 분리

* feat: 팔로우 버튼에 로딩 애니메이션 추가

* refactor: 불필요한 컨테이너 제거

* refactor: ProfilePage 구조 개선

- 훅을 끌어올리는 수준을 작은 범위로 수정
- context를 제거하고 컨테이너 역할을 하는 컴포넌트를 추가

* [#219] 게시글 추가 중 발생하는 에러에 대한 피드백, 핸들링 구현 (#241)

* feat: BackDrop & MessageModalPortal 컴포넌트 구현

- index.html 에 div#modal 태그 추가
- MessageModalPortal 은 리액트 포털을 적용하여 구현
- 해당 컴포넌트를 사용하기 편하도록 useMessageModal 커스텀 훅 제작

* refactor: 필요 없는 import 구문 삭제

* feat: PostContentUploader 컴포넌트 안의 ImageSlider & ImageUploader 와 TextEditor 간의 margin 추가

* feat: 새로운 limits, messages 상수 추가

- message -> messages 로 파일 이름 변경

* feat: 게시글 추가 step 라우팅 path 에 한글이 들어가는 문제 해결

* fix: 필요한 변수 import 경로 수정

* feat: 게시글 추가 중 각각의 에러에 대한 이용자 피드백 구현
- PostAddFormData -> PostUploadData으로 변경
- 이용자의 깃허브 상에 올라와 있는 public repository 가 없으면 피드백 후 이전 페이지로 리다이렉트 시킨다.
- repository 를 선택하지 않고 이미지 & 글 작성으로 넘어가려 한다면 이를 피드백한다.
- 업로드한 이미지가 정해진 용량을 초과할 경우 피드백한다.
- 업로드한 이미지 개수가 정해진 개수를 초과할 경우 피드백한다.
- 이미지 개수가 정해진 개수를 초과할 경우 피드백한다.
- 텍스트 길이가 정해진 길이를 초과할 경우 피드백한다.
- 들어간 태그들 중 중복이 있으면 피드백한다.
- 태그에 '-', '_' 를 제외한 특수문자가 들어갔다면 이를 피드백한다.

* feat: ErrorResponse 타입 생성 및 적용

* feat: API 요청 에러 핸들링 구현

* [#232] 유저 테스트 코드 리팩토링 (#249)

* refactor: 코드 정리 (#232)

* refactor: 사용자 유효성 검증 추가 (#232)

- 게스트인 경우 UnauthorizedException 발생

* refactor: DTO 관련 네이밍 정리 (#232)

* test: 컨트롤러 테스트 리팩토링 (#232)

* test: 서비스 테스트 리팩토링 (#232)

* test: Data JPA 테스트 리팩토링 (#232)

* test: 불필요한 상수 삭제 (#232)

* test: 유저 이름 변경 (#232)

- loginUser/guestUser -> testUser로 통일

* test: 서비스 테스트 추가 (#232)

* test: 서비스 테스트 리팩토링 (#232)

* test: 통합 테스트 리팩토링 (#232)

* test: 인수 테스트 리팩토링 (#232)

* refactor: Builder 사용 (#232)

* refactor: Follow 객체에 책임 위임 (#232)

* test: 접근 제어자 수정 (#232)

* refactor: DTO 리팩토링 (#232)

* test: 불필요한 필드 삭제 (#232)

* test: WebEnvironment 옵션을 RANDOM_PORT -> NONE으로 변경 (#232)

* test: @SpringBootTest -> @DataJpaTest 변경 (#232)

* refactor: API 명세에 맞게 필드명 변경 (#232)

- image -> imageUrl 변경

* [#240] Authentication 관련 테스트 코드 리팩토링 (#247)

* test: authentication 관련 테스트 코드 리팩토링 (#240)

* test: 테스트 코드 리팩토링 (#240)

* refactor: 깃헙 인증 예외 변경 (#240)

* test: Authentication 테스트 코드 피드백 적용 (#240)

* test: HttpHeaders.AUTHORIZATION 으로 변경 (#240)

* [#226, #227] 프로필 수정 모달 구현 (#255)

* feat: Button 컴포넌트에 padding prop 추가

* feat: cancel-no-circle 아이콘 추가

* refactpr: BackDrop을 스타일드 컴포넌트로 수정

* refactor: textEditor 배경을 투명하게 수정

* chore: eslint no empty function 옵션 off

* refactor: css keyframes 파일로 분리

* feat: 카메라 아이콘 추가

* feat: TextEditor 컴포넌트에 indicator 추가(#226)

* refactor: z-index를 컨벤션에 맞게 수정

* feat: 프로필 수정 모달 구현(#227)

* [#246] 댓글 테스트 코드를 리팩토링 (#250)

* refactor: 댓글 관련 테스트 리팩토링

* refactor: 케빈 피드백 반영

* refactor: 댓글 조회 반환시 프로필 이미지 나오도록 수정

* [#220, #226] 네비게이션 ui 수정 및 이미지 인디케이터 추가 (#256)

* refactor: 비로그인 시에도 홈네이게이션 노출

* fix: header와 image slider의 쌓임 순서 버그 해결

* feat: 이미지 인디케이터 구현

* [#234] 태그 테스트 코드를 리팩토링 (#245)

* refactor: 태그 도메인 부분 테스트 리팩토링

* refactor: 태그 슬라이싱 테스트 리팩토링

* refactor: 태그 통합 테스트 리팩토링

* refactor: 태그 인수 테스트 리팩토링

* refactor: connection pool 사용하는 커스텀 RestTemplate 적용

* refactor: Post와 Tag 연관관계 부분 프로덕션 및 테스트 코드 리팩토링

* refactor: 케빈 피드백 적용

- ParameterizedTest 이용하도록 수정
- 중복된 테스트 제거

* refactor: 피드백 반영

* refactor: 소문자로 자동 변환되도록 수정

* refactor: 너잘 피드백 적용

* refactor: 깃헙에서 태그 가져올 때 소문자로 변환되도록 리팩토링

* [#221, #225] 프로필 피드 클릭시 유저 피드 페이지로 이동 (#260)

* fix: 헤더에서 height가 큰 요소들의 레이아웃이 깨지는 버그 해결

* fix: slideButtonKind 복구

* refactor: 타입 단언 제거

* feat: 프로필피드에서 포스트 클릭시 유저 피드 페이지로 이동

* [#251] Post 테스트 코드를 리팩토링  (#252)

* refactor: infrastructure 유닛테스트, comment 유닛테스트 리팩토링

* test: Post 관련 유닛테스트 리팩토링

* test: Post application 레이어 관련 테스트 리팩토링

* test: Post 인수 테스트 리팩토링

* test: PostControllerTest 리팩토링 추가

* test: post builder를 사용하도록 변경

* refactor: 리베이스 후 깨지는 테스트 수정 및 누락된 테스트 추가

* [#183] 게시글 댓글 기능을 구현 (#265)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* feat: HomeFeed 컴포넌트에서 로그인 된 상태에서 자신의 개시글만 수정 아이콘이 뜨도록 변경

* feat: BottomSliderPortal 컴포넌트 구현

* feat: CommentSlider 컴포넌트 구현

* chore: Layout 상수 객체 이름 LAYOUT 으로 변경

* feat: getLastHash util 함수 구현

* feat: getTabTextColor util 함수 구현

* feat: useBottomSlider 훅 구현

* refactor: PostItem 컴포넌트 수정

- 해당 컴포넌트에서 댓글 입력 값 저장 및 수정을 담당하지 않도록 수정
- 댓글 추가 아이콘 버튼 삭제
- Post, CommentData 타입의 id 속성 타입을 string -> number 로 수정

* feat: 댓글 추가 기능 구현

- Tabs 컴포넌트가 tabIndicatorKind 값에 따라 다른 indicator 를 사용하도록 수정
- useFeed -> useFeedMutation 으로 수정
- HomeFeedPage 상에서 useFeed 를 사용하는 것을 useHomeFeed 를 사용하도록 수정
- COMMENT_INPUT_HEIGHT 레이아웃 상수 추가
- 임시용 UserFeedPage 와 TagFeedPage 업데이트 (여전히 임시용)

* fix: CommentSlider 해시 라우팅으로 인해 특정 UserFeedPage 렌더링이 되지 않는 문제 해결

- CommentSlider 를 토글할 때도 history.location 의 state 와 query param 을 그대로 사용하도록 수정
- NavigationHeader 컴포넌트의 height: content-fit 속성 삭제 & 로그아웃 버튼의 padding 값 수정
- HomeFeed -> Feed 로 컴포넌트 이름 수정

* feat: 댓글 저장 시 예외 처리 추가

* [#199, #248, #184] 게시글 삭제 & 게시글 기본 이미지 구현 (#271)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* feat: 게시글 삭제 기능 구현 & 이미지가 없을 시 기본 이미지 보여주기 구현

- 삭제 버튼을 나타나게 만들기 위한 ButtonDrawer 컴포넌트 구현

* feat: TagInputForm 상에서 Tag 입력 중 모바일 가상 키보드가 레이아웃을 깨뜨리는 문제 해결

- 에러 발생시 tag input 을 blur 처리

* [#243] s3 proxy 관련 테스트 리팩토링 (#244)

* chore: s3-proxy properties 포맷을 yaml로 수정 (#243)

* chore: 프로덕션 패키지명 컨벤션맞게 수정 (#243)

* test: S3Storage 슬라이싱 테스트 추가 (#243)

* test: StorageService 슬라이싱 테스트 케이스 추가 (#243)

* refactor: StorageController 슬라이싱 테스트 불필요한 given절 삭제 (#243)

* refactor: 인수 테스트 불필요한 throws절 삭제 (#243)

* refactor: 커스텀 예외 컨벤션에 맞게 에러 코드 추가 (#243)

* refactor: 패키지명 변경 및 구글 컨벤션에 맞게 수정 (#243)

* refactor: 1장이라도 업로드 실패시 예외 발생하도록 변경 (#243)

* [#230] 검색페이지 구현 (#274)

* feat: 검색 mock data 추가

* fix: LoginWrapper children 타입 수정

* feat: search context 추가

* feat: SearchHeader에 SearchContext 적용

* feat: SearchPage 및 검색 기능 구현

* fix: 오타수정

* 추가

* refactor: 불필요한 의존성 제거

* refactor: useFollow분리 및 follow mutation 에러처리 수준 변경

* feat: 유저 검색 결과에서 팔로우 기능 구현

* fix: 검색페이지 진입시 이전 검색 기록 초기화

* [#253] Github 통계 조회 기능 구현 (#263)

* feat: Github 통계 조회 기능 구현 (#253)

* test: 컨트롤러 테스트 작성 (#253)

* test: 서비스 테스트 작성 (#253)

* test: 통합 테스트 작성 (#253)

* test: 인수 테스트 작성 (#253)

* test: 단위 테스트 작성 (#253)

* style: 개행 추가 (#253)

* refactor: 클래스명 변경 (#253)

- PlatformExtractor -> PlatformContributionExtractor
- PlatformApiRequester -> PlatformContributionApiRequester

* refactor: @Profile 추가 (#253)

* refactor: 상수 -> @Value 변경 (#253)

* refactor: 커스텀 예외 추가 (#253)

* test: 단위 테스트 추가 (#253)

* refactor: Calculator 객체로 비즈니스 로직 분리 (#253)

- Service에 있던 비즈니스 로직을 Calculator 객체로 이동
- 단위 테스트 추가

* test: 불필요한 import 삭제

* refactor: 패키지 위치 변경 (#253)

- 인터페이스는 domain, 구현체는 infrastructure에 위치

* style: 접근 제어자 삭제 (#253)

* refactor: Calculator 인터페이스 메소드 반환 타입 변경 (#253)

* refactor: try-catch 문으로 예외 핸들링 (#253)

* test: 단위 테스트 수정 (#253)

* refactor: Calculator 인터페이스 메소드 반환 타입 변경 (#253)

- DTO -> Domain Object

* [#277] useFollow 테스트 작성 (#278)

* feat: SearchPage 및 검색 기능 구현

* refactor: useFollow분리 및 follow mutation 에러처리 수준 변경

* refactor: acceessToken이 없는 경우에 대한 에러코드 추가

* chore: hook 테스트를 위한 라이브러리 설치 및 설정

* refactor: ErrorCode 타입 추가

* refactor: handleHTTPError 모듈 분리

- handleHTTPError 함수를 utils/error.ts로 이동
- 상수 및 타입 분리

* test: useFollow 테스트 코드 작성

* refactor: 파일이름 변경

- constants/httpError.ts 를 constants/error.ts 로 변경

* refactor: useFollow 에러처리

- accesstoken이 없을 경우에 대한 에러처리 추가
- client error를 처리하기 위한 객체 구현

* [#124, #262, #275, #276] 요청 관련 이슈 해결 (#280)

* fix: 프로필 수정 api 형식 변경

- put메서드에서 post메서드로 변경
- 변경된 이미지가 없을경우 빈 파일 객체 전송
- 한 줄 소개가 변경되지 않아도 그대로 보내기

* fix: 검색 api url 변경

* fix: github stats 요소 및 api url 변경

* refactor: 최초 페이지 진입시 토큰이 유효하지 않으면 로그아웃

* fix: 내 게시물의 프로필 영역을 클릭하면 내 프로필 페이지로 이동하도록 수정

* refactor: 유저프로필, 내프로필 분기를 ProfilePage에게 위임

* feat: 최초 진입 이펙트 app으로 분리

* [#257] 게시물 좋아요 기능 구현 (#264)

* feat: 게시물 좋아요 기능 구현 (#257)

* feat: 게시물 좋아요 및 좋아요 취소 기능 테스트 구현 (#257)

* refactor : 피드백 반영 (#257)

* [#236] 로깅 기능 세팅 (#237)

* chore: 활성 프로필에 따른 logback 환경 설정 (#236)

* feat: 전역 예외 어드바이저에 로거 추가 및 DB / 런타임 예외 바인딩 (#236)

* chore: s3proxy directory logback 설정 추가 (#236)

* feat: s3proxy 예외 어드바이저 추가 (#236)

* refactor: applicationException 핸들러 어드바이저 메서드명 수정 (#236)

* refactor: 백엔드 프로젝트 로깅 전략 수정 (#236)

- 테스트 로깅 전략 콘솔로 수정
- DB 관련 로거 종류 프로필별 재정의
- 부모 로거가 찍히지 않도록 additivity false 추가
- 글로벌 예외 어드바이저에 로깅 양식 정의

* chore: logback-access 설정 추가 및 프로필별 설정 구성 (#236)

* chore: s3proxy 프로젝트 logback-access 설정 추가 (#236)

* refactor: s3proxy, backend 프로젝트 log 포맷 변경 (#236)

* chore: backend logger DB, Access 등 용도별 분리 (#236)

* chore: s3proxy logger DB, Access 등 용도별 분리 (#236)

* [#254] 유저 검색 기능을 구현 (#266)

* feat: User 검색 기능 구현

* refactor: 피드백 반영 리팩토링

* refactor: 프론트측과 협의한 부분 리팩토링

* fix: 검색 요청시 user와 tag 분리 (#283)

* [#267] 프로필 수정 기능을 구현 (#279)

* feat: 유저 프로필 수정 기능 구현

* refactor: 피드백 적용

* refactor: 피드백 리팩토링

* [#269] 게시물 수정 및 삭제 기능 구현 (#272)

* feat: 게시물 수정 및 삭제 기능 구현 (#269)

* fix: 게시물 수정 기능 버그 해결 (#269)

* test: 게시물 수정 기능 통합 테스트 작성 (#269)

* fix: 게시물 삭제 기능 버그 해결 (#269)

* test: 게시물 삭제 기능 통합 테스트 작성 (#269)

* test: 게시물 수정 기능 서비스 테스트 작성 (#269)

* test: 게시물 삭제 기능 서비스 테스트 작성 (#269)

* test: 게시물 수정 기능 컨트롤러 테스트 작성 (#269)

* test: 게시물 삭제 기능 컨트롤러 테스트 작성 (#269)

* test: 게시물 수정 기능 인수 테스트 작성 (#269)

* test: 게시물 삭제 기능 인수 테스트 작성 (#269)

* refactor: 정적 팩토리 메소드 삭제 (#269)

* test: 불필요한 테스트 삭제 (#269)

* refactor: Command, Query 분리 (CQS) (#269)

* test: verify() 값 지정 (#269)

* refactor: 상태별로 update() 분리 (#269)

* fix: 해당하는 사용자의 게시물인지 확인하는 로직 추가 (#269)

* [#284] 게시물 수정 및 삭제 버그 해결 (#285)

* test: 통합 테스트 버그 해결 (#284)

* test: 불필요한 테스트 삭제 (#284)

* fix: Github 통계 조회 버그 해결 (#287) (#288)

* refactor: like 관련 DTO 필드명 번경 (#289) (#291)

* fix: restDocs 필드명 수정 및 Boolean으로 변경 (#292) (#297)

* [#228] 게시글 수정 기능 구현 (#286)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* refactor: 게시글 추가 과정에서 필요한 데이터를 일반 컴포넌트에서 불러오지 않고 Page 컴포넌트에서 내려주도록 수정

* feat: 게시글 추가 기능 구현

- 컨벤션에 맞게 useGithubTagsQuery 메서드 수정
- EditPostPage 페이지 컴포넌트 구현
- PostEditDataContext, PostEditStepContext 추가
- usePostEdit, usePostStep 훅 추가

* [#258] 유저 프로덕션 코드 및 테스트 리팩토링 (#268)

* refactor: User 도메인 부족한 팔로우, 언팔로우 등 테스트 추가 (#258)

* refactor: User equals & hashCode 정의시 getter 사용 (#258)

* refactor: Follow 도메인 equals & hashCode 정의시 getter 사용 (#258)

* refactor: Following, Follwers 메서드명 및 선언 순서 변경 (#258)

* refactor: Followings, Followers 테스트 추가 및 생성자 추가 (#258)

* refactor: User.profile 관련 도메인 코드 포맷팅 및 setter 삭제 (#258)

* refacotr: User 내부 Posts에 생성자 변경 및 UserRepository 영속성 테스트 추가 (#258)

* refactor: User 응용 계층 메서드 추출 리팩토링 및 DTO getter 추가 (#258)

* refactor: AppUser의 UserService 침투 제거 및 테스트 코드 계층 분리 (#258)

- AppUser가 서비스 코드에 침투하는 것을 막기 위해 AppUser 추상 클래스에 별도의 이름 호출 메서드를 추가함

* refactor: UserService 통합 테스트 계층적으로 리팩토링 (#258)

* refactor: AuthUserRequest 안쓰는 DTO 및 생성자 삭제와 메서드 파라미터명 통일 (#258)

* refactor: User 테스트 메서드 nested 적용 (#258)

* refactor: User 불필요한 임베디드 타입 getter 삭제 및 테스트 리팩토링 (#258)

* refactor: User 엔티티 내부 임베디드 타입 클래스의 기본 생성자를 protected로 변경 (#258)

* refactor: UserRepository 테스트 nested 적용 (#258)

* refactor: UserService 슬라이싱 테스트 verify 구체화 및 메서드 분리 (#258)

* refactor: UserService 통합 테스트 반복되는 given 부분 메서드 추출 (#258)

* refactor: UserController 슬라이싱 테스트 로그인여부 분리 및 DTO Getter 추가 (#258)

* refactor: User 인수 테스트 반복되는 api 호출 메서드 통일 (#258)

* refactor: 병합 충돌 해결 (#258)

* refactor: UserDataJpaTest Nested C-D-I 명세 변경 (#258)

* refactor: 유저 컨트롤러 슬라이싱 테스트 verify 추가 및 테스트 오류 수정 (#258)

- 기존 unfollow 테스트가 잘못 진행되고 있었던 부분을 해결

* chore: UserService 헬퍼 메서드 위치 수정 (#258)

* refactor: UserController 응답 생성 헬퍼 메서드 위치 이동 (#258)

* refactor: Follow, Unfollow시 두 유저 동등성 비교 로직 Follow 클래스로 이동 (#258)

* refactor: User의 팔로우, 언팔로우 조건 검사 로직을 Followers, Followings로 이동 (#258)

* chore: User.addComment 테스트 삭제 (#258)

* refactor: AuthUserRequestDto의 AppUser에 대한 정적 팩토리 메서드 추가 (#258)

* refactor: User 컨트롤러 테스트 anyString given/verify 인자 변경 (#258)

* fix: 프로덕션 및 테스트 코드 순서 변경 및 SpringBoot 통합테스트로 인한 Nested 제거 (#258)

* refactor: 병합 충돌 해결 및 AppUser를 서비스에서 사용못하도록 변경 (#258)

* chore: 프로덕션 코드 순서 정렬 및 DTO 필드명 변경 (#258)

* chore: User 관련 테스트 코드 순서 정렬 및 포맷팅 (#258)

* [#293] Logback 인식 불가 버그 해결 (#299)

* fix: logback appender 경로 수정 (#293)

* chore: rest docs 문서 변경

* [#273, #301] profile page 에러처리 수준 수정 및 기타 버그 해결 (#302)

* refactor: 프로필 수정 페이지 서비스로직 분리 및 에러처리 수준 수정

* refactor: 중복되는 validation 제거

* refactor: 불필요한 의존성 제거

* feat: 유저 검색 결과에 유저 프로필 페이지 링크 추가

* fix: 프로필 수정 후 반영이 안되는 이슈 해결

* refactor: api url 변경

* fix: 로그인으로 게시글 조회시 게스트로 인식하던 문제 해결 (#298)

* [#295] 게시물 수정 및 삭제 DB 버그 해결 (#300)

* refactor: findPostByUser -> findPostByIdAndUser 변경 (#295)

* test: Data JPA 테스트 추가 (#295)

* refactor: 생성자 수정 (#295)

* test: 예외 발생 -> Optional.empty() 검증 변경 (#295)

* refactor: 불필요한 코드 삭제 (#295)

* refactor: 해당하는 사용자의 게시물이 맞는지 확인하는 과정 수정 (#295)

- DB에서 처리 -> 비즈니스 로직에서 처리로 변경

* refactor: 불필요한 코드 삭제 (#295)

* test: 불필요한 import 삭제 (#295)

* [#290] 중간 데모 버그를 해결 (#303)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 중간 데모 버그 해결

- 게시글 데이터 속성 중 isLiked -> liked 로 변경
- 로그인 했을 때만 좋아요 버튼이 나타나도록 수정
- 로그인 했을 때만 댓글 달기 버튼이 나타나도록 수정
- 좋아요, 좋아요 취소 상태 반영
로그인 버튼 padding 수정
- 댓글을 추가했을 때 바로 추가된 댓글을 화면에서 확인할 수 있게 수정
- 댓글이 게시글 조회시에는 최대 10개만 나올 수 있도록 수정
- 기존의 댓글 달기 input 을 댓글 슬라이더 토글 버튼으로 변환

* fix: api url 수정 (#305)

* fix: Post - Comments 영속성 전이 버그 해결 (#306) (#307)

* [#308] 게시물 수정 버그 해결 (#309)

* fix: orphanremoval = true 옵션 추가 (#308)

* test: 통합 테스트 추가 (#308)

* [#310] 팀데모 결과 반영 - 프로필 페이지 (#311)

* fix: api url 오타 수정

* fix: 누락된 key prop 추가

* fix: 깃헙통계 기능 임시 api로 수정

* 프로필 페이지 하단 레이아웃 버그 수정

* [#312] 두번째 팀 데모에서 발견된 버그 해결 (#313)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 두번째 팀 데모에서 발견된 버그 해결

- 댓글 추가 시 최근 댓글로 스크롤이 되지 않는 문제 해결
- 게시글 추가, 삭제 시 스낵바를 통해 피드백
- 게시글 좋아요 & 좋아요 취소 결과가 화면에 나타나지 않는 문제 해결
- 게시글 tags 정보 파싱 문제 해결 (보낼 땐 , 기반 join 문자열로, 받을
  때는 일반 문자열 배열로)

* fix: 모바일 상의 레이아웃 및 그래픽 문제 해결

- 모바일 상에서 버튼이나 링크 클릭시 나타나는 기본 하이라이트 컬러 제거
- 댓글 input 패딩 조정
- 프로필 잔디 배경 투명 -> 흰색으로 변경
- kind 가 pills 인 Tabs 컴포넌트의 hover 이펙트 제거(모바일 상에서 클릭된 글씨가 희미해지는 문제 해결)

* [#314] 세번째 팀 데모에서 발견된 버그 해결 (#315)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 2차 데모 세번째 버그 수정

- 댓글 프로필 이미지, 유저 이름이 고정되어 있는 문제 해결
- 게시글 추가 시 레포지터리 목록을 불러오기 위한 계정이 하나로 고정되어 있는 문제 해결
- 임시 레포목록 검색 기능 추가

* [#316] 3차데모 검색 페이지 및 UI 관련 이슈 해결 (#317)

* fix: 검색 결과 리스트에서 팔로우시 깜박거리는 버그 해결

* feat: 게시물 삭제시 컨펌 추가

* fix: 이미지 및 텍스트 인디케이터 사이즈 고정

* feat: 간략히 버튼 추가

* [#318] 네번째 팀 데모에서 발견된 버그 해결 (#319)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 네번째 팀 데모에서 발견된 버그 해결

- 댓글 슬라이더 가로 스크롤링 되는 문제 해결
- 이미지들 총 용량 제한 1MB 로 수정
- 게시글 내용의 개행이 실제로 반영되도록 수정
- 게시글 추가 중 태그 입력 후 tagInputLength 가 0 으로 초기화 되도록 수정

* [#320] 게시물 추가 시 이미지가 없으면 alert처리 (#321)

* fix: 게시물 추가 시 이미지가 없으면 alert 처리

* refactor: 더보기, 간략히 정책 변경

* [#322] 게시글 수정 시 추가 되었다는 메세지가 아닌 수정 되었다는 메세지가 뜨도록 변경 (#323)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 게시글 수정 시 추가 되었다는 메세지가 아닌 수정 되었다는 메세지가 뜨도록 변경

* [#324] 다른 이용자의 UserFeed 좋아요가 동작하지 않는 문제를 해결 (#325)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 다른 이용자의 UserFeed 좋아요가 동작하지 않는 문제 해결

- currentUsername(접속한 이용자) -> username(이용자 피드 페이지의 대상 이용자) 으로 대상 변경

* [#259] 포스트 프로덕션 코드 리팩토링 (#270)

* refactor: Post 프로덕션 코드 리팩토링 (#252)

* refactor: infrastructure 유닛테스트, comment 유닛테스트 리팩토링

* test: Post 관련 유닛테스트 리팩토링

* test: Post application 레이어 관련 테스트 리팩토링

* test: Post 인수 테스트 리팩토링

* test: PostControllerTest 리팩토링 추가

* test: post builder를 사용하도록 변경

* refactor: 리베이스 후 깨지는 테스트 수정 및 누락된 테스트 추가

refactor: Post의 Tag관련 비즈니스 로직 PostTags로 이동 (#259)

이동과 함께 Post의 Build 패턴 적용과 리팩토링.

refactor: PostService와 PostController의 책임 분리. 및 s3Storage 파일 저장 방식 추가 (#259)

feed관련과, 게시물 관련으로 분리하여 관심사를 맞춤.

refactor: 전체적인 import 정리 (#259)

refactor: 패키지 정리 (#259)

refactor: Post의 getImageUrl 중복 메서드 제거 (#259)

refactor: CommentResponse의 도메인 참조 제거 및 DtoAssembler 리팩토링 (#259)

refactor: Feed관련 컨트롤러, 서비스, PostDto어셈블러  리팩토링, 레이어에 맞지 않는 DTO 이동 (#259)

refactor: CommentRequestDto 패키지 변경 및 PostController 리팩토링 (#259)

refactor: PostResponseDto가 presentation~presentation까지 사용되던것을 분리 (#259)

refactor: showRepositories -> userRepositories 메서드명 변경 (#259)

refactor: RepositoryResponse, domain -> controller까지 사용 되던것을 분리 (#259)

style: domain을 제외한 레이어의 구글 컨벤션 체크 (#259)

refactor: PostImageUrlResponseDto Builder 사용하도록 변경

refactor: Post 컨벤션 및 메서드 순서 정리 (#259)

refactor: Post user 관련 메서드명 author로 변경 및 필드, 메서드 정리 (#249)

refactor: PostTag equals getId()로 변경 및 필드 순서 정리 (#249)

refactor: Like를 VO로 취급, Likes를 컨테이너로 취급하도록 변경 (#249)

refactor: Image VO로 취급 및 도움 메서드 네이밍 변경, PostContent validation로직 변경 (#249)

refactor: CommentContent VO 취급, comment 도움메서드 이름 변경 및 책임 변경 (#249)

refactor: Post equals getter를 사용하도록 변경 (#249)

refactor: 연관관계 도움 메서드 반환깂 없도록 변경 (#249)

style: 구글 컨벤션 적용 (#249)

refactor: 추상화 수준 평탄화 작업 (#249)

* refactor: 리베이스 후 깨지는 파일 수정

* fix: User 비교 로직 버그 해결

* refactor: 메서드의 네이밍 변경

* refactor: 디미터의 원칙 준수

* refactor: 사용하지 않는 메서드 제거

* refactor: 깨지는 테스트 수정

* refactor: 타입 추론 변수를 타입형으로 변경

* refactor: 의미가 없는 변수명 제거 like -> 메서드참조

* style: 팀 컨벤션 적용

* [#332] Acceptance Test를 위한 Request builder 기능을 구현. (#333)

* [#200, #205] 태그 관련 이슈 해결 (#216)

* fix: 게시글 추가 시, 초기에 불러온 기본 tag 들이 사라지지 않는 문제를 해결

* feat: 게시글 추가 중 태그 삭제 기능 구현

* fix: break point 에 맞게 어플리케이션 최대 너비를 375px -> 425px 로 조정

* [#217, #110] 테스트 패키지 구조 정리 (#218)

* chore: 인수/통합 테스트 및 common(픽스쳐 팩토리, mock api) 패키지 분리  (#217)

* chore: 기존 도메인 테스트 패키지들을 unit 하위로 이동 (#217)

* refactor: Tag 관련 Github 플랫폼 클래스 이름에 Tag 명시 (#217)

* chore: Test 관련 Configuration 통일 및 Github API 관련 클래스 프로필 설정 (#217)

* chore: 롬복 의존성 추가 (#217)

* refactor: TestConfiguration 클래스명에 Infrastructure 명시 (#217)

* refactor: PostFactory 빌더 패턴 적용하여 가독성 향상

* refactor: 실패하는 테스트 리팩토링

* refactor: UserFactory 빌더 패턴 적용하여 가독성 향상

* refactor: PostFactory 의미 없는 메서드 제거

* refactor: Test Configuration 이름 변경

* refactor: user fixture setUp로직 위치 변경

* refactor: DTO Builder 어노테이션 적용 및 Builder 제공 클래스 제거

* refactor: gradle.build 파일 정리

* style: 의미없는 공백 제거

Co-authored-by: Minsung <sns2831@gmail.com>

* [#223, #229] API 변경사항 반영 및 Post 중복제거 (#235)

* fix: API 명세 변경 사항 반영

- image와 imageUrl에 대한 키값 구분
- public repo를 가져오는 api 명에서 username 제거

* refactor: 불필요한 의존성 제거

* feat: 새로 패치된 post 중복제거

* fix: InfiniteScrollContainer effect 의존성 수정

* refactor: Snackbar 컴포넌트의 위치를 @layout으로 변경

* fix: post interface 수정

* refactor: 스낵바 메시지를 push 하는 메서드 이름을 더 명시적으로 변경

* fix: 중복된 key prop 수정

* feat:  http error 처리 유틸 구현

* refactor: HomeFeedPage의 상태로직을 훅으로 분리

* [#204] Issue 및 PR Template 수정 (#239)

* docs: PR 템플릿 수정

* docs: 이슈 템플릿 등록

* docs: 이슈 템플릿 수정

* docs: 이슈 템플릿 수정

* [#222] 프로필 페이지 피드 버그 수정 (#242)

* refactor: 중복된 게시물을 제거하는 로직을 util로 분리

* feat: 프로필 피드에 무한 스크롤 기능 추가

* refactor: profile page의 상태를 context로 분리

* feat: 팔로우 버튼에 로딩 애니메이션 추가

* refactor: 불필요한 컨테이너 제거

* refactor: ProfilePage 구조 개선

- 훅을 끌어올리는 수준을 작은 범위로 수정
- context를 제거하고 컨테이너 역할을 하는 컴포넌트를 추가

* [#219] 게시글 추가 중 발생하는 에러에 대한 피드백, 핸들링 구현 (#241)

* feat: BackDrop & MessageModalPortal 컴포넌트 구현

- index.html 에 div#modal 태그 추가
- MessageModalPortal 은 리액트 포털을 적용하여 구현
- 해당 컴포넌트를 사용하기 편하도록 useMessageModal 커스텀 훅 제작

* refactor: 필요 없는 import 구문 삭제

* feat: PostContentUploader 컴포넌트 안의 ImageSlider & ImageUploader 와 TextEditor 간의 margin 추가

* feat: 새로운 limits, messages 상수 추가

- message -> messages 로 파일 이름 변경

* feat: 게시글 추가 step 라우팅 path 에 한글이 들어가는 문제 해결

* fix: 필요한 변수 import 경로 수정

* feat: 게시글 추가 중 각각의 에러에 대한 이용자 피드백 구현
- PostAddFormData -> PostUploadData으로 변경
- 이용자의 깃허브 상에 올라와 있는 public repository 가 없으면 피드백 후 이전 페이지로 리다이렉트 시킨다.
- repository 를 선택하지 않고 이미지 & 글 작성으로 넘어가려 한다면 이를 피드백한다.
- 업로드한 이미지가 정해진 용량을 초과할 경우 피드백한다.
- 업로드한 이미지 개수가 정해진 개수를 초과할 경우 피드백한다.
- 이미지 개수가 정해진 개수를 초과할 경우 피드백한다.
- 텍스트 길이가 정해진 길이를 초과할 경우 피드백한다.
- 들어간 태그들 중 중복이 있으면 피드백한다.
- 태그에 '-', '_' 를 제외한 특수문자가 들어갔다면 이를 피드백한다.

* feat: ErrorResponse 타입 생성 및 적용

* feat: API 요청 에러 핸들링 구현

* [#232] 유저 테스트 코드 리팩토링 (#249)

* refactor: 코드 정리 (#232)

* refactor: 사용자 유효성 검증 추가 (#232)

- 게스트인 경우 UnauthorizedException 발생

* refactor: DTO 관련 네이밍 정리 (#232)

* test: 컨트롤러 테스트 리팩토링 (#232)

* test: 서비스 테스트 리팩토링 (#232)

* test: Data JPA 테스트 리팩토링 (#232)

* test: 불필요한 상수 삭제 (#232)

* test: 유저 이름 변경 (#232)

- loginUser/guestUser -> testUser로 통일

* test: 서비스 테스트 추가 (#232)

* test: 서비스 테스트 리팩토링 (#232)

* test: 통합 테스트 리팩토링 (#232)

* test: 인수 테스트 리팩토링 (#232)

* refactor: Builder 사용 (#232)

* refactor: Follow 객체에 책임 위임 (#232)

* test: 접근 제어자 수정 (#232)

* refactor: DTO 리팩토링 (#232)

* test: 불필요한 필드 삭제 (#232)

* test: WebEnvironment 옵션을 RANDOM_PORT -> NONE으로 변경 (#232)

* test: @SpringBootTest -> @DataJpaTest 변경 (#232)

* refactor: API 명세에 맞게 필드명 변경 (#232)

- image -> imageUrl 변경

* [#240] Authentication 관련 테스트 코드 리팩토링 (#247)

* test: authentication 관련 테스트 코드 리팩토링 (#240)

* test: 테스트 코드 리팩토링 (#240)

* refactor: 깃헙 인증 예외 변경 (#240)

* test: Authentication 테스트 코드 피드백 적용 (#240)

* test: HttpHeaders.AUTHORIZATION 으로 변경 (#240)

* [#226, #227] 프로필 수정 모달 구현 (#255)

* feat: Button 컴포넌트에 padding prop 추가

* feat: cancel-no-circle 아이콘 추가

* refactpr: BackDrop을 스타일드 컴포넌트로 수정

* refactor: textEditor 배경을 투명하게 수정

* chore: eslint no empty function 옵션 off

* refactor: css keyframes 파일로 분리

* feat: 카메라 아이콘 추가

* feat: TextEditor 컴포넌트에 indicator 추가(#226)

* refactor: z-index를 컨벤션에 맞게 수정

* feat: 프로필 수정 모달 구현(#227)

* [#246] 댓글 테스트 코드를 리팩토링 (#250)

* refactor: 댓글 관련 테스트 리팩토링

* refactor: 케빈 피드백 반영

* refactor: 댓글 조회 반환시 프로필 이미지 나오도록 수정

* [#220, #226] 네비게이션 ui 수정 및 이미지 인디케이터 추가 (#256)

* refactor: 비로그인 시에도 홈네이게이션 노출

* fix: header와 image slider의 쌓임 순서 버그 해결

* feat: 이미지 인디케이터 구현

* [#234] 태그 테스트 코드를 리팩토링 (#245)

* refactor: 태그 도메인 부분 테스트 리팩토링

* refactor: 태그 슬라이싱 테스트 리팩토링

* refactor: 태그 통합 테스트 리팩토링

* refactor: 태그 인수 테스트 리팩토링

* refactor: connection pool 사용하는 커스텀 RestTemplate 적용

* refactor: Post와 Tag 연관관계 부분 프로덕션 및 테스트 코드 리팩토링

* refactor: 케빈 피드백 적용

- ParameterizedTest 이용하도록 수정
- 중복된 테스트 제거

* refactor: 피드백 반영

* refactor: 소문자로 자동 변환되도록 수정

* refactor: 너잘 피드백 적용

* refactor: 깃헙에서 태그 가져올 때 소문자로 변환되도록 리팩토링

* [#221, #225] 프로필 피드 클릭시 유저 피드 페이지로 이동 (#260)

* fix: 헤더에서 height가 큰 요소들의 레이아웃이 깨지는 버그 해결

* fix: slideButtonKind 복구

* refactor: 타입 단언 제거

* feat: 프로필피드에서 포스트 클릭시 유저 피드 페이지로 이동

* [#251] Post 테스트 코드를 리팩토링  (#252)

* refactor: infrastructure 유닛테스트, comment 유닛테스트 리팩토링

* test: Post 관련 유닛테스트 리팩토링

* test: Post application 레이어 관련 테스트 리팩토링

* test: Post 인수 테스트 리팩토링

* test: PostControllerTest 리팩토링 추가

* test: post builder를 사용하도록 변경

* refactor: 리베이스 후 깨지는 테스트 수정 및 누락된 테스트 추가

* [#183] 게시글 댓글 기능을 구현 (#265)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* feat: HomeFeed 컴포넌트에서 로그인 된 상태에서 자신의 개시글만 수정 아이콘이 뜨도록 변경

* feat: BottomSliderPortal 컴포넌트 구현

* feat: CommentSlider 컴포넌트 구현

* chore: Layout 상수 객체 이름 LAYOUT 으로 변경

* feat: getLastHash util 함수 구현

* feat: getTabTextColor util 함수 구현

* feat: useBottomSlider 훅 구현

* refactor: PostItem 컴포넌트 수정

- 해당 컴포넌트에서 댓글 입력 값 저장 및 수정을 담당하지 않도록 수정
- 댓글 추가 아이콘 버튼 삭제
- Post, CommentData 타입의 id 속성 타입을 string -> number 로 수정

* feat: 댓글 추가 기능 구현

- Tabs 컴포넌트가 tabIndicatorKind 값에 따라 다른 indicator 를 사용하도록 수정
- useFeed -> useFeedMutation 으로 수정
- HomeFeedPage 상에서 useFeed 를 사용하는 것을 useHomeFeed 를 사용하도록 수정
- COMMENT_INPUT_HEIGHT 레이아웃 상수 추가
- 임시용 UserFeedPage 와 TagFeedPage 업데이트 (여전히 임시용)

* fix: CommentSlider 해시 라우팅으로 인해 특정 UserFeedPage 렌더링이 되지 않는 문제 해결

- CommentSlider 를 토글할 때도 history.location 의 state 와 query param 을 그대로 사용하도록 수정
- NavigationHeader 컴포넌트의 height: content-fit 속성 삭제 & 로그아웃 버튼의 padding 값 수정
- HomeFeed -> Feed 로 컴포넌트 이름 수정

* feat: 댓글 저장 시 예외 처리 추가

* [#199, #248, #184] 게시글 삭제 & 게시글 기본 이미지 구현 (#271)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* feat: 게시글 삭제 기능 구현 & 이미지가 없을 시 기본 이미지 보여주기 구현

- 삭제 버튼을 나타나게 만들기 위한 ButtonDrawer 컴포넌트 구현

* feat: TagInputForm 상에서 Tag 입력 중 모바일 가상 키보드가 레이아웃을 깨뜨리는 문제 해결

- 에러 발생시 tag input 을 blur 처리

* [#243] s3 proxy 관련 테스트 리팩토링 (#244)

* chore: s3-proxy properties 포맷을 yaml로 수정 (#243)

* chore: 프로덕션 패키지명 컨벤션맞게 수정 (#243)

* test: S3Storage 슬라이싱 테스트 추가 (#243)

* test: StorageService 슬라이싱 테스트 케이스 추가 (#243)

* refactor: StorageController 슬라이싱 테스트 불필요한 given절 삭제 (#243)

* refactor: 인수 테스트 불필요한 throws절 삭제 (#243)

* refactor: 커스텀 예외 컨벤션에 맞게 에러 코드 추가 (#243)

* refactor: 패키지명 변경 및 구글 컨벤션에 맞게 수정 (#243)

* refactor: 1장이라도 업로드 실패시 예외 발생하도록 변경 (#243)

* [#230] 검색페이지 구현 (#274)

* feat: 검색 mock data 추가

* fix: LoginWrapper children 타입 수정

* feat: search context 추가

* feat: SearchHeader에 SearchContext 적용

* feat: SearchPage 및 검색 기능 구현

* fix: 오타수정

* 추가

* refactor: 불필요한 의존성 제거

* refactor: useFollow분리 및 follow mutation 에러처리 수준 변경

* feat: 유저 검색 결과에서 팔로우 기능 구현

* fix: 검색페이지 진입시 이전 검색 기록 초기화

* [#253] Github 통계 조회 기능 구현 (#263)

* feat: Github 통계 조회 기능 구현 (#253)

* test: 컨트롤러 테스트 작성 (#253)

* test: 서비스 테스트 작성 (#253)

* test: 통합 테스트 작성 (#253)

* test: 인수 테스트 작성 (#253)

* test: 단위 테스트 작성 (#253)

* style: 개행 추가 (#253)

* refactor: 클래스명 변경 (#253)

- PlatformExtractor -> PlatformContributionExtractor
- PlatformApiRequester -> PlatformContributionApiRequester

* refactor: @Profile 추가 (#253)

* refactor: 상수 -> @Value 변경 (#253)

* refactor: 커스텀 예외 추가 (#253)

* test: 단위 테스트 추가 (#253)

* refactor: Calculator 객체로 비즈니스 로직 분리 (#253)

- Service에 있던 비즈니스 로직을 Calculator 객체로 이동
- 단위 테스트 추가

* test: 불필요한 import 삭제

* refactor: 패키지 위치 변경 (#253)

- 인터페이스는 domain, 구현체는 infrastructure에 위치

* style: 접근 제어자 삭제 (#253)

* refactor: Calculator 인터페이스 메소드 반환 타입 변경 (#253)

* refactor: try-catch 문으로 예외 핸들링 (#253)

* test: 단위 테스트 수정 (#253)

* refactor: Calculator 인터페이스 메소드 반환 타입 변경 (#253)

- DTO -> Domain Object

* [#277] useFollow 테스트 작성 (#278)

* feat: SearchPage 및 검색 기능 구현

* refactor: useFollow분리 및 follow mutation 에러처리 수준 변경

* refactor: acceessToken이 없는 경우에 대한 에러코드 추가

* chore: hook 테스트를 위한 라이브러리 설치 및 설정

* refactor: ErrorCode 타입 추가

* refactor: handleHTTPError 모듈 분리

- handleHTTPError 함수를 utils/error.ts로 이동
- 상수 및 타입 분리

* test: useFollow 테스트 코드 작성

* refactor: 파일이름 변경

- constants/httpError.ts 를 constants/error.ts 로 변경

* refactor: useFollow 에러처리

- accesstoken이 없을 경우에 대한 에러처리 추가
- client error를 처리하기 위한 객체 구현

* [#124, #262, #275, #276] 요청 관련 이슈 해결 (#280)

* fix: 프로필 수정 api 형식 변경

- put메서드에서 post메서드로 변경
- 변경된 이미지가 없을경우 빈 파일 객체 전송
- 한 줄 소개가 변경되지 않아도 그대로 보내기

* fix: 검색 api url 변경

* fix: github stats 요소 및 api url 변경

* refactor: 최초 페이지 진입시 토큰이 유효하지 않으면 로그아웃

* fix: 내 게시물의 프로필 영역을 클릭하면 내 프로필 페이지로 이동하도록 수정

* refactor: 유저프로필, 내프로필 분기를 ProfilePage에게 위임

* feat: 최초 진입 이펙트 app으로 분리

* [#257] 게시물 좋아요 기능 구현 (#264)

* feat: 게시물 좋아요 기능 구현 (#257)

* feat: 게시물 좋아요 및 좋아요 취소 기능 테스트 구현 (#257)

* refactor : 피드백 반영 (#257)

* [#236] 로깅 기능 세팅 (#237)

* chore: 활성 프로필에 따른 logback 환경 설정 (#236)

* feat: 전역 예외 어드바이저에 로거 추가 및 DB / 런타임 예외 바인딩 (#236)

* chore: s3proxy directory logback 설정 추가 (#236)

* feat: s3proxy 예외 어드바이저 추가 (#236)

* refactor: applicationException 핸들러 어드바이저 메서드명 수정 (#236)

* refactor: 백엔드 프로젝트 로깅 전략 수정 (#236)

- 테스트 로깅 전략 콘솔로 수정
- DB 관련 로거 종류 프로필별 재정의
- 부모 로거가 찍히지 않도록 additivity false 추가
- 글로벌 예외 어드바이저에 로깅 양식 정의

* chore: logback-access 설정 추가 및 프로필별 설정 구성 (#236)

* chore: s3proxy 프로젝트 logback-access 설정 추가 (#236)

* refactor: s3proxy, backend 프로젝트 log 포맷 변경 (#236)

* chore: backend logger DB, Access 등 용도별 분리 (#236)

* chore: s3proxy logger DB, Access 등 용도별 분리 (#236)

* [#254] 유저 검색 기능을 구현 (#266)

* feat: User 검색 기능 구현

* refactor: 피드백 반영 리팩토링

* refactor: 프론트측과 협의한 부분 리팩토링

* fix: 검색 요청시 user와 tag 분리 (#283)

* [#267] 프로필 수정 기능을 구현 (#279)

* feat: 유저 프로필 수정 기능 구현

* refactor: 피드백 적용

* refactor: 피드백 리팩토링

* [#269] 게시물 수정 및 삭제 기능 구현 (#272)

* feat: 게시물 수정 및 삭제 기능 구현 (#269)

* fix: 게시물 수정 기능 버그 해결 (#269)

* test: 게시물 수정 기능 통합 테스트 작성 (#269)

* fix: 게시물 삭제 기능 버그 해결 (#269)

* test: 게시물 삭제 기능 통합 테스트 작성 (#269)

* test: 게시물 수정 기능 서비스 테스트 작성 (#269)

* test: 게시물 삭제 기능 서비스 테스트 작성 (#269)

* test: 게시물 수정 기능 컨트롤러 테스트 작성 (#269)

* test: 게시물 삭제 기능 컨트롤러 테스트 작성 (#269)

* test: 게시물 수정 기능 인수 테스트 작성 (#269)

* test: 게시물 삭제 기능 인수 테스트 작성 (#269)

* refactor: 정적 팩토리 메소드 삭제 (#269)

* test: 불필요한 테스트 삭제 (#269)

* refactor: Command, Query 분리 (CQS) (#269)

* test: verify() 값 지정 (#269)

* refactor: 상태별로 update() 분리 (#269)

* fix: 해당하는 사용자의 게시물인지 확인하는 로직 추가 (#269)

* [#284] 게시물 수정 및 삭제 버그 해결 (#285)

* test: 통합 테스트 버그 해결 (#284)

* test: 불필요한 테스트 삭제 (#284)

* fix: Github 통계 조회 버그 해결 (#287) (#288)

* refactor: like 관련 DTO 필드명 번경 (#289) (#291)

* fix: restDocs 필드명 수정 및 Boolean으로 변경 (#292) (#297)

* [#228] 게시글 수정 기능 구현 (#286)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* refactor: 게시글 추가 과정에서 필요한 데이터를 일반 컴포넌트에서 불러오지 않고 Page 컴포넌트에서 내려주도록 수정

* feat: 게시글 추가 기능 구현

- 컨벤션에 맞게 useGithubTagsQuery 메서드 수정
- EditPostPage 페이지 컴포넌트 구현
- PostEditDataContext, PostEditStepContext 추가
- usePostEdit, usePostStep 훅 추가

* [#258] 유저 프로덕션 코드 및 테스트 리팩토링 (#268)

* refactor: User 도메인 부족한 팔로우, 언팔로우 등 테스트 추가 (#258)

* refactor: User equals & hashCode 정의시 getter 사용 (#258)

* refactor: Follow 도메인 equals & hashCode 정의시 getter 사용 (#258)

* refactor: Following, Follwers 메서드명 및 선언 순서 변경 (#258)

* refactor: Followings, Followers 테스트 추가 및 생성자 추가 (#258)

* refactor: User.profile 관련 도메인 코드 포맷팅 및 setter 삭제 (#258)

* refacotr: User 내부 Posts에 생성자 변경 및 UserRepository 영속성 테스트 추가 (#258)

* refactor: User 응용 계층 메서드 추출 리팩토링 및 DTO getter 추가 (#258)

* refactor: AppUser의 UserService 침투 제거 및 테스트 코드 계층 분리 (#258)

- AppUser가 서비스 코드에 침투하는 것을 막기 위해 AppUser 추상 클래스에 별도의 이름 호출 메서드를 추가함

* refactor: UserService 통합 테스트 계층적으로 리팩토링 (#258)

* refactor: AuthUserRequest 안쓰는 DTO 및 생성자 삭제와 메서드 파라미터명 통일 (#258)

* refactor: User 테스트 메서드 nested 적용 (#258)

* refactor: User 불필요한 임베디드 타입 getter 삭제 및 테스트 리팩토링 (#258)

* refactor: User 엔티티 내부 임베디드 타입 클래스의 기본 생성자를 protected로 변경 (#258)

* refactor: UserRepository 테스트 nested 적용 (#258)

* refactor: UserService 슬라이싱 테스트 verify 구체화 및 메서드 분리 (#258)

* refactor: UserService 통합 테스트 반복되는 given 부분 메서드 추출 (#258)

* refactor: UserController 슬라이싱 테스트 로그인여부 분리 및 DTO Getter 추가 (#258)

* refactor: User 인수 테스트 반복되는 api 호출 메서드 통일 (#258)

* refactor: 병합 충돌 해결 (#258)

* refactor: UserDataJpaTest Nested C-D-I 명세 변경 (#258)

* refactor: 유저 컨트롤러 슬라이싱 테스트 verify 추가 및 테스트 오류 수정 (#258)

- 기존 unfollow 테스트가 잘못 진행되고 있었던 부분을 해결

* chore: UserService 헬퍼 메서드 위치 수정 (#258)

* refactor: UserController 응답 생성 헬퍼 메서드 위치 이동 (#258)

* refactor: Follow, Unfollow시 두 유저 동등성 비교 로직 Follow 클래스로 이동 (#258)

* refactor: User의 팔로우, 언팔로우 조건 검사 로직을 Followers, Followings로 이동 (#258)

* chore: User.addComment 테스트 삭제 (#258)

* refactor: AuthUserRequestDto의 AppUser에 대한 정적 팩토리 메서드 추가 (#258)

* refactor: User 컨트롤러 테스트 anyString given/verify 인자 변경 (#258)

* fix: 프로덕션 및 테스트 코드 순서 변경 및 SpringBoot 통합테스트로 인한 Nested 제거 (#258)

* refactor: 병합 충돌 해결 및 AppUser를 서비스에서 사용못하도록 변경 (#258)

* chore: 프로덕션 코드 순서 정렬 및 DTO 필드명 변경 (#258)

* chore: User 관련 테스트 코드 순서 정렬 및 포맷팅 (#258)

* [#293]  Logback 인식 불가 버그 해결 (#299)

* fix: logback appender 경로 수정 (#293)

* chore: rest docs 문서 변경

* [#273, #301] profile page 에러처리 수준 수정 및 기타 버그 해결 (#302)

* refactor: 프로필 수정 페이지 서비스로직 분리 및 에러처리 수준 수정

* refactor: 중복되는 validation 제거

* refactor: 불필요한 의존성 제거

* feat: 유저 검색 결과에 유저 프로필 페이지 링크 추가

* fix: 프로필 수정 후 반영이 안되는 이슈 해결

* refactor: api url 변경

* fix: 로그인으로 게시글 조회시 게스트로 인식하던 문제 해결 (#298)

* [#295] 게시물 수정 및 삭제 DB 버그 해결 (#300)

* refactor: findPostByUser -> findPostByIdAndUser 변경 (#295)

* test: Data JPA 테스트 추가 (#295)

* refactor: 생성자 수정 (#295)

* test: 예외 발생 -> Optional.empty() 검증 변경 (#295)

* refactor: 불필요한 코드 삭제 (#295)

* refactor: 해당하는 사용자의 게시물이 맞는지 확인하는 과정 수정 (#295)

- DB에서 처리 -> 비즈니스 로직에서 처리로 변경

* refactor: 불필요한 코드 삭제 (#295)

* test: 불필요한 import 삭제 (#295)

* [#290] 중간 데모 버그를 해결 (#303)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 중간 데모 버그 해결

- 게시글 데이터 속성 중 isLiked -> liked 로 변경
- 로그인 했을 때만 좋아요 버튼이 나타나도록 수정
- 로그인 했을 때만 댓글 달기 버튼이 나타나도록 수정
- 좋아요, 좋아요 취소 상태 반영
로그인 버튼 padding 수정
- 댓글을 추가했을 때 바로 추가된 댓글을 화면에서 확인할 수 있게 수정
- 댓글이 게시글 조회시에는 최대 10개만 나올 수 있도록 수정
- 기존의 댓글 달기 input 을 댓글 슬라이더 토글 버튼으로 변환

* fix: api url 수정 (#305)

* fix: Post - Comments 영속성 전이 버그 해결 (#306) (#307)

* [#308] 게시물 수정 버그 해결 (#309)

* fix: orphanremoval = true 옵션 추가 (#308)

* test: 통합 테스트 추가 (#308)

* [#310] 팀데모 결과 반영 - 프로필 페이지 (#311)

* fix: api url 오타 수정

* fix: 누락된 key prop 추가

* fix: 깃헙통계 기능 임시 api로 수정

* 프로필 페이지 하단 레이아웃 버그 수정

* [#312] 두번째 팀 데모에서 발견된 버그 해결 (#313)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 두번째 팀 데모에서 발견된 버그 해결

- 댓글 추가 시 최근 댓글로 스크롤이 되지 않는 문제 해결
- 게시글 추가, 삭제 시 스낵바를 통해 피드백
- 게시글 좋아요 & 좋아요 취소 결과가 화면에 나타나지 않는 문제 해결
- 게시글 tags 정보 파싱 문제 해결 (보낼 땐 , 기반 join 문자열로, 받을
  때는 일반 문자열 배열로)

* fix: 모바일 상의 레이아웃 및 그래픽 문제 해결

- 모바일 상에서 버튼이나 링크 클릭시 나타나는 기본 하이라이트 컬러 제거
- 댓글 input 패딩 조정
- 프로필 잔디 배경 투명 -> 흰색으로 변경
- kind 가 pills 인 Tabs 컴포넌트의 hover 이펙트 제거(모바일 상에서 클릭된 글씨가 희미해지는 문제 해결)

* [#314] 세번째 팀 데모에서 발견된 버그 해결 (#315)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 2차 데모 세번째 버그 수정

- 댓글 프로필 이미지, 유저 이름이 고정되어 있는 문제 해결
- 게시글 추가 시 레포지터리 목록을 불러오기 위한 계정이 하나로 고정되어 있는 문제 해결
- 임시 레포목록 검색 기능 추가

* [#316] 3차데모 검색 페이지 및 UI 관련 이슈 해결 (#317)

* fix: 검색 결과 리스트에서 팔로우시 깜박거리는 버그 해결

* feat: 게시물 삭제시 컨펌 추가

* fix: 이미지 및 텍스트 인디케이터 사이즈 고정

* feat: 간략히 버튼 추가

* [#318] 네번째 팀 데모에서 발견된 버그 해결 (#319)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 네번째 팀 데모에서 발견된 버그 해결

- 댓글 슬라이더 가로 스크롤링 되는 문제 해결
- 이미지들 총 용량 제한 1MB 로 수정
- 게시글 내용의 개행이 실제로 반영되도록 수정
- 게시글 추가 중 태그 입력 후 tagInputLength 가 0 으로 초기화 되도록 수정

* [#320] 게시물 추가 시 이미지가 없으면 alert처리 (#321)

* fix: 게시물 추가 시 이미지가 없으면 alert 처리

* refactor: 더보기, 간략히 정책 변경

* [#322] 게시글 수정 시 추가 되었다는 메세지가 아닌 수정 되었다는 메세지가 뜨도록 변경 (#323)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 게시글 수정 시 추가 되었다는 메세지가 아닌 수정 되었다는 메세지가 뜨도록 변경

* [#324] 다른 이용자의 UserFeed 좋아요가 동작하지 않는 문제를 해결 (#325)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 다른 이용자의 UserFeed 좋아요가 동작하지 않는 문제 해결

- currentUsername(접속한 이용자) -> username(이용자 피드 페이지의 대상 이용자) 으로 대상 변경

* [#259] 포스트 프로덕션 코드 리팩토링 (#270)

* refactor: Post 프로덕션 코드 리팩토링 (#252)

* refactor: infrastructure 유닛테스트, comment 유닛테스트 리팩토링

* test: Post 관련 유닛테스트 리팩토링

* test: Post application 레이어 관련 테스트 리팩토링

* test: Post 인수 테스트 리팩토링

* test: PostControllerTest 리팩토링 추가

* test: post builder를 사용하도록 변경

* refactor: 리베이스 후 깨지는 테스트 수정 및 누락된 테스트 추가

refactor: Post의 Tag관련 비즈니스 로직 PostTags로 이동 (#259)

이동과 함께 Post의 Build 패턴 적용과 리팩토링.

refactor: PostService와 PostController의 책임 분리. 및 s3Storage 파일 저장 방식 추가 (#259)

feed관련과, 게시물 관련으로 분리하여 관심사를 맞춤.

refactor: 전체적인 import 정리 (#259)

refactor: 패키지 정리 (#259)

refactor: Post의 getImageUrl 중복 메서드 제거 (#259)

refactor: CommentResponse의 도메인 참조 제거 및 DtoAssembler 리팩토링 (#259)

refactor: Feed관련 컨트롤러, 서비스, PostDto어셈블러  리팩토링, 레이어에 맞지 않는 DTO 이동 (#259)

refactor: CommentRequestDto 패키지 변경 및 PostController 리팩토링 (#259)

refactor: PostResponseDto가 presentation~presentation까지 사용되던것을 분리 (#259)

refactor: showRepositories -> userRepositories 메서드명 변경 (#259)

refactor: RepositoryResponse, domain -> controller까지 사용 되던것을 분리 (#259)

style: domain을 제외한 레이어의 구글 컨벤션 체크 (#259)

refactor: PostImageUrlResponseDto Builder 사용하도록 변경

refactor: Post 컨벤션 및 메서드 순서 정리 (#259)

refactor: Post user 관련 메서드명 author로 변경 및 필드, 메서드 정리 (#249)

refactor: PostTag equals getId()로 변경 및 필드 순서 정리 (#249)

refactor: Like를 VO로 취급, Likes를 컨테이너로 취급하도록 변경 (#249)

refactor: Image VO로 취급 및 도움 메서드 네이밍 변경, PostContent validation로직 변경 (#249)

refactor: CommentContent VO 취급, comment 도움메서드 이름 변경 및 책임 변경 (#249)

refactor: Post equals getter를 사용하도록 변경 (#249)

refactor: 연관관계 도움 메서드 반환깂 없도록 변경 (#249)

style: 구글 컨벤션 적용 (#249)

refactor: 추상화 수준 평탄화 작업 (#249)

* refactor: 리베이스 후 깨지는 파일 수정

* fix: User 비교 로직 버그 해결

* refactor: 메서드의 네이밍 변경

* refactor: 디미터의 원칙 준수

* refactor: 사용하지 않는 메서드 제거

* refactor: 깨지는 테스트 수정

* refactor: 타입 추론 변수를 타입형으로 변경

* refactor: 의미가 없는 변수명 제거 like -> 메서드참조

* style: 팀 컨벤션 적용

* feat: PickgitRequest Post Builder 구현

* refactor: PickgitRequest Post Builder 구조 변경

* feat: 명세에 따른 API 구현

* refactor: File을 body로 넣을 시 byte 변환 추가

* refactor: 로그인 모킹 방식 변경

* refactor: 빌더 내부 로그인 기능 구현.

* refactor: initAllParams 메서드 생성

Co-authored-by: SONG WON LEE <swon3210@gmail.com>
Co-authored-by: Jinhong <xlffm3@gmail.com>
Co-authored-by: Tanney102 <57767891+Tanney-102@users.noreply.github.com>
Co-authored-by: DAEUN LEE <leede0418@gmail.com>
Co-authored-by: YunTroubleshooter <63405904+yjksw@users.noreply.github.com>
Co-authored-by: binghe819 <56860124+binghe819@users.noreply.github.com>

* feat: 레이아웃 수정 & 파비콘 추가 (#342)

- Comment, CommentSlider 의 댓글 좋아요 영역 삭제
- PostContentUploader 의 TextEditor 의 텍스트 line-height 재설정

* feat: github stat 훅 분리 및 로그인 시에만 이용하도록 수정 (#343)

* [#344] 태그 기반 검색 기능 구현 (#348)

* refactor: ProfileFeed를 GridFeed로  추상화

* feat: 태그 검색 관련 mock추가

* refactor: getPostsFromPages함수에서 null값도 고려하도록 수정

* feat: 키워드기반 검색 로직 및 훅 구현

* feat: 키워드 기반 검색 썸네일 피드 및 페이지 구현

* fix: search header input 레이아웃 수정

* fix: 검색시 키워드가 뒤늦게 업데이트 되는 이슈 해결

* feat: 다중 검색 지원

* [#349] 태그 클릭 시 검색 페이지로 이동 (#350)

* feat: 게시물 태그 호버 및 클릭 피드백 추가

* feat: 게시물 태그를 클릭하면 태그 기반 게시물 검색 페이지로 이동

* refactor: console.log 제거

* refactor: PostItem 태그 키를 태그 이름으로 변경

* feat: 팔로우/언팔로우 시 깃헙 연동 여부 추가 (#353)

* [#354] 팔로워, 팔로잉 페이지 구현 (#357)

* refactor: 컴포넌트 및 타입 이름 변경

* feat: 팔로잉, 팔로우 리스트 요청 로직 및 훅 구현

* feat: 팔로우, 팔로잉 리스트 페이지 구현

* feat: 팔로우, 팔로잉 페이지에 OneDepthHeader 추가

* [#329] Github 통계 조회 기능 리팩토링 (#345)

* refactor: Github 통계 조회 기능 리팩토링 (#329)

- 로그인 -> 통계 조회 가능
- 비로그인 -> 통계 조회 불가능

* test: 컨트롤러 테스트 추가 (#329)

* test: 서비스 테스트 추가 (#329)

* test: 단위 테스트 추가 (#329)

* test: 서비스 테스트 수정 (#329)

* test: 통합 테스트 수정 (#329)

* test: 인수 테스트 추가 (#329)

* refactor: 필드 초기화 -> 생성자 주입 초기화 변경 (#329)

* style: 코드 포맷팅 변경 (#329)

* refactor: PlatformContributionExtractor 위치 변경 (#329)

* fix: findByKeyToken() 삭제 (#329)

- OAuthAccessTokenDao -> Key로 pick-git JWT, Value로 Github JWT 가지고 있음
- ArgumentResolver -> pick-git JWT(authentication) 기반으로 AppUser(LoginUser)에 Github JWT(accessToken) 바인딩

* test: 컨트롤러 테스트 수정 (#329)

* test: 서비스 테스트 수정 (#329)

* refactor: @Profile 삭제 (#329)

* test: 불필요한 클래스 삭제 (#329)

* test: 인수 테스트 수정 (#329)

* feat: restDocs에 이미지 파일이 깨지는 버그를 수정하고 누락 스니펫을 추가 (#361) (#363)

* [#339] 팔로잉 및 팔로워 목록 조회 기능 (#347)

* feat: userRepository 특정 유저의 팔로잉 및 팔로워 목록 조회 기능 구현 (#339)

* feat: UserService 특정 유저의 팔로잉 목록 조회 기능 구현 (#339)

* feat: UserService 특정 유저의 팔로워 목록 조회 기능 구현 (#339)

* feat: UserController 특정 유저 팔로잉 및 팔로워 조회 기능 구현 (#339)

* feat: 팔로잉 및 팔로워 조회 인수 테스트 작성 (#339)

* refactor: UserController 헬퍼 메서드명 변경 (#339)

* refactor: 팔로잉/팔로워 목록 조회 인수 테스트 API 메서드 변경 (#339)

* chore: 팔로잉/팔로워 rest docs 스니펫 추가 (#339)

* [#330] Github Repositories 조회 기능 리팩토링 (#358)

* refactor: API URL Path에서 username 삭제 (#330)

* test: 불필요한 import 삭제

* refactor: Github Repositories 조회 기능 리팩토링 (#330)

- Pagination 추가 -> API URL Path에 Query Parameter(page, limit) 추가

* refactor: 불필요한 import 삭제

* test: 단위 테스트 추가 (#330)

* test: 서비스 테스트 추가 (#330)

* test: 단위 테스트 수정 (#330)

* refactor: Pageable 사용 (#330)

* [#337] 태그 기반 게시물 검색 기능 구현 (#346)

* feat: tag 기반 post 검색 repository 구현 (#337)

* feat: search service 구현 (#337)

* feat: search controller 구현 (#337)

* test: acceptance Test 구현 (#337)

* refactor: 페키지 구조 변경 (#337)

* test: TagType, SearchTypes 도메인 테스트 작성 (#337)

* test: 서비스 슬라이스 테스트 작성 (#337)

* refactor: 테스트 메소드명 변경 (#337)

* test: Integration test 작성 (#337)

* refactor: 의미 없는 어노테이션 제거

* fix: 스니펫 생성 경로 변경 (#364) (#365)

* [#368] 팀 1차 데모 버그 수정 (#371)

* fix: 팔로우 목록 패딩 조정

* fix: 프로필, 검색 페이지 오버플로우 조정

* fix: 검색 페이지네이션 동작하지 않는 버그 수정

* fix: 깃헙 통계 요소 이름 변경

* fix: 팔로우 시 깃헙 연동 컨펌 닫히지 않는 버그 수정, 컨펌 버튼 텍스트 수정

* fix: spring rest docs html 생성 버그 해결 (#373)

* refactor: 프로필 수정 api 분리 (#369)

* [#378] Logback 설정 리팩토링 (#379)

* refactor: 백엔드 프로젝트 로깅 구조 변경 (#378)

* refactor: s3 프로젝트 로깅 구조 변경 (#378)

* [#340] 프로필 이미지 수정/정보 수정 API 기능 분리 (#352)

* feat: 프로필 이미지 수정 및 한 줄 소개 수정 기능 구현

* chore: 서브 모듈 최신화

* refactor: 피드백 반영

* refactor: User패키지 S3 프록시에 접근하는 인터페이스 분리

* [#380, #335] 인피니트 스크롤링 적용 & CommentSlider -> CommentsPage 로 변경  (#381)

* feat: favicon 웹팩 설정 추가

* feat: 기존의 cancel 아이콘을 delete icon 으로 변경

* feat: RepositorySelector 에 인피니트 스크롤링 적용

- InfiniteScrollContainer 에 throttle 적용

* feat: CommentSlider 의 기능을 CommentsPage 에서 수행하도록 변경

* [#419] JaCoCo 추가 (#422)

* chore: 서브모듈 업데이트

* chore: REST Docs 업데이트

* chore: JaCoCo 플러그인 추가 (#419)

* refactor: SonarQube Security 문제 해결 (#419)

* [#359] Github Repositories 검색 기능 구현 (#360)

* feat: 게시물 팔로워 목록 페이지를 구현한다. (#420)

- comment 목록을 한번에 10개씩 가져오도록 수정

* [#375] 팔로우/언팔로우 깃헙 자동 연동 기능구현 (#376)

* feat: 팔로우/언팔로우시 깃헙 자동 연동 기능 구현

* chore: github follow 권한 설정

* test: 팔로우/언팔로우시 깃헙 자동 연동 테스트 추가

* refactor: 피드백 리팩토링

* fix: 이미지 수정이 안되는 버그 수정 (#426)

* fix: 레포 목록 검색 api 주소 수정 (#428)

- 검색어가 없을 때는 기본 레포 목록 가져오기 api 를, 검색어가 있을 때는 레포 목록 검색 api를 사용하도록 변경

* [#431] JaCoCo 보완 (#432)

* chore: .gitignore 업데이트

* chore: JaCoCo 보완 (#431)

* [#425] 레포 검색 시 JSON 파싱 버그를 수정한다.  (#429)

* fix: JSON 파싱 버그 수정 (#425)

* chore: 코드 커버리지 최소 기준 변경

* chore: 코드 커버리지 최소 기준 변경

Co-authored-by: Daeun Lee <leede0418@likelion.org>

* [#415] comment 패키지 구조 변경 (#417)

* refactor: comment의 패키지를 분리한다 (#415)

* refactor: 실패하는 테스트 수정 (#415)

* feature: comment를 요청하는 service 로직 구현 (#421)

* feat: controller 구현 및 WebMvcTest, Acceptance 테스트 작성

* refactor: 리베이스후 에러 해결

* [#430] 반응형 디자인 구현 (#433)

* feat: 레포 목록 검색 시, 검색 결과 없을 경우 안내 문구가 등장하도록 수정

* feat: 반응형 디자인 구현 & comment 삭제 요청 수정

- 모든 페이지에 반응형 디자인 구현
- comment 삭제 요청 시 postId 를 매개변수로 받도록 수정

* docs: README 작성 (#94) (#440)

* refactor: 유저 이름을 기반으로 토큰을 생하도록 변경 (#439)

* chore: 프론트엔드 테스트 자동화 깃헙 액션 추가 (#443)

* refactor: 피드 조회시 함께 오는 댓글의 갯수를 3개로 제한 (#444) (#445)

* [#374] 좋아요 리스트 조회 기능 구현  (#413)

* feat: 게시물 좋아요 리스트 조회 기능 구현 (#374)

* fix : 테스트 fixture 버그 수정 (#374)

* fix : Post entity 기본생성자 접근 제어자 변경

* test: 컨트롤러 슬라이스 테스트 추가 (#374)

* fix: 테스트 코드 버그 수정 (#374)

* fix: 테스트에서 기존 데이터로 인한 버그 수정 (#374)

* refactor: 피드백 반영 (#374)

* refactor: 피드백 적용 (#374)

* [#281] 프로필 페이지 관련 훅 테스트 작성 (#446)

* refactor: error message getter 예외처리

* feat: useFollow 훅 테스트 작성

* feat: useProfileModification 테스트 초안 작성

* feat: useFollow 훅 테스트 케이스 추가

* chore: 테스트 관련 라이브러리 추가

* chore: 파비콘 관련 설정 추가

* chore: jest setup 파일 추가

* chore: 문자열 따옴표 통일

* refactor: profileModificationForm validatoin위치 수정

* chore: 불필요한 코드 제거

* refactor: 테스트 리팩터링

- mock data 분리
- 요청 mock 라이브러리 변경
- 테스트 케이스 추가

* feat: useProfileModificatonForm 훅 테스트 추가

* feat: useFollowerList 훅 테스트 코드 작성

* feat: useFollowingList 훅 테스트 코드 추가

* refactor: 테스트 환경에서 queryCilent 설정 추가

- retry 제거

* feat: useGithubStatistics 훅 테스트 코드 추가

* feat: useProfile 훅 테스트 코드 작성

* refactor: 에러처리 방식 수정

* feat: useSearchUserData 훅 테스트 코드 작성

* feat: useSearchPostData 훅 테스트 코드 작성

* [#370, #414] 댓글 삭제 기능 구현 (#434)

* feat: 댓글 삭제 기능 구현 (#370)

* refactor: 불필요한 import 삭제

* refactor: 게시글과 댓글 기능 리팩토링 (#414)

* fix: 댓글 삭제 기능 버그 해결 (#370)

* test: 통합 테스트 작성 (#370)

* test: 단위 테스트 작성 (#370)

* test: 컨트롤러 테스트 작성 (#370)

* test: 서비스 테스트 작성 (#370)

* test: 인수 테스트 작성 (#370)

* refactor: 추상 클래스 생성자 public -> protected 변경 (#370)

* refactor: 댓글 추가 및 삭제 기능 리팩토링 (#370, #414)

* test: 댓글 기능 테스트 리팩토링 (#370, #414)

* refactor: orphanRemoval -> CascadeType.REMOVE 변경 (#370)

* refactor: 게시물 및 댓글 삭제 기능 리팩토링 (#370, #414)

* fix: CORS 버그 해결 (#447) (#448)

* [#382] Prod 환경 Logback 설정 변경 (#383)

* refactor: Logback Prod 환경에서 DB 로그 삭제 변경 (#382)

* [#380, #335] 인피니트 스크롤링 적용 & CommentSlider -> CommentsPage 로 변경  (#381)

* feat: favicon 웹팩 설정 추가

* feat: 기존의 cancel 아이콘을 delete icon 으로 변경

* feat: RepositorySelector 에 인피니트 스크롤링 적용

- InfiniteScrollContainer 에 throttle 적용

* feat: CommentSlider 의 기능을 CommentsPage 에서 수행하도록 변경

* [#419] JaCoCo 추가 (#422)

* chore: 서브모듈 업데이트

* chore: REST Docs 업데이트

* chore: JaCoCo 플러그인 추가 (#419)

* refactor: SonarQube Security 문제 해결 (#419)

* [#359] Github Repositories 검색 기능 구현 (#360)

* feat: 게시물 팔로워 목록 페이지를 구현한다. (#420)

- comment 목록을 한번에 10개씩 가져오도록 수정

* [#375] 팔로우/언팔로우 깃헙 자동 연동 기능구현 (#376)

* feat: 팔로우/언팔로우시 깃헙 자동 연동 기능 구현

* chore: github follow 권한 설정

* test: 팔로우/언팔로우시 깃헙 자동 연동 테스트 추가

* refactor: 피드백 리팩토링

* fix: 이미지 수정이 안되는 버그 수정 (#426)

* fix: 레포 목록 검색 api 주소 수정 (#428)

- 검색어가 없을 때는 기본 레포 목록 가져오기 api 를, 검색어가 있을 때는 레포 목록 검색 api를 사용하도록 변경

* [#431] JaCoCo 보완 (#432)

* chore: .gitignore 업데이트

* chore: JaCoCo 보완 (#431)

* [#425] 레포 검색 시 JSON 파싱 버그를 수정한다.  (#429)

* fix: JSON 파싱 버그 수정 (#425)

* chore: 코드 커버리지 최소 기준 변경

* chore: 코드 커버리지 최소 기준 변경

Co-authored-by: Daeun Lee <leede0418@likelion.org>

* [#415] comment 패키지 구조 변경 (#417)

* refactor: comment의 패키지를 분리한다 (#415)

* refactor: 실패하는 테스트 수정 (#415)

* feature: comment를 요청하는 service 로직 구현 (#421)

* feat: controller 구현 및 WebMvcTest, Acceptance 테스트 작성

* refactor: 리베이스후 에러 해결

* [#430] 반응형 디자인 구현 (#433)

* feat: 레포 목록 검색 시, 검색 결과 없을 경우 안내 문구가 등장하도록 수정

* feat: 반응형 디자인 구현 & comment 삭제 요청 수정

- 모든 페이지에 반응형 디자인 구현
- comment 삭제 요청 시 postId 를 매개변수로 받도록 수정

* docs: README 작성 (#94) (#440)

* refactor: 유저 이름을 기반으로 토큰을 생하도록 변경 (#439)

* chore: 프론트엔드 테스트 자동화 깃헙 액션 추가 (#443)

* refactor: 피드 조회시 함께 오는 댓글의 갯수를 3개로 제한 (#444) (#445)

* refactor: Logback Prod 환경에서 DB 로그 삭제 변경 (#382)

Co-authored-by: SONG WON LEE <swon3210@gmail.com>
Co-authored-by: DAEUN LEE <leede0418@gmail.com>
Co-authored-by: YunTroubleshooter <63405904+yjksw@users.noreply.github.com>
Co-authored-by: binghe819 <56860124+binghe819@users.noreply.github.com>
Co-authored-by: Tanney102 <57767891+Tanney-102@users.noreply.github.com>
Co-authored-by: Daeun Lee <leede0418@likelion.org>
Co-authored-by: Minsung Son <sns2831@gmail.com>

* [#449] 게시글 좋아요 이용자 목록 페이지 이동 라우팅이 되지 않는 문제 해결 (#…
da-nyee added a commit that referenced this pull request Oct 27, 2021
* [#35 #36] 선택한 Github 레포지토리의 사용 언어 태그 추출 및 태그 저장/조회 기능 구현 (#52)

* chore: 인수 테스트를 위한 RestAssured 의존성 추가 및 테스트 환경 구성 (#35)

* feat: GIthub 특정 Repository에서 Language Tags 추출 (#35)

* feat: Github Tag 추출 서비스 구현 (#35)

* feat: Github Tag 추출 표현 계층 구현 (#35)

* refactor: 태그 추출 기능 중 Github API 호출 부분 인터페이스 분리 (#35)

* refactor: stub token으로 변경

* refactor: controlleradvice tag 패키지 범위 지정

* refactor: GithubTagExtractor 구현체 ObjectMapper 주입 (#35)

* refactor: TagExtractor 피드백 반영 및 컨트롤러 슬라이싱 테스트 추가 (#35)

* refactor: 태그 추출에 로그인 기능 포함 (#35)

* feat: Post 저장시 등록된 Tag도 함께 저장 (#36)

* feat: 이름에 해당하는 Tag가 없을때만 Tag 생성하는 서비스 구현 (#36)

* refactor: 현재 글에 존재하는 Tag와 중복되는 이름의 태그 추가시 예외 발생 (#35)

* refactor: Post에 Tag 정상 등록하는 테스트 추가 (#36)

* refactor: 태그 unique 제약 추가 및 @Transactional 적용 (#36)

* refactor: 태그 도메인 생성 유효성 검사 추가 (#36)

* refactor: 태그 인수 테스트 추가 및 패키지 구조 변경 (#36)

* chore: secret 삭제

* refactor: Rebase 이후 인수 테스트에 로그인 요청 모듈 추가 (#35)

* refactor: 잘못된 토큰으로 요청시 예외 확인 인수 테스트 추가 (#35)

* fix: rebase 이후 실패하는 테스트 보완

* refactor: 태그 추가 실패 에러 및 플랫폼 에러를 커스텀 예외로 변환 및 TagController 반환타입 변경 (#35)

* [#55 #57] 유저 프로필 조회 기능 구현 및 팔로우 팔로잉 기능 구현 (#61)

* feat: 유저 프로필 조회 기능 구현 (#55)

* feat: 유저 프로필 정보에 github url 추가 및 누락 파일 추가 (#55)

* feat: 유저 팔로우 팔로잉 기능 구현 (#57)

* test: 유저 프로필 및 팔로우/팔로잉 테스트 구현 (#55 #57)

* test: 유저 프로필 및 팔로우/팔로잉 테스트 구현(#55 #57)

* refactor: 유저 프로필 및 팔로우/팔로잉 피드백 반영 (#55 #57)

* test: verify() 추가 (#55 #57)

* [#88] LoginPage 구현 (#98)

* fix: 오타 수정

* chore: storybook 설정에 full screen 옵션 추가

* feat: 웹폰트 추가

* feat: GithubIconLarge svg 추가

* fix: button attribute type 오류 해결

* feat: github login mock api 추가

* feat: user context 구현

* fix: ProfileQuery accessToken type error 해결

* feat: github login link 조회 api 구현

* feat: github login 페이지 구현(#88)

* fix: UserContextProvider Props 타이핑 간소화

* feat: Provider 분리 및 UserContextProvider 추가

* feat: access token 조회 api 구현(#88)

* feat: github OAuth 로그인을 처리하는 페이지 구현

* [#104] merge시 누락된 코드 추가 (#105)

* fix: 누락된 interface 정의 추가

* fix: 누락된 prop 추가(commentId)

* fix: 누락된 url constants 추가

* feat: 파일 업로드 기능 구현 (#100)

* [#108] 예외 처리 전략 구현 (#112)

* feat: 예외 처리 전략 구현

* refactor: GlobalExceptionHandler에서 최상위 카테고리인 ApplicationException만 받도록 수정

* refactor: RestControllerAdvice로 수정

* refactor: 예외 로깅용 예외 message 생성자 파라미터 추가

* feat: Button 컴포넌트 kind type 추가(#107) (#111)

- SquaredBlock, RoundedInline추가

* [#102] 게시물에 Github Repository 주소 추가 기능 구현  (#109)

* feat: post 업로드 시 github repository 주소 함께 저장 (#102)

* fix: 불필요한 파일 삭제 (#102)

* refactor: 피드백 반영 (#102)

* [#34] 댓글 기능 구현 (#84)

* feat: Comment 유효성 검증 로직 추가 (#34)

* feat: Post 영속시 Comment 함께 영속화하는 기능 추가 (#34)

* feat: User가 특정 Post에 Comment 추가하는 기능 구현 (#34)

* feat: 등록된 게시물에 Comment 추가하는 서비스 구현 (#34)

* test: Service 통합 테스트 추가 (#34)

* feat: 댓글 추가 API 단위 및 인수 테스트 추가 (#34)

* refactor: CommentFormat 예외 상태코드 변경 및 에러 코드 테스트 검증 (#34)

* refactor: ControllerAdvice 이름을 특정 컨트롤러로 명시 (#34)

* refactor: 코드 병합으로 인한 테스트 코드 및 설정 수정 (#34)

* refactor: rebase 병합 해결 (#34)

* [#37] Github Repositories 조회 기능 구현 (#58)

* feat: Github Repositories 조회 기능 구현

* test: 슬라이스 테스트 작성

* refactor: get -> show 메소드명 수정

* refactor: 클래스명 수정

* refactor: Repository -> Repositories 클래스명 변경

* fix: rebase conflict 해결

* refactor: application -> domain <- infrastructure 방향으로 의존성 흐르도록 수정

* test: given-when-then 구문 수정

* refactor: HttpEntity -> RequestEntity 변경

* test: given-when-then 구문 수정

* refactor: Github Repositories 조회 기능 수정

* test: 컨트롤러 테스트 수정

* test: 슬라이스 테스트 수정

* test: 슬라이스 테스트 작성

* test: 인수 테스트 작성

* test: 통합 테스트 작성

* test: rebase conflict 해결

* feat: 프로필 조회시 팔로우 여부 판단 기능 구현 (#113) (#117)

* [#95] 홈 피드 게시글 조회 (#114)

* feat: 페이징을 통해 게시물을 조회하고 DTO로 변환 (#95)

* refactor: rebase 병합으로 인한 충돌 해결 (#95)

* feat: 게시물 조회 페이징 기능 서비스 테스트 추가 (#95)

* refactor: 게시글 목록 조회 기능 인수 테스트 추가 및 태그 DTO 정리 (#95)

* refactor: Post 조회 RestAssured 메서드 중복 리팩토링 (#95)

* refactor: 병합으로 인한 충돌 해결 (#95)

* refactor: batch size를 통한 페이징 쿼리 성능 개선 (#95)

* refactor: 페이징 fetch join 추가 (#95)

* [#119] 서브모듈 적용 (#120)

* chore: 서브모듈 추가 (#119)

* chore: 서브모듈 적용 (#119)

* chore: 서브모듈 수정 (#119)

* [#87] HomeFeedPage 페이지 컴포넌트 구현 (#121)

* refactor: Provider 와 Global Style 적용을 App.tsx -> Index.tsx 에서 수행

Co-authored-by: Tanney102 <Tanney-102@users.noreply.github.com>

* feat: Profile 페이지 query 초기화

* refactor: CommentData 타입 변경 & Comment 컴포넌트 Props 의 CommentData 타입 의존성 제거

* fix: PostItem 컴포넌트에 댓글 달기 버튼 추가 & Tag 들을 나타내는 Chip 들 추가

- send.svg 추가
- PostItem 스타일링 변경

* chore: webpack 이미지 파일 로더 룰 추가

* feat: TextEditor 컴포넌트 배경색 prop 제거

- 기본 border-radius 제거

* feat: Button kind 별 padding 변화 적용

* feat: 상속용 Styled Component 제작

* feat: Header 컴포넌트들에 모듈 Styled Component 상속 적용

* chore: .vscode 를 gitignore 목록에 추가

* feat: PostItem 컴포넌트 마크업 구조 수정

- 필요하지 않은 prop 할당 삭제

* feat: Header 컴포넌트에 일괄적으로 적용할 높이값 상수화

* feat: PostItem 스타일 속성 수정

* feat: Feed 컴포넌트 구현

* feat: HomeFeedPage 페이지 구현

* feat: FAILURE_MESSAGE & LIMIT 상수 추가

- LIMIT 는 어플리케이션에서 제한하는 데이터 형식을 나타내는 상수들을 담은 객체
- FAILURE_MESSAGE 는 요청 혹은 동작이 실패했을 때 사용자 피드백에 활용될 메세지들을 담은 객체

* feat: HomeFeedPage 라우팅 적용

Co-authored-by: Tanney102 <Tanney-102@users.noreply.github.com>

* [#118] 예외 처리 전략을 적용 및 Entity에 id 동등성 추가  (#122)

* refactor: Authentication 커스텀 예외처리 구현

* refactor: User, Tag 커스텀 예외처리 구현

* refactor: Post, Comment 커스텀 예외처리 구현

* refactor: 엔티티 id 동등성 정의

* refactor: 플랫폼 이니셜 V로 수정

* fix: DataJpaTest에 Date 관련 테스트 설정 추가 (#123)

* [#89] Profile Page 구현 (#126)

* refactor: Provider 와 Global Style 적용을 App.tsx -> Index.tsx 에서 수행

Co-authored-by: Tanney102 <Tanney-102@users.noreply.github.com>

* feat: Profile 페이지 query 초기화

* feat: Avatar 컴포넌트 name의 fontWeight을 bold로 변경

* feat: storybook dummy token 추가

* feat: mock data 및 routes 추가

* chore: svg 아이콘 추가

* fix: Profile interface 수정

* Revert "feat: mock data 및 routes 추가"

This reverts commit ea74c1bfda40c4bacf71283d193fad62927859d7.

* feat: ProfileHeader 컴포넌트 구현 (#89)

* feat: Profile 컴포넌트의 api로직 및 query 구현

* feat: Profile 컴포넌트 구현(#89)

* chore: assets/images의 파일을 .png, .jpg 로 통일

* chore: 이미지 확장자에 대해 url loader추가

* feat: profile 관련 mock api 추가

* feat: default Profile 이미지를 svg에서 png 파일로 변경

* refactor: profile page url을 하나로 통일

* feat: main 태그 추가

* feat: Profile컴포넌트 story 추가

* refactor: Profile url에 userType param 추가

* refactor: isMyProfile 속성을 Profile컴포넌트의 상위로 이동

* feat: Tabs 컴포넌트에 해당 탭에 대한 컨텐츠 추가

* feat: LoggedInWrapper util로 분리

* feat: ProfileFeed 컴포넌트 레이아웃 구현

* feat: mock data 추가

* feat: svg icon 추가

* refactor: 불필요한 코드 제거 및 누락 코드 보충

- 불필요한 의존성 제거
- 누락된 key prop 추가
- tab 스타일 변경
- 중복된 코드 제거

* feat: 프로필 피드에 비동기 로직 추가

* feat: GithubStatistics 컴포넌트 구현

* feat: Profile Page 구현(#89)

* refactor: 불필요한 interface 제거

* feat: 로그인 페이지 레이아웃 수정 및 홈 버튼 추가

* feat: 레이아웃 수정

* fix: 누락된 accessToken 추가

* refactor: 불필요한 코드 제거

* feat: 스타일 변경

- main widht를 모바일 사이즈로 고정
- black button 패딩 조정

* feat: 데모를 위해 항상 로그인 상태를 유지하도록 수정

* feat: 반응형 레이아웃 적용

* refactor: optional한 엘리먼트를 JSX로 처리

* refactor: error에 따른 ui 분기를 선언적으로 명시

Co-authored-by: SONG WON LEE <swon3210@gmail.com>
Co-authored-by: Tanney102 <Tanney-102@users.noreply.github.com>

* feat: 젠킨스 설정 파일 생성 (#133)

* refactor: 비로그인 유저로도 홈 피드 조회를 하도록 수정 (#134) (#135)

* fix: 파라미터 없이 route하도록 url 및 관련 코드 수정 (#131)

* fix: s3storage bean 탐색을 하지 못하는 버그 수정 (#136)

* [hotfix] CORS 버그 해결 (#138)

* fix: CORS 버그 해결

* chore: security 수정

* [#137] 내 프로필 계정의 게시물을 조회한다. (#139)

* feat: 내 프로필 계정의 게시물을 조회 기능 구현 (#137)

* refactor: Jenkins 빌드 스크립트 sleep을 3에서 10으로 변경

* [chore] api mocking 관련 코드 수정 (#140)

* feat: 무한스크롤 구현 전임을 감안하여 posts 조회시 page, limit mock

* feat: login mock 제거

* chore: 배포 환경에 따라 api proxy여부 분기

* chore: 운영 환경 설정 서브 모듈을 추가 (#143) (#144)

* [#141] 다른 유저의 프로필 계정의 게시물 조회  (#142)

* feat: 다른 유저의 프로필 피드를 조회하는 기능 구현 (#141)

* refactor: Pageable 사용하도록 수정 (#141)

* fix: PostRepository에 @Param 추가 (#145)

* [#146] 로그인 반환 값에 유저 네임 추가 및 인터셉터 매치 기능 리팩토링 (#147)

* refactor: PathPattern 인터셉터 URL과 Method를 통해 매치되도록 리팩토링

* refactor: 로그인후 반환할 때 토큰과 함께 유저 네임도 보내도록 수정

* fix: 응답 파싱 에러 수정 (#148)

* [#129] follow 추가, 취소 기능 구현 (#149)

* fix: 폰트 import 위치 변경

* feat: follow 추가, 취소 기능 구현(#129)

* feat: 어플리케이션 진입시 로그인 상태 확인

* refactor: submodule의 remote branch 기준을 main으로 변경 (#155)

master -> main

* refactor: 젠킨슨 빌드 유발 방식 변경에 따른 스크립트 수정 (#157)

* [#152] 응답 파싱 에러 수정 (#153)

* fix: 응답 파싱 에러 수정

* refactor: build.gradle 형식 통일

* fix: 비정상 파일 이름및 확장자 도출 버그 해결 (#160)

* [#163] 빌드 에러를 확인하다. (#164)

* fix: 비정상 파일 이름및 확장자 도출 버그 해결

* fix: 사용하지 않는 모듈 import로 인한 빌드 에러 수정

* fix: 사용하지 않는 모듈 import로 인한 빌드 에러 수정 (#165)

* [#106] request DTO 유효성 검사 추가 (#151)

* refactor: Client - Controller DTO명 변경 (#106)

* style: 파라미터 개행 수정 (#106)

* style: 메소드 개행 수정 (#106)

* test: 클래스명 변경 및 패키지 구조 변경 (#106)

* test: 불필요한 주석 삭제 (#106)

* feat: 서브모듈 추가 (#143)

* refactor: 기본 생성자 접근 제어자 변경 (#106)

* refactor: application-prod.yml 삭제 (#106)

* refactor: 적용되지 않는 Bean Validation 삭제 (#106)

* refactor: request DTO에 Bean Validation 추가 (#106)

* refactor: application-prod.yml 삭제 (#106)

* refactor: 서브모듈 수정

* refactor: 에러 메시지 수정 (#106)

* refactor: DTO 네이밍 수정 (#106)

* [#169] 파일 주소가 제대로 반환되지 않는 버그 수정 (#170)

* fix: 사용하지 않는 모듈 import로 인한 빌드 에러 수정

* fix: 파일 경로가 제대로 반환되지 않는 버그 수정

* refactor:사용하지 않는 import 제거

* [fix] 프론트엔드 이슈 수정 (#171)

* fix: 새로고침시 로그인 상태를 유지하도록 수정

* fix: 오타수정

* fix: query에 자기 이름으로 profile페이지 들어올 경우 redirect

* feat: 프로필 페이지 빈 게시물 표시 추가

* [fix] 프론트엔드 버그 수정 (#172)

* refactor: 불필요한 의존성 제거

* fix: url 오타 수정

* fix: 게시물 태그 문자열 파싱 오류 해결

* [#173] Feature/loader and infinite scroll container (#175)

* feat: Loader 컴포넌트 구현

* feat: InfiniteScrollContainer 컴포넌트 구현

* [#90] AddPostPage 페이지 컴포넌트 구현 (#176)

* feat: AddPostPage 구성 컴포넌트 구현

- PostAddStepHeader 컴포넌트 구현
- PostContentUploader 컴포넌트 구현
- RepositorySelector 컴포넌트 구현
- TagInputForm 컴포넌트 구현
- githube 아이콘 추가

* feat: separatorColor theme 색상 추가

* feat: AddPostPage 구현

- ImageUploader 컴포넌트 prop 명 변경
- 게시물 업로드에 사용되는 객체들의 타입 추가
- 게시물 업로드에 사용되는 API_URL, GITHUB_URL, STEPS 상수 추가
- PostAddDataContext & PostAddStepContext 추가

* fix: Noto Sans 웹폰트가 로드되지 않는 문제 해결

* feat: requestAddPost 요청 함수 구현

* feat: Input 컴포넌트에 name prop 추가

* feat: LIMIT 상수 객체에 FEED_COUNT_PER_FETCH 속성 추가

* feat: requestGetHomeFeedPosts 요청 함수에 기본 pageIndex 제공

* feat: PostAddDataContextProvider 적용 지점 변경 App -> AddPostPage 컴포넌트 바로 위

* feat: 태그 추가 후 태그 입력 Input 내용이 비워지도록 설정

* [#161] 회원/비회원 모두 받을 수 있는 API 토큰 검증 로직 수정 (#167)

* refactor: 표현 계층과 응용 계층의 반환하는 DTO 네이밍 통일

* refactor: 회원/비회원 모두 받을 수 있는 API 토큰 검증 로직을 수정한다.

- 기존 로직: 회원/비회원 모두 처리하는 API (ex. /api/posts)에서 토큰이 잘못된 경우 GuestUser로 처리.
- 수정 로직: 회원/비회원 모두 처리하는 API (ex. /api/posts)에서 토큰이 잘못된 경우 401 예외 발생.

* chore: 설정 수정

* refactor: 상수화

* refactor: 포맷팅 수정

* [#128] Infinite Scroll 기능 구현 (#178)

* feat: Infinite Scroll 기능 구현

* feat: 페이지 컴포넌트에서 데이터를 fetch 받도록 수정

* feat: TagFeedPage & UserFeed 페이지 추가

- 기능 구현 X
- PAGE_URL 상수 추가

* feat: 기존의 평문으로 제공되던 userName 을 로그인 된 유저 이름이 제공되도록 변경

* [#177] 게시물 시간 형식 추가 (#180)

* feat: 게시물 시간 정보 수정

* fix: 시간 형식 수정

* [#181] 요청에 userName 이 동적으로 들어가지 않는 문제를 해결 (#182)

* feat: Infinite Scroll 기능 구현

* feat: 페이지 컴포넌트에서 데이터를 fetch 받도록 수정

* feat: TagFeedPage & UserFeed 페이지 추가

- 기능 구현 X
- PAGE_URL 상수 추가

* feat: 기존의 평문으로 제공되던 userName 을 로그인 된 유저 이름이 제공되도록 변경

* fix: 요청에 userName 이 동적으로 들어가지 않는 문제 해결

- 필요없는 console.log 제거

* fix: userName 과 repositoryName 이 없을 때 데이터가 fetch 되는 버그를 해결 (#186)

- userName 이 파라미터로 들어가지 않은 문제 해결

* refactor: 홈피드를 최신 순으로 조회하도록 수정 (#189) (#191)

* [#162] 태그 추출 API 명세 변경 (#166)

* refactor: 태그 추출 api에서 name 제외 (#162)

* [#106] request DTO 유효성 검사 추가 (#151)

* refactor: Client - Controller DTO명 변경 (#106)

* style: 파라미터 개행 수정 (#106)

* style: 메소드 개행 수정 (#106)

* test: 클래스명 변경 및 패키지 구조 변경 (#106)

* test: 불필요한 주석 삭제 (#106)

* feat: 서브모듈 추가 (#143)

* refactor: 기본 생성자 접근 제어자 변경 (#106)

* refactor: application-prod.yml 삭제 (#106)

* refactor: 적용되지 않는 Bean Validation 삭제 (#106)

* refactor: request DTO에 Bean Validation 추가 (#106)

* refactor: application-prod.yml 삭제 (#106)

* refactor: 서브모듈 수정

* refactor: 에러 메시지 수정 (#106)

* refactor: DTO 네이밍 수정 (#106)

* [#169] 파일 주소가 제대로 반환되지 않는 버그 수정 (#170)

* fix: 사용하지 않는 모듈 import로 인한 빌드 에러 수정

* fix: 파일 경로가 제대로 반환되지 않는 버그 수정

* refactor:사용하지 않는 import 제거

* [fix] 프론트엔드 이슈 수정 (#171)

* fix: 새로고침시 로그인 상태를 유지하도록 수정

* fix: 오타수정

* fix: query에 자기 이름으로 profile페이지 들어올 경우 redirect

* feat: 프로필 페이지 빈 게시물 표시 추가

* [fix] 프론트엔드 버그 수정 (#172)

* refactor: 불필요한 의존성 제거

* fix: url 오타 수정

* fix: 게시물 태그 문자열 파싱 오류 해결

* [#173] Feature/loader and infinite scroll container (#175)

* feat: Loader 컴포넌트 구현

* feat: InfiniteScrollContainer 컴포넌트 구현

* [#90] AddPostPage 페이지 컴포넌트 구현 (#176)

* feat: AddPostPage 구성 컴포넌트 구현

- PostAddStepHeader 컴포넌트 구현
- PostContentUploader 컴포넌트 구현
- RepositorySelector 컴포넌트 구현
- TagInputForm 컴포넌트 구현
- githube 아이콘 추가

* feat: separatorColor theme 색상 추가

* feat: AddPostPage 구현

- ImageUploader 컴포넌트 prop 명 변경
- 게시물 업로드에 사용되는 객체들의 타입 추가
- 게시물 업로드에 사용되는 API_URL, GITHUB_URL, STEPS 상수 추가
- PostAddDataContext & PostAddStepContext 추가

* fix: Noto Sans 웹폰트가 로드되지 않는 문제 해결

* feat: requestAddPost 요청 함수 구현

* feat: Input 컴포넌트에 name prop 추가

* feat: LIMIT 상수 객체에 FEED_COUNT_PER_FETCH 속성 추가

* feat: requestGetHomeFeedPosts 요청 함수에 기본 pageIndex 제공

* feat: PostAddDataContextProvider 적용 지점 변경 App -> AddPostPage 컴포넌트 바로 위

* feat: 태그 추가 후 태그 입력 Input 내용이 비워지도록 설정

* [#161] 회원/비회원 모두 받을 수 있는 API 토큰 검증 로직 수정 (#167)

* refactor: 표현 계층과 응용 계층의 반환하는 DTO 네이밍 통일

* refactor: 회원/비회원 모두 받을 수 있는 API 토큰 검증 로직을 수정한다.

- 기존 로직: 회원/비회원 모두 처리하는 API (ex. /api/posts)에서 토큰이 잘못된 경우 GuestUser로 처리.
- 수정 로직: 회원/비회원 모두 처리하는 API (ex. /api/posts)에서 토큰이 잘못된 경우 401 예외 발생.

* chore: 설정 수정

* refactor: 상수화

* refactor: 포맷팅 수정

* [#128] Infinite Scroll 기능 구현 (#178)

* feat: Infinite Scroll 기능 구현

* feat: 페이지 컴포넌트에서 데이터를 fetch 받도록 수정

* feat: TagFeedPage & UserFeed 페이지 추가

- 기능 구현 X
- PAGE_URL 상수 추가

* feat: 기존의 평문으로 제공되던 userName 을 로그인 된 유저 이름이 제공되도록 변경

* [#177] 게시물 시간 형식 추가 (#180)

* feat: 게시물 시간 정보 수정

* fix: 시간 형식 수정

* [#181] 요청에 userName 이 동적으로 들어가지 않는 문제를 해결 (#182)

* feat: Infinite Scroll 기능 구현

* feat: 페이지 컴포넌트에서 데이터를 fetch 받도록 수정

* feat: TagFeedPage & UserFeed 페이지 추가

- 기능 구현 X
- PAGE_URL 상수 추가

* feat: 기존의 평문으로 제공되던 userName 을 로그인 된 유저 이름이 제공되도록 변경

* fix: 요청에 userName 이 동적으로 들어가지 않는 문제 해결

- 필요없는 console.log 제거

* fix: userName 과 repositoryName 이 없을 때 데이터가 fetch 되는 버그를 해결 (#186)

- userName 이 파라미터로 들어가지 않은 문제 해결

* refactor: 홈피드를 최신 순으로 조회하도록 수정 (#189) (#191)

* refactor: 태그 추출 api에서 name 제외 (#162)

Co-authored-by: DAEUN LEE <leede0418@gmail.com>
Co-authored-by: Minsung Son <sns2831@gmail.com>
Co-authored-by: Tanney102 <57767891+Tanney-102@users.noreply.github.com>
Co-authored-by: SONG WON LEE <swon3210@gmail.com>
Co-authored-by: binghe819 <56860124+binghe819@users.noreply.github.com>

* [#192] 프로필 페이지 401에러 미처리 이슈 해결 (#196)

* refactor: 변수 이름 수정, userName을 username으로 통일

* refactor: localStorage관련 로직 변경

* fix: 유효하지 않은 토큰에 대해 프로필 정보 리패치

* refactor: storage 모듈이 각 함수를 export 하도록 변경

* fix: 유효하지 않은 토큰에 대해 프로필 피드 리패치

* fix: github tas api url 변경 반영

* refactor: 타입가드 추가

* [#179] Github Repositories 조회 기능 수정 (#195)

* refactor: 서브모듈 수정

* refactor: Github Repository URL도 함께 응답 (#179)

* refactor: htmlUrl -> url 변수명 변경 (#179)

* [#197] 레이아웃 및 UI를 개선 (#198)

* feat: 더 이상 불러올 데이터가 없으면 Loader 가 사라지도록 Infinite Scroll 기능 수정

- Feed 데이터를 Page 에서 넘겨주도록 재설정
- 세부 기능이 구현되지 않은 TagFeedPage, UserFeedPage 페이지 컴포넌트 추가(HomeFeedPage 와 현재는 기능 동일)
- 데이터 로딩 시 화면에 나타낼 PageLoading 컴포넌트 구현

* feat: 모든 ul 태그의 margin을 0으로 하는 전역 스타일링 적용

* feat: 데이터 로딩 시 PageLoading 컴포넌트가 나타나도록 설정

- Profile, RepositorySelector, TagInputForm 컴포넌트에 적용

* feat: PostItem 컴포넌트 padding 값 수정

* feat: 모바일 반응형 break point 재설정 &  각 페이지 컴포넌트의 Container 에 Page 스타일드 컴포넌트 확장 적용

* feat: RepositorySelector 컴포넌트의 RepositoryList 에 고정 높이 값 적용

- 내용물이 높이값을 초과할 시 스크롤이 나타나도록 설정

* feat: 로그아웃 버튼 추가 (#203)

* [#194] REST Docs 적용 (#201)

* feat: 문서화 코드 작성

* feature: 문서화 로직 및 기반 파일 구성

* [#207] 배포 자동화 버그 수정 (#208)

* refactor: 빌드와 테스트를 하나의 stage로 합침.

* refactor: 기존 process 제거 시 SIGKILL로 변경

* fix: 누락된 스크립트 추가.

* [#91] Snackbar 구현 (#209)

* fix: 컴포넌트 이름과 중복되는 interface 이름 변경

* feat: 스낵바 구현

* chore: 배포 환경에 따라 api url 분기 (#211)

* chore: 프론트엔드 빌드 커맨드 수정 (#214)

* [#200, #205] 태그 관련 이슈 해결 (#216)

* fix: 게시글 추가 시, 초기에 불러온 기본 tag 들이 사라지지 않는 문제를 해결

* feat: 게시글 추가 중 태그 삭제 기능 구현

* fix: break point 에 맞게 어플리케이션 최대 너비를 375px -> 425px 로 조정

* [#217, #110] 테스트 패키지 구조 정리 (#218)

* chore: 인수/통합 테스트 및 common(픽스쳐 팩토리, mock api) 패키지 분리  (#217)

* chore: 기존 도메인 테스트 패키지들을 unit 하위로 이동 (#217)

* refactor: Tag 관련 Github 플랫폼 클래스 이름에 Tag 명시 (#217)

* chore: Test 관련 Configuration 통일 및 Github API 관련 클래스 프로필 설정 (#217)

* chore: 롬복 의존성 추가 (#217)

* refactor: TestConfiguration 클래스명에 Infrastructure 명시 (#217)

* refactor: PostFactory 빌더 패턴 적용하여 가독성 향상

* refactor: 실패하는 테스트 리팩토링

* refactor: UserFactory 빌더 패턴 적용하여 가독성 향상

* refactor: PostFactory 의미 없는 메서드 제거

* refactor: Test Configuration 이름 변경

* refactor: user fixture setUp로직 위치 변경

* refactor: DTO Builder 어노테이션 적용 및 Builder 제공 클래스 제거

* refactor: gradle.build 파일 정리

* style: 의미없는 공백 제거

Co-authored-by: Minsung <sns2831@gmail.com>

* [#223, #229] API 변경사항 반영 및 Post 중복제거 (#235)

* fix: API 명세 변경 사항 반영

- image와 imageUrl에 대한 키값 구분
- public repo를 가져오는 api 명에서 username 제거

* refactor: 불필요한 의존성 제거

* feat: 새로 패치된 post 중복제거

* fix: InfiniteScrollContainer effect 의존성 수정

* refactor: Snackbar 컴포넌트의 위치를 @layout으로 변경

* fix: post interface 수정

* refactor: 스낵바 메시지를 push 하는 메서드 이름을 더 명시적으로 변경

* fix: 중복된 key prop 수정

* feat:  http error 처리 유틸 구현

* refactor: HomeFeedPage의 상태로직을 훅으로 분리

* [#204] Issue 및 PR Template 수정 (#239)

* docs: PR 템플릿 수정

* docs: 이슈 템플릿 등록

* docs: 이슈 템플릿 수정

* docs: 이슈 템플릿 수정

* [#222] 프로필 페이지 피드 버그 수정 (#242)

* refactor: 중복된 게시물을 제거하는 로직을 util로 분리

* feat: 프로필 피드에 무한 스크롤 기능 추가

* refactor: profile page의 상태를 context로 분리

* feat: 팔로우 버튼에 로딩 애니메이션 추가

* refactor: 불필요한 컨테이너 제거

* refactor: ProfilePage 구조 개선

- 훅을 끌어올리는 수준을 작은 범위로 수정
- context를 제거하고 컨테이너 역할을 하는 컴포넌트를 추가

* [#219] 게시글 추가 중 발생하는 에러에 대한 피드백, 핸들링 구현 (#241)

* feat: BackDrop & MessageModalPortal 컴포넌트 구현

- index.html 에 div#modal 태그 추가
- MessageModalPortal 은 리액트 포털을 적용하여 구현
- 해당 컴포넌트를 사용하기 편하도록 useMessageModal 커스텀 훅 제작

* refactor: 필요 없는 import 구문 삭제

* feat: PostContentUploader 컴포넌트 안의 ImageSlider & ImageUploader 와 TextEditor 간의 margin 추가

* feat: 새로운 limits, messages 상수 추가

- message -> messages 로 파일 이름 변경

* feat: 게시글 추가 step 라우팅 path 에 한글이 들어가는 문제 해결

* fix: 필요한 변수 import 경로 수정

* feat: 게시글 추가 중 각각의 에러에 대한 이용자 피드백 구현
- PostAddFormData -> PostUploadData으로 변경
- 이용자의 깃허브 상에 올라와 있는 public repository 가 없으면 피드백 후 이전 페이지로 리다이렉트 시킨다.
- repository 를 선택하지 않고 이미지 & 글 작성으로 넘어가려 한다면 이를 피드백한다.
- 업로드한 이미지가 정해진 용량을 초과할 경우 피드백한다.
- 업로드한 이미지 개수가 정해진 개수를 초과할 경우 피드백한다.
- 이미지 개수가 정해진 개수를 초과할 경우 피드백한다.
- 텍스트 길이가 정해진 길이를 초과할 경우 피드백한다.
- 들어간 태그들 중 중복이 있으면 피드백한다.
- 태그에 '-', '_' 를 제외한 특수문자가 들어갔다면 이를 피드백한다.

* feat: ErrorResponse 타입 생성 및 적용

* feat: API 요청 에러 핸들링 구현

* [#232] 유저 테스트 코드 리팩토링 (#249)

* refactor: 코드 정리 (#232)

* refactor: 사용자 유효성 검증 추가 (#232)

- 게스트인 경우 UnauthorizedException 발생

* refactor: DTO 관련 네이밍 정리 (#232)

* test: 컨트롤러 테스트 리팩토링 (#232)

* test: 서비스 테스트 리팩토링 (#232)

* test: Data JPA 테스트 리팩토링 (#232)

* test: 불필요한 상수 삭제 (#232)

* test: 유저 이름 변경 (#232)

- loginUser/guestUser -> testUser로 통일

* test: 서비스 테스트 추가 (#232)

* test: 서비스 테스트 리팩토링 (#232)

* test: 통합 테스트 리팩토링 (#232)

* test: 인수 테스트 리팩토링 (#232)

* refactor: Builder 사용 (#232)

* refactor: Follow 객체에 책임 위임 (#232)

* test: 접근 제어자 수정 (#232)

* refactor: DTO 리팩토링 (#232)

* test: 불필요한 필드 삭제 (#232)

* test: WebEnvironment 옵션을 RANDOM_PORT -> NONE으로 변경 (#232)

* test: @SpringBootTest -> @DataJpaTest 변경 (#232)

* refactor: API 명세에 맞게 필드명 변경 (#232)

- image -> imageUrl 변경

* [#240] Authentication 관련 테스트 코드 리팩토링 (#247)

* test: authentication 관련 테스트 코드 리팩토링 (#240)

* test: 테스트 코드 리팩토링 (#240)

* refactor: 깃헙 인증 예외 변경 (#240)

* test: Authentication 테스트 코드 피드백 적용 (#240)

* test: HttpHeaders.AUTHORIZATION 으로 변경 (#240)

* [#226, #227] 프로필 수정 모달 구현 (#255)

* feat: Button 컴포넌트에 padding prop 추가

* feat: cancel-no-circle 아이콘 추가

* refactpr: BackDrop을 스타일드 컴포넌트로 수정

* refactor: textEditor 배경을 투명하게 수정

* chore: eslint no empty function 옵션 off

* refactor: css keyframes 파일로 분리

* feat: 카메라 아이콘 추가

* feat: TextEditor 컴포넌트에 indicator 추가(#226)

* refactor: z-index를 컨벤션에 맞게 수정

* feat: 프로필 수정 모달 구현(#227)

* [#246] 댓글 테스트 코드를 리팩토링 (#250)

* refactor: 댓글 관련 테스트 리팩토링

* refactor: 케빈 피드백 반영

* refactor: 댓글 조회 반환시 프로필 이미지 나오도록 수정

* [#220, #226] 네비게이션 ui 수정 및 이미지 인디케이터 추가 (#256)

* refactor: 비로그인 시에도 홈네이게이션 노출

* fix: header와 image slider의 쌓임 순서 버그 해결

* feat: 이미지 인디케이터 구현

* [#234] 태그 테스트 코드를 리팩토링 (#245)

* refactor: 태그 도메인 부분 테스트 리팩토링

* refactor: 태그 슬라이싱 테스트 리팩토링

* refactor: 태그 통합 테스트 리팩토링

* refactor: 태그 인수 테스트 리팩토링

* refactor: connection pool 사용하는 커스텀 RestTemplate 적용

* refactor: Post와 Tag 연관관계 부분 프로덕션 및 테스트 코드 리팩토링

* refactor: 케빈 피드백 적용

- ParameterizedTest 이용하도록 수정
- 중복된 테스트 제거

* refactor: 피드백 반영

* refactor: 소문자로 자동 변환되도록 수정

* refactor: 너잘 피드백 적용

* refactor: 깃헙에서 태그 가져올 때 소문자로 변환되도록 리팩토링

* [#221, #225] 프로필 피드 클릭시 유저 피드 페이지로 이동 (#260)

* fix: 헤더에서 height가 큰 요소들의 레이아웃이 깨지는 버그 해결

* fix: slideButtonKind 복구

* refactor: 타입 단언 제거

* feat: 프로필피드에서 포스트 클릭시 유저 피드 페이지로 이동

* [#251] Post 테스트 코드를 리팩토링  (#252)

* refactor: infrastructure 유닛테스트, comment 유닛테스트 리팩토링

* test: Post 관련 유닛테스트 리팩토링

* test: Post application 레이어 관련 테스트 리팩토링

* test: Post 인수 테스트 리팩토링

* test: PostControllerTest 리팩토링 추가

* test: post builder를 사용하도록 변경

* refactor: 리베이스 후 깨지는 테스트 수정 및 누락된 테스트 추가

* [#183] 게시글 댓글 기능을 구현 (#265)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* feat: HomeFeed 컴포넌트에서 로그인 된 상태에서 자신의 개시글만 수정 아이콘이 뜨도록 변경

* feat: BottomSliderPortal 컴포넌트 구현

* feat: CommentSlider 컴포넌트 구현

* chore: Layout 상수 객체 이름 LAYOUT 으로 변경

* feat: getLastHash util 함수 구현

* feat: getTabTextColor util 함수 구현

* feat: useBottomSlider 훅 구현

* refactor: PostItem 컴포넌트 수정

- 해당 컴포넌트에서 댓글 입력 값 저장 및 수정을 담당하지 않도록 수정
- 댓글 추가 아이콘 버튼 삭제
- Post, CommentData 타입의 id 속성 타입을 string -> number 로 수정

* feat: 댓글 추가 기능 구현

- Tabs 컴포넌트가 tabIndicatorKind 값에 따라 다른 indicator 를 사용하도록 수정
- useFeed -> useFeedMutation 으로 수정
- HomeFeedPage 상에서 useFeed 를 사용하는 것을 useHomeFeed 를 사용하도록 수정
- COMMENT_INPUT_HEIGHT 레이아웃 상수 추가
- 임시용 UserFeedPage 와 TagFeedPage 업데이트 (여전히 임시용)

* fix: CommentSlider 해시 라우팅으로 인해 특정 UserFeedPage 렌더링이 되지 않는 문제 해결

- CommentSlider 를 토글할 때도 history.location 의 state 와 query param 을 그대로 사용하도록 수정
- NavigationHeader 컴포넌트의 height: content-fit 속성 삭제 & 로그아웃 버튼의 padding 값 수정
- HomeFeed -> Feed 로 컴포넌트 이름 수정

* feat: 댓글 저장 시 예외 처리 추가

* [#199, #248, #184] 게시글 삭제 & 게시글 기본 이미지 구현 (#271)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* feat: 게시글 삭제 기능 구현 & 이미지가 없을 시 기본 이미지 보여주기 구현

- 삭제 버튼을 나타나게 만들기 위한 ButtonDrawer 컴포넌트 구현

* feat: TagInputForm 상에서 Tag 입력 중 모바일 가상 키보드가 레이아웃을 깨뜨리는 문제 해결

- 에러 발생시 tag input 을 blur 처리

* [#243] s3 proxy 관련 테스트 리팩토링 (#244)

* chore: s3-proxy properties 포맷을 yaml로 수정 (#243)

* chore: 프로덕션 패키지명 컨벤션맞게 수정 (#243)

* test: S3Storage 슬라이싱 테스트 추가 (#243)

* test: StorageService 슬라이싱 테스트 케이스 추가 (#243)

* refactor: StorageController 슬라이싱 테스트 불필요한 given절 삭제 (#243)

* refactor: 인수 테스트 불필요한 throws절 삭제 (#243)

* refactor: 커스텀 예외 컨벤션에 맞게 에러 코드 추가 (#243)

* refactor: 패키지명 변경 및 구글 컨벤션에 맞게 수정 (#243)

* refactor: 1장이라도 업로드 실패시 예외 발생하도록 변경 (#243)

* [#230] 검색페이지 구현 (#274)

* feat: 검색 mock data 추가

* fix: LoginWrapper children 타입 수정

* feat: search context 추가

* feat: SearchHeader에 SearchContext 적용

* feat: SearchPage 및 검색 기능 구현

* fix: 오타수정

* 추가

* refactor: 불필요한 의존성 제거

* refactor: useFollow분리 및 follow mutation 에러처리 수준 변경

* feat: 유저 검색 결과에서 팔로우 기능 구현

* fix: 검색페이지 진입시 이전 검색 기록 초기화

* [#253] Github 통계 조회 기능 구현 (#263)

* feat: Github 통계 조회 기능 구현 (#253)

* test: 컨트롤러 테스트 작성 (#253)

* test: 서비스 테스트 작성 (#253)

* test: 통합 테스트 작성 (#253)

* test: 인수 테스트 작성 (#253)

* test: 단위 테스트 작성 (#253)

* style: 개행 추가 (#253)

* refactor: 클래스명 변경 (#253)

- PlatformExtractor -> PlatformContributionExtractor
- PlatformApiRequester -> PlatformContributionApiRequester

* refactor: @Profile 추가 (#253)

* refactor: 상수 -> @Value 변경 (#253)

* refactor: 커스텀 예외 추가 (#253)

* test: 단위 테스트 추가 (#253)

* refactor: Calculator 객체로 비즈니스 로직 분리 (#253)

- Service에 있던 비즈니스 로직을 Calculator 객체로 이동
- 단위 테스트 추가

* test: 불필요한 import 삭제

* refactor: 패키지 위치 변경 (#253)

- 인터페이스는 domain, 구현체는 infrastructure에 위치

* style: 접근 제어자 삭제 (#253)

* refactor: Calculator 인터페이스 메소드 반환 타입 변경 (#253)

* refactor: try-catch 문으로 예외 핸들링 (#253)

* test: 단위 테스트 수정 (#253)

* refactor: Calculator 인터페이스 메소드 반환 타입 변경 (#253)

- DTO -> Domain Object

* [#277] useFollow 테스트 작성 (#278)

* feat: SearchPage 및 검색 기능 구현

* refactor: useFollow분리 및 follow mutation 에러처리 수준 변경

* refactor: acceessToken이 없는 경우에 대한 에러코드 추가

* chore: hook 테스트를 위한 라이브러리 설치 및 설정

* refactor: ErrorCode 타입 추가

* refactor: handleHTTPError 모듈 분리

- handleHTTPError 함수를 utils/error.ts로 이동
- 상수 및 타입 분리

* test: useFollow 테스트 코드 작성

* refactor: 파일이름 변경

- constants/httpError.ts 를 constants/error.ts 로 변경

* refactor: useFollow 에러처리

- accesstoken이 없을 경우에 대한 에러처리 추가
- client error를 처리하기 위한 객체 구현

* [#124, #262, #275, #276] 요청 관련 이슈 해결 (#280)

* fix: 프로필 수정 api 형식 변경

- put메서드에서 post메서드로 변경
- 변경된 이미지가 없을경우 빈 파일 객체 전송
- 한 줄 소개가 변경되지 않아도 그대로 보내기

* fix: 검색 api url 변경

* fix: github stats 요소 및 api url 변경

* refactor: 최초 페이지 진입시 토큰이 유효하지 않으면 로그아웃

* fix: 내 게시물의 프로필 영역을 클릭하면 내 프로필 페이지로 이동하도록 수정

* refactor: 유저프로필, 내프로필 분기를 ProfilePage에게 위임

* feat: 최초 진입 이펙트 app으로 분리

* [#257] 게시물 좋아요 기능 구현 (#264)

* feat: 게시물 좋아요 기능 구현 (#257)

* feat: 게시물 좋아요 및 좋아요 취소 기능 테스트 구현 (#257)

* refactor : 피드백 반영 (#257)

* [#236] 로깅 기능 세팅 (#237)

* chore: 활성 프로필에 따른 logback 환경 설정 (#236)

* feat: 전역 예외 어드바이저에 로거 추가 및 DB / 런타임 예외 바인딩 (#236)

* chore: s3proxy directory logback 설정 추가 (#236)

* feat: s3proxy 예외 어드바이저 추가 (#236)

* refactor: applicationException 핸들러 어드바이저 메서드명 수정 (#236)

* refactor: 백엔드 프로젝트 로깅 전략 수정 (#236)

- 테스트 로깅 전략 콘솔로 수정
- DB 관련 로거 종류 프로필별 재정의
- 부모 로거가 찍히지 않도록 additivity false 추가
- 글로벌 예외 어드바이저에 로깅 양식 정의

* chore: logback-access 설정 추가 및 프로필별 설정 구성 (#236)

* chore: s3proxy 프로젝트 logback-access 설정 추가 (#236)

* refactor: s3proxy, backend 프로젝트 log 포맷 변경 (#236)

* chore: backend logger DB, Access 등 용도별 분리 (#236)

* chore: s3proxy logger DB, Access 등 용도별 분리 (#236)

* [#254] 유저 검색 기능을 구현 (#266)

* feat: User 검색 기능 구현

* refactor: 피드백 반영 리팩토링

* refactor: 프론트측과 협의한 부분 리팩토링

* fix: 검색 요청시 user와 tag 분리 (#283)

* [#267] 프로필 수정 기능을 구현 (#279)

* feat: 유저 프로필 수정 기능 구현

* refactor: 피드백 적용

* refactor: 피드백 리팩토링

* [#269] 게시물 수정 및 삭제 기능 구현 (#272)

* feat: 게시물 수정 및 삭제 기능 구현 (#269)

* fix: 게시물 수정 기능 버그 해결 (#269)

* test: 게시물 수정 기능 통합 테스트 작성 (#269)

* fix: 게시물 삭제 기능 버그 해결 (#269)

* test: 게시물 삭제 기능 통합 테스트 작성 (#269)

* test: 게시물 수정 기능 서비스 테스트 작성 (#269)

* test: 게시물 삭제 기능 서비스 테스트 작성 (#269)

* test: 게시물 수정 기능 컨트롤러 테스트 작성 (#269)

* test: 게시물 삭제 기능 컨트롤러 테스트 작성 (#269)

* test: 게시물 수정 기능 인수 테스트 작성 (#269)

* test: 게시물 삭제 기능 인수 테스트 작성 (#269)

* refactor: 정적 팩토리 메소드 삭제 (#269)

* test: 불필요한 테스트 삭제 (#269)

* refactor: Command, Query 분리 (CQS) (#269)

* test: verify() 값 지정 (#269)

* refactor: 상태별로 update() 분리 (#269)

* fix: 해당하는 사용자의 게시물인지 확인하는 로직 추가 (#269)

* [#284] 게시물 수정 및 삭제 버그 해결 (#285)

* test: 통합 테스트 버그 해결 (#284)

* test: 불필요한 테스트 삭제 (#284)

* fix: Github 통계 조회 버그 해결 (#287) (#288)

* refactor: like 관련 DTO 필드명 번경 (#289) (#291)

* fix: restDocs 필드명 수정 및 Boolean으로 변경 (#292) (#297)

* [#228] 게시글 수정 기능 구현 (#286)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* refactor: 게시글 추가 과정에서 필요한 데이터를 일반 컴포넌트에서 불러오지 않고 Page 컴포넌트에서 내려주도록 수정

* feat: 게시글 추가 기능 구현

- 컨벤션에 맞게 useGithubTagsQuery 메서드 수정
- EditPostPage 페이지 컴포넌트 구현
- PostEditDataContext, PostEditStepContext 추가
- usePostEdit, usePostStep 훅 추가

* [#258] 유저 프로덕션 코드 및 테스트 리팩토링 (#268)

* refactor: User 도메인 부족한 팔로우, 언팔로우 등 테스트 추가 (#258)

* refactor: User equals & hashCode 정의시 getter 사용 (#258)

* refactor: Follow 도메인 equals & hashCode 정의시 getter 사용 (#258)

* refactor: Following, Follwers 메서드명 및 선언 순서 변경 (#258)

* refactor: Followings, Followers 테스트 추가 및 생성자 추가 (#258)

* refactor: User.profile 관련 도메인 코드 포맷팅 및 setter 삭제 (#258)

* refacotr: User 내부 Posts에 생성자 변경 및 UserRepository 영속성 테스트 추가 (#258)

* refactor: User 응용 계층 메서드 추출 리팩토링 및 DTO getter 추가 (#258)

* refactor: AppUser의 UserService 침투 제거 및 테스트 코드 계층 분리 (#258)

- AppUser가 서비스 코드에 침투하는 것을 막기 위해 AppUser 추상 클래스에 별도의 이름 호출 메서드를 추가함

* refactor: UserService 통합 테스트 계층적으로 리팩토링 (#258)

* refactor: AuthUserRequest 안쓰는 DTO 및 생성자 삭제와 메서드 파라미터명 통일 (#258)

* refactor: User 테스트 메서드 nested 적용 (#258)

* refactor: User 불필요한 임베디드 타입 getter 삭제 및 테스트 리팩토링 (#258)

* refactor: User 엔티티 내부 임베디드 타입 클래스의 기본 생성자를 protected로 변경 (#258)

* refactor: UserRepository 테스트 nested 적용 (#258)

* refactor: UserService 슬라이싱 테스트 verify 구체화 및 메서드 분리 (#258)

* refactor: UserService 통합 테스트 반복되는 given 부분 메서드 추출 (#258)

* refactor: UserController 슬라이싱 테스트 로그인여부 분리 및 DTO Getter 추가 (#258)

* refactor: User 인수 테스트 반복되는 api 호출 메서드 통일 (#258)

* refactor: 병합 충돌 해결 (#258)

* refactor: UserDataJpaTest Nested C-D-I 명세 변경 (#258)

* refactor: 유저 컨트롤러 슬라이싱 테스트 verify 추가 및 테스트 오류 수정 (#258)

- 기존 unfollow 테스트가 잘못 진행되고 있었던 부분을 해결

* chore: UserService 헬퍼 메서드 위치 수정 (#258)

* refactor: UserController 응답 생성 헬퍼 메서드 위치 이동 (#258)

* refactor: Follow, Unfollow시 두 유저 동등성 비교 로직 Follow 클래스로 이동 (#258)

* refactor: User의 팔로우, 언팔로우 조건 검사 로직을 Followers, Followings로 이동 (#258)

* chore: User.addComment 테스트 삭제 (#258)

* refactor: AuthUserRequestDto의 AppUser에 대한 정적 팩토리 메서드 추가 (#258)

* refactor: User 컨트롤러 테스트 anyString given/verify 인자 변경 (#258)

* fix: 프로덕션 및 테스트 코드 순서 변경 및 SpringBoot 통합테스트로 인한 Nested 제거 (#258)

* refactor: 병합 충돌 해결 및 AppUser를 서비스에서 사용못하도록 변경 (#258)

* chore: 프로덕션 코드 순서 정렬 및 DTO 필드명 변경 (#258)

* chore: User 관련 테스트 코드 순서 정렬 및 포맷팅 (#258)

* [#293] Logback 인식 불가 버그 해결 (#299)

* fix: logback appender 경로 수정 (#293)

* chore: rest docs 문서 변경

* [#273, #301] profile page 에러처리 수준 수정 및 기타 버그 해결 (#302)

* refactor: 프로필 수정 페이지 서비스로직 분리 및 에러처리 수준 수정

* refactor: 중복되는 validation 제거

* refactor: 불필요한 의존성 제거

* feat: 유저 검색 결과에 유저 프로필 페이지 링크 추가

* fix: 프로필 수정 후 반영이 안되는 이슈 해결

* refactor: api url 변경

* fix: 로그인으로 게시글 조회시 게스트로 인식하던 문제 해결 (#298)

* [#295] 게시물 수정 및 삭제 DB 버그 해결 (#300)

* refactor: findPostByUser -> findPostByIdAndUser 변경 (#295)

* test: Data JPA 테스트 추가 (#295)

* refactor: 생성자 수정 (#295)

* test: 예외 발생 -> Optional.empty() 검증 변경 (#295)

* refactor: 불필요한 코드 삭제 (#295)

* refactor: 해당하는 사용자의 게시물이 맞는지 확인하는 과정 수정 (#295)

- DB에서 처리 -> 비즈니스 로직에서 처리로 변경

* refactor: 불필요한 코드 삭제 (#295)

* test: 불필요한 import 삭제 (#295)

* [#290] 중간 데모 버그를 해결 (#303)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 중간 데모 버그 해결

- 게시글 데이터 속성 중 isLiked -> liked 로 변경
- 로그인 했을 때만 좋아요 버튼이 나타나도록 수정
- 로그인 했을 때만 댓글 달기 버튼이 나타나도록 수정
- 좋아요, 좋아요 취소 상태 반영
로그인 버튼 padding 수정
- 댓글을 추가했을 때 바로 추가된 댓글을 화면에서 확인할 수 있게 수정
- 댓글이 게시글 조회시에는 최대 10개만 나올 수 있도록 수정
- 기존의 댓글 달기 input 을 댓글 슬라이더 토글 버튼으로 변환

* fix: api url 수정 (#305)

* fix: Post - Comments 영속성 전이 버그 해결 (#306) (#307)

* [#308] 게시물 수정 버그 해결 (#309)

* fix: orphanremoval = true 옵션 추가 (#308)

* test: 통합 테스트 추가 (#308)

* [#310] 팀데모 결과 반영 - 프로필 페이지 (#311)

* fix: api url 오타 수정

* fix: 누락된 key prop 추가

* fix: 깃헙통계 기능 임시 api로 수정

* 프로필 페이지 하단 레이아웃 버그 수정

* [#312] 두번째 팀 데모에서 발견된 버그 해결 (#313)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 두번째 팀 데모에서 발견된 버그 해결

- 댓글 추가 시 최근 댓글로 스크롤이 되지 않는 문제 해결
- 게시글 추가, 삭제 시 스낵바를 통해 피드백
- 게시글 좋아요 & 좋아요 취소 결과가 화면에 나타나지 않는 문제 해결
- 게시글 tags 정보 파싱 문제 해결 (보낼 땐 , 기반 join 문자열로, 받을
  때는 일반 문자열 배열로)

* fix: 모바일 상의 레이아웃 및 그래픽 문제 해결

- 모바일 상에서 버튼이나 링크 클릭시 나타나는 기본 하이라이트 컬러 제거
- 댓글 input 패딩 조정
- 프로필 잔디 배경 투명 -> 흰색으로 변경
- kind 가 pills 인 Tabs 컴포넌트의 hover 이펙트 제거(모바일 상에서 클릭된 글씨가 희미해지는 문제 해결)

* [#314] 세번째 팀 데모에서 발견된 버그 해결 (#315)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 2차 데모 세번째 버그 수정

- 댓글 프로필 이미지, 유저 이름이 고정되어 있는 문제 해결
- 게시글 추가 시 레포지터리 목록을 불러오기 위한 계정이 하나로 고정되어 있는 문제 해결
- 임시 레포목록 검색 기능 추가

* [#316] 3차데모 검색 페이지 및 UI 관련 이슈 해결 (#317)

* fix: 검색 결과 리스트에서 팔로우시 깜박거리는 버그 해결

* feat: 게시물 삭제시 컨펌 추가

* fix: 이미지 및 텍스트 인디케이터 사이즈 고정

* feat: 간략히 버튼 추가

* [#318] 네번째 팀 데모에서 발견된 버그 해결 (#319)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 네번째 팀 데모에서 발견된 버그 해결

- 댓글 슬라이더 가로 스크롤링 되는 문제 해결
- 이미지들 총 용량 제한 1MB 로 수정
- 게시글 내용의 개행이 실제로 반영되도록 수정
- 게시글 추가 중 태그 입력 후 tagInputLength 가 0 으로 초기화 되도록 수정

* [#320] 게시물 추가 시 이미지가 없으면 alert처리 (#321)

* fix: 게시물 추가 시 이미지가 없으면 alert 처리

* refactor: 더보기, 간략히 정책 변경

* [#322] 게시글 수정 시 추가 되었다는 메세지가 아닌 수정 되었다는 메세지가 뜨도록 변경 (#323)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 게시글 수정 시 추가 되었다는 메세지가 아닌 수정 되었다는 메세지가 뜨도록 변경

* [#324] 다른 이용자의 UserFeed 좋아요가 동작하지 않는 문제를 해결 (#325)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 다른 이용자의 UserFeed 좋아요가 동작하지 않는 문제 해결

- currentUsername(접속한 이용자) -> username(이용자 피드 페이지의 대상 이용자) 으로 대상 변경

* [#259] 포스트 프로덕션 코드 리팩토링 (#270)

* refactor: Post 프로덕션 코드 리팩토링 (#252)

* refactor: infrastructure 유닛테스트, comment 유닛테스트 리팩토링

* test: Post 관련 유닛테스트 리팩토링

* test: Post application 레이어 관련 테스트 리팩토링

* test: Post 인수 테스트 리팩토링

* test: PostControllerTest 리팩토링 추가

* test: post builder를 사용하도록 변경

* refactor: 리베이스 후 깨지는 테스트 수정 및 누락된 테스트 추가

refactor: Post의 Tag관련 비즈니스 로직 PostTags로 이동 (#259)

이동과 함께 Post의 Build 패턴 적용과 리팩토링.

refactor: PostService와 PostController의 책임 분리. 및 s3Storage 파일 저장 방식 추가 (#259)

feed관련과, 게시물 관련으로 분리하여 관심사를 맞춤.

refactor: 전체적인 import 정리 (#259)

refactor: 패키지 정리 (#259)

refactor: Post의 getImageUrl 중복 메서드 제거 (#259)

refactor: CommentResponse의 도메인 참조 제거 및 DtoAssembler 리팩토링 (#259)

refactor: Feed관련 컨트롤러, 서비스, PostDto어셈블러  리팩토링, 레이어에 맞지 않는 DTO 이동 (#259)

refactor: CommentRequestDto 패키지 변경 및 PostController 리팩토링 (#259)

refactor: PostResponseDto가 presentation~presentation까지 사용되던것을 분리 (#259)

refactor: showRepositories -> userRepositories 메서드명 변경 (#259)

refactor: RepositoryResponse, domain -> controller까지 사용 되던것을 분리 (#259)

style: domain을 제외한 레이어의 구글 컨벤션 체크 (#259)

refactor: PostImageUrlResponseDto Builder 사용하도록 변경

refactor: Post 컨벤션 및 메서드 순서 정리 (#259)

refactor: Post user 관련 메서드명 author로 변경 및 필드, 메서드 정리 (#249)

refactor: PostTag equals getId()로 변경 및 필드 순서 정리 (#249)

refactor: Like를 VO로 취급, Likes를 컨테이너로 취급하도록 변경 (#249)

refactor: Image VO로 취급 및 도움 메서드 네이밍 변경, PostContent validation로직 변경 (#249)

refactor: CommentContent VO 취급, comment 도움메서드 이름 변경 및 책임 변경 (#249)

refactor: Post equals getter를 사용하도록 변경 (#249)

refactor: 연관관계 도움 메서드 반환깂 없도록 변경 (#249)

style: 구글 컨벤션 적용 (#249)

refactor: 추상화 수준 평탄화 작업 (#249)

* refactor: 리베이스 후 깨지는 파일 수정

* fix: User 비교 로직 버그 해결

* refactor: 메서드의 네이밍 변경

* refactor: 디미터의 원칙 준수

* refactor: 사용하지 않는 메서드 제거

* refactor: 깨지는 테스트 수정

* refactor: 타입 추론 변수를 타입형으로 변경

* refactor: 의미가 없는 변수명 제거 like -> 메서드참조

* style: 팀 컨벤션 적용

* [#332] Acceptance Test를 위한 Request builder 기능을 구현. (#333)

* [#200, #205] 태그 관련 이슈 해결 (#216)

* fix: 게시글 추가 시, 초기에 불러온 기본 tag 들이 사라지지 않는 문제를 해결

* feat: 게시글 추가 중 태그 삭제 기능 구현

* fix: break point 에 맞게 어플리케이션 최대 너비를 375px -> 425px 로 조정

* [#217, #110] 테스트 패키지 구조 정리 (#218)

* chore: 인수/통합 테스트 및 common(픽스쳐 팩토리, mock api) 패키지 분리  (#217)

* chore: 기존 도메인 테스트 패키지들을 unit 하위로 이동 (#217)

* refactor: Tag 관련 Github 플랫폼 클래스 이름에 Tag 명시 (#217)

* chore: Test 관련 Configuration 통일 및 Github API 관련 클래스 프로필 설정 (#217)

* chore: 롬복 의존성 추가 (#217)

* refactor: TestConfiguration 클래스명에 Infrastructure 명시 (#217)

* refactor: PostFactory 빌더 패턴 적용하여 가독성 향상

* refactor: 실패하는 테스트 리팩토링

* refactor: UserFactory 빌더 패턴 적용하여 가독성 향상

* refactor: PostFactory 의미 없는 메서드 제거

* refactor: Test Configuration 이름 변경

* refactor: user fixture setUp로직 위치 변경

* refactor: DTO Builder 어노테이션 적용 및 Builder 제공 클래스 제거

* refactor: gradle.build 파일 정리

* style: 의미없는 공백 제거

Co-authored-by: Minsung <sns2831@gmail.com>

* [#223, #229] API 변경사항 반영 및 Post 중복제거 (#235)

* fix: API 명세 변경 사항 반영

- image와 imageUrl에 대한 키값 구분
- public repo를 가져오는 api 명에서 username 제거

* refactor: 불필요한 의존성 제거

* feat: 새로 패치된 post 중복제거

* fix: InfiniteScrollContainer effect 의존성 수정

* refactor: Snackbar 컴포넌트의 위치를 @layout으로 변경

* fix: post interface 수정

* refactor: 스낵바 메시지를 push 하는 메서드 이름을 더 명시적으로 변경

* fix: 중복된 key prop 수정

* feat:  http error 처리 유틸 구현

* refactor: HomeFeedPage의 상태로직을 훅으로 분리

* [#204] Issue 및 PR Template 수정 (#239)

* docs: PR 템플릿 수정

* docs: 이슈 템플릿 등록

* docs: 이슈 템플릿 수정

* docs: 이슈 템플릿 수정

* [#222] 프로필 페이지 피드 버그 수정 (#242)

* refactor: 중복된 게시물을 제거하는 로직을 util로 분리

* feat: 프로필 피드에 무한 스크롤 기능 추가

* refactor: profile page의 상태를 context로 분리

* feat: 팔로우 버튼에 로딩 애니메이션 추가

* refactor: 불필요한 컨테이너 제거

* refactor: ProfilePage 구조 개선

- 훅을 끌어올리는 수준을 작은 범위로 수정
- context를 제거하고 컨테이너 역할을 하는 컴포넌트를 추가

* [#219] 게시글 추가 중 발생하는 에러에 대한 피드백, 핸들링 구현 (#241)

* feat: BackDrop & MessageModalPortal 컴포넌트 구현

- index.html 에 div#modal 태그 추가
- MessageModalPortal 은 리액트 포털을 적용하여 구현
- 해당 컴포넌트를 사용하기 편하도록 useMessageModal 커스텀 훅 제작

* refactor: 필요 없는 import 구문 삭제

* feat: PostContentUploader 컴포넌트 안의 ImageSlider & ImageUploader 와 TextEditor 간의 margin 추가

* feat: 새로운 limits, messages 상수 추가

- message -> messages 로 파일 이름 변경

* feat: 게시글 추가 step 라우팅 path 에 한글이 들어가는 문제 해결

* fix: 필요한 변수 import 경로 수정

* feat: 게시글 추가 중 각각의 에러에 대한 이용자 피드백 구현
- PostAddFormData -> PostUploadData으로 변경
- 이용자의 깃허브 상에 올라와 있는 public repository 가 없으면 피드백 후 이전 페이지로 리다이렉트 시킨다.
- repository 를 선택하지 않고 이미지 & 글 작성으로 넘어가려 한다면 이를 피드백한다.
- 업로드한 이미지가 정해진 용량을 초과할 경우 피드백한다.
- 업로드한 이미지 개수가 정해진 개수를 초과할 경우 피드백한다.
- 이미지 개수가 정해진 개수를 초과할 경우 피드백한다.
- 텍스트 길이가 정해진 길이를 초과할 경우 피드백한다.
- 들어간 태그들 중 중복이 있으면 피드백한다.
- 태그에 '-', '_' 를 제외한 특수문자가 들어갔다면 이를 피드백한다.

* feat: ErrorResponse 타입 생성 및 적용

* feat: API 요청 에러 핸들링 구현

* [#232] 유저 테스트 코드 리팩토링 (#249)

* refactor: 코드 정리 (#232)

* refactor: 사용자 유효성 검증 추가 (#232)

- 게스트인 경우 UnauthorizedException 발생

* refactor: DTO 관련 네이밍 정리 (#232)

* test: 컨트롤러 테스트 리팩토링 (#232)

* test: 서비스 테스트 리팩토링 (#232)

* test: Data JPA 테스트 리팩토링 (#232)

* test: 불필요한 상수 삭제 (#232)

* test: 유저 이름 변경 (#232)

- loginUser/guestUser -> testUser로 통일

* test: 서비스 테스트 추가 (#232)

* test: 서비스 테스트 리팩토링 (#232)

* test: 통합 테스트 리팩토링 (#232)

* test: 인수 테스트 리팩토링 (#232)

* refactor: Builder 사용 (#232)

* refactor: Follow 객체에 책임 위임 (#232)

* test: 접근 제어자 수정 (#232)

* refactor: DTO 리팩토링 (#232)

* test: 불필요한 필드 삭제 (#232)

* test: WebEnvironment 옵션을 RANDOM_PORT -> NONE으로 변경 (#232)

* test: @SpringBootTest -> @DataJpaTest 변경 (#232)

* refactor: API 명세에 맞게 필드명 변경 (#232)

- image -> imageUrl 변경

* [#240] Authentication 관련 테스트 코드 리팩토링 (#247)

* test: authentication 관련 테스트 코드 리팩토링 (#240)

* test: 테스트 코드 리팩토링 (#240)

* refactor: 깃헙 인증 예외 변경 (#240)

* test: Authentication 테스트 코드 피드백 적용 (#240)

* test: HttpHeaders.AUTHORIZATION 으로 변경 (#240)

* [#226, #227] 프로필 수정 모달 구현 (#255)

* feat: Button 컴포넌트에 padding prop 추가

* feat: cancel-no-circle 아이콘 추가

* refactpr: BackDrop을 스타일드 컴포넌트로 수정

* refactor: textEditor 배경을 투명하게 수정

* chore: eslint no empty function 옵션 off

* refactor: css keyframes 파일로 분리

* feat: 카메라 아이콘 추가

* feat: TextEditor 컴포넌트에 indicator 추가(#226)

* refactor: z-index를 컨벤션에 맞게 수정

* feat: 프로필 수정 모달 구현(#227)

* [#246] 댓글 테스트 코드를 리팩토링 (#250)

* refactor: 댓글 관련 테스트 리팩토링

* refactor: 케빈 피드백 반영

* refactor: 댓글 조회 반환시 프로필 이미지 나오도록 수정

* [#220, #226] 네비게이션 ui 수정 및 이미지 인디케이터 추가 (#256)

* refactor: 비로그인 시에도 홈네이게이션 노출

* fix: header와 image slider의 쌓임 순서 버그 해결

* feat: 이미지 인디케이터 구현

* [#234] 태그 테스트 코드를 리팩토링 (#245)

* refactor: 태그 도메인 부분 테스트 리팩토링

* refactor: 태그 슬라이싱 테스트 리팩토링

* refactor: 태그 통합 테스트 리팩토링

* refactor: 태그 인수 테스트 리팩토링

* refactor: connection pool 사용하는 커스텀 RestTemplate 적용

* refactor: Post와 Tag 연관관계 부분 프로덕션 및 테스트 코드 리팩토링

* refactor: 케빈 피드백 적용

- ParameterizedTest 이용하도록 수정
- 중복된 테스트 제거

* refactor: 피드백 반영

* refactor: 소문자로 자동 변환되도록 수정

* refactor: 너잘 피드백 적용

* refactor: 깃헙에서 태그 가져올 때 소문자로 변환되도록 리팩토링

* [#221, #225] 프로필 피드 클릭시 유저 피드 페이지로 이동 (#260)

* fix: 헤더에서 height가 큰 요소들의 레이아웃이 깨지는 버그 해결

* fix: slideButtonKind 복구

* refactor: 타입 단언 제거

* feat: 프로필피드에서 포스트 클릭시 유저 피드 페이지로 이동

* [#251] Post 테스트 코드를 리팩토링  (#252)

* refactor: infrastructure 유닛테스트, comment 유닛테스트 리팩토링

* test: Post 관련 유닛테스트 리팩토링

* test: Post application 레이어 관련 테스트 리팩토링

* test: Post 인수 테스트 리팩토링

* test: PostControllerTest 리팩토링 추가

* test: post builder를 사용하도록 변경

* refactor: 리베이스 후 깨지는 테스트 수정 및 누락된 테스트 추가

* [#183] 게시글 댓글 기능을 구현 (#265)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* feat: HomeFeed 컴포넌트에서 로그인 된 상태에서 자신의 개시글만 수정 아이콘이 뜨도록 변경

* feat: BottomSliderPortal 컴포넌트 구현

* feat: CommentSlider 컴포넌트 구현

* chore: Layout 상수 객체 이름 LAYOUT 으로 변경

* feat: getLastHash util 함수 구현

* feat: getTabTextColor util 함수 구현

* feat: useBottomSlider 훅 구현

* refactor: PostItem 컴포넌트 수정

- 해당 컴포넌트에서 댓글 입력 값 저장 및 수정을 담당하지 않도록 수정
- 댓글 추가 아이콘 버튼 삭제
- Post, CommentData 타입의 id 속성 타입을 string -> number 로 수정

* feat: 댓글 추가 기능 구현

- Tabs 컴포넌트가 tabIndicatorKind 값에 따라 다른 indicator 를 사용하도록 수정
- useFeed -> useFeedMutation 으로 수정
- HomeFeedPage 상에서 useFeed 를 사용하는 것을 useHomeFeed 를 사용하도록 수정
- COMMENT_INPUT_HEIGHT 레이아웃 상수 추가
- 임시용 UserFeedPage 와 TagFeedPage 업데이트 (여전히 임시용)

* fix: CommentSlider 해시 라우팅으로 인해 특정 UserFeedPage 렌더링이 되지 않는 문제 해결

- CommentSlider 를 토글할 때도 history.location 의 state 와 query param 을 그대로 사용하도록 수정
- NavigationHeader 컴포넌트의 height: content-fit 속성 삭제 & 로그아웃 버튼의 padding 값 수정
- HomeFeed -> Feed 로 컴포넌트 이름 수정

* feat: 댓글 저장 시 예외 처리 추가

* [#199, #248, #184] 게시글 삭제 & 게시글 기본 이미지 구현 (#271)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* feat: 게시글 삭제 기능 구현 & 이미지가 없을 시 기본 이미지 보여주기 구현

- 삭제 버튼을 나타나게 만들기 위한 ButtonDrawer 컴포넌트 구현

* feat: TagInputForm 상에서 Tag 입력 중 모바일 가상 키보드가 레이아웃을 깨뜨리는 문제 해결

- 에러 발생시 tag input 을 blur 처리

* [#243] s3 proxy 관련 테스트 리팩토링 (#244)

* chore: s3-proxy properties 포맷을 yaml로 수정 (#243)

* chore: 프로덕션 패키지명 컨벤션맞게 수정 (#243)

* test: S3Storage 슬라이싱 테스트 추가 (#243)

* test: StorageService 슬라이싱 테스트 케이스 추가 (#243)

* refactor: StorageController 슬라이싱 테스트 불필요한 given절 삭제 (#243)

* refactor: 인수 테스트 불필요한 throws절 삭제 (#243)

* refactor: 커스텀 예외 컨벤션에 맞게 에러 코드 추가 (#243)

* refactor: 패키지명 변경 및 구글 컨벤션에 맞게 수정 (#243)

* refactor: 1장이라도 업로드 실패시 예외 발생하도록 변경 (#243)

* [#230] 검색페이지 구현 (#274)

* feat: 검색 mock data 추가

* fix: LoginWrapper children 타입 수정

* feat: search context 추가

* feat: SearchHeader에 SearchContext 적용

* feat: SearchPage 및 검색 기능 구현

* fix: 오타수정

* 추가

* refactor: 불필요한 의존성 제거

* refactor: useFollow분리 및 follow mutation 에러처리 수준 변경

* feat: 유저 검색 결과에서 팔로우 기능 구현

* fix: 검색페이지 진입시 이전 검색 기록 초기화

* [#253] Github 통계 조회 기능 구현 (#263)

* feat: Github 통계 조회 기능 구현 (#253)

* test: 컨트롤러 테스트 작성 (#253)

* test: 서비스 테스트 작성 (#253)

* test: 통합 테스트 작성 (#253)

* test: 인수 테스트 작성 (#253)

* test: 단위 테스트 작성 (#253)

* style: 개행 추가 (#253)

* refactor: 클래스명 변경 (#253)

- PlatformExtractor -> PlatformContributionExtractor
- PlatformApiRequester -> PlatformContributionApiRequester

* refactor: @Profile 추가 (#253)

* refactor: 상수 -> @Value 변경 (#253)

* refactor: 커스텀 예외 추가 (#253)

* test: 단위 테스트 추가 (#253)

* refactor: Calculator 객체로 비즈니스 로직 분리 (#253)

- Service에 있던 비즈니스 로직을 Calculator 객체로 이동
- 단위 테스트 추가

* test: 불필요한 import 삭제

* refactor: 패키지 위치 변경 (#253)

- 인터페이스는 domain, 구현체는 infrastructure에 위치

* style: 접근 제어자 삭제 (#253)

* refactor: Calculator 인터페이스 메소드 반환 타입 변경 (#253)

* refactor: try-catch 문으로 예외 핸들링 (#253)

* test: 단위 테스트 수정 (#253)

* refactor: Calculator 인터페이스 메소드 반환 타입 변경 (#253)

- DTO -> Domain Object

* [#277] useFollow 테스트 작성 (#278)

* feat: SearchPage 및 검색 기능 구현

* refactor: useFollow분리 및 follow mutation 에러처리 수준 변경

* refactor: acceessToken이 없는 경우에 대한 에러코드 추가

* chore: hook 테스트를 위한 라이브러리 설치 및 설정

* refactor: ErrorCode 타입 추가

* refactor: handleHTTPError 모듈 분리

- handleHTTPError 함수를 utils/error.ts로 이동
- 상수 및 타입 분리

* test: useFollow 테스트 코드 작성

* refactor: 파일이름 변경

- constants/httpError.ts 를 constants/error.ts 로 변경

* refactor: useFollow 에러처리

- accesstoken이 없을 경우에 대한 에러처리 추가
- client error를 처리하기 위한 객체 구현

* [#124, #262, #275, #276] 요청 관련 이슈 해결 (#280)

* fix: 프로필 수정 api 형식 변경

- put메서드에서 post메서드로 변경
- 변경된 이미지가 없을경우 빈 파일 객체 전송
- 한 줄 소개가 변경되지 않아도 그대로 보내기

* fix: 검색 api url 변경

* fix: github stats 요소 및 api url 변경

* refactor: 최초 페이지 진입시 토큰이 유효하지 않으면 로그아웃

* fix: 내 게시물의 프로필 영역을 클릭하면 내 프로필 페이지로 이동하도록 수정

* refactor: 유저프로필, 내프로필 분기를 ProfilePage에게 위임

* feat: 최초 진입 이펙트 app으로 분리

* [#257] 게시물 좋아요 기능 구현 (#264)

* feat: 게시물 좋아요 기능 구현 (#257)

* feat: 게시물 좋아요 및 좋아요 취소 기능 테스트 구현 (#257)

* refactor : 피드백 반영 (#257)

* [#236] 로깅 기능 세팅 (#237)

* chore: 활성 프로필에 따른 logback 환경 설정 (#236)

* feat: 전역 예외 어드바이저에 로거 추가 및 DB / 런타임 예외 바인딩 (#236)

* chore: s3proxy directory logback 설정 추가 (#236)

* feat: s3proxy 예외 어드바이저 추가 (#236)

* refactor: applicationException 핸들러 어드바이저 메서드명 수정 (#236)

* refactor: 백엔드 프로젝트 로깅 전략 수정 (#236)

- 테스트 로깅 전략 콘솔로 수정
- DB 관련 로거 종류 프로필별 재정의
- 부모 로거가 찍히지 않도록 additivity false 추가
- 글로벌 예외 어드바이저에 로깅 양식 정의

* chore: logback-access 설정 추가 및 프로필별 설정 구성 (#236)

* chore: s3proxy 프로젝트 logback-access 설정 추가 (#236)

* refactor: s3proxy, backend 프로젝트 log 포맷 변경 (#236)

* chore: backend logger DB, Access 등 용도별 분리 (#236)

* chore: s3proxy logger DB, Access 등 용도별 분리 (#236)

* [#254] 유저 검색 기능을 구현 (#266)

* feat: User 검색 기능 구현

* refactor: 피드백 반영 리팩토링

* refactor: 프론트측과 협의한 부분 리팩토링

* fix: 검색 요청시 user와 tag 분리 (#283)

* [#267] 프로필 수정 기능을 구현 (#279)

* feat: 유저 프로필 수정 기능 구현

* refactor: 피드백 적용

* refactor: 피드백 리팩토링

* [#269] 게시물 수정 및 삭제 기능 구현 (#272)

* feat: 게시물 수정 및 삭제 기능 구현 (#269)

* fix: 게시물 수정 기능 버그 해결 (#269)

* test: 게시물 수정 기능 통합 테스트 작성 (#269)

* fix: 게시물 삭제 기능 버그 해결 (#269)

* test: 게시물 삭제 기능 통합 테스트 작성 (#269)

* test: 게시물 수정 기능 서비스 테스트 작성 (#269)

* test: 게시물 삭제 기능 서비스 테스트 작성 (#269)

* test: 게시물 수정 기능 컨트롤러 테스트 작성 (#269)

* test: 게시물 삭제 기능 컨트롤러 테스트 작성 (#269)

* test: 게시물 수정 기능 인수 테스트 작성 (#269)

* test: 게시물 삭제 기능 인수 테스트 작성 (#269)

* refactor: 정적 팩토리 메소드 삭제 (#269)

* test: 불필요한 테스트 삭제 (#269)

* refactor: Command, Query 분리 (CQS) (#269)

* test: verify() 값 지정 (#269)

* refactor: 상태별로 update() 분리 (#269)

* fix: 해당하는 사용자의 게시물인지 확인하는 로직 추가 (#269)

* [#284] 게시물 수정 및 삭제 버그 해결 (#285)

* test: 통합 테스트 버그 해결 (#284)

* test: 불필요한 테스트 삭제 (#284)

* fix: Github 통계 조회 버그 해결 (#287) (#288)

* refactor: like 관련 DTO 필드명 번경 (#289) (#291)

* fix: restDocs 필드명 수정 및 Boolean으로 변경 (#292) (#297)

* [#228] 게시글 수정 기능 구현 (#286)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* refactor: 게시글 추가 과정에서 필요한 데이터를 일반 컴포넌트에서 불러오지 않고 Page 컴포넌트에서 내려주도록 수정

* feat: 게시글 추가 기능 구현

- 컨벤션에 맞게 useGithubTagsQuery 메서드 수정
- EditPostPage 페이지 컴포넌트 구현
- PostEditDataContext, PostEditStepContext 추가
- usePostEdit, usePostStep 훅 추가

* [#258] 유저 프로덕션 코드 및 테스트 리팩토링 (#268)

* refactor: User 도메인 부족한 팔로우, 언팔로우 등 테스트 추가 (#258)

* refactor: User equals & hashCode 정의시 getter 사용 (#258)

* refactor: Follow 도메인 equals & hashCode 정의시 getter 사용 (#258)

* refactor: Following, Follwers 메서드명 및 선언 순서 변경 (#258)

* refactor: Followings, Followers 테스트 추가 및 생성자 추가 (#258)

* refactor: User.profile 관련 도메인 코드 포맷팅 및 setter 삭제 (#258)

* refacotr: User 내부 Posts에 생성자 변경 및 UserRepository 영속성 테스트 추가 (#258)

* refactor: User 응용 계층 메서드 추출 리팩토링 및 DTO getter 추가 (#258)

* refactor: AppUser의 UserService 침투 제거 및 테스트 코드 계층 분리 (#258)

- AppUser가 서비스 코드에 침투하는 것을 막기 위해 AppUser 추상 클래스에 별도의 이름 호출 메서드를 추가함

* refactor: UserService 통합 테스트 계층적으로 리팩토링 (#258)

* refactor: AuthUserRequest 안쓰는 DTO 및 생성자 삭제와 메서드 파라미터명 통일 (#258)

* refactor: User 테스트 메서드 nested 적용 (#258)

* refactor: User 불필요한 임베디드 타입 getter 삭제 및 테스트 리팩토링 (#258)

* refactor: User 엔티티 내부 임베디드 타입 클래스의 기본 생성자를 protected로 변경 (#258)

* refactor: UserRepository 테스트 nested 적용 (#258)

* refactor: UserService 슬라이싱 테스트 verify 구체화 및 메서드 분리 (#258)

* refactor: UserService 통합 테스트 반복되는 given 부분 메서드 추출 (#258)

* refactor: UserController 슬라이싱 테스트 로그인여부 분리 및 DTO Getter 추가 (#258)

* refactor: User 인수 테스트 반복되는 api 호출 메서드 통일 (#258)

* refactor: 병합 충돌 해결 (#258)

* refactor: UserDataJpaTest Nested C-D-I 명세 변경 (#258)

* refactor: 유저 컨트롤러 슬라이싱 테스트 verify 추가 및 테스트 오류 수정 (#258)

- 기존 unfollow 테스트가 잘못 진행되고 있었던 부분을 해결

* chore: UserService 헬퍼 메서드 위치 수정 (#258)

* refactor: UserController 응답 생성 헬퍼 메서드 위치 이동 (#258)

* refactor: Follow, Unfollow시 두 유저 동등성 비교 로직 Follow 클래스로 이동 (#258)

* refactor: User의 팔로우, 언팔로우 조건 검사 로직을 Followers, Followings로 이동 (#258)

* chore: User.addComment 테스트 삭제 (#258)

* refactor: AuthUserRequestDto의 AppUser에 대한 정적 팩토리 메서드 추가 (#258)

* refactor: User 컨트롤러 테스트 anyString given/verify 인자 변경 (#258)

* fix: 프로덕션 및 테스트 코드 순서 변경 및 SpringBoot 통합테스트로 인한 Nested 제거 (#258)

* refactor: 병합 충돌 해결 및 AppUser를 서비스에서 사용못하도록 변경 (#258)

* chore: 프로덕션 코드 순서 정렬 및 DTO 필드명 변경 (#258)

* chore: User 관련 테스트 코드 순서 정렬 및 포맷팅 (#258)

* [#293]  Logback 인식 불가 버그 해결 (#299)

* fix: logback appender 경로 수정 (#293)

* chore: rest docs 문서 변경

* [#273, #301] profile page 에러처리 수준 수정 및 기타 버그 해결 (#302)

* refactor: 프로필 수정 페이지 서비스로직 분리 및 에러처리 수준 수정

* refactor: 중복되는 validation 제거

* refactor: 불필요한 의존성 제거

* feat: 유저 검색 결과에 유저 프로필 페이지 링크 추가

* fix: 프로필 수정 후 반영이 안되는 이슈 해결

* refactor: api url 변경

* fix: 로그인으로 게시글 조회시 게스트로 인식하던 문제 해결 (#298)

* [#295] 게시물 수정 및 삭제 DB 버그 해결 (#300)

* refactor: findPostByUser -> findPostByIdAndUser 변경 (#295)

* test: Data JPA 테스트 추가 (#295)

* refactor: 생성자 수정 (#295)

* test: 예외 발생 -> Optional.empty() 검증 변경 (#295)

* refactor: 불필요한 코드 삭제 (#295)

* refactor: 해당하는 사용자의 게시물이 맞는지 확인하는 과정 수정 (#295)

- DB에서 처리 -> 비즈니스 로직에서 처리로 변경

* refactor: 불필요한 코드 삭제 (#295)

* test: 불필요한 import 삭제 (#295)

* [#290] 중간 데모 버그를 해결 (#303)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 중간 데모 버그 해결

- 게시글 데이터 속성 중 isLiked -> liked 로 변경
- 로그인 했을 때만 좋아요 버튼이 나타나도록 수정
- 로그인 했을 때만 댓글 달기 버튼이 나타나도록 수정
- 좋아요, 좋아요 취소 상태 반영
로그인 버튼 padding 수정
- 댓글을 추가했을 때 바로 추가된 댓글을 화면에서 확인할 수 있게 수정
- 댓글이 게시글 조회시에는 최대 10개만 나올 수 있도록 수정
- 기존의 댓글 달기 input 을 댓글 슬라이더 토글 버튼으로 변환

* fix: api url 수정 (#305)

* fix: Post - Comments 영속성 전이 버그 해결 (#306) (#307)

* [#308] 게시물 수정 버그 해결 (#309)

* fix: orphanremoval = true 옵션 추가 (#308)

* test: 통합 테스트 추가 (#308)

* [#310] 팀데모 결과 반영 - 프로필 페이지 (#311)

* fix: api url 오타 수정

* fix: 누락된 key prop 추가

* fix: 깃헙통계 기능 임시 api로 수정

* 프로필 페이지 하단 레이아웃 버그 수정

* [#312] 두번째 팀 데모에서 발견된 버그 해결 (#313)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 두번째 팀 데모에서 발견된 버그 해결

- 댓글 추가 시 최근 댓글로 스크롤이 되지 않는 문제 해결
- 게시글 추가, 삭제 시 스낵바를 통해 피드백
- 게시글 좋아요 & 좋아요 취소 결과가 화면에 나타나지 않는 문제 해결
- 게시글 tags 정보 파싱 문제 해결 (보낼 땐 , 기반 join 문자열로, 받을
  때는 일반 문자열 배열로)

* fix: 모바일 상의 레이아웃 및 그래픽 문제 해결

- 모바일 상에서 버튼이나 링크 클릭시 나타나는 기본 하이라이트 컬러 제거
- 댓글 input 패딩 조정
- 프로필 잔디 배경 투명 -> 흰색으로 변경
- kind 가 pills 인 Tabs 컴포넌트의 hover 이펙트 제거(모바일 상에서 클릭된 글씨가 희미해지는 문제 해결)

* [#314] 세번째 팀 데모에서 발견된 버그 해결 (#315)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 2차 데모 세번째 버그 수정

- 댓글 프로필 이미지, 유저 이름이 고정되어 있는 문제 해결
- 게시글 추가 시 레포지터리 목록을 불러오기 위한 계정이 하나로 고정되어 있는 문제 해결
- 임시 레포목록 검색 기능 추가

* [#316] 3차데모 검색 페이지 및 UI 관련 이슈 해결 (#317)

* fix: 검색 결과 리스트에서 팔로우시 깜박거리는 버그 해결

* feat: 게시물 삭제시 컨펌 추가

* fix: 이미지 및 텍스트 인디케이터 사이즈 고정

* feat: 간략히 버튼 추가

* [#318] 네번째 팀 데모에서 발견된 버그 해결 (#319)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 네번째 팀 데모에서 발견된 버그 해결

- 댓글 슬라이더 가로 스크롤링 되는 문제 해결
- 이미지들 총 용량 제한 1MB 로 수정
- 게시글 내용의 개행이 실제로 반영되도록 수정
- 게시글 추가 중 태그 입력 후 tagInputLength 가 0 으로 초기화 되도록 수정

* [#320] 게시물 추가 시 이미지가 없으면 alert처리 (#321)

* fix: 게시물 추가 시 이미지가 없으면 alert 처리

* refactor: 더보기, 간략히 정책 변경

* [#322] 게시글 수정 시 추가 되었다는 메세지가 아닌 수정 되었다는 메세지가 뜨도록 변경 (#323)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 게시글 수정 시 추가 되었다는 메세지가 아닌 수정 되었다는 메세지가 뜨도록 변경

* [#324] 다른 이용자의 UserFeed 좋아요가 동작하지 않는 문제를 해결 (#325)

* feat: Feed 컴포넌트 명칭을 HomeFeed 로 변경

* fix: 다른 이용자의 UserFeed 좋아요가 동작하지 않는 문제 해결

- currentUsername(접속한 이용자) -> username(이용자 피드 페이지의 대상 이용자) 으로 대상 변경

* [#259] 포스트 프로덕션 코드 리팩토링 (#270)

* refactor: Post 프로덕션 코드 리팩토링 (#252)

* refactor: infrastructure 유닛테스트, comment 유닛테스트 리팩토링

* test: Post 관련 유닛테스트 리팩토링

* test: Post application 레이어 관련 테스트 리팩토링

* test: Post 인수 테스트 리팩토링

* test: PostControllerTest 리팩토링 추가

* test: post builder를 사용하도록 변경

* refactor: 리베이스 후 깨지는 테스트 수정 및 누락된 테스트 추가

refactor: Post의 Tag관련 비즈니스 로직 PostTags로 이동 (#259)

이동과 함께 Post의 Build 패턴 적용과 리팩토링.

refactor: PostService와 PostController의 책임 분리. 및 s3Storage 파일 저장 방식 추가 (#259)

feed관련과, 게시물 관련으로 분리하여 관심사를 맞춤.

refactor: 전체적인 import 정리 (#259)

refactor: 패키지 정리 (#259)

refactor: Post의 getImageUrl 중복 메서드 제거 (#259)

refactor: CommentResponse의 도메인 참조 제거 및 DtoAssembler 리팩토링 (#259)

refactor: Feed관련 컨트롤러, 서비스, PostDto어셈블러  리팩토링, 레이어에 맞지 않는 DTO 이동 (#259)

refactor: CommentRequestDto 패키지 변경 및 PostController 리팩토링 (#259)

refactor: PostResponseDto가 presentation~presentation까지 사용되던것을 분리 (#259)

refactor: showRepositories -> userRepositories 메서드명 변경 (#259)

refactor: RepositoryResponse, domain -> controller까지 사용 되던것을 분리 (#259)

style: domain을 제외한 레이어의 구글 컨벤션 체크 (#259)

refactor: PostImageUrlResponseDto Builder 사용하도록 변경

refactor: Post 컨벤션 및 메서드 순서 정리 (#259)

refactor: Post user 관련 메서드명 author로 변경 및 필드, 메서드 정리 (#249)

refactor: PostTag equals getId()로 변경 및 필드 순서 정리 (#249)

refactor: Like를 VO로 취급, Likes를 컨테이너로 취급하도록 변경 (#249)

refactor: Image VO로 취급 및 도움 메서드 네이밍 변경, PostContent validation로직 변경 (#249)

refactor: CommentContent VO 취급, comment 도움메서드 이름 변경 및 책임 변경 (#249)

refactor: Post equals getter를 사용하도록 변경 (#249)

refactor: 연관관계 도움 메서드 반환깂 없도록 변경 (#249)

style: 구글 컨벤션 적용 (#249)

refactor: 추상화 수준 평탄화 작업 (#249)

* refactor: 리베이스 후 깨지는 파일 수정

* fix: User 비교 로직 버그 해결

* refactor: 메서드의 네이밍 변경

* refactor: 디미터의 원칙 준수

* refactor: 사용하지 않는 메서드 제거

* refactor: 깨지는 테스트 수정

* refactor: 타입 추론 변수를 타입형으로 변경

* refactor: 의미가 없는 변수명 제거 like -> 메서드참조

* style: 팀 컨벤션 적용

* feat: PickgitRequest Post Builder 구현

* refactor: PickgitRequest Post Builder 구조 변경

* feat: 명세에 따른 API 구현

* refactor: File을 body로 넣을 시 byte 변환 추가

* refactor: 로그인 모킹 방식 변경

* refactor: 빌더 내부 로그인 기능 구현.

* refactor: initAllParams 메서드 생성

Co-authored-by: SONG WON LEE <swon3210@gmail.com>
Co-authored-by: Jinhong <xlffm3@gmail.com>
Co-authored-by: Tanney102 <57767891+Tanney-102@users.noreply.github.com>
Co-authored-by: DAEUN LEE <leede0418@gmail.com>
Co-authored-by: YunTroubleshooter <63405904+yjksw@users.noreply.github.com>
Co-authored-by: binghe819 <56860124+binghe819@users.noreply.github.com>

* feat: 레이아웃 수정 & 파비콘 추가 (#342)

- Comment, CommentSlider 의 댓글 좋아요 영역 삭제
- PostContentUploader 의 TextEditor 의 텍스트 line-height 재설정

* feat: github stat 훅 분리 및 로그인 시에만 이용하도록 수정 (#343)

* [#344] 태그 기반 검색 기능 구현 (#348)

* refactor: ProfileFeed를 GridFeed로  추상화

* feat: 태그 검색 관련 mock추가

* refactor: getPostsFromPages함수에서 null값도 고려하도록 수정

* feat: 키워드기반 검색 로직 및 훅 구현

* feat: 키워드 기반 검색 썸네일 피드 및 페이지 구현

* fix: search header input 레이아웃 수정

* fix: 검색시 키워드가 뒤늦게 업데이트 되는 이슈 해결

* feat: 다중 검색 지원

* [#349] 태그 클릭 시 검색 페이지로 이동 (#350)

* feat: 게시물 태그 호버 및 클릭 피드백 추가

* feat: 게시물 태그를 클릭하면 태그 기반 게시물 검색 페이지로 이동

* refactor: console.log 제거

* refactor: PostItem 태그 키를 태그 이름으로 변경

* feat: 팔로우/언팔로우 시 깃헙 연동 여부 추가 (#353)

* [#354] 팔로워, 팔로잉 페이지 구현 (#357)

* refactor: 컴포넌트 및 타입 이름 변경

* feat: 팔로잉, 팔로우 리스트 요청 로직 및 훅 구현

* feat: 팔로우, 팔로잉 리스트 페이지 구현

* feat: 팔로우, 팔로잉 페이지에 OneDepthHeader 추가

* [#329] Github 통계 조회 기능 리팩토링 (#345)

* refactor: Github 통계 조회 기능 리팩토링 (#329)

- 로그인 -> 통계 조회 가능
- 비로그인 -> 통계 조회 불가능

* test: 컨트롤러 테스트 추가 (#329)

* test: 서비스 테스트 추가 (#329)

* test: 단위 테스트 추가 (#329)

* test: 서비스 테스트 수정 (#329)

* test: 통합 테스트 수정 (#329)

* test: 인수 테스트 추가 (#329)

* refactor: 필드 초기화 -> 생성자 주입 초기화 변경 (#329)

* style: 코드 포맷팅 변경 (#329)

* refactor: PlatformContributionExtractor 위치 변경 (#329)

* fix: findByKeyToken() 삭제 (#329)

- OAuthAccessTokenDao -> Key로 pick-git JWT, Value로 Github JWT 가지고 있음
- ArgumentResolver -> pick-git JWT(authentication) 기반으로 AppUser(LoginUser)에 Github JWT(accessToken) 바인딩

* test: 컨트롤러 테스트 수정 (#329)

* test: 서비스 테스트 수정 (#329)

* refactor: @Profile 삭제 (#329)

* test: 불필요한 클래스 삭제 (#329)

* test: 인수 테스트 수정 (#329)

* feat: restDocs에 이미지 파일이 깨지는 버그를 수정하고 누락 스니펫을 추가 (#361) (#363)

* [#339] 팔로잉 및 팔로워 목록 조회 기능 (#347)

* feat: userRepository 특정 유저의 팔로잉 및 팔로워 목록 조회 기능 구현 (#339)

* feat: UserService 특정 유저의 팔로잉 목록 조회 기능 구현 (#339)

* feat: UserService 특정 유저의 팔로워 목록 조회 기능 구현 (#339)

* feat: UserController 특정 유저 팔로잉 및 팔로워 조회 기능 구현 (#339)

* feat: 팔로잉 및 팔로워 조회 인수 테스트 작성 (#339)

* refactor: UserController 헬퍼 메서드명 변경 (#339)

* refactor: 팔로잉/팔로워 목록 조회 인수 테스트 API 메서드 변경 (#339)

* chore: 팔로잉/팔로워 rest docs 스니펫 추가 (#339)

* [#330] Github Repositories 조회 기능 리팩토링 (#358)

* refactor: API URL Path에서 username 삭제 (#330)

* test: 불필요한 import 삭제

* refactor: Github Repositories 조회 기능 리팩토링 (#330)

- Pagination 추가 -> API URL Path에 Query Parameter(page, limit) 추가

* refactor: 불필요한 import 삭제

* test: 단위 테스트 추가 (#330)

* test: 서비스 테스트 추가 (#330)

* test: 단위 테스트 수정 (#330)

* refactor: Pageable 사용 (#330)

* [#337] 태그 기반 게시물 검색 기능 구현 (#346)

* feat: tag 기반 post 검색 repository 구현 (#337)

* feat: search service 구현 (#337)

* feat: search controller 구현 (#337)

* test: acceptance Test 구현 (#337)

* refactor: 페키지 구조 변경 (#337)

* test: TagType, SearchTypes 도메인 테스트 작성 (#337)

* test: 서비스 슬라이스 테스트 작성 (#337)

* refactor: 테스트 메소드명 변경 (#337)

* test: Integration test 작성 (#337)

* refactor: 의미 없는 어노테이션 제거

* fix: 스니펫 생성 경로 변경 (#364) (#365)

* [#368] 팀 1차 데모 버그 수정 (#371)

* fix: 팔로우 목록 패딩 조정

* fix: 프로필, 검색 페이지 오버플로우 조정

* fix: 검색 페이지네이션 동작하지 않는 버그 수정

* fix: 깃헙 통계 요소 이름 변경

* fix: 팔로우 시 깃헙 연동 컨펌 닫히지 않는 버그 수정, 컨펌 버튼 텍스트 수정

* fix: spring rest docs html 생성 버그 해결 (#373)

* refactor: 프로필 수정 api 분리 (#369)

* [#378] Logback 설정 리팩토링 (#379)

* refactor: 백엔드 프로젝트 로깅 구조 변경 (#378)

* refactor: s3 프로젝트 로깅 구조 변경 (#378)

* [#340] 프로필 이미지 수정/정보 수정 API 기능 분리 (#352)

* feat: 프로필 이미지 수정 및 한 줄 소개 수정 기능 구현

* chore: 서브 모듈 최신화

* refactor: 피드백 반영

* refactor: User패키지 S3 프록시에 접근하는 인터페이스 분리

* [#380, #335] 인피니트 스크롤링 적용 & CommentSlider -> CommentsPage 로 변경  (#381)

* feat: favicon 웹팩 설정 추가

* feat: 기존의 cancel 아이콘을 delete icon 으로 변경

* feat: RepositorySelector 에 인피니트 스크롤링 적용

- InfiniteScrollContainer 에 throttle 적용

* feat: CommentSlider 의 기능을 CommentsPage 에서 수행하도록 변경

* [#419] JaCoCo 추가 (#422)

* chore: 서브모듈 업데이트

* chore: REST Docs 업데이트

* chore: JaCoCo 플러그인 추가 (#419)

* refactor: SonarQube Security 문제 해결 (#419)

* [#359] Github Repositories 검색 기능 구현 (#360)

* feat: 게시물 팔로워 목록 페이지를 구현한다. (#420)

- comment 목록을 한번에 10개씩 가져오도록 수정

* [#375] 팔로우/언팔로우 깃헙 자동 연동 기능구현 (#376)

* feat: 팔로우/언팔로우시 깃헙 자동 연동 기능 구현

* chore: github follow 권한 설정

* test: 팔로우/언팔로우시 깃헙 자동 연동 테스트 추가

* refactor: 피드백 리팩토링

* fix: 이미지 수정이 안되는 버그 수정 (#426)

* fix: 레포 목록 검색 api 주소 수정 (#428)

- 검색어가 없을 때는 기본 레포 목록 가져오기 api 를, 검색어가 있을 때는 레포 목록 검색 api를 사용하도록 변경

* [#431] JaCoCo 보완 (#432)

* chore: .gitignore 업데이트

* chore: JaCoCo 보완 (#431)

* [#425] 레포 검색 시 JSON 파싱 버그를 수정한다.  (#429)

* fix: JSON 파싱 버그 수정 (#425)

* chore: 코드 커버리지 최소 기준 변경

* chore: 코드 커버리지 최소 기준 변경

Co-authored-by: Daeun Lee <leede0418@likelion.org>

* [#415] comment 패키지 구조 변경 (#417)

* refactor: comment의 패키지를 분리한다 (#415)

* refactor: 실패하는 테스트 수정 (#415)

* feature: comment를 요청하는 service 로직 구현 (#421)

* feat: controller 구현 및 WebMvcTest, Acceptance 테스트 작성

* refactor: 리베이스후 에러 해결

* [#430] 반응형 디자인 구현 (#433)

* feat: 레포 목록 검색 시, 검색 결과 없을 경우 안내 문구가 등장하도록 수정

* feat: 반응형 디자인 구현 & comment 삭제 요청 수정

- 모든 페이지에 반응형 디자인 구현
- comment 삭제 요청 시 postId 를 매개변수로 받도록 수정

* docs: README 작성 (#94) (#440)

* refactor: 유저 이름을 기반으로 토큰을 생하도록 변경 (#439)

* chore: 프론트엔드 테스트 자동화 깃헙 액션 추가 (#443)

* refactor: 피드 조회시 함께 오는 댓글의 갯수를 3개로 제한 (#444) (#445)

* [#374] 좋아요 리스트 조회 기능 구현  (#413)

* feat: 게시물 좋아요 리스트 조회 기능 구현 (#374)

* fix : 테스트 fixture 버그 수정 (#374)

* fix : Post entity 기본생성자 접근 제어자 변경

* test: 컨트롤러 슬라이스 테스트 추가 (#374)

* fix: 테스트 코드 버그 수정 (#374)

* fix: 테스트에서 기존 데이터로 인한 버그 수정 (#374)

* refactor: 피드백 반영 (#374)

* refactor: 피드백 적용 (#374)

* [#281] 프로필 페이지 관련 훅 테스트 작성 (#446)

* refactor: error message getter 예외처리

* feat: useFollow 훅 테스트 작성

* feat: useProfileModification 테스트 초안 작성

* feat: useFollow 훅 테스트 케이스 추가

* chore: 테스트 관련 라이브러리 추가

* chore: 파비콘 관련 설정 추가

* chore: jest setup 파일 추가

* chore: 문자열 따옴표 통일

* refactor: profileModificationForm validatoin위치 수정

* chore: 불필요한 코드 제거

* refactor: 테스트 리팩터링

- mock data 분리
- 요청 mock 라이브러리 변경
- 테스트 케이스 추가

* feat: useProfileModificatonForm 훅 테스트 추가

* feat: useFollowerList 훅 테스트 코드 작성

* feat: useFollowingList 훅 테스트 코드 추가

* refactor: 테스트 환경에서 queryCilent 설정 추가

- retry 제거

* feat: useGithubStatistics 훅 테스트 코드 추가

* feat: useProfile 훅 테스트 코드 작성

* refactor: 에러처리 방식 수정

* feat: useSearchUserData 훅 테스트 코드 작성

* feat: useSearchPostData 훅 테스트 코드 작성

* [#370, #414] 댓글 삭제 기능 구현 (#434)

* feat: 댓글 삭제 기능 구현 (#370)

* refactor: 불필요한 import 삭제

* refactor: 게시글과 댓글 기능 리팩토링 (#414)

* fix: 댓글 삭제 기능 버그 해결 (#370)

* test: 통합 테스트 작성 (#370)

* test: 단위 테스트 작성 (#370)

* test: 컨트롤러 테스트 작성 (#370)

* test: 서비스 테스트 작성 (#370)

* test: 인수 테스트 작성 (#370)

* refactor: 추상 클래스 생성자 public -> protected 변경 (#370)

* refactor: 댓글 추가 및 삭제 기능 리팩토링 (#370, #414)

* test: 댓글 기능 테스트 리팩토링 (#370, #414)

* refactor: orphanRemoval -> CascadeType.REMOVE 변경 (#370)

* refactor: 게시물 및 댓글 삭제 기능 리팩토링 (#370, #414)

* fix: CORS 버그 해결 (#447) (#448)

* [#382] Prod 환경 Logback 설정 변경 (#383)

* refactor: Logback Prod 환경에서 DB 로그 삭제 변경 (#382)

* [#380, #335] 인피니트 스크롤링 적용 & CommentSlider -> CommentsPage 로 변경  (#381)

* feat: favicon 웹팩 설정 추가

* feat: 기존의 cancel 아이콘을 delete icon 으로 변경

* feat: RepositorySelector 에 인피니트 스크롤링 적용

- InfiniteScrollContainer 에 throttle 적용

* feat: CommentSlider 의 기능을 CommentsPage 에서 수행하도록 변경

* [#419] JaCoCo 추가 (#422)

* chore: 서브모듈 업데이트

* chore: REST Docs 업데이트

* chore: JaCoCo 플러그인 추가 (#419)

* refactor: SonarQube Security 문제 해결 (#419)

* [#359] Github Repositories 검색 기능 구현 (#360)

* feat: 게시물 팔로워 목록 페이지를 구현한다. (#420)

- comment 목록을 한번에 10개씩 가져오도록 수정

* [#375] 팔로우/언팔로우 깃헙 자동 연동 기능구현 (#376)

* feat: 팔로우/언팔로우시 깃헙 자동 연동 기능 구현

* chore: github follow 권한 설정

* test: 팔로우/언팔로우시 깃헙 자동 연동 테스트 추가

* refactor: 피드백 리팩토링

* fix: 이미지 수정이 안되는 버그 수정 (#426)

* fix: 레포 목록 검색 api 주소 수정 (#428)

- 검색어가 없을 때는 기본 레포 목록 가져오기 api 를, 검색어가 있을 때는 레포 목록 검색 api를 사용하도록 변경

* [#431] JaCoCo 보완 (#432)

* chore: .gitignore 업데이트

* chore: JaCoCo 보완 (#431)

* [#425] 레포 검색 시 JSON 파싱 버그를 수정한다.  (#429)

* fix: JSON 파싱 버그 수정 (#425)

* chore: 코드 커버리지 최소 기준 변경

* chore: 코드 커버리지 최소 기준 변경

Co-authored-by: Daeun Lee <leede0418@likelion.org>

* [#415] comment 패키지 구조 변경 (#417)

* refactor: comment의 패키지를 분리한다 (#415)

* refactor: 실패하는 테스트 수정 (#415)

* feature: comment를 요청하는 service 로직 구현 (#421)

* feat: controller 구현 및 WebMvcTest, Acceptance 테스트 작성

* refactor: 리베이스후 에러 해결

* [#430] 반응형 디자인 구현 (#433)

* feat: 레포 목록 검색 시, 검색 결과 없을 경우 안내 문구가 등장하도록 수정

* feat: 반응형 디자인 구현 & comment 삭제 요청 수정

- 모든 페이지에 반응형 디자인 구현
- comment 삭제 요청 시 postId 를 매개변수로 받도록 수정

* docs: README 작성 (#94) (#440)

* refactor: 유저 이름을 기반으로 토큰을 생하도록 변경 (#439)

* chore: 프론트엔드 테스트 자동화 깃헙 액션 추가 (#443)

* refactor: 피드 조회시 함께 오는 댓글의 갯수를 3개로 제한 (#444) (#445)

* refactor: Logback Prod 환경에서 DB 로그 삭제 변경 (#382)

Co-authored-by: SONG WON LEE <swon3210@gmail.com>
Co-authored-by: DAEUN LEE <leede0418@gmail.com>
Co-authored-by: YunTroubleshooter <63405904+yjksw@users.noreply.github.com>
Co-authored-by: binghe819 <56860124+binghe819@users.noreply.github.com>
Co-authored-by: Tanney102 <57767891+Tanney-102@users.noreply.github.com>
Co-authored-by: Daeun Lee <leede0418@likelion.org>
Co-authored-by: Minsung Son <sns2831@gmail.com>

* [#449] 게시글 좋아요 이용자 목록 페이지 이동 라우팅이 되지 않는 문제 해결 (#450)

* fix: 게시글 좋아요 이용자 목록 페이지 이동 라우팅이 되지 않는 문제 해결

- 좋아요가 0 명일 경우 이용자에게 피드백 해주고 페이지 이동이 일어나지 않도록 변경

* fix: 게시물 좋아요 목록 조회 페이징 제거

* [#453] 팀 3차 데모 결과 반영 (#454)

* fix: 검색페이지 레이아웃 수정

* refactor: page url 및 header routing 수정

* fix: 검색페이지 페이징 안되는 이슈 해결

* fix: 태그 다중 검색 시 쉼표가 제대로 제거되지 않는 이슈 해결

* chore: 프론트엔드 테스트 액션 코드 수정 (#456)

* [#457] 네번째 데모에서 발견된 버그 해결 (#458)

* feat: 반응형 디자인 업데이트

* fix: comment 추가 / 삭제가 화면 상에 바로 반영되도록 수정

* [#423, #460] 팀 4차 데모 버그 수정 (#462)

* [#435] 인터셉터 등록 기능 어노테이션화 (#437)

* feat: ForGuest, ForLoginUser 어노테이션 추가

* feat: java 파일에서 페키지 추출 로직 구현

* refactor: 테스트 폴더는 무시하도록 변경

* refactor: ControllerScanner 구현, 컨트롤러만 파싱하여 클래스 토큰으로 반환한다.

* feat: PackageScanner 구현, 폴더를 순회하며 클래스 이름을 추출한다.

* feat: ForGuestScanner 구현, ForGuest 어노테이션이 붙은 메소드를 추출한다.

* feat: ForLoginUserScanner 구현, ForLoginUser 어노테이션이 붙은 메서드를 추출한다.

* feat: MethodMapper 구현, 메서드에 매핑된 HttpMethod 및 어노테이션을 추출한다.

* feat: UrlParse 구현, 클래스로 부터 uri를 파싱한다.

* feat: AutoAuthorizationInterceptorRegister 구현. interceptor에 파싱한 정보를 주입한다.

* test: UrlParams 테스트 추가

* fix: include, exclude 모두 적용하도록 변경.

* refactor: 어노테이션 이름 변경

* refactor: 어노테이션 기반 interceptor 등록 적용

* refactor: CommentController 어노테이션 적용

* refactor: 사용하지 않는 import 제거

* refactor: 패키지 오타 제거

* style: 메서드를 읽기 쉽도록 위치 변경.

* refactor: uri values 추출로직 책임 변경

* style: 클래스 시작시 한줄 개행

* refactor: AuthenticateStorageForRegisterType 불변화

* refactor: AuthenticateStorageForRegisterType 불변화 및 put 메서드 리팩토링

* refactor:!isNull -> nonNull 변경

* style: 테스트 코드 컨벤션 적용

* refactor: 클래스 네이밍 변경

* refactor: excludePatterns 개행하여 가독성 확보.

* style: 생성자 컨벤션 적용.

* refactor: 정규표현식 상수화

* test: 테스트 메서드 이름 변경

* refactor: 타입 추론 변수 제거

* test: 깨지는 테스트 수정

* refactor: 누락된 어노테이션 작성

* [#382] Prod 환경 Logback 설정 변경 (#383)

* refactor: Logback Prod 환경에서 DB 로그 삭제 변경 (#382)

* [#380, #335] 인피니트 스크롤링 적용 & CommentSlider -> CommentsPage 로 변경  (#381)

* feat: favicon 웹팩 설정 추가

* feat: 기존의 cancel 아이콘을 delete icon 으로 변경

* feat: RepositorySelector 에 인피니트 스크롤링 적용

- InfiniteScrollContainer 에 throttle 적용

* feat: CommentSlider 의 기능을 CommentsPage 에서 수행하도록 변경

* [#419] JaCoCo 추가 (#422)

* chore: 서브모듈 업데이트

* chore: REST Docs 업데이트

* chore: JaCoCo 플러그인 추가 (#419)

* refactor: SonarQube Security 문제 해결 (#419)

* [#359] Github Repositories 검색 기능 구현 (#360)

* feat: 게시물 팔로워 목록 페이지를 구현한다. (#420)

- comment 목록을 한번에 10개씩 가져오도록 수정

* [#375] 팔로우/언팔로우 깃헙 자동 연동 기능구현 (#376)

* feat: 팔로우/언팔로우시 깃헙 자동 연동 기능 구현

* chore: github follow 권한 설정

* test: 팔로우/언팔로우시 깃헙 자동 연동 테스트 추가

* refactor: 피드백 리팩토링

* fix: 이미지 수정이 안되는 버그 수정 (#426)

* fix: 레포 목록 검색 api 주소 수정 (#428)

- 검색어가 없을 때는 기본 레포 목록 가져오기 api 를, 검색어가 있을 때는 레포 목록 검색 api를 사용하도록 변경

* [#431] JaCoCo 보완 (#432)

* chore: .gitignore 업데이트

* chore: JaCoCo 보완 (#431)

* [#425] 레포 검색 시 JSON 파싱 버그를 수정한다.  (#429)

* fix: JSON 파싱 버그 수정 (#425)

* chore: 코드 커버리지 최소 기준 변경

* chore: 코드 커버리지 최소 기준 변경

Co-authored-by: Daeun Lee <leede0418@likelion.org>

* [#415] comment 패키지 구조 변경 (#417)

* refactor: comment의 패키지를 분리한다 (#415)

* refactor: 실패하는 테스트 수정 (#415)

* feature: comment를 요청하는 service 로직 구현 (#421)

* feat: controller 구현 및 WebMvcTest, Acceptance 테스트 작성

* ref…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backend 백엔드 이슈 test 테스트 이슈
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[test/user] 유저 테스트 코드를 리팩토링한다.
5 participants