From fc6551abd259b5cf9bf5a2362bae0598f26e1b3f Mon Sep 17 00:00:00 2001 From: amaran-th Date: Sat, 29 Jul 2023 12:20:04 +0900 Subject: [PATCH] =?UTF-8?q?test:=20=ED=81=90=EC=BB=B4=EB=B2=84=20=EC=9D=B8?= =?UTF-8?q?=EC=88=98=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #1397 --- ...KeywordRecommendedPostStepDefinitions.java | 66 +++++++++++++++++++ .../prolog/keyword-recommended-post.feature | 19 ++++++ 2 files changed, 85 insertions(+) create mode 100644 backend/src/acceptanceTest/java/wooteco/prolog/steps/KeywordRecommendedPostStepDefinitions.java create mode 100644 backend/src/acceptanceTest/resources/wooteco/prolog/keyword-recommended-post.feature diff --git a/backend/src/acceptanceTest/java/wooteco/prolog/steps/KeywordRecommendedPostStepDefinitions.java b/backend/src/acceptanceTest/java/wooteco/prolog/steps/KeywordRecommendedPostStepDefinitions.java new file mode 100644 index 000000000..47dd2f023 --- /dev/null +++ b/backend/src/acceptanceTest/java/wooteco/prolog/steps/KeywordRecommendedPostStepDefinitions.java @@ -0,0 +1,66 @@ +package wooteco.prolog.steps; + +import io.cucumber.java.en.Given; +import io.cucumber.java.en.Then; +import io.cucumber.java.en.When; +import org.springframework.http.HttpStatus; +import wooteco.prolog.AcceptanceSteps; +import wooteco.prolog.roadmap.application.dto.RecommendedRequest; + +import static org.assertj.core.api.Assertions.assertThat; +import static wooteco.prolog.fixtures.KeywordAcceptanceFixture.KEYWORD_REQUEST; + +public class KeywordRecommendedPostStepDefinitions extends AcceptanceSteps { + + @Given("{int}번 세션에 {string}라는 키워드를 순서 {int}, 중요도 {int}, 부모 키워드 {long}로 작성하고") + public void 키워드를_부모_키워드와_함께_작성하고(int sessionId, String keywordName, int seq, int importance, + long parentId) { + context.invokeHttpPost( + "/sessions/" + sessionId + "/keywords", + KEYWORD_REQUEST.getSaveChild(keywordName, seq, importance, parentId)); + } + + @Given("{int}번 키워드에 대해 추천 포스트 {string}를 작성하고") + @When("{int}번 키워드에 대해 추천 포스트 {string}를 작성하면") + public void 추천_포스트를_추가하면(int keywordId, String url) { + context.invokeHttpPost( + "/keywords/"+keywordId+"/recommended-posts", + new RecommendedRequest(url) + ); + } + + @When("{int}번 키워드에 대한 {int}번 추천 포스트를 {string}로 수정하면") + public void 추천_포스트를_수정하면(int keywordId, int recommendedId, String url) { + context.invokeHttpPut( + "/keywords/"+keywordId+"/recommended-posts/"+recommendedId, + new RecommendedRequest(url)); + } + + @When("{int}번 키워드에 대한 {int}번 추천 포스트를 삭제하면") + public void 추천_포스트를_삭제하면(int keywordId, int recommendedId) { + context.invokeHttpDelete( + "/keywords/" + keywordId + "/recommended-posts/" + recommendedId + ); + } + + @Then("추천 포스트가 생성된다") + public void 추천_포스트가_생성된다() { + int statusCode = context.response.statusCode(); + + assertThat(statusCode).isEqualTo(HttpStatus.CREATED.value()); + } + + @Then("추천 포스트가 수정된다") + public void 추천_포스트가_수정된다() { + int statusCode = context.response.statusCode(); + + assertThat(statusCode).isEqualTo(HttpStatus.OK.value()); + } + + @Then("추천 포스트가 삭제된다") + public void 추천_포스트가_삭제된다() { + int statusCode = context.response.statusCode(); + + assertThat(statusCode).isEqualTo(HttpStatus.NO_CONTENT.value()); + } +} diff --git a/backend/src/acceptanceTest/resources/wooteco/prolog/keyword-recommended-post.feature b/backend/src/acceptanceTest/resources/wooteco/prolog/keyword-recommended-post.feature new file mode 100644 index 000000000..b49513f8c --- /dev/null +++ b/backend/src/acceptanceTest/resources/wooteco/prolog/keyword-recommended-post.feature @@ -0,0 +1,19 @@ +@api +Feature: 로드맵 키워드 추천 포스트 관련 기능 + + Background: 사전 작업 + Given "2022 백엔드 레벨1" 세션을 생성하고 - 1번 세션 + And 1번 세션에 "자바"라는 키워드를 순서 1, 중요도 2로 작성하고 + + Scenario: 키워드 추천 포스트 생성하기 + When 1번 키워드에 대해 추천 포스트 "https://javajavajava"를 작성하면 + Then 추천 포스트가 생성된다 + + Scenario: 키워드 추천 포스트 수정하기 + Given 1번 키워드에 대해 추천 포스트 "https://javajavajava"를 작성하고 + When 1번 키워드에 대한 1번 추천 포스트를 "https://java2java2"로 수정하면 + Then 추천 포스트가 수정된다 + + Scenario: 키워드 추천 포스트 삭제하기 + When 1번 키워드에 대한 1번 추천 포스트를 삭제하면 + Then 추천 포스트가 삭제된다