Skip to content

Commit

Permalink
test: 뱃지 수동 등록 API test
Browse files Browse the repository at this point in the history
  • Loading branch information
redcarrot1 committed Feb 27, 2024
1 parent 4e34827 commit 7d9de36
Showing 1 changed file with 110 additions and 3 deletions.
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
package com.playkuround.playkuroundserver.domain.badge.api;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.playkuround.playkuroundserver.TestUtil;
import com.playkuround.playkuroundserver.domain.badge.dao.BadgeRepository;
import com.playkuround.playkuroundserver.domain.badge.domain.Badge;
import com.playkuround.playkuroundserver.domain.badge.domain.BadgeType;
import com.playkuround.playkuroundserver.domain.badge.dto.request.ManualBadgeSaveRequest;
import com.playkuround.playkuroundserver.domain.user.dao.UserRepository;
import com.playkuround.playkuroundserver.domain.user.domain.Major;
import com.playkuround.playkuroundserver.domain.user.domain.Role;
import com.playkuround.playkuroundserver.domain.user.domain.User;
import com.playkuround.playkuroundserver.securityConfig.WithMockCustomUser;
import org.junit.jupiter.api.AfterEach;
Expand All @@ -12,9 +17,11 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;

import java.util.List;
import java.util.Optional;

import static org.assertj.core.api.Assertions.assertThat;
import static org.hamcrest.Matchers.hasSize;
Expand All @@ -29,13 +36,16 @@
class BadgeApiTest {

@Autowired
private UserRepository userRepository;
private MockMvc mockMvc;

@Autowired
private BadgeRepository badgeRepository;
private ObjectMapper objectMapper;

@Autowired
private MockMvc mockMvc;
private UserRepository userRepository;

@Autowired
private BadgeRepository badgeRepository;

@AfterEach
void clean() {
Expand Down Expand Up @@ -105,4 +115,101 @@ void saveTheDreamOfDuckBadge_2() throws Exception {
assertThat(badges).hasSize(1);
assertThat(badges.get(0).getBadgeType()).isEqualTo(BadgeType.THE_DREAM_OF_DUCK);
}

@Test
@WithMockCustomUser(role = Role.ROLE_ADMIN)
@DisplayName("뱃지 수동 등록")
void saveManualBadge_1() throws Exception {
// given
User user = TestUtil.createUser("[email protected]", "test", Major.건축학부);
userRepository.save(user);

ManualBadgeSaveRequest manualBadgeSaveRequest
= new ManualBadgeSaveRequest(user.getEmail(), BadgeType.MONTHLY_RANKING_1.name(), false);
String request = objectMapper.writeValueAsString(manualBadgeSaveRequest);

// expect
mockMvc.perform(post("/api/badges/manual")
.contentType(MediaType.APPLICATION_JSON)
.content(request))
.andExpect(status().isCreated())
.andExpect(jsonPath("$.response").value(true))
.andDo(print());

List<Badge> badges = badgeRepository.findByUser(user);
assertThat(badges).hasSize(1);
assertThat(badges.get(0).getBadgeType()).isEqualTo(BadgeType.MONTHLY_RANKING_1);
assertThat(user.getNotification()).isNull();
}

@Test
@WithMockCustomUser(role = Role.ROLE_ADMIN)
@DisplayName("뱃지 수동 등록 : 개인 메시지 저장")
void saveManualBadge_2() throws Exception {
// given
User user = TestUtil.createUser("[email protected]", "test", Major.건축학부);
userRepository.save(user);

ManualBadgeSaveRequest manualBadgeSaveRequest
= new ManualBadgeSaveRequest(user.getEmail(), BadgeType.MONTHLY_RANKING_1.name(), true);
String request = objectMapper.writeValueAsString(manualBadgeSaveRequest);

// expect
mockMvc.perform(post("/api/badges/manual")
.contentType(MediaType.APPLICATION_JSON)
.content(request))
.andExpect(status().isCreated())
.andExpect(jsonPath("$.response").value(true))
.andDo(print());

List<Badge> badges = badgeRepository.findByUser(user);
assertThat(badges).hasSize(1);
assertThat(badges.get(0).getBadgeType()).isEqualTo(BadgeType.MONTHLY_RANKING_1);

Optional<User> optionalUser = userRepository.findByEmail(user.getEmail());
assertThat(optionalUser.get().getNotification()).isEqualTo("new_badge#" + BadgeType.MONTHLY_RANKING_1.name());
}

@Test
@WithMockCustomUser(role = Role.ROLE_ADMIN)
@DisplayName("뱃지 수동 등록 : 이미 가지고 있는 뱃지면 false를 반환한다.")
void saveManualBadge_3() throws Exception {
// given
User user = TestUtil.createUser("[email protected]", "test", Major.건축학부);
userRepository.save(user);
badgeRepository.save(new Badge(user, BadgeType.MONTHLY_RANKING_1));

ManualBadgeSaveRequest manualBadgeSaveRequest
= new ManualBadgeSaveRequest(user.getEmail(), BadgeType.MONTHLY_RANKING_1.name(), true);
String request = objectMapper.writeValueAsString(manualBadgeSaveRequest);

// expect
mockMvc.perform(post("/api/badges/manual")
.contentType(MediaType.APPLICATION_JSON)
.content(request))
.andExpect(status().isCreated())
.andExpect(jsonPath("$.response").value(false))
.andDo(print());

List<Badge> badges = badgeRepository.findByUser(user);
assertThat(badges).hasSize(1);
assertThat(user.getNotification()).isNull();
}

@Test
@WithMockCustomUser
@DisplayName("뱃지 수동 등록 : admin 권한이 없으면 403을 반환한다.")
void saveManualBadge_4() throws Exception {
// given
ManualBadgeSaveRequest manualBadgeSaveRequest
= new ManualBadgeSaveRequest("[email protected]", BadgeType.MONTHLY_RANKING_1.name(), true);
String request = objectMapper.writeValueAsString(manualBadgeSaveRequest);

// expect
mockMvc.perform(post("/api/badges/manual")
.contentType(MediaType.APPLICATION_JSON)
.content(request))
.andExpect(status().isForbidden())
.andDo(print());
}
}

0 comments on commit 7d9de36

Please sign in to comment.