42organization / 42gg.server.dev.v2

42GG, 42 Seoul 카뎃들을 위한 탁구 게임 매칭 서비스 🏓
https://gg.42seoul.kr/
10 stars 7 forks source link

✨ [Feature] Agenda 생성하기 API #859

Closed yhames closed 1 week ago

yhames commented 2 weeks ago

Description

Agenda 생성 API

Request

URI

POST /agenda/request

Request body

{
      "agendaTitle": string,
      "agendaContents": String, // 상세설명으로 들어감
      "agendaDeadLine": Date, // 모집완료기간 (이전까지 모집기간, 이후 진행대기)
      "agendaStartTime": Date, // 이벤트기간 시작 (진행중)
      "agendaEndTime": Date, // 이벤트기간 마감
      "agendaMinTeam": Number, // 팀 제한
      "agendaMaxTeam": Number,
      "agendaMinPeople": Number, // 팀내 인원 제한
      "agendaMaxPeople": Number,
      "agendaPoster" : ?image,
      "agendaLocation" : string, // ENUM 참조
      "agendaIsRanking" : bool, // 대회인지 확인
}

Response

Status code

Response body

{
      "agendaId" : string,
}

Todo

ETC

GWT

Feature: 대회 생성

    Scenario: 대회를 생성합니다.
        Given 사용자가 로그인되어 있습니다. 
        And 대회 생성에 필요한 정보를 request body로 전달합니다.
        When 대회 생성을 요청합니다.
        Then 201 코드와 함께 agendaId를 반환합니다.

    Scenario: agendaDeadLine이 agendaStartTime보다 미래입니다.
        Given 사용자가 로그인되어 있습니다. 
        And agendaDeadLine이 agendaStartTime보다 미래인 대회를 request body로 전달합니다.
        When 대회 생성을 요청합니다.
        Then 400 에러코드를 반환합니다.

    Scenario: agendaStartTime이 agendaEndTime보다 미래입니다.
        Given 사용자가 로그인되어 있습니다. 
        And agendaStartTime이 agendaEndTime보다 미래인 대회를 request body로 전달합니다.
        When 대회 생성을 요청합니다.
        Then 400 에러코드를 반환합니다.

    Scenario: agendaStartTime이 agendaEndTime과 동일합니다.
        Given 사용자가 로그인되어 있습니다. 
        And agendaStartTime이 agendaEndTime과 동일하게 request body를 전달합니다.
        When 대회 생성을 요청합니다.
        Then 400 에러코드를 반환합니다.

    Scenario: agendaMinTeam이 agendaMaxTeam보다 큽니다.
        Given 사용자가 로그인되어 있습니다. 
        And agendaMinTeam이 agendaMaxTeam보다 큰 request body를 전달합니다.
        When 대회 생성을 요청합니다.
        Then 400 에러코드를 반환합니다.       

    Scenario: agendaMinTeam이 1 이하의 정수 입니다.
        Given 사용자가 로그인되어 있습니다. 
        And agendaMinTeam이 1 이하의 정수인 request body를 전달합니다.
        When 대회 생성을 요청합니다.
        Then 400 에러코드를 반환합니다.       

    Scenario: agendaMaxTeam이 1 이하의 정수 입니다.
        Given 사용자가 로그인되어 있습니다. 
        And agendaMaxTeam이 1 이하의 정수인 request body를 전달합니다.
        When 대회 생성을 요청합니다.
        Then 400 에러코드를 반환합니다.

    Scenario: agendaMinPeople이 agendaMaxPeople보다 큽니다.
        Given 사용자가 로그인되어 있습니다. 
        And agendaMinPeople이 agendaMaxPeople보다 큰 request body를 전달합니다.
        When 대회 생성을 요청합니다.
        Then 400 에러코드를 반환합니다.       

    Scenario: agendaMinPeople이 0 이하의 정수입니다.
        Given 사용자가 로그인되어 있습니다. 
        And agendaMinPeople이 0 이하의 정수인 request body를 전달합니다.
        When 대회 생성을 요청합니다.
        Then 400 에러코드를 반환합니다.       

    Scenario: agendaMaxPeople이 1 이하의 정수입니다.
        Given 사용자가 로그인되어 있습니다. 
        And agendaMaxPeople이 1 이하의 정수인 request body를 전달합니다.
        When 대회 생성을 요청합니다.
        Then 400 에러코드를 반환합니다.

    Scenario: agendaLocation이 enum 타입에 해당하지 않습니다.
        Given 사용자가 로그인되어 있습니다. 
        And agendaLocation이 enum 타입에 해당하지 않는 request body를 전달합니다.
        When 대회 생성을 요청합니다.
        Then STATUS_NOT_VALID 에러 메세지와 함꼐 400 에러코드를 반환합니다.