Skip to content

Commit

Permalink
Merge pull request #862 from woowacourse/release/1.2.0
Browse files Browse the repository at this point in the history
Release/1.2.0
  • Loading branch information
gracefulBrown authored Apr 28, 2022
2 parents 39fc85b + 4d6d4d6 commit edf9708
Show file tree
Hide file tree
Showing 135 changed files with 2,485 additions and 1,528 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package wooteco.prolog.fixtures;

import wooteco.prolog.session.application.dto.SessionRequest;

public class SessionAcceptanceFixture {

public static SessionRequest session1 = new SessionRequest("세션1");
public static SessionRequest session2 = new SessionRequest("세션2");
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ public enum StudylogAcceptanceFixture {
"[자바][옵셔널] 학습log 제출합니다.",
"옵셔널은 NPE를 배제하기 위해 만들어진 자바8에 추가된 라이브러리입니다. \n " +
"다양한 메소드를 호출하여 원하는 대로 활용할 수 있습니다",
null,
1L,
TAG1,
TAG2
Expand All @@ -26,6 +27,7 @@ public enum StudylogAcceptanceFixture {
"[자바스크립트][비동기] 학습log 제출합니다.",
"모던 JS의 fetch문, ajax라이브러리인 axios등을 통해 비동기 요청을 \n " +
"편하게 할 수 있습니다. 자바 최고",
null,
2L,
TAG3,
TAG4
Expand All @@ -34,18 +36,35 @@ public enum StudylogAcceptanceFixture {
"[자료구조] 자료구조는 어려워요",
"진짜 어려움",
1L,
1L,
TAG1,
TAG5
),
STUDYLOG4(
"[DOM] DOM DOM Dance",
"덤덤 댄스 아니고",
2L,
2L
),
STUDYLOG5(
"[알고리즘] 자료구조의 big O에 관하여",
"big O는 small O보다 크다",
2L,
2L,
TAG5,
TAG6
),
STUDYLOG6(
"[DOM] DOM DOM Dance",
"덤덤 댄스 아니고",
2L,
null
),
STUDYLOG7(
"[알고리즘] 자료구조의 big O에 관하여",
"big O는 small O보다 크다",
2L,
null,
TAG5,
TAG6
);
Expand All @@ -56,19 +75,20 @@ public enum StudylogAcceptanceFixture {
StudylogAcceptanceFixture(
String title,
String content,
Long sessionId,
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);
this.studylogRequest = new StudylogRequest(title, content, sessionId, missionId, tagRequests);
}

public static List<StudylogRequest> findByMissionNumber(Long missionId) {
return Arrays.stream(StudylogAcceptanceFixture.values())
.map(StudylogAcceptanceFixture::getStudylogRequest)
.filter(it -> it.getMissionId().equals(missionId))
.filter(it -> it.getMissionId() != null && it.getMissionId().equals(missionId))
.collect(toList());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,19 @@
import java.util.List;
import org.springframework.http.HttpStatus;
import wooteco.prolog.AcceptanceSteps;
import wooteco.prolog.fixtures.LevelAcceptanceFixture;
import wooteco.prolog.fixtures.MissionAcceptanceFixture;
import wooteco.prolog.fixtures.SessionAcceptanceFixture;
import wooteco.prolog.session.application.dto.MissionRequest;
import wooteco.prolog.session.application.dto.MissionResponse;

public class MissionStepDefinitions extends AcceptanceSteps {

@Given("레벨 여러개를 생성하고")
public void 레벨여러개를생성하고() {
context.invokeHttpPost("/levels", LevelAcceptanceFixture.level1);
assertThat(context.response.statusCode()).isEqualTo(HttpStatus.OK.value());
context.invokeHttpPost("/levels", LevelAcceptanceFixture.level2);
assertThat(context.response.statusCode()).isEqualTo(HttpStatus.OK.value());
@Given("세션 여러개를 생성하고")
public void 세션여러개를생성하고() {
context.invokeHttpPost("/sessions", SessionAcceptanceFixture.session1);
assertThat(context.response.statusCode()).isEqualTo(HttpStatus.CREATED.value());
context.invokeHttpPost("/sessions", SessionAcceptanceFixture.session2);
assertThat(context.response.statusCode()).isEqualTo(HttpStatus.CREATED.value());
}
@Given("미션 여러개를 생성하고")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,28 @@
import static wooteco.prolog.fixtures.StudylogAcceptanceFixture.STUDYLOG1;
import static wooteco.prolog.fixtures.StudylogAcceptanceFixture.STUDYLOG2;
import static wooteco.prolog.fixtures.StudylogAcceptanceFixture.STUDYLOG3;
import static wooteco.prolog.fixtures.StudylogAcceptanceFixture.STUDYLOG4;
import static wooteco.prolog.fixtures.TagAcceptanceFixture.TAG1;
import static wooteco.prolog.fixtures.TagAcceptanceFixture.TAG2;

import com.google.common.collect.Iterables;
import io.cucumber.java.en.Given;
import io.cucumber.java.en.Then;
import io.cucumber.java.en.When;
import io.cucumber.messages.internal.com.google.common.collect.Lists;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.springframework.data.domain.PageRequest;
import org.springframework.http.HttpStatus;
import wooteco.prolog.AcceptanceSteps;
import wooteco.prolog.fixtures.StudylogAcceptanceFixture;
import wooteco.prolog.studylog.application.dto.StudylogMissionRequest;
import wooteco.prolog.studylog.application.dto.StudylogRequest;
import wooteco.prolog.studylog.application.dto.StudylogResponse;
import wooteco.prolog.studylog.application.dto.StudylogSessionRequest;
import wooteco.prolog.studylog.application.dto.StudylogsResponse;
import wooteco.prolog.studylog.application.dto.TagRequest;

public class StudylogStepDefinitions extends AcceptanceSteps {

Expand All @@ -30,10 +36,50 @@ public class StudylogStepDefinitions extends AcceptanceSteps {
context.invokeHttpPostWithToken("/studylogs", STUDYLOG2.getStudylogRequest());
}
// @Given("스터디로그를 작성하고")
// @When("스터디로그를 작성하면")
// public void 스터디로그를작성하면() {
// context.invokeHttpPostWithToken("/studylogs", STUDYLOG1.getStudylogRequest());
// }
@Given("스터디로그를 작성하고")
@When("스터디로그를 작성하면")
public void 스터디로그를작성하면() {
context.invokeHttpPostWithToken("/studylogs", STUDYLOG1.getStudylogRequest());
public void 세션과미션포함한스터디로그를작성하면() {
StudylogRequest studylogRequest = new StudylogRequest(
"[자바][옵셔널] 학습log 제출합니다.",
"옵셔널은 NPE를 배제하기 위해 만들어진 자바8에 추된 라이브러리입니다. \n " +
"다양한 메소드를 호출하여 원하는 대로 활용할 수 있습니다",
1L,
1L,
Lists.newArrayList(
new TagRequest(TAG1.getTagName()),
new TagRequest(TAG2.getTagName())
)
);
context.invokeHttpPostWithToken("/studylogs", studylogRequest);

if (context.response.statusCode() == HttpStatus.CREATED.value()) {
context.storage.put("studylog", context.response.as(StudylogResponse.class));
}
}

@When("세션과 미션 없이 스터디로그를 작성하면")
public void 세션과미션없이스터디로그를작성하면() {
StudylogRequest studylogRequest = new StudylogRequest(
"[자바][옵셔널] 학습log 제출합니다.",
"옵셔널은 NPE를 배제하기 위해 만들어진 자바8에 추가된 라이브러리입니다. \n " +
"다양한 메소드를 호출하여 원하는 대로 활용할 수 있습니다",
null,
null,
Lists.newArrayList(
new TagRequest(TAG1.getTagName()),
new TagRequest(TAG2.getTagName())
)
);
context.invokeHttpPostWithToken("/studylogs", studylogRequest);
if (context.response.statusCode() == HttpStatus.CREATED.value()) {
context.storage.put("studylog", context.response.as(StudylogResponse.class));
}
}

@Given("{string} 스터디로그를 작성하고")
Expand All @@ -47,6 +93,13 @@ public class StudylogStepDefinitions extends AcceptanceSteps {
public void 스터디로그작성된다() {
int statusCode = context.response.statusCode();
assertThat(statusCode).isEqualTo(HttpStatus.CREATED.value());

StudylogResponse studylogResponse = (StudylogResponse) context.storage.get("studylog");

context.invokeHttpGet("/studylogs/" + studylogResponse.getId());

StudylogResponse response = context.response.as(StudylogResponse.class);
assertThat(response.getId()).isNotNull();
}

@Given("{long}개의 스터디로그를 작성하고")
Expand Down Expand Up @@ -95,16 +148,13 @@ public class StudylogStepDefinitions extends AcceptanceSteps {
}
}

@Given("서로 다른 레벨을 진 스터디로그를 다수 생성하고")
public void 서로다른레벨을가진스터디로그를생성() {
@Given("서로 다른 세션을 가진 스터디로그를 다수 생성하고")
public void 서로다른세션을진스터디로그를생성() {
for (int i = 0; i < 2; i++) {
context.invokeHttpPostWithToken("/studylogs", STUDYLOG1.getStudylogRequest());
context.invokeHttpPostWithToken("/studylogs", STUDYLOG3.getStudylogRequest());
}
for (int i = 0; i < 3; i++) {
context.invokeHttpPostWithToken("/studylogs", STUDYLOG2.getStudylogRequest());
}
for (int i = 0; i < 4; i++) {
context.invokeHttpPostWithToken("/studylogs", STUDYLOG3.getStudylogRequest());
context.invokeHttpPostWithToken("/studylogs", STUDYLOG4.getStudylogRequest());
}
}

Expand Down Expand Up @@ -140,9 +190,9 @@ public class StudylogStepDefinitions extends AcceptanceSteps {
context.invokeHttpGet(path);
}

@When("{int}번 레벨의 스터디로그를 조회하면")
public void 특정레벨의스터디로그를조회하면(int levelNumber) {
String path = String.format("/studylogs?levels=%d", levelNumber);
@When("{int}번 세션의 스터디로그를 조회하면")
public void 특정세션의스터디로그를조회하면(int sessionNumber) {
String path = String.format("/studylogs?sessions=%d", sessionNumber);
context.invokeHttpGet(path);
}

Expand Down Expand Up @@ -346,4 +396,30 @@ public class StudylogStepDefinitions extends AcceptanceSteps {
assertThat(response.getId()).isEqualTo(id);
}
}

@When("스터디로그 세션을 {long}로 수정하면")
public void 스터디로그세션을L로수정하면(long sessionId) {
StudylogResponse studylogResponse = (StudylogResponse) context.storage.get("studylog");
context.invokeHttpPutWithToken("/studylogs/" + studylogResponse.getId() + "/sessions", new StudylogSessionRequest(sessionId));
}

@Then("스터디로그 세션이 {long}로 수정된다")
public void 스터디로그세션이로수정된다(long sessionId) {
StudylogResponse studylogResponse = (StudylogResponse) context.storage.get("studylog");
context.invokeHttpGet("/studylogs/" + studylogResponse.getId());
assertThat(context.response.as(StudylogResponse.class).getSession().getId()).isEqualTo(sessionId);
}

@When("스터디로그 미션을 {long}로 수정하면")
public void 스터디로그미션을로수정하면(long missionId) {
StudylogResponse studylogResponse = (StudylogResponse) context.storage.get("studylog");
context.invokeHttpPutWithToken("/studylogs/" + studylogResponse.getId() + "/missions", new StudylogMissionRequest(missionId));
}

@Then("스터디로그 미션이 {long}로 수정된다")
public void 스터디로그미션이로수정된다(long missionId) {
StudylogResponse studylogResponse = (StudylogResponse) context.storage.get("studylog");
context.invokeHttpGet("/studylogs/" + studylogResponse.getId());
assertThat(context.response.as(StudylogResponse.class).getMission().getId()).isEqualTo(missionId);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ Feature: 역량 학습로그 맵핑 기능

Background: 사전 작업
Given "브라운"이 로그인을 하고
And 레벨 여러개를 생성하고
And 세션 여러개를 생성하고
And 미션 여러개를 생성하고
And 부모역량 "프로그래밍"을 추가하고
And "프로그래밍"의 자식역량 "언어"를 추가하고
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
Feature: 로그인 기능

Background: 사전 작업
Given 레벨 여러개를 생성하고
Given 세션 여러개를 생성하고

Scenario: 미션 등록하기
Given "브라운"이 로그인을 하고
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
@api
Feature: 프로필 관련 기능
Background: 사전 작업
Given 레벨 여러개를 생성하고
Given 세션 여러개를 생성하고
And 미션 여러개를 생성하고

Scenario: 멤버 프로필 조회하기
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
Feature: 리포트 기능

Background: 사전 작업
Given 레벨 여러개를 생성하고
Given 세션 여러개를 생성하고
And 미션 여러개를 생성하고
And "브라운"이 로그인을 하고
And 부모역량 "프로그래밍"을 추가하고
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
@api
Feature: 스터디로그 관련 기능

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

Scenario: 스터디로그 작성하기
When 스터디로그를 작성하면
Then 스터디로그가 작성된다

Scenario: 세션, 미션 없이 스터디로그 작성하기
When 세션과 미션 없이 스터디로그를 작성하면
Then 스터디로그가 작성된다

Scenario: 스터디로그 세션 수정하기
Given 스터디로그를 작성하고
When 스터디로그 세션을 2로 수정하면
Then 스터디로그 세션이 2로 수정된다

Scenario: 스터디로그 미션 수정하기
Given 스터디로그를 작성하고
When 스터디로그 미션을 2로 수정하면
Then 스터디로그 미션이 2로 수정된다
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
Feature: 스터디로그 관련 기능

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

Expand Down Expand Up @@ -78,10 +78,10 @@ Feature: 스터디로그 관련 기능
When "학습log"을 검색하고 2번 미션과 1번 태그로 조회하면
Then 0개의 스터디로그 목록을 받는다

Scenario: 조건별 스터디로그 목록 페이지 조회하기 - 레벨
Given 서로 다른 레벨을 가진 스터디로그를 다수 생성하고
When 1번 레벨의 스터디로그를 조회하면
Then 6개의 스터디로그 목록을 받는다
Scenario: 조건별 스터디로그 목록 페이지 조회하기 - 세션
Given 서로 다른 세션을 가진 스터디로그를 다수 생성하고
When 1번 세션의 스터디로그를 조회하면
Then 2개의 스터디로그 목록을 받는다

Scenario: 스터디로그 단건 조회하기
Given 스터디로그 여러개를 작성하고
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
Feature: 스터디로그 오버뷰 기능

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
Feature: 태그 관련 기능

Background: 사전 작업
Given 레벨 여러개를 생성하고
Given 세션 여러개를 생성하고
And 미션 여러개를 생성하고
And "웨지"가 로그인을 하고

Expand Down
2 changes: 1 addition & 1 deletion backend/src/documentation/adoc/index.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

include::login.adoc[]
include::profile.adoc[]
include::level.adoc[]
include::session.adoc[]
include::studylog.adoc[]
include::mission.adoc[]
include::tag.adoc[]
Expand Down
Loading

0 comments on commit edf9708

Please sign in to comment.