Skip to content

[테스트] 내 프로필 연관 로직 단위 테스트 작성(#107) #108

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 9 commits into from
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package yeonba.be.mypage.dto.request;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.hibernate.validator.constraints.Range;
import org.springframework.web.multipart.MultipartFile;

@Getter
Expand All @@ -24,7 +24,7 @@ public class UserUpdateProfilePhotoRequest {
type = "number",
description = "사진 싱크로율",
example = "85")
@Min(value = 75, message = "사진 싱크로율이 75퍼이상이어야 합니다.")
@Range(min = 75, max = 100, message = "사진 싱크로율은 75~100 범위내 값만 가능합니다.")
@NotNull(message = "사진 싱크로율은 반드시 입력되어야 합니다.")
private int photoSyncRate;
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import java.time.LocalDate;
import java.time.Period;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
Expand Down
89 changes: 89 additions & 0 deletions be/src/test/java/yeonba/be/fixtures/UserFixtures.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
package yeonba.be.fixtures;

import java.time.LocalDate;
import java.time.Period;
import java.util.List;
import yeonba.be.user.entity.Animal;
import yeonba.be.user.entity.Area;
import yeonba.be.user.entity.ProfilePhoto;
import yeonba.be.user.entity.User;
import yeonba.be.user.entity.UserPreference;
import yeonba.be.user.entity.VocalRange;
import yeonba.be.user.enums.Gender;
import yeonba.be.user.enums.LoginType;

public abstract class UserFixtures {

public static final long USER_ID = 1L;
public static final long SOCIAL_ID = 12L;
public static final LoginType LOGIN_TYPE = LoginType.KAKAO;
public static final Gender GENDER = Gender.MALE;
public static final String NICKNAME = "사용자닉네임";
public static final LocalDate BIRTH = LocalDate.now().minusYears(25);
public static final int HEIGHT = 180;
public static final String PHONE_NUMBER = "01011112222";
public static final int ARROW = 30;
public static final int PHOTO_SYNC_RATE = 85;
public static final String BODY_TYPE = "통통체형";
public static final String JOB = "직장인";
public static final String MBTI = "ISTJ";
public static final String JWT = "header.payload.signature";

public static final Animal ANIMAL = new Animal("강아지상");
public static final VocalRange VOCAL_RANGE = new VocalRange("저음");
public static final Area AREA = new Area("서울");
public static final String PROFILE_PHOTO_URL = "profilephoto/1-0";
public static final List<String> PROFILE_PHOTO_URLS = List.of(PROFILE_PHOTO_URL,
"profilephoto/1-1");

public static final int AGE_LOWER_BOUND = 20;
public static final int AGE_UPPER_BOUND = 40;
public static final int HEIGHT_LOWER_BOUND = 160;
public static final int HEIGHT_UPPER_BOUND = 180;

public static User user() {

int age = Period.between(BIRTH, LocalDate.now()).getYears();
User user = new User(
SOCIAL_ID,
LOGIN_TYPE,
GENDER.genderBoolean,
NICKNAME,
BIRTH,
age,
HEIGHT,
PHONE_NUMBER,
ARROW,
PHOTO_SYNC_RATE,
BODY_TYPE,
JOB,
MBTI,
VOCAL_RANGE,
ANIMAL,
AREA
);

List<ProfilePhoto> profilePhotos = PROFILE_PHOTO_URLS.stream()
.map(photoUrl -> new ProfilePhoto(user, photoUrl))
.toList();
user.updateProfilePhotos(profilePhotos);

return user;
}

public static UserPreference userPreference() {

return new UserPreference(
AGE_LOWER_BOUND,
AGE_UPPER_BOUND,
HEIGHT_LOWER_BOUND,
HEIGHT_UPPER_BOUND,
MBTI,
BODY_TYPE,
user(),
VOCAL_RANGE,
AREA,
ANIMAL
);
}
}
Loading
Loading