Skip to content

Commit

Permalink
Feat: 학과 리스트 반환 api 작성
Browse files Browse the repository at this point in the history
 - controller, repository 단위 테스트 작성
 - major.java 디렉토리 변경(member -> major)
Resolves: GDSC-PKNU-Official#10
  • Loading branch information
coke98 committed Jul 12, 2022
1 parent b3d3c6c commit 20f557e
Show file tree
Hide file tree
Showing 8 changed files with 157 additions and 3 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,4 @@ out/
### VS Code ###
.vscode/
src/main/resources/application.properties
src/main/resources/application.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.gdsc.pknu.backend.controller.user;

import java.util.List;
import com.gdsc.pknu.backend.domain.major.Major;
import lombok.Getter;

@Getter
public class MajorListResult {

private List<Major> majorList;

public MajorListResult(List<Major> majorList) {
this.majorList = majorList;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.gdsc.pknu.backend.controller.user;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.gdsc.pknu.backend.controller.ApiRes;
import com.gdsc.pknu.backend.service.MajorService;


@RestController
@RequestMapping("api/major")
public class MajorRestController {

@Autowired
private final MajorService majorService;

public MajorRestController(MajorService majorService) {
this.majorService = majorService;
}

@GetMapping()
public ApiRes<MajorListResult> getMajorList() {
return ApiRes.SUCCESS(new MajorListResult(majorService.getMajorList()));
}
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,24 @@
package com.gdsc.pknu.backend.domain.member;

package com.gdsc.pknu.backend.domain.major;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

import lombok.AllArgsConstructor;
import lombok.*;
import lombok.NoArgsConstructor;

@Entity
@Getter
@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor

public class Major {
@Id
@GeneratedValue
@Column(name = "major_id")
private Long id;

private String majorName;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.gdsc.pknu.backend.domain.major;

import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;

public interface MajorRepository extends JpaRepository<Major, Long> {
List<Major> findAll();
}
22 changes: 22 additions & 0 deletions src/main/java/com/gdsc/pknu/backend/service/MajorService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.gdsc.pknu.backend.service;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.gdsc.pknu.backend.domain.major.Major;
import com.gdsc.pknu.backend.domain.major.MajorRepository;

@Service
public class MajorService {

@Autowired
private final MajorRepository majorRepository;

public MajorService(MajorRepository majorRepository) {
this.majorRepository = majorRepository;
}

public List<Major> getMajorList() {
return majorRepository.findAll();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package com.gdsc.pknu.backend.controller;

import java.util.ArrayList;
import java.util.List;
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.web.servlet.WebMvcTest;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.test.web.servlet.MockMvc;
import com.gdsc.pknu.backend.controller.user.MajorRestController;
import com.gdsc.pknu.backend.domain.major.Major;
import com.gdsc.pknu.backend.service.MajorService;
import static org.mockito.Mockito.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;

@WebMvcTest(MajorRestController.class)
public class MajorRestControllerTest {

@Autowired
MockMvc mockMvc;

@MockBean
MajorService majorService;

@Test
@DisplayName("학과 목록 불러오기 테스트")
void get_major_list() throws Exception {

// 서비스 리턴 값 지정
List<Major> majors = new ArrayList<>();
majors.add(Major.builder()
.id(1L)
.majorName("기린공학과").build());
majors.add(Major.builder()
.id(2L)
.majorName("향유고래어학과").build());

when(majorService.getMajorList()).thenReturn(majors);

mockMvc.perform(get("/api/major"))
.andExpect(status().isOk())
.andExpect(jsonPath("$.response.majorList[1].majorName").value("향유고래어학과"));
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.gdsc.pknu.backend.domain.major;

import java.util.List;
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.jdbc.AutoConfigureTestDatabase;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;

@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
class MajorRepositoryTest{

@Autowired
private MajorRepository majorRepository;

@Test
@DisplayName("학과 정보 리스트 불러오기")
void get_major_list(){
// given

// when
List<Major> majors = majorRepository.findAll();
// then
assert(majors.size() == 79);
assert(majors.get(78).getMajorName().equals("공공안전경찰학과"));
}
}

0 comments on commit 20f557e

Please sign in to comment.