Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/main/java/hibuy/server/domain/DateCount.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,11 @@ public DateCount(User user) {
this.status = Status.ACTIVE;
}

public void increaseDateCount() {
public int increaseDateCount() {
this.dateCount += 1;
if(this.dateCount == 151) {
this.dateCount = 1;
}
return this.dateCount;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,12 @@
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.Pattern;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;

@Getter
@AllArgsConstructor
@Builder
public class PostAddressRequest {

public static final String PHONE_NUMBER_REGEX = "^010\\d{8}$";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package hibuy.server.dto.dailyTake;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
Expand All @@ -8,6 +9,7 @@

@Getter @Setter
@NoArgsConstructor
@AllArgsConstructor
public class PostDailyTakeRequest {
private Date date;
}
2 changes: 2 additions & 0 deletions src/main/java/hibuy/server/dto/sample/PostSampleRequest.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
package hibuy.server.dto.sample;

import hibuy.server.domain.Sample;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.validator.constraints.URL;

@Getter @Setter
@NoArgsConstructor
@AllArgsConstructor
public class PostSampleRequest {

private String productName;
Expand Down
5 changes: 2 additions & 3 deletions src/main/java/hibuy/server/service/DateCountService.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,13 @@ public GetDateCountResponse getUserDateCount(Long userId) {
}

@Transactional
public void updateUserDateCount(Long userId) {
public int updateUserDateCount(Long userId) {

log.debug("[PatchDateCountResponse.updateUserDateCount]");

DateCount dateCount = dateCountRepository.findDateCountByUserId(userId)
.orElseThrow(NotFoundDateCountException::new);

dateCount.increaseDateCount();

return dateCount.increaseDateCount();
}
}
6 changes: 3 additions & 3 deletions src/main/java/hibuy/server/service/SampleService.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,15 @@ public class SampleService {

private final SampleRepository sampleRepository;

public void addSample(PostSampleRequest postSampleRequest) {
public Long addSample(PostSampleRequest postSampleRequest) {

log.debug("[SampleService.addSample]");

Sample sample = postSampleRequest.toEntity();

sampleRepository.save(sample);
Sample save = sampleRepository.save(sample);

return save.getSampleId();
}

public List<GetSampleResponse> getSamples() {
Expand All @@ -33,6 +34,5 @@ public List<GetSampleResponse> getSamples() {

return sampleRepository.findAll().stream()
.map(GetSampleResponse::new).toList();

}
}
142 changes: 142 additions & 0 deletions src/test/java/hibuy/server/controller/AddressControllerTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
package hibuy.server.controller;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import hibuy.server.domain.Address;
import hibuy.server.domain.User;
import hibuy.server.dto.address.*;
import hibuy.server.service.AddressService;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.mockito.BDDMockito;
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.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;

import java.util.List;

import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.BDDMockito.*;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@WebMvcTest(controllers = AddressController.class)
class AddressControllerTest {

@Autowired
AddressController addressController;
@Autowired
MockMvc mockMvc;
@Autowired
ObjectMapper objectMapper;
@MockBean
AddressService addressService;

@DisplayName("์ฃผ์†Œ๋ฅผ ๋“ฑ๋กํ•œ๋‹ค.")
@Test
void addAddress() throws Exception {
//given
Long userId = 1L;
PostAddressRequest request =
PostAddressRequest.builder()
.addressName("ํ•™๊ต")
.receiver("๊น€๊ฑด๊ตญ")
.phoneNumber("01012341234")
.zipCode("08521")
.basicAddress("์„œ์šธ์‹œ ๊ด‘์ง„๊ตฌ")
.detailAddress("์‹ ๊ณตํ•™๊ด€ 12์ธต")
.defaultAddress(false)
.request("์š”์ฒญ์‚ฌํ•ญ ์—†์Œ")
.userId(userId)
.build();

//when //then
mockMvc.perform(
post("/address")
.content(objectMapper.writeValueAsString(request))
.contentType(MediaType.APPLICATION_JSON)
)
.andDo(print())
.andExpect(status().isOk())
.andExpect(jsonPath("$.code").value(1000))
.andExpect(jsonPath("$.status").value(200))
.andExpect(jsonPath("$.message").value("์š”์ฒญ์— ์„ฑ๊ณตํ•˜์˜€์Šต๋‹ˆ๋‹ค."));
}

@DisplayName("์ฃผ์†Œ๋ฅผ ์กฐํšŒ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.")
@Test
void getAddressList() throws Exception {
//given
Long userId = 1L;
User user = User.builder()
.kakaoUserId(1L)
.email("abcd123@naver.com")
.name("๊น€์ฒ ์ˆ˜")
.phoneNumber("01012341234")
.build();

GetAddressListResponse response = new GetAddressListResponse(
List.of(
new AddressDTO(Address.builder()
.addressName("ํ•™๊ต")
.receiver("๊น€์ฒ ์ˆ˜")
.phoneNumber("01012341234")
.zipCode("08521")
.basicAddress("์„œ์šธ์‹œ ๊ด‘์ง„๊ตฌ")
.detailAddress("์‹ ๊ณตํ•™๊ด€ 12์ธต")
.defaultAddress(false)
.request("์š”์ฒญ์‚ฌํ•ญ ์—†์Œ")
.user(user)
.build()
)
)
);

given(addressService.getAddressListById(userId)).willReturn(response);

//when //then
mockMvc.perform(
get("/address")
.param("userId", userId.toString())
)
.andDo(print())
.andExpect(status().isOk())
.andExpect(jsonPath("$.code").value(1000))
.andExpect(jsonPath("$.status").value(200))
.andExpect(jsonPath("$.message").value("์š”์ฒญ์— ์„ฑ๊ณตํ•˜์˜€์Šต๋‹ˆ๋‹ค."))
.andExpect(jsonPath("$.result.addresses[0].addressName").value("ํ•™๊ต"))
.andExpect(jsonPath("$.result.addresses[0].receiver").value("๊น€์ฒ ์ˆ˜"))
.andExpect(jsonPath("$.result.addresses[0].phoneNumber").value("01012341234"))
.andExpect(jsonPath("$.result.addresses[0].basicAddress").value("์„œ์šธ์‹œ ๊ด‘์ง„๊ตฌ"))
.andExpect(jsonPath("$.result.addresses[0].detailAddress").value("์‹ ๊ณตํ•™๊ด€ 12์ธต"))
.andExpect(jsonPath("$.result.addresses[0].request").value("์š”์ฒญ์‚ฌํ•ญ ์—†์Œ"))
.andExpect(jsonPath("$.result.addresses[0].defaultAddress").value(false));
}

@DisplayName("๊ธฐ๋ณธ ์ฃผ์†Œ๋กœ ๋“ฑ๋กํ•œ๋‹ค.")
@Test
void updateDefaultAddress() throws Exception {
//given
Long addressId = 1L;
Long userId = 1L;
PatchAddressResponse response = new PatchAddressResponse(addressId);
PatchAddressRequest request = new PatchAddressRequest(addressId, userId, "์š”์ฒญ์‚ฌํ•ญ ์—†์Œ");
given(addressService.updateDefaultAddress(request)).willReturn(response);

//when //then
mockMvc.perform(
patch("/address")
.content(objectMapper.writeValueAsString(request))
.contentType(MediaType.APPLICATION_JSON)
).andDo(print())
.andDo(print())
.andExpect(status().isOk())
.andExpect(jsonPath("$.code").value(1000))
.andExpect(jsonPath("$.status").value(200))
.andExpect(jsonPath("$.message").value("์š”์ฒญ์— ์„ฑ๊ณตํ•˜์˜€์Šต๋‹ˆ๋‹ค."));
}
}
81 changes: 81 additions & 0 deletions src/test/java/hibuy/server/controller/DailyTakeControllerTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
package hibuy.server.controller;

import com.fasterxml.jackson.databind.ObjectMapper;
import hibuy.server.dto.dailyTake.GetMonthlyTakeResponse;
import hibuy.server.dto.dailyTake.PostDailyTakeRequest;
import hibuy.server.service.DailyTakeService;
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.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;

import java.sql.Date;
import java.util.List;

import static org.mockito.BDDMockito.*;
import static org.springframework.http.HttpStatus.*;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@WebMvcTest(controllers = DailyTakeController.class)
class DailyTakeControllerTest {

@Autowired DailyTakeController dailyTakeController;
@Autowired MockMvc mockMvc;
@Autowired ObjectMapper objectMapper;
@MockBean DailyTakeService dailyTakeService;

@DisplayName("์›”๋ณ„ ์กฐํšŒ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•œ๋‹ค.")
@Test
void getMonthlyTake() throws Exception {
//given
Long userId = 1L;
String year = "2024";
String month = "04";
GetMonthlyTakeResponse response = new GetMonthlyTakeResponse(
List.of(Date.valueOf("2024-04-01"), Date.valueOf("2024-04-02"))
);
given(dailyTakeService.getMonthlyTake(userId, year, month)).willReturn(response);


//when //then
mockMvc.perform(
get("/users/{userId}/daily-take", userId)
.param("year", year)
.param("month", month)
)
.andDo(print())
.andExpect(status().isOk())
.andExpect(jsonPath("$.code").value(1000))
.andExpect(jsonPath("$.status").value(200))
.andExpect(jsonPath("$.message").value("์š”์ฒญ์— ์„ฑ๊ณตํ•˜์˜€์Šต๋‹ˆ๋‹ค."))
.andExpect(jsonPath("$.result.intakeDate[0]").value("2024-04-01"))
.andExpect(jsonPath("$.result.intakeDate[1]").value("2024-04-02"));
}

@DisplayName("์ผ์ผ ์„ญ์ทจ์—ฌ๋ถ€๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.")
@Test
void addDailyTake() throws Exception {
//given
Long userId = 1L;
PostDailyTakeRequest request = new PostDailyTakeRequest(Date.valueOf("2024-04-05"));

//when //then
mockMvc.perform(
post("/users/{userId}/daily-take", userId)
.content(objectMapper.writeValueAsString(request))
.contentType(MediaType.APPLICATION_JSON)
)
.andDo(print())
.andExpect(status().isOk())
.andExpect(jsonPath("$.code").value(1000))
.andExpect(jsonPath("$.status").value(200))
.andExpect(jsonPath("$.message").value("์š”์ฒญ์— ์„ฑ๊ณตํ•˜์˜€์Šต๋‹ˆ๋‹ค."));
}
}
72 changes: 72 additions & 0 deletions src/test/java/hibuy/server/controller/DateCountControllerTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
package hibuy.server.controller;

import hibuy.server.domain.DateCount;
import hibuy.server.domain.User;
import hibuy.server.dto.dateCount.GetDateCountResponse;
import hibuy.server.service.DateCountService;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.mockito.BDDMockito;
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 static org.mockito.BDDMockito.*;
import static org.springframework.http.HttpStatus.OK;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.patch;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@WebMvcTest(controllers = DateCountController.class)
class DateCountControllerTest {

@Autowired DateCountController dateCountController;
@Autowired MockMvc mockMvc;
@MockBean DateCountService dateCountService;

@DisplayName("๋ˆ„์  ์ผ์ˆ˜๋ฅผ ์กฐํšŒํ•œ๋‹ค.")
@Test
void getUserDateCount() throws Exception {
//given
Long userId = 1L;
User user = User.builder()
.kakaoUserId(1L)
.email("abcd123@naver.com")
.name("๊น€์ฒ ์ˆ˜")
.phoneNumber("01012341234")
.build();
GetDateCountResponse response = GetDateCountResponse.of(new DateCount(user));
given(dateCountService.getUserDateCount(userId)).willReturn(response);

//when //then
mockMvc.perform(
get("/users/{userId}/count", userId)
)
.andDo(print())
.andExpect(status().isOk())
.andExpect(jsonPath("$.code").value(1000))
.andExpect(jsonPath("$.status").value(200))
.andExpect(jsonPath("$.message").value("์š”์ฒญ์— ์„ฑ๊ณตํ•˜์˜€์Šต๋‹ˆ๋‹ค."))
.andExpect(jsonPath("$.result.dateCount").value(0));
}

@DisplayName("๋ˆ„์  ์ผ์ˆ˜๋ฅผ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.")
@Test
void updateUserDateCount() throws Exception {
//given
Long userId = 1L;
given(dateCountService.updateUserDateCount(userId)).willReturn(1);

//when //then
mockMvc.perform(patch("/users/{userId}/count", userId))
.andDo(print())
.andExpect(status().isOk())
.andExpect(jsonPath("$.code").value(1000))
.andExpect(jsonPath("$.status").value(200))
.andExpect(jsonPath("$.message").value("์š”์ฒญ์— ์„ฑ๊ณตํ•˜์˜€์Šต๋‹ˆ๋‹ค."));
}

}
Loading