Skip to content

Commit

Permalink
🐛 fix(api): fix api test case (#269)
Browse files Browse the repository at this point in the history
  • Loading branch information
seonghun-dev authored Aug 2, 2023
1 parent 4a9f19a commit dda4055
Show file tree
Hide file tree
Showing 7 changed files with 71 additions and 28 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public class WithMockCustomAnonymousUserSecurityContextFactory implements WithSe
@Override
public SecurityContext createSecurityContext(MockAnonymousUser annotation) {

User user = new User();
User user = User.builder().build();

SecurityUserDetails userDetails = new SecurityUserDetails(user);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ void likeItemSuccess() {
given(itemLikeRepository.save(any(ItemLike.class))).willReturn(itemLike);

// When
ItemLikeResponseDto result = itemLikeService.likeItem(any(User.class), itemId);
ItemLikeResponseDto result = itemLikeService.likeItem(user, itemId);

// Then
assertThat(result).isNotNull();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
package unit.item.service;

import com.depromeet.domains.user.repository.BlockUserRepository;
import com.depromeet.item.Item;
import com.depromeet.item.ItemLocation;
import com.depromeet.domains.item.dao.ItemPointDao;
import com.depromeet.domains.item.dto.request.NearItemPointRequestDto;
import com.depromeet.domains.item.dto.request.NearItemRequestDto;
import com.depromeet.domains.item.dto.response.ItemsResponseDto;
import com.depromeet.domains.item.dto.response.PoiResponseDto;
import com.depromeet.domains.item.repository.ItemLikeRepository;
import com.depromeet.domains.item.repository.ItemLocationRepository;
import com.depromeet.domains.item.repository.ItemRepository;
import com.depromeet.domains.item.service.ItemService;
import com.depromeet.domains.user.repository.BlockUserRepository;
import com.depromeet.item.Item;
import com.depromeet.item.ItemLocation;
import com.depromeet.music.album.Album;
import com.depromeet.music.album.AlbumCover;
import com.depromeet.music.artist.Artist;
Expand All @@ -20,7 +21,6 @@
import com.depromeet.user.User;
import com.depromeet.user.vo.MusicApp;
import com.depromeet.util.GeomUtil;
import org.junit.Rule;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
Expand All @@ -31,11 +31,8 @@
import org.locationtech.jts.geom.PrecisionModel;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.mockito.junit.jupiter.MockitoExtension;
import org.mockito.quality.Strictness;
import org.springframework.test.util.ReflectionTestUtils;

import java.util.List;

Expand All @@ -56,6 +53,9 @@ public class ItemServiceTest {
@Mock
ItemLocationRepository itemLocationRepository;

@Mock
ItemLikeRepository itemLikeRepository;

@Mock
BlockUserRepository blockUserRepository;

Expand All @@ -76,7 +76,7 @@ void getNearItemPointsTestSuccess1() {
.nickname("test1")
.idfv("1234567")
.build();

ReflectionTestUtils.setField(user, "id", 1L);
NearItemPointRequestDto nearItemRequestDto = new NearItemPointRequestDto(127.123, 37.123, 1000.0, 1000.0);
when(blockUserRepository.findBlockedIdsByBlockerId(any(Long.class))).thenReturn(List.of());
when(itemLocationRepository.findNearItemsPointsByDistance(any(Point.class), any(Double.class), any(Double.class), anyList())).thenReturn(List.of());
Expand All @@ -93,14 +93,15 @@ void getNearItemPointsTestSuccess2() {
.nickname("test1")
.idfv("1234567")
.build();
ReflectionTestUtils.setField(user, "id", 1L);

NearItemPointRequestDto nearItemPointRequestDto = new NearItemPointRequestDto(127.123, 37.123, 1000.0, 1000.0);
List<ItemPointDao> itemPointDaos = List.of(
new ItemPointDao(gf.createPoint(new Coordinate(127.123, 37.123)), 1L, "/image1.jpg", false),
new ItemPointDao(gf.createPoint(new Coordinate(127.133, 37.323)), 2L, "/image2.jpg", false)
);

when(itemLocationRepository.findNearItemsPointsByDistance(any(Point.class), any(Double.class), any(Double.class), List.of(10L))).thenReturn(itemPointDaos);
when(itemLocationRepository.findNearItemsPointsByDistance(any(Point.class), anyDouble(), anyDouble(), anyList())).thenReturn(itemPointDaos);

var result = itemService.findNearItemsPoints(user, nearItemPointRequestDto);

Expand All @@ -125,11 +126,12 @@ class Success {
@DisplayName("특정 지역 주변의 아이템 상세 조회 - 조회 아이템이 없는 경우")
@Test
void findNearItemsTestSuccess1() {
User user = User.builder().build();
NearItemRequestDto nearItemRequestDto = new NearItemRequestDto(127.123, 37.123, 1000.0);

when(itemRepository.findNearItemsByDistance(any(Point.class), any(Double.class))).thenReturn(List.of());

var result = itemService.findNearItems(null, nearItemRequestDto);
var result = itemService.findNearItems(user, nearItemRequestDto);
var expected = new ItemsResponseDto(List.of());

assertThat(result).isEqualTo(expected);
Expand Down Expand Up @@ -179,6 +181,8 @@ void findNearItemsTestSuccess2() {
.song(song)
.albumCover(albumCover)
.build();


Item item2 = Item.builder()
.content("item2")
.itemLocation(itemLocation2)
Expand All @@ -187,14 +191,22 @@ void findNearItemsTestSuccess2() {
.albumCover(albumCover)
.build();


ReflectionTestUtils.setField(item1, "id", 1L);
ReflectionTestUtils.setField(item2, "id", 2L);
ReflectionTestUtils.setField(user, "id", 1L);

NearItemRequestDto nearItemRequestDto = new NearItemRequestDto(127.123, 37.123, 1000.0);
assertThat(user.getId()).isEqualTo(1L);
when(blockUserRepository.findBlockedIdsByBlockerId(anyLong())).thenReturn(List.of());
when(itemRepository.findNearItemsByDistance(any(Point.class), any(Double.class))).thenReturn(List.of(item1, item2));
when(itemLikeRepository.existsByUserIdAndItemId(anyLong(), anyLong())).thenReturn(true);

var result = itemService.findNearItems(null, nearItemRequestDto);
var result = itemService.findNearItems(user, nearItemRequestDto);
var expected = new ItemsResponseDto(
List.of(
new ItemsResponseDto.ItemDetailDto(item1, true),
new ItemsResponseDto.ItemDetailDto(item2, true)
new ItemsResponseDto.ItemDetailDto(item1, true),
new ItemsResponseDto.ItemDetailDto(item2, true)
)
);
assertThat(result).isEqualTo(expected);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
package unit.security.provider;

import com.depromeet.user.User;
import com.depromeet.domains.user.service.UserService;
import com.depromeet.security.provider.IdfvUserDetailsService;
import com.depromeet.security.provider.SecurityUserDetails;
import com.depromeet.user.User;
import com.depromeet.user.vo.MusicApp;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
Expand All @@ -29,7 +30,13 @@ public class IdfvUserDetailsServiceTest {
@Test
void loadUserByUsernameTest() {
String idfv = "idfv";
User user = new User();
User user = User.builder()
.nickname("testUser")
.idfv("test-idfv")
.userLevelId(1L)
.musicApp(MusicApp.YOUTUBE_MUSIC)
.build();

SecurityUserDetails securityUserDetails = new SecurityUserDetails(user);
when(userService.getOrCreateUserByIdfv(any())).thenReturn(user);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,16 @@ public class SecurityUserDetailsTest {
@Test
@DisplayName("SecurityUserDetails 테스트")
void testSecurityUserDetailsTest() {
User user = new User("nickname", "idfv", MusicApp.YOUTUBE_MUSIC);

User user = User.builder()
.nickname("testUser")
.userLevelId(1L)
.musicApp(MusicApp.YOUTUBE_MUSIC)
.build();
SecurityUserDetails securityUserDetails = new SecurityUserDetails(user);
assertThat(securityUserDetails.getAuthorities()).isNull();
assertThat(securityUserDetails.getPassword()).isNull();
assertThat(securityUserDetails.getUsername()).isEqualTo("nickname");
assertThat(securityUserDetails.getUsername()).isEqualTo("testUser");
assertThat(securityUserDetails.isAccountNonExpired()).isFalse();
assertThat(securityUserDetails.isAccountNonLocked()).isFalse();
assertThat(securityUserDetails.isCredentialsNonExpired()).isFalse();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@

import com.depromeet.domains.user.controller.UserController;
import com.depromeet.domains.user.dto.response.UserResponseDto;
import com.depromeet.user.User;
import com.depromeet.domains.user.service.UserLevelService;
import com.depromeet.domains.user.service.UserService;
import com.depromeet.user.User;
import com.depromeet.user.vo.MusicApp;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
Expand Down Expand Up @@ -33,6 +34,9 @@ public class UserControllerTest {
@MockBean
UserService userService;

@MockBean
UserLevelService userLevelService;

@DisplayName("[GET] 유저 정보 조회")
@Nested
class GetUserInfoTest {
Expand All @@ -43,7 +47,12 @@ class Success {
@DisplayName("유저 정보 조회")
@Test
void GetUserInfoTest() throws Exception {
User user = User.builder().nickname("Guest").idfv("new-idfv").musicApp(MusicApp.YOUTUBE_MUSIC).build();
User user = User.builder()
.nickname("Guest")
.idfv("new-idfv")
.userLevelId(1L)
.musicApp(MusicApp.YOUTUBE_MUSIC).build();

UserResponseDto userResponseDto = new UserResponseDto(user);
given(userService.getUserInfo(any(User.class))).willReturn(userResponseDto);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.depromeet.common.error.exception.common.NotFoundException;
import com.depromeet.domains.user.dto.response.UserResponseDto;
import com.depromeet.domains.user.repository.DefaultNickNameRepository;
import com.depromeet.user.User;
import com.depromeet.domains.user.repository.UserRepository;
import com.depromeet.domains.user.service.UserService;
Expand Down Expand Up @@ -35,13 +36,21 @@ public class UserServiceTest {
@Mock
UserRepository userRepository;

@Mock
DefaultNickNameRepository defaultNickNameRepository;

@DisplayName("유저 정보 조회")
@Nested
class GetUserInfoTest {
@DisplayName("유저 정보 조회 - 성공")
@Test
void getUserInfoTestSuccess() {
User user = new User();
User user = User.builder()
.nickname("testUser")
.idfv("test-idfv")
.musicApp(MusicApp.YOUTUBE_MUSIC)
.userLevelId(1L)
.build();
UserResponseDto userResponseDto = new UserResponseDto(user);
var result = userService.getUserInfo(user);

Expand All @@ -57,7 +66,7 @@ class GetOrCreateUserByIdfv {
@DisplayName("IDFV로 유저 조회 성공")
@Test
void getOrCreateUserByIdfvTestSuccess() {
User user = new User();
User user = User.builder().build();
when(userRepository.findUserByIdfv(anyString())).thenReturn(Optional.of(user));
var result = userService.getOrCreateUserByIdfv("idfv");

Expand All @@ -68,13 +77,14 @@ void getOrCreateUserByIdfvTestSuccess() {
@DisplayName("IDFV로 유저 조회 실패 - 유저 생성")
@Test
void getOrCreateUserByIdfvTestSuccess2() {
User user = new User();
User user = User.builder().build();
when(userRepository.findUserByIdfv(anyString())).thenReturn(Optional.empty());
when(userRepository.save(any(User.class))).thenReturn(user);
when(defaultNickNameRepository.getDefaultNickNameByRandom()).thenReturn("nickname");
when(userRepository.saveAndFlush(any(User.class))).thenReturn(user);
var result = userService.getOrCreateUserByIdfv("idfv");

verify(userRepository).findUserByIdfv("idfv");
verify(userRepository, times(1)).save(any(User.class));
verify(userRepository, times(1)).saveAndFlush(any(User.class));
assertThat(result).isEqualTo(user);
}

Expand All @@ -88,7 +98,7 @@ class ChangeUserInfoTest {
@ParameterizedTest
@EnumSource(MusicApp.class)
void changeMusicAppSuccess(MusicApp musicApp) {
User user = new User();
User user = User.builder().build();
user.changeMusicApp(musicApp);
assertThat(user.getMusicApp()).isEqualTo(musicApp);
}
Expand Down

0 comments on commit dda4055

Please sign in to comment.