Skip to content

Commit

Permalink
M3-238 Feat : version test작성, exception추가
Browse files Browse the repository at this point in the history
  • Loading branch information
tkdals802 committed Aug 10, 2024
1 parent fa9c88a commit 8cf84c3
Show file tree
Hide file tree
Showing 4 changed files with 89 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ public enum ErrorCode {
IMAGE_NOT_FOUND(HttpStatus.NOT_FOUND, "존재하지 않는 이미지입니다."),
PLACE_NOT_FOUND(HttpStatus.NOT_FOUND, "장소가 등록되어 있지 않습니다."),
INTERNAL_SERVER_ERROR(HttpStatus.INTERNAL_SERVER_ERROR, "서버 에러 입니다"),
VERSION_NOT_FOUND(HttpStatus.NOT_FOUND, "버전이 존재하지 않습니다."),

// 권한 관련 에러
UNAUTHORIZED(HttpStatus.UNAUTHORIZED, "권한이 없습니다"),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.m3pro.groundflip.repository;

import java.util.Optional;

import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;

Expand All @@ -13,5 +15,5 @@ public interface AppVersionRepository extends CrudRepository<AppVersion, Long> {
ORDER BY av.created_date DESC
limit 1
""", nativeQuery = true)
AppVersion findLaestetVersion();
Optional<AppVersion> findLaestetVersion();
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import com.m3pro.groundflip.domain.dto.version.VersionRequest;
import com.m3pro.groundflip.domain.dto.version.VersionResponse;
import com.m3pro.groundflip.domain.entity.AppVersion;
import com.m3pro.groundflip.exception.AppException;
import com.m3pro.groundflip.exception.ErrorCode;
import com.m3pro.groundflip.repository.AppVersionRepository;

import jakarta.transaction.Transactional;
Expand All @@ -25,7 +27,8 @@ public void postVersion(VersionRequest versionRequest) {
}

public VersionResponse getVersion() {
AppVersion appVersion = appVersionRepository.findLaestetVersion();
AppVersion appVersion = appVersionRepository.findLaestetVersion()
.orElseThrow(() -> new AppException(ErrorCode.VERSION_NOT_FOUND));

return VersionResponse.builder()
.version(appVersion.getVersion())
Expand Down
81 changes: 81 additions & 0 deletions src/test/java/com/m3pro/groundflip/service/VersionServiceTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
package com.m3pro.groundflip.service;

import static org.assertj.core.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.*;

import java.time.LocalDateTime;
import java.util.Optional;

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;

import com.m3pro.groundflip.domain.dto.version.VersionRequest;
import com.m3pro.groundflip.domain.dto.version.VersionResponse;
import com.m3pro.groundflip.domain.entity.AppVersion;
import com.m3pro.groundflip.exception.AppException;
import com.m3pro.groundflip.exception.ErrorCode;
import com.m3pro.groundflip.repository.AppVersionRepository;

@ExtendWith(MockitoExtension.class)
public class VersionServiceTest {
@Mock
private AppVersionRepository appVersionRepository;

@InjectMocks
private VersionService versionService;

@Test
@DisplayName("[postVersion] version이 잘 post 되는지")
void postVersionTest() {
//Given
LocalDateTime localDate = LocalDateTime.now();

VersionRequest versionRequest = VersionRequest.builder().version("1.0.3").build();
//When
versionService.postVersion(versionRequest);

//Then
verify(appVersionRepository, times(1)).save(any(AppVersion.class));
}

@Test
@DisplayName("[getVersion] version이 잘 get 되는지")
void getVersionTest() {
//Given
LocalDateTime localDate = LocalDateTime.now();
AppVersion appVersion = AppVersion.builder()
.version("1.0.3")
.createdDate(localDate)
.build();

when(appVersionRepository.findLaestetVersion()).thenReturn(Optional.of(appVersion));

//When
VersionResponse versionResponse = versionService.getVersion();

//Then
assertThat(versionResponse).isNotNull();
assertThat(versionResponse.getVersion()).isEqualTo("1.0.3");
assertThat(versionResponse.getCreatedDate()).isEqualTo(localDate);

}

@Test
@DisplayName("[getVersion] version이 없을때 예외가 잘 나오는지")
void getVersionExceptionTest() {
//When
when(appVersionRepository.findLaestetVersion()).thenReturn(Optional.empty());

AppException thrown = assertThrows(AppException.class, () -> {
versionService.getVersion();
});

assertEquals(thrown.getErrorCode(), ErrorCode.VERSION_NOT_FOUND);
}

}

0 comments on commit 8cf84c3

Please sign in to comment.