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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,4 @@ out/

### YML Configuration ###
/src/main/resources/application-local.yml
/src/main/resources/application-test.yml
10 changes: 10 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
plugins {
id 'java'
id 'jacoco'
id 'org.springframework.boot' version '3.0.0'
id 'io.spring.dependency-management' version '1.1.0'
}
Expand Down Expand Up @@ -49,12 +50,21 @@ dependencies {
implementation 'commons-io:commons-io:2.11.0'
implementation 'org.springframework.boot:spring-boot-starter-validation'

// implementation 'com.twentiethcenturygangsta:jam-board:1.0'
}

tasks.named('test') {
useJUnitPlatform()
}

jacocoTestCoverageVerification {
violationRules {
rule {
element = 'CLASS'
}
}
}

jar {
enabled = false
}
7 changes: 7 additions & 0 deletions lombok.config
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# This tells lombok this directory is the root,
# no need to look somewhere else for java code.
config.stopBubbling = true
# This will add the @lombok.Generated annotation
# to all the code generated by Lombok,
# so it can be excluded from coverage by jacoco.
lombok.addLombokGeneratedAnnotation = true
123 changes: 123 additions & 0 deletions src/test/java/com/playlist/cassette/entity/MemberTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
package com.playlist.cassette.entity;

import com.playlist.cassette.dto.auth.TokenDto;
import com.playlist.cassette.init.InitMember;
import com.playlist.cassette.repository.MemberRepository;
import jakarta.transaction.Transactional;
import org.junit.jupiter.api.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.Date;
import java.util.Optional;

import static org.assertj.core.api.Assertions.assertThat;


@SpringBootTest
public class MemberTest {

@Autowired
private MemberRepository memberRepository;

InitMember initMember = new InitMember();
Member member = initMember.createDefaultMember();

@BeforeEach
void setup() {
memberRepository.save(member);
}

@AfterEach
void afterSetup() {
memberRepository.delete(member);
}

@Test
@DisplayName("멤버 객체 생성 성공")
@Transactional
public void test_create_member_성공() {
Optional<Member> savedMember = memberRepository.findByKakaoMemberId(1L);
savedMember.ifPresent(presentedMember -> {
assertThat(presentedMember.getId()).isEqualTo(1);
assertThat(presentedMember.getName()).isEqualTo("김중앙");
assertThat(presentedMember.getEmail()).isEqualTo("test1@cassette.com");
assertThat(presentedMember.getRefreshToken()).isNull();
assertThat(presentedMember.getRefreshTokenExpireTime()).isNull();
assertThat(presentedMember.getAge()).isEqualTo("20-29");
assertThat(presentedMember.getGender()).isEqualTo("male");
assertThat(presentedMember.getTapes()).isEqualTo(member.getTapes());
assertThat(presentedMember.getKakaoMemberId()).isEqualTo(1L);
});
}

@Nested
@DisplayName("member 객체의 상속필드 테스트")
class TestMember {

@Test
@DisplayName("Member 객체에 createAt 값이 정상적으로 들어간다.")
public void test_created_at_in_member_성공() {
Optional<Member> savedMember = memberRepository.findByKakaoMemberId(1L);
savedMember.ifPresent(presentedMember -> {
assertThat(presentedMember.getCreatedAt()).isNotNull();
});
}

@Test
@DisplayName("Member 객체에 lastModifiedAt 값이 정상적으로 들어간다.")
public void test_last_modified_at_in_member_성공() {
Optional<Member> savedMember = memberRepository.findByKakaoMemberId(1L);
savedMember.ifPresent(presentedMember -> {
assertThat(presentedMember.getLastModifiedAt()).isNotNull();
});
}

@Test
@DisplayName("Member 객체에 초기 isRemoved 값은 false로 정상적으로 들어간다.")
public void test_is_removed_in_member_성공() {
Optional<Member> savedMember = memberRepository.findByKakaoMemberId(1L);
savedMember.ifPresent(presentedMember -> {
assertThat(presentedMember.getIsRemoved()).isEqualTo(false);
});
}
}

@Nested
@DisplayName("member 객체의 method 테스트")
class TestMemberMethod {
@Test
@DisplayName("refreshToken, refreshTokenExpireTime이 수정이 된다.")
public void test_update_refresh_token_in_member_성공() {
Date expiredTime = new Date();

Optional<Member> savedMember = memberRepository.findByKakaoMemberId(1L);
TokenDto tokenDto = TokenDto.builder()
.value("abcd")
.expiredTime(expiredTime)
.build();

savedMember.ifPresent(presentedMember -> {
presentedMember.updateRefreshToken(tokenDto);
assertThat(presentedMember.getRefreshToken()).isEqualTo(tokenDto.getValue());
assertThat(presentedMember.getRefreshTokenExpireTime()).isEqualTo(tokenDto.getExpiredTime());
});
}

@Test
@DisplayName("removeStatus가 수정이 된다.")
public void test_update_remove_status_in_member_성공() {

Optional<Member> savedMember = memberRepository.findByKakaoMemberId(1L);

savedMember.ifPresent(presentedMember -> {
presentedMember.updateRemovedStatus();
assertThat(presentedMember.getIsRemoved()).isEqualTo(true);

presentedMember.updateUnRemovedStatus();
assertThat(presentedMember.getIsRemoved()).isEqualTo(false);

});
}
}
}
17 changes: 17 additions & 0 deletions src/test/java/com/playlist/cassette/init/InitMember.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.playlist.cassette.init;

import com.playlist.cassette.entity.Member;

import java.util.Date;

public class InitMember {
public Member createDefaultMember() {
return Member.builder()
.name("김중앙")
.email("test1@cassette.com")
.gender("male")
.age("20-29")
.kakaoMemberId(1L)
.build();
}
}