diff --git a/src/main/java/com/mtvs/devlinkbackend/channel/dto/request/ChannelUpdateRequestDTO.java b/src/main/java/com/mtvs/devlinkbackend/channel/dto/request/ChannelUpdateRequestDTO.java deleted file mode 100644 index 6e29836..0000000 --- a/src/main/java/com/mtvs/devlinkbackend/channel/dto/request/ChannelUpdateRequestDTO.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.mtvs.devlinkbackend.channel.dto.request; - -import lombok.*; - -import java.util.List; - -@Getter -@Setter -@NoArgsConstructor -@AllArgsConstructor -@ToString -@Data -public class ChannelUpdateRequestDTO { - private String channelId; - private List positionTypes; -} \ No newline at end of file diff --git a/src/main/java/com/mtvs/devlinkbackend/channel/dto/request/ChannelRegistRequestDTO.java b/src/main/java/com/mtvs/devlinkbackend/channel/dto/request/TileInfoRegistDTO.java similarity index 52% rename from src/main/java/com/mtvs/devlinkbackend/channel/dto/request/ChannelRegistRequestDTO.java rename to src/main/java/com/mtvs/devlinkbackend/channel/dto/request/TileInfoRegistDTO.java index cbd0feb..4a0452c 100644 --- a/src/main/java/com/mtvs/devlinkbackend/channel/dto/request/ChannelRegistRequestDTO.java +++ b/src/main/java/com/mtvs/devlinkbackend/channel/dto/request/TileInfoRegistDTO.java @@ -1,15 +1,13 @@ package com.mtvs.devlinkbackend.channel.dto.request; +import com.mtvs.devlinkbackend.channel.entity.Position; import lombok.*; -import java.util.List; - @Getter @Setter @NoArgsConstructor @AllArgsConstructor @ToString -@Data -public class ChannelRegistRequestDTO { - private List positionTypes; -} \ No newline at end of file +public class TileInfoRegistDTO { + private Position position; +} diff --git a/src/main/java/com/mtvs/devlinkbackend/channel/dto/response/TileInfoListResponseDTO.java b/src/main/java/com/mtvs/devlinkbackend/channel/dto/response/TileInfoListResponseDTO.java new file mode 100644 index 0000000..1e8b51d --- /dev/null +++ b/src/main/java/com/mtvs/devlinkbackend/channel/dto/response/TileInfoListResponseDTO.java @@ -0,0 +1,15 @@ +package com.mtvs.devlinkbackend.channel.dto.response; + +import com.mtvs.devlinkbackend.channel.entity.TileInfo; +import lombok.*; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@ToString +public class TileInfoListResponseDTO { + private List data; +} diff --git a/src/main/java/com/mtvs/devlinkbackend/channel/entity/Channel.java b/src/main/java/com/mtvs/devlinkbackend/channel/entity/Channel.java index 6398411..2efe8ba 100644 --- a/src/main/java/com/mtvs/devlinkbackend/channel/entity/Channel.java +++ b/src/main/java/com/mtvs/devlinkbackend/channel/entity/Channel.java @@ -22,6 +22,8 @@ public class Channel { @Id private String channelId; + private String channelName; + @CreatedDate private LocalDateTime createdAt; diff --git a/src/main/java/com/mtvs/devlinkbackend/channel/entity/Position.java b/src/main/java/com/mtvs/devlinkbackend/channel/entity/Position.java new file mode 100644 index 0000000..1d52c0e --- /dev/null +++ b/src/main/java/com/mtvs/devlinkbackend/channel/entity/Position.java @@ -0,0 +1,16 @@ +package com.mtvs.devlinkbackend.channel.entity; + +import lombok.Data; + +@Data +public class Position { + private float x; + private float y; + private float z; + + public Position(float x, float y, float z) { + this.x = x; + this.y = y; + this.z = z; + } +} diff --git a/src/main/java/com/mtvs/devlinkbackend/channel/entity/TileInfo.java b/src/main/java/com/mtvs/devlinkbackend/channel/entity/TileInfo.java new file mode 100644 index 0000000..87a13f0 --- /dev/null +++ b/src/main/java/com/mtvs/devlinkbackend/channel/entity/TileInfo.java @@ -0,0 +1,30 @@ +package com.mtvs.devlinkbackend.channel.entity; + +import jakarta.persistence.Id; +import jakarta.validation.constraints.NotNull; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.data.mongodb.core.index.Indexed; +import org.springframework.data.mongodb.core.mapping.Document; +import org.springframework.data.mongodb.core.mapping.Field; + +@NoArgsConstructor +@Document +@Data +public class TileInfo { + @Id + private String tileId; + + @Indexed + private String channelId; + + @NotNull + @Field + private Position position; + + public TileInfo(String channelId, Position position) { + this.channelId = channelId; + this.position = position; + } +} diff --git a/src/main/java/com/mtvs/devlinkbackend/channel/repository/TileInfoRepository.java b/src/main/java/com/mtvs/devlinkbackend/channel/repository/TileInfoRepository.java new file mode 100644 index 0000000..351fcfa --- /dev/null +++ b/src/main/java/com/mtvs/devlinkbackend/channel/repository/TileInfoRepository.java @@ -0,0 +1,10 @@ +package com.mtvs.devlinkbackend.channel.repository; + +import com.mtvs.devlinkbackend.channel.entity.TileInfo; +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface TileInfoRepository extends MongoRepository { + void deleteAllByChannelId(String channelId); +} diff --git a/src/main/java/com/mtvs/devlinkbackend/channel/repository/TileInfoViewRepository.java b/src/main/java/com/mtvs/devlinkbackend/channel/repository/TileInfoViewRepository.java new file mode 100644 index 0000000..a90ab2d --- /dev/null +++ b/src/main/java/com/mtvs/devlinkbackend/channel/repository/TileInfoViewRepository.java @@ -0,0 +1,12 @@ +package com.mtvs.devlinkbackend.channel.repository; + +import com.mtvs.devlinkbackend.channel.entity.TileInfo; +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface TileInfoViewRepository extends MongoRepository { + List findAllByChannelId(String channelId); +} diff --git a/src/main/java/com/mtvs/devlinkbackend/channel/service/TileInfoService.java b/src/main/java/com/mtvs/devlinkbackend/channel/service/TileInfoService.java new file mode 100644 index 0000000..79c3c75 --- /dev/null +++ b/src/main/java/com/mtvs/devlinkbackend/channel/service/TileInfoService.java @@ -0,0 +1,33 @@ +package com.mtvs.devlinkbackend.channel.service; + +import com.mtvs.devlinkbackend.channel.dto.request.TileInfoRegistDTO; +import com.mtvs.devlinkbackend.channel.entity.TileInfo; +import com.mtvs.devlinkbackend.channel.repository.TileInfoRepository; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +public class TileInfoService { + + + private final TileInfoRepository tileInfoRepository; + + public TileInfoService(TileInfoRepository tileInfoRepository) { + this.tileInfoRepository = tileInfoRepository; + } + + @Transactional + public TileInfoRegistDTO insertTileInfoByChannelId(TileInfoRegistDTO tileInfoRegistDTO, String channelId) { + TileInfo tileInfo = tileInfoRepository.save(new TileInfo( + channelId, + tileInfoRegistDTO.getPosition() + )); + + return tileInfoRegistDTO; + } + + @Transactional + public void deleteTileInfoByChannelId(String channelId) { + tileInfoRepository.deleteAllByChannelId(channelId); + } +} diff --git a/src/main/java/com/mtvs/devlinkbackend/channel/service/TileInfoViewService.java b/src/main/java/com/mtvs/devlinkbackend/channel/service/TileInfoViewService.java new file mode 100644 index 0000000..3b030af --- /dev/null +++ b/src/main/java/com/mtvs/devlinkbackend/channel/service/TileInfoViewService.java @@ -0,0 +1,23 @@ +package com.mtvs.devlinkbackend.channel.service; + +import com.mtvs.devlinkbackend.channel.dto.response.TileInfoListResponseDTO; +import com.mtvs.devlinkbackend.channel.entity.TileInfo; +import com.mtvs.devlinkbackend.channel.repository.TileInfoViewRepository; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class TileInfoViewService { + + private final TileInfoViewRepository tileInfoViewRepository; + + public TileInfoViewService(TileInfoViewRepository tileInfoViewRepository) { + this.tileInfoViewRepository = tileInfoViewRepository; + } + + public TileInfoListResponseDTO findTileInfoListByChannelId(String channelId) { + List tileInfoList = tileInfoViewRepository.findAllByChannelId(channelId); + return new TileInfoListResponseDTO(tileInfoList); + } +} diff --git a/src/test/java/com/mtvs/devlinkbackend/crud/EvaluationCRUDTest.java b/src/test/java/com/mtvs/devlinkbackend/crud/EvaluationCRUDTest.java index cb9de6a..8df7d5c 100644 --- a/src/test/java/com/mtvs/devlinkbackend/crud/EvaluationCRUDTest.java +++ b/src/test/java/com/mtvs/devlinkbackend/crud/EvaluationCRUDTest.java @@ -38,7 +38,7 @@ public class EvaluationCRUDTest { @BeforeEach void setUp() { - Dev dev = epicDevViewService.findAllDevsWithPagination(0).getData().get(0); + Dev dev = epicDevViewService.findAllDevsWithPagination(0).getData().get(0).getDevInfo(); skillCategoryInfo = new SkillCategoryInfo(); skillCategoryInfo.setEvaluationIdList(new ArrayList<>()); @@ -55,11 +55,11 @@ void registerEvaluation_shouldSaveEvaluation() { // Given EvaluationRegistRequestDTO request = new EvaluationRegistRequestDTO( skillCategoryInfo.getCategoryInfoId(), - new Evaluation(1L,2L, "Good Job", 80, skillCategoryInfo) + new Evaluation(1L, "Good Job", 80, skillCategoryInfo) ); // When - EvaluationSingleResponseDTO response = evaluationService.registerEvaluation(request,2L); + EvaluationSingleResponseDTO response = evaluationService.registerEvaluation(request,""); // Then assertThat(response).isNotNull(); @@ -70,13 +70,12 @@ void registerEvaluation_shouldSaveEvaluation() { @Test void updateEvaluation_shouldUpdateEvaluation() { // Given - Evaluation existingEvaluation = new Evaluation(1L,2L, "Initial Cause", 70, skillCategoryInfo); + Evaluation existingEvaluation = new Evaluation(1L, "Initial Cause", 70, skillCategoryInfo); evaluationRepository.save(existingEvaluation); EvaluationUpdateRequestDTO updateRequest = new EvaluationUpdateRequestDTO( existingEvaluation.getEvaluationId(), - existingEvaluation.getEstimatorId(), - existingEvaluation.getEstimatederId(), + existingEvaluation.getUserId(), "Updated Cause", 85 ); @@ -93,7 +92,7 @@ void updateEvaluation_shouldUpdateEvaluation() { @Test void deleteById_shouldDeleteEvaluation() { // Given - Evaluation evaluation = new Evaluation(1L, 2L,"To be deleted", 70, skillCategoryInfo); + Evaluation evaluation = new Evaluation(1L, "To be deleted", 70, skillCategoryInfo); evaluationRepository.save(evaluation); // When diff --git a/src/test/java/com/mtvs/devlinkbackend/crud/GuildCRUDTest.java b/src/test/java/com/mtvs/devlinkbackend/crud/GuildCRUDTest.java index e72f3ef..c4c0c6b 100644 --- a/src/test/java/com/mtvs/devlinkbackend/crud/GuildCRUDTest.java +++ b/src/test/java/com/mtvs/devlinkbackend/crud/GuildCRUDTest.java @@ -93,7 +93,7 @@ void applyMemberToGuildTest() { GuildMemberModifyRequestDTO memberRequestDTO = new GuildMemberModifyRequestDTO( responseDTO.getData().getGuildId(), responseDTO.getData().getMasterUserId(), - List.of(new Member("Guild", 1L, 2L, "motive", AcceptStatus.PENDING)) + List.of(new Member("Guild", 1L, 2L, "motive", 3L , AcceptStatus.PENDING)) ); var modifiedGuildDTO = guildService.applyMemberToGuild(memberRequestDTO); diff --git a/src/test/java/com/mtvs/devlinkbackend/crud/MemberCRUDTest.java b/src/test/java/com/mtvs/devlinkbackend/crud/MemberCRUDTest.java index 7abab53..fcf290f 100644 --- a/src/test/java/com/mtvs/devlinkbackend/crud/MemberCRUDTest.java +++ b/src/test/java/com/mtvs/devlinkbackend/crud/MemberCRUDTest.java @@ -67,11 +67,12 @@ public void testDeleteAll() { public void testAcceptSupplyByMemberId() { // given Long memberId = 1L; + String accountId = ""; Member member = new Member(); when(memberRepository.findById(memberId)).thenReturn(Optional.of(member)); // when - MemberStatusResponseDTO responseDTO = memberService.acceptSupplyByMemberId(memberId); + MemberStatusResponseDTO responseDTO = memberService.acceptSupplyByMemberId(memberId, accountId); // then assertNotNull(responseDTO); @@ -83,11 +84,12 @@ public void testAcceptSupplyByMemberId() { public void testRejectSupplyByMemberId() { // given Long memberId = 1L; + String accountId = ""; Member member = new Member(); when(memberRepository.findById(memberId)).thenReturn(Optional.of(member)); // when - MemberStatusResponseDTO responseDTO = memberService.rejectSupplyByMemberId(memberId); + MemberStatusResponseDTO responseDTO = memberService.rejectSupplyByMemberId(memberId, accountId); // then assertNotNull(responseDTO); diff --git a/src/test/java/com/mtvs/devlinkbackend/crud/ProjectCRUDTest.java b/src/test/java/com/mtvs/devlinkbackend/crud/ProjectCRUDTest.java index 0aad641..a3c8c8b 100644 --- a/src/test/java/com/mtvs/devlinkbackend/crud/ProjectCRUDTest.java +++ b/src/test/java/com/mtvs/devlinkbackend/crud/ProjectCRUDTest.java @@ -67,11 +67,12 @@ void registProjectTest() { // Given ProjectRegistRequestDTO requestDTO = new ProjectRegistRequestDTO(1L, "Test Title", "Test Content", 1000, "in-progress", "both", null, null, null); Project project = new Project(1L, "Test Title", "Test Content", "both", "in-progress", null, null, null, 1000); + String accountId = ""; when(projectRepository.save(ArgumentMatchers.any(Project.class))).thenReturn(project); // When - ProjectSingleResponseDTO response = projectService.registProject(requestDTO); + ProjectSingleResponseDTO response = projectService.registProject(requestDTO, accountId); // Then assertThat(response).isNotNull(); diff --git a/src/test/java/com/mtvs/devlinkbackend/crud/TileInfoCRDTest.java b/src/test/java/com/mtvs/devlinkbackend/crud/TileInfoCRDTest.java new file mode 100644 index 0000000..9dc2cfb --- /dev/null +++ b/src/test/java/com/mtvs/devlinkbackend/crud/TileInfoCRDTest.java @@ -0,0 +1,84 @@ +package com.mtvs.devlinkbackend.crud; + +import com.mtvs.devlinkbackend.channel.dto.request.TileInfoRegistDTO; +import com.mtvs.devlinkbackend.channel.dto.response.TileInfoListResponseDTO; +import com.mtvs.devlinkbackend.channel.entity.Position; +import com.mtvs.devlinkbackend.channel.entity.TileInfo; +import com.mtvs.devlinkbackend.channel.repository.TileInfoRepository; +import com.mtvs.devlinkbackend.channel.repository.TileInfoViewRepository; +import com.mtvs.devlinkbackend.channel.service.TileInfoService; +import com.mtvs.devlinkbackend.channel.service.TileInfoViewService; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.Optional; + +import static org.assertj.core.api.Assertions.assertThat; + +@SpringBootTest +@Transactional +class TileInfoCRDTest { + + @Autowired + private TileInfoService tileInfoService; + + @Autowired + private TileInfoRepository tileInfoRepository; + @Autowired + private TileInfoViewService tileInfoViewService; + @Autowired + private TileInfoViewRepository tileInfoViewRepository; + + @Test + void testInsertTileInfoByChannelId() { + // Given + String channelId = "channel123"; + TileInfoRegistDTO requestDTO = new TileInfoRegistDTO(new Position(10, 20, 30)); + + // When + tileInfoService.insertTileInfoByChannelId(requestDTO, channelId); + + // Then + Optional tileInfoOptional = tileInfoViewRepository.findAllByChannelId(channelId).stream().findFirst(); + assertThat(tileInfoOptional).isPresent(); + TileInfo tileInfo = tileInfoOptional.get(); + assertThat(tileInfo.getChannelId()).isEqualTo(channelId); + assertThat(tileInfo.getPosition().getX()).isEqualTo(10); + assertThat(tileInfo.getPosition().getY()).isEqualTo(20); + assertThat(tileInfo.getPosition().getZ()).isEqualTo(30); + } + + @Test + void testFindTileInfoListByChannelId() { + // Given + String channelId = "channel789"; + tileInfoRepository.save(new TileInfo(channelId, new Position(10, 20, 30))); + tileInfoRepository.save(new TileInfo(channelId, new Position(40, 50, 60))); + + // When + TileInfoListResponseDTO responseDTO = tileInfoViewService.findTileInfoListByChannelId(channelId); + + // Then + List tileInfoList = responseDTO.getData(); + assertThat(tileInfoList).hasSize(2); + assertThat(tileInfoList.get(0).getChannelId()).isEqualTo(channelId); + assertThat(tileInfoList.get(1).getPosition().getX()).isEqualTo(40); + } + + @Test + void testDeleteTileInfoByChannelId() { + // Given + String channelId = "channel456"; + TileInfo tileInfo = tileInfoRepository.save(new TileInfo(channelId, new Position(15, 25, 35))); + + // When + tileInfoService.deleteTileInfoByChannelId(channelId); + + // Then + boolean exists = tileInfoViewRepository.findAllByChannelId(channelId).isEmpty(); + assertThat(exists).isTrue(); + } +}