Skip to content

Commit

Permalink
test(#119): group info delete API Test
Browse files Browse the repository at this point in the history
  • Loading branch information
jusung-c committed Nov 24, 2023
1 parent 61f19e2 commit f9d17cd
Show file tree
Hide file tree
Showing 3 changed files with 149 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,17 +14,20 @@
import com.heachi.housework.api.service.group.info.request.GroupInfoCreateServiceRequest;
import com.heachi.mysql.define.group.info.GroupInfo;
import com.heachi.mysql.define.group.info.repository.GroupInfoRepository;
import com.heachi.mysql.define.group.info.repository.response.GroupInfoUserGroupResponse;
import com.heachi.mysql.define.group.member.GroupMember;
import com.heachi.mysql.define.group.member.constant.GroupMemberRole;
import com.heachi.mysql.define.group.member.constant.GroupMemberStatus;
import com.heachi.mysql.define.group.member.repository.GroupMemberRepository;
import com.heachi.mysql.define.housework.category.HouseworkCategory;
import com.heachi.mysql.define.housework.category.repository.HouseworkCategoryRepository;
import com.heachi.mysql.define.housework.info.HouseworkInfo;
import com.heachi.mysql.define.housework.info.constant.HouseworkPeriodType;
import com.heachi.mysql.define.housework.info.repository.HouseworkInfoRepository;
import com.heachi.mysql.define.housework.member.HouseworkMember;
import com.heachi.mysql.define.housework.member.repository.HouseworkMemberRepository;
import com.heachi.mysql.define.housework.todo.HouseworkTodo;
import com.heachi.mysql.define.housework.todo.constant.HouseworkTodoStatus;
import com.heachi.mysql.define.housework.todo.repository.HouseworkTodoRepository;

import com.heachi.mysql.define.user.User;
Expand All @@ -38,6 +41,7 @@
import org.springframework.boot.test.context.SpringBootTest;

import java.time.LocalDate;
import java.time.LocalTime;
import java.util.List;
import java.util.Optional;

Expand Down Expand Up @@ -482,4 +486,93 @@ void groupInfoUpdateTest() {
assertThat(findGroup.getName()).isEqualTo("updateName");
assertThat(findGroup.getInfo()).isEqualTo("updateInfo");
}

@Test
@DisplayName("그룹 정보 삭제를 요청했을 경우 성공적으로 수정된다.")
void groupInfoDeleteTest() {
// given
User user = userRepository.save(generateCustomUser("[email protected]", "010-1111-1111"));
GroupInfo groupInfo = groupInfoRepository.save(generateGroupInfo(user));
GroupMember gm1 = groupMemberRepository.save(generateGroupMember(user, groupInfo));

HouseworkCategory houseworkCategory = houseworkCategoryRepository.save(generateHouseworkCategory());
HouseworkInfo houseworkInfo = houseworkInfoRepository.save(HouseworkInfo.builder()
.groupInfo(groupInfo)
.houseworkCategory(houseworkCategory)
.title("빨래")
.detail("빨래하기")
.groupInfo(groupInfo)
.type(HouseworkPeriodType.HOUSEWORK_PERIOD_DAY)
.dayDate(LocalDate.now())
.endTime(LocalTime.now())
.build());
HouseworkInfo houseworkInfo2 = houseworkInfoRepository.save(HouseworkInfo.builder()
.groupInfo(groupInfo)
.houseworkCategory(houseworkCategory)
.title("청소")
.detail("청소하기")
.groupInfo(groupInfo)
.type(HouseworkPeriodType.HOUSEWORK_PERIOD_EVERYDAY)
.endTime(LocalTime.now())
.build());

HouseworkMember h1 = houseworkMemberRepository.save(generateHouseworkMember(gm1, houseworkInfo));
HouseworkMember h2 = houseworkMemberRepository.save(generateHouseworkMember(gm1, houseworkInfo2));

// 오늘 날짜의 단건 집안일 생성
HouseworkTodo saveTodo = houseworkTodoRepository.save(HouseworkTodo.builder()
.houseworkInfo(null) // 단건은 HouseworkInfo가 존재하지 않는다.
.groupInfo(groupInfo)
.houseworkMember(h1.toString())
.category(houseworkCategory.getName())
.title("빨래")
.detail("빨래하기")
.status(HouseworkTodoStatus.HOUSEWORK_TODO_INCOMPLETE)
.endTime(LocalTime.now())
.date(LocalDate.now())
.build());

// 오늘 날짜의 비단건 집안일 생성
HouseworkTodo saveTodo2 = houseworkTodoRepository.save(HouseworkTodo.builder()
.houseworkInfo(houseworkInfo2)
.groupInfo(groupInfo)
.houseworkMember(h2.toString())
.category(houseworkCategory.getName())
.title("청소")
.detail("청소하기")
.status(HouseworkTodoStatus.HOUSEWORK_TODO_COMPLETE)
.endTime(LocalTime.now())
.date(LocalDate.now())
.build());

List<HouseworkTodo> houseworkTodos = houseworkTodoRepository.findByGroupInfoAndDate(groupInfo.getId(), LocalDate.now());
System.out.println("=======" + houseworkTodos.size());

// when
groupInfoService.deleteGroupInfo(groupInfo.getId());

// then
// user의 groupInfoList에서 삭제되었는지 확인
User findUser = userRepository.findByEmail(user.getEmail()).get();
List<GroupInfoUserGroupResponse> list = groupInfoRepository.findGroupInfoUserGroupResponseListByUserEmail(findUser.getEmail());
assertThat(list.contains(groupInfo)).isFalse();

// HouseworkTodo 삭제되었는지 확인
assertThat(houseworkTodoRepository.findById(saveTodo.getId()).orElse(null)).isNull();
assertThat(houseworkTodoRepository.findById(saveTodo2.getId()).orElse(null)).isNull();

// HouseworkMember 삭제되었는지 확인
assertThat(houseworkMemberRepository.findById(h1.getId()).orElse(null)).isNull();
assertThat(houseworkMemberRepository.findById(h2.getId()).orElse(null)).isNull();

// HouseworkInfo 삭제되었는지 확인
assertThat(houseworkInfoRepository.findById(houseworkInfo.getId()).orElse(null)).isNull();
assertThat(houseworkInfoRepository.findById(houseworkInfo2.getId()).orElse(null)).isNull();

// GroupMember 삭제되었는지 확인
assertThat(groupMemberRepository.findById(gm1.getId()).orElse(null)).isNull();

// GroupInfo 삭제되었는지 확인
assertThat(groupInfoRepository.findById(groupInfo.getId()).orElse(null)).isNull();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import com.heachi.mysql.define.housework.category.HouseworkCategory;
import com.heachi.mysql.define.housework.category.repository.HouseworkCategoryRepository;
import com.heachi.mysql.define.housework.info.HouseworkInfo;
import com.heachi.mysql.define.housework.info.constant.HouseworkPeriodType;
import com.heachi.mysql.define.housework.info.repository.HouseworkInfoRepository;
import com.heachi.mysql.define.housework.member.HouseworkMember;
import com.heachi.mysql.define.housework.todo.HouseworkTodo;
Expand All @@ -21,7 +22,9 @@
import org.springframework.boot.test.context.SpringBootTest;

import java.time.LocalDate;
import java.util.List;

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

@SpringBootTest
Expand Down Expand Up @@ -93,4 +96,24 @@ void deleteByHouseworkInfo() {
// then

}

@Test
@DisplayName("HouseworkInfoList에 속하는 HouseworkInfo들을 삭제한다.")
void deleteByHouseworkInfoListTest() {
User user = userRepository.save(generateUser());
GroupInfo group = groupInfoRepository.save(generateGroupInfo(user));
HouseworkCategory category = houseworkCategoryRepository.save(generateHouseworkCategory());
HouseworkInfo h1 = houseworkInfoRepository.save(generateCustomHouseworkInfo(category, "빨래", HouseworkPeriodType.HOUSEWORK_PERIOD_EVERYDAY));
HouseworkInfo h2 = houseworkInfoRepository.save(generateCustomHouseworkInfo(category, "청소", HouseworkPeriodType.HOUSEWORK_PERIOD_EVERYDAY));
HouseworkInfo h3 = houseworkInfoRepository.save(generateCustomHouseworkInfo(category, "분리수거", HouseworkPeriodType.HOUSEWORK_PERIOD_EVERYDAY));

// when
houseworkInfoRepository.deleteHouseworkInfoByHouseworkInfoList(List.of(h1, h2, h3));

// then
assertThat(houseworkInfoRepository.findById(h1.getId()).orElse(null)).isNull();
assertThat(houseworkInfoRepository.findById(h2.getId()).orElse(null)).isNull();
assertThat(houseworkInfoRepository.findById(h3.getId()).orElse(null)).isNull();

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -219,4 +219,37 @@ void updateHouseworkTodoByHouseworkInfoId() {
assertThat(todoList.get(3).getHouseworkInfo()).isNull();
assertThat(todoList.get(4).getHouseworkInfo()).isNotNull();
}

@Test
@DisplayName("GroupInfo에 맞는 Todo가 삭제된다.")
void deleteHouseworkTodoByGroupInfo() {
// given
User user = userRepository.save(generateUser());
GroupInfo groupInfo = groupInfoRepository.save(generateGroupInfo(user));
GroupMember groupMember = groupMemberRepository.save(generateGroupMember(user, groupInfo));

HouseworkCategory houseworkCategory = houseworkCategoryRepository.save(generateHouseworkCategory());
HouseworkInfo houseworkInfo = houseworkInfoRepository.save(generateHouseworkInfo(houseworkCategory));
HouseworkInfo houseworkInfo2 = houseworkInfoRepository.save(generateHouseworkInfo(houseworkCategory));
HouseworkInfo houseworkInfo3 = houseworkInfoRepository.save(generateHouseworkInfo(houseworkCategory));

HouseworkMember houseworkMember = houseworkMemberRepository.save(generateHouseworkMember(groupMember, houseworkInfo));
HouseworkInfo findHouseworkInfo = houseworkInfoRepository.findHouseworkInfoByIdJoinFetchHouseworkMembers(houseworkInfo.getId()).get();
HouseworkInfo findHouseworkInfo2 = houseworkInfoRepository.findHouseworkInfoByIdJoinFetchHouseworkMembers(houseworkInfo2.getId()).get();
HouseworkInfo findHouseworkInfo3 = houseworkInfoRepository.findHouseworkInfoByIdJoinFetchHouseworkMembers(houseworkInfo3.getId()).get();

HouseworkTodo houseworkTodo = houseworkTodoRepository.save(generateHouseworkTodo(findHouseworkInfo, groupInfo, LocalDate.now()));
HouseworkTodo houseworkTodo2 = houseworkTodoRepository.save(generateHouseworkTodo(findHouseworkInfo2, groupInfo, LocalDate.now()));
HouseworkTodo houseworkTodo21 = houseworkTodoRepository.save(generateHouseworkTodo(findHouseworkInfo2, groupInfo, LocalDate.now()));
HouseworkTodo houseworkTodo22 = houseworkTodoRepository.save(generateHouseworkTodo(findHouseworkInfo2, groupInfo, LocalDate.now()));
HouseworkTodo houseworkTodo3 = houseworkTodoRepository.save(generateHouseworkTodo(findHouseworkInfo3, groupInfo, LocalDate.now()));

// when
houseworkTodoRepository.deleteByGroupInfo(groupInfo);

// then
List<HouseworkTodo> findTodos = houseworkTodoRepository.findByGroupInfoAndDate(groupInfo.getId(), LocalDate.now());

assertThat(findTodos).isEmpty();
}
}

0 comments on commit f9d17cd

Please sign in to comment.