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

feat: 오버뷰 기능 구현 #367

Merged
merged 84 commits into from
Sep 9, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
a1b7074
feat: 나의 태그 조회 기능 구현 및 문서화
qhals321 Aug 17, 2021
0b18005
feat: 유저 태그 조회 기능 리팩토링 및 유저 달력 포스트 조회 기능 구현
qhals321 Aug 18, 2021
b402138
feat: myPagePost에 tagList 추가
bucketHaneul Aug 18, 2021
db59d49
feat: Calendar 컴포넌트 추가
dudtjr913 Aug 18, 2021
1958c23
Merge branch 'feature/studylog-overview' of https://github.com/woowac…
dudtjr913 Aug 18, 2021
adc376c
feat: 멤버 프로필 포스트 조회시 필터링 옵션 추가(date, tagId)
qhals321 Aug 18, 2021
e57781d
refactor: 선택된 tag 스타일 수정
bucketHaneul Aug 18, 2021
46e8b74
feat: 선택된 태그에 따른 필터 쿼리 생성 로직 구현
bucketHaneul Aug 18, 2021
6b711f0
Merge branch 'feature/studylog-overview' of https://github.com/woowac…
bucketHaneul Aug 18, 2021
51b0aad
Merge branch 'feature/studylog-overview' of https://github.com/woowac…
dudtjr913 Aug 18, 2021
5ea08c2
refactor: 404 페이지 변경
bucketHaneul Aug 18, 2021
a38b9af
feat: Calendar Provider 추가 및 date 필터 기능 추가
dudtjr913 Aug 18, 2021
af5a5b7
Merge branch 'feature/calendar-frontend' of https://github.com/woowac…
dudtjr913 Aug 18, 2021
9282392
refactor: Calendar Provider 삭제
dudtjr913 Aug 18, 2021
14b9688
Merge branch 'main' of https://github.com/woowacourse/prolog into fea…
bucketHaneul Aug 18, 2021
e0b08f3
fix: main merge 후 없어진 부분 돌림
bucketHaneul Aug 18, 2021
a0334d8
Merge branch 'feature/studylog-overview' of https://github.com/woowac…
bucketHaneul Aug 18, 2021
a5480df
fix: 백엔드 코드 충돌 해결
dudtjr913 Aug 18, 2021
b0f7d38
feat: 날짜 선택 시 focus 효과 추가
dudtjr913 Aug 18, 2021
48f5de4
refactor: key 추가 및 first-of-type 변경
dudtjr913 Aug 18, 2021
465c446
feat: 프로필 페이지에서 날짜 클릭 시 학습로그로 이동
dudtjr913 Aug 18, 2021
1bfbde3
fix: ? => &로 수정
dudtjr913 Aug 18, 2021
ca268a3
refactor: 필터링 기능 함수로 변경 및 선택된 날짜 상태 추가
dudtjr913 Aug 18, 2021
5da2353
Merge branch 'main' of https://github.com/woowacourse/prolog into fea…
dudtjr913 Aug 19, 2021
5c34500
fix: Calendar 월 변경 시 데이터 조회하도록 변경
dudtjr913 Aug 19, 2021
da60372
Merge branch 'main' of https://github.com/woowacourse/prolog into fea…
qhals321 Aug 24, 2021
7f22b1b
feat: 유저 태그 목록 및 캘린더 포스트 목록 조회 기능 구현 (#301)
qhals321 Aug 25, 2021
93a0bea
fix: release token expire length (#314)
gracefulBrown Aug 26, 2021
22e60c1
뒤로가기 시 필터와 페이지네이션 유지 (#308)
gracefulBrown Aug 26, 2021
e6cee47
Merge branch 'main' of https://github.com/woowacourse/prolog into fea…
qhals321 Aug 29, 2021
db04bfe
feat: conflict 해결
qhals321 Aug 29, 2021
767d501
feat: merge 후 깨지는 테스트 수정 및 전체 태그 관련 추가
qhals321 Aug 29, 2021
681d303
feat: acceptance test 레벨 생성 추가
qhals321 Aug 29, 2021
7982a60
refactor: 머지 후 에러 수정 및 스타일 변경
bucketHaneul Aug 29, 2021
987c889
refactor: Calendar 컴폰너트 배경 스타일 제거
bucketHaneul Aug 31, 2021
d0febe7
refactor: 필터링 레이아웃, 스타일 수정
bucketHaneul Aug 31, 2021
b161180
refactor: MainPage 내 카드 스타일 수정
bucketHaneul Aug 31, 2021
e3cdc67
refactor: 캘린더, 태그 ProfilePage로 이동
bucketHaneul Aug 31, 2021
a8dbafb
refactor: ProfilePageSideBar 컴포넌트 분리
bucketHaneul Aug 31, 2021
079e4d9
fix: 달력 2개월씩 넘어가는 버그 수정 및 ellipsis 적용
dudtjr913 Aug 31, 2021
dc5f526
fix: 오버뷰와 학습로그 페이지에서 글이 넘칠 때 ellipsis를 적용
dudtjr913 Aug 31, 2021
7a448fe
feat: memberTag 틀 작성
qhals321 Sep 1, 2021
fed14a6
feat: 멤버 태그 도메인 생성 및 멤버 태그 소팅기능 추가
qhals321 Sep 1, 2021
cf6c264
feat: member-post 필터링 기능 추가
qhals321 Sep 5, 2021
40e0f4c
refactor: localDateTime -> localDate로 바꿈
qhals321 Sep 5, 2021
a8b6cae
fix: time NPE 수정
qhals321 Sep 6, 2021
fdbaee7
feat: 태그가 0일 때 분기처리
qhals321 Sep 6, 2021
8a5be46
refactor: Profilepage에서 변경된 API 적용
bucketHaneul Sep 6, 2021
afa321d
refactor: Calendar hover 스타일 수정
bucketHaneul Sep 6, 2021
f289f44
Merge branch 'feature/studylog-overview' of https://github.com/woowac…
bucketHaneul Sep 6, 2021
c01b8de
feat: 시간 오류 처리
qhals321 Sep 6, 2021
7d94ee4
Merge branch 'feature/studylog-overview' of https://github.com/woowac…
bucketHaneul Sep 6, 2021
84036bc
refactor: Calendar 선택에 따른 포스트목록 보여주기 구현
bucketHaneul Sep 6, 2021
186faa2
refactor: 메뉴명 수정(관리 홈 -> 오버뷰)
bucketHaneul Sep 6, 2021
b6bc230
refactor: 폴더 구조 변경
qhals321 Sep 8, 2021
c6de57c
Merge branch 'feature/studylog-overview' of https://github.com/woowac…
qhals321 Sep 8, 2021
16b2bfe
refactor: 폴더 구조 변경
qhals321 Sep 8, 2021
a102190
refactor: 테스트 폴더구조 정리
qhals321 Sep 8, 2021
aa47c0c
Merge branch 'develop' of https://github.com/woowacourse/prolog into …
qhals321 Sep 8, 2021
79b5383
refactor: 머지 후 충돌 해결
qhals321 Sep 8, 2021
4887943
feat: 태그 아이디가 0 일 때는 모두 보여주기
qhals321 Sep 8, 2021
6d9c719
feat: 스터디로그 명명 수정
qhals321 Sep 8, 2021
3662565
feat: 컨트롤러 필터 리퀘스트 적용
qhals321 Sep 8, 2021
52b4d32
fix: StudylogsSearchRequest import 수정
qhals321 Sep 8, 2021
d051a26
fix: @SearchParams 어노테이션 추가
qhals321 Sep 8, 2021
96d1c9e
Delete .idea directory
qhals321 Sep 8, 2021
f8a6a09
fix: pagination 설정 추가
qhals321 Sep 8, 2021
7c0c47a
Merge branch 'feature/studylog-overview' of https://github.com/woowac…
qhals321 Sep 8, 2021
8a9e480
feat: studylog filter 에 date 추가
qhals321 Sep 8, 2021
afbefcc
refactor: n+1 문제 jdbcTemplate 구현으로 해결
qhals321 Sep 8, 2021
560c1e0
Merge branch 'develop' of https://github.com/woowacourse/prolog into …
qhals321 Sep 9, 2021
1339c18
fix: 컴파일 오류 수정
qhals321 Sep 9, 2021
80da400
refactor: 멤버태그 cascade 정책 삭제
qhals321 Sep 9, 2021
2df9ca2
refactor: 사용하지 않는 메서드 삭제
qhals321 Sep 9, 2021
19231a4
feat: 기존 멤버태그 업데이트 기능 추가
qhals321 Sep 9, 2021
a7d237f
fix: 한 번에 같은 멤버 태그 업데이트시 증가가 안되는 버그 수정
qhals321 Sep 9, 2021
1a3790c
fix: 업데이트 안 되었을 시에만 맴버 태그 업데이트
qhals321 Sep 9, 2021
b4a77ce
refactor: 멤버 태그 중복 시 예외 설정
qhals321 Sep 9, 2021
7599a9c
refactor: 필터링을 /posts 에서 /members/{name}/posts 로 변경
qhals321 Sep 9, 2021
f7599e3
fix: SearchArgumentResolver
gracefulBrown Sep 9, 2021
fd025c6
fix: SearchArgumentResolver
gracefulBrown Sep 9, 2021
09c19a6
refactor: 유저별 포스트 조회 API 변경
bucketHaneul Sep 9, 2021
c38fcf5
Merge branch 'develop' into feature/studylog-overview
gracefulBrown Sep 9, 2021
db6a332
fix: merge
gracefulBrown Sep 9, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
package wooteco.prolog.fixtures;

import wooteco.prolog.studylog.application.dto.StudylogRequest;
import wooteco.prolog.studylog.application.dto.TagRequest;

import java.util.Arrays;
import java.util.List;

import static java.util.stream.Collectors.toList;
import static wooteco.prolog.fixtures.TagAcceptanceFixture.*;

public enum PostAcceptanceFixture {
POST1(
"[자바][옵셔널] 학습log 제출합니다.",
"옵셔널은 NPE를 배제하기 위해 만들어진 자바8에 추가된 라이브러리입니다. \n " +
"다양한 메소드를 호출하여 원하는 대로 활용할 수 있습니다",
1L,
TAG1,
TAG2
),
POST2(
"[자바스크립트][비동기] 학습log 제출합니다.",
"모던 JS의 fetch문, ajax라이브러리인 axios등을 통해 비동기 요청을 \n " +
"편하게 할 수 있습니다. 자바 최고",
2L,
TAG3,
TAG4
),
POST3(
"[자료구조] 자료구조는 어려워요",
"진짜 어려움",
1L,
TAG1,
TAG5
),
POST4(
"[DOM] DOM DOM Dance",
"덤덤 댄스 아니고",
2L
),
POST5(
"[알고리즘] 자료구조의 big O에 관하여",
"big O는 small O보다 크다",
2L,
TAG5,
TAG6
);

PostAcceptanceFixture(
String title,
String content,
Long missionId,
TagAcceptanceFixture... tags) {
this.tags = Arrays.asList(tags);
List<TagRequest> tagRequests = Arrays.stream(tags)
.map(TagAcceptanceFixture::getTagRequest)
.collect(toList());
this.studylogRequest = new StudylogRequest(title, content, missionId, tagRequests);
}

private final StudylogRequest studylogRequest;
private final List<TagAcceptanceFixture> tags;

public StudylogRequest getPostRequest() {
return studylogRequest;
}

public static List<StudylogRequest> findByMissionNumber(Long missionId) {
return Arrays.stream(PostAcceptanceFixture.values())
.map(PostAcceptanceFixture::getPostRequest)
.filter(it -> it.getMissionId().equals(missionId))
.collect(toList());
}

public static List<StudylogRequest> findByTagNumber(Long tagId) {
return Arrays.stream(PostAcceptanceFixture.values())
.filter(it -> it.tags.stream().anyMatch(tag -> tag.getTagId().equals(tagId)))
.map(PostAcceptanceFixture::getPostRequest)
.collect(toList());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,8 @@ public TagRequest getTagRequest() {
public Long getTagId() {
return tagId;
}

public String getTagName() {
return tagRequest.getName();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
package wooteco.prolog.steps;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.tuple;

import io.cucumber.java.en.Then;
import io.cucumber.java.en.When;
import java.time.MonthDay;
import java.time.Year;
import java.util.List;
import wooteco.prolog.AcceptanceSteps;
import wooteco.prolog.fixtures.GithubResponses;
import wooteco.prolog.fixtures.PostAcceptanceFixture;
import wooteco.prolog.fixtures.TagAcceptanceFixture;
import wooteco.prolog.studylog.application.dto.CalendarStudylogResponse;
import wooteco.prolog.studylog.application.dto.MemberTagResponse;

public class StudyLogOverviewStepDefinitions extends AcceptanceSteps {

@When("{string}의 태그 목록을 조회하면")
public void 나의태그목록을조회하면(String name) {
final String memberName = GithubResponses.findByName(name).getLogin();
context.invokeHttpGet("/members/" + memberName + "/tags");
}

@Then("해당 유저의 태그 목록이 조회된다")
public void 나의태그목록이조회된다() {
final List<MemberTagResponse> data = context.response.then().extract()
.body()
.jsonPath()
.getList("data", MemberTagResponse.class);

assertThat(data)
.extracting(
memberTagResponse -> memberTagResponse.getTagResponse().getName(),
MemberTagResponse::getCount)
.containsExactlyInAnyOrder(
tuple(TagAcceptanceFixture.TAG1.getTagName(), 1),
tuple(TagAcceptanceFixture.TAG2.getTagName(), 1),
tuple(TagAcceptanceFixture.TAG3.getTagName(), 1),
tuple(TagAcceptanceFixture.TAG4.getTagName(), 1),
tuple("all", 4)
);
}

@When("{string}의 {int}년 {int}월 포스트 목록을 조회하면")
public void 나의포스트목록을조회하면(String name, int year, int month) {
final String memberName = GithubResponses.findByName(name).getLogin();
String path = String.format("members/%s/calendar-posts?year=%d&month=%d", memberName, year, month);
context.invokeHttpGet(path);
}

@When("{string}의 이번 달 포스트 목록을 조회하면")
public void 이번달포스트목록을조회하면(String name) {
나의포스트목록을조회하면(name, Year.now().getValue(), MonthDay.now().getMonth().getValue());
}

@Then("해당 유저의 포스트 목록이 조회된다")
public void 나의포스트목록이조회된다() {
final List<CalendarStudylogResponse> data = context.response.then().extract()
.body()
.jsonPath()
.getList("data", CalendarStudylogResponse.class);

assertThat(data).extracting(CalendarStudylogResponse::getTitle)
.containsExactlyInAnyOrder(
PostAcceptanceFixture.POST1.getPostRequest().getTitle(),
PostAcceptanceFixture.POST2.getPostRequest().getTitle()
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@ Feature: 멤버 관련 기능
Scenario: 자신의 정보를 수정하기
Given "브라운"이 로그인을 하고
When 자신의 닉네임을 "brown"으로 수정하면
Then "브라운"의 닉네임이 "brown"으로 수정
Then "브라운"의 닉네임이 "brown"으로 수정
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
@api
Feature: 스터디로그 오버뷰 기능

Background: 사전 작업
Given 레벨 여러개를 생성하고
And 미션 여러개를 생성하고
And "브라운"이 로그인을 하고

Scenario: 해당 유저의 태그 목록 조회하기
Given 포스트 여러개를 작성하고
When "브라운"의 태그 목록을 조회하면
Then 해당 유저의 태그 목록이 조회된다

Scenario: 해당 유저의 포스트 목록 월별로 조회하기
Given 포스트 여러개를 작성하고
When "브라운"의 이번 달 포스트 목록을 조회하면
Then 해당 유저의 포스트 목록이 조회된다
1 change: 1 addition & 0 deletions backend/src/documentation/adoc/index.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,4 @@ include::profile.adoc[]
include::mission.adoc[]
include::tag.adoc[]
include::filter.adoc[]
include::studylogOverview.adoc[]
22 changes: 22 additions & 0 deletions backend/src/documentation/adoc/studylogOverview.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
[[studylogOverview]]
== 스터디로그 오버뷰

=== 멤버 태그 조회

==== Request

include::{snippets}/members/tags/http-request.adoc[]

==== Response

include::{snippets}/members/tags/http-response.adoc[]

=== 멤버 달력 포스트 조회

==== Request

include::{snippets}/members/calendar-studylogs/http-request.adoc[]

==== Response

include::{snippets}/members/calendar-studylogs/http-response.adoc[]
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package wooteco.prolog.docu;

import org.junit.jupiter.api.Test;
import org.springframework.http.MediaType;
import wooteco.prolog.Documentation;
import wooteco.prolog.GithubResponses;

public class StudyLogOverviewDocumentation extends Documentation {

@Test
void 유저의_태그를_조회한다() {
given("members/tags")
.contentType(MediaType.APPLICATION_JSON_VALUE)
.when().get("/members/{username}/tags", GithubResponses.브라운.getLogin())
.then().log().all()
.extract();
}

@Test
void 유저의_달력_포스트를_조회한다() {
given("members/calendar-posts")
.contentType(MediaType.APPLICATION_JSON_VALUE)
.when().get("/members/{username}/calendar-posts?year=2021&month=8", GithubResponses.브라운.getLogin())
.then().log().all()
.extract();
}
}
Loading