Skip to content

Commit

Permalink
[�SKRB-143] feat: 클럽 엔티티, 서비스, 리포지토리 생성
Browse files Browse the repository at this point in the history
  • Loading branch information
choi5798 authored Oct 26, 2023
2 parents a0b645e + cb37f54 commit 3cd5b48
Show file tree
Hide file tree
Showing 5 changed files with 89 additions and 7 deletions.
14 changes: 10 additions & 4 deletions src/main/java/com/spaceclub/club/controller/ClubController.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package com.spaceclub.club.controller;

import com.spaceclub.club.controller.dto.CreateClubRequest;
import com.spaceclub.club.domain.Club;
import com.spaceclub.club.service.ClubService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
Expand All @@ -14,19 +17,22 @@

@RestController
@RequestMapping("/api/v1")
@RequiredArgsConstructor
public class ClubController {

@PostMapping("/club")
private final ClubService service;

@PostMapping("/clubs")
public ResponseEntity<String> createClub(@RequestBody CreateClubRequest request) {
return ResponseEntity.created(URI.create("https://spaceclub.site/1")).build();
return ResponseEntity.created(URI.create("api/v1/clubs/1")).build();
}

@GetMapping("/club/{clubId}")
@GetMapping("/clubs/{clubId}")
public ResponseEntity<String> getClub(@PathVariable Long clubId) {
return ResponseEntity.ok("get club.");
}

@DeleteMapping("/club/{clubId}")
@DeleteMapping("/clubs/{clubId}")
public ResponseEntity<String> deleteClub(@PathVariable Long clubId) {
return ResponseEntity.ok("delete club.");
}
Expand Down
50 changes: 50 additions & 0 deletions src/main/java/com/spaceclub/club/domain/Club.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package com.spaceclub.club.domain;

import com.spaceclub.global.BaseTimeEntity;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import jakarta.persistence.Lob;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.NoArgsConstructor;
import org.springframework.util.Assert;

@Entity
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Club extends BaseTimeEntity {

@Id
@Column(name = "club_id")
@GeneratedValue
private Long id;

@Column(length = 12, nullable = false)
private String name;

@Lob
private String image;

@Lob
private String info;

private String owner;

private boolean validateNameLength() {
return this.name.length() <= 12;
}

@Builder
public Club(String name, String image, String info, String owner) {
Assert.notNull(name, "이름에 null 값이 올 수 없습니다");
Assert.hasText(name, "이름이 빈 값일 수 없습니다");
Assert.isTrue(validateNameLength(), "이름의 길이는 12자를 넘을 수 없습니다");

this.name = name;
this.image = image;
this.info = info;
this.owner = owner;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.spaceclub.club.repository;

import com.spaceclub.club.domain.Club;
import org.springframework.data.jpa.repository.JpaRepository;

public interface ClubRepository extends JpaRepository<Club, Long> {

}
13 changes: 13 additions & 0 deletions src/main/java/com/spaceclub/club/service/ClubService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.spaceclub.club.service;

import com.spaceclub.club.repository.ClubRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class ClubService {

private final ClubRepository repository;

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,13 @@

import com.fasterxml.jackson.databind.ObjectMapper;
import com.spaceclub.club.controller.dto.CreateClubRequest;
import com.spaceclub.club.service.ClubService;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.restdocs.AutoConfigureRestDocs;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.http.MediaType;
import org.springframework.restdocs.payload.JsonFieldType;
import org.springframework.security.test.context.support.WithMockUser;
Expand Down Expand Up @@ -36,6 +38,9 @@ class ClubControllerTest {
@Autowired
private ObjectMapper mapper;

@MockBean
private ClubService clubService;

@Test
@DisplayName("클럽 생성에 성공한다")
@WithMockUser
Expand All @@ -44,7 +49,7 @@ void createClubTest() throws Exception {
CreateClubRequest request = new CreateClubRequest("requiredInfo");

// when
ResultActions result = this.mockMvc.perform(post("/api/v1/club")
ResultActions result = this.mockMvc.perform(post("/api/v1/clubs")
.with(csrf())
.contentType(MediaType.APPLICATION_JSON)
.content(mapper.writeValueAsString(request)));
Expand All @@ -68,7 +73,7 @@ void getClubTest() throws Exception {
Long clubId = 1L;

// when
ResultActions result = this.mockMvc.perform(get("/api/v1/club/{clubId}", clubId)
ResultActions result = this.mockMvc.perform(get("/api/v1/clubs/{clubId}", clubId)
.with(csrf())
.contentType(MediaType.APPLICATION_JSON));

Expand All @@ -88,7 +93,7 @@ void deleteClubTest() throws Exception {
Long clubId = 1L;

// when
ResultActions result = this.mockMvc.perform(delete("/api/v1/club/{clubId}", clubId)
ResultActions result = this.mockMvc.perform(delete("/api/v1/clubs/{clubId}", clubId)
.with(csrf())
.contentType(MediaType.APPLICATION_JSON));

Expand Down

0 comments on commit 3cd5b48

Please sign in to comment.