Skip to content
Draft
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
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,12 @@
import java.time.LocalDateTime;
import java.util.List;

import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Slice;
import org.springframework.data.jpa.repository.JpaRepository;

import com.example.eatmate.app.domain.meeting.domain.DeliveryMeeting;
import com.example.eatmate.app.domain.meeting.domain.FoodCategory;
import com.example.eatmate.app.domain.meeting.domain.MeetingStatus;

public interface DeliveryMeetingRepository extends JpaRepository<DeliveryMeeting, Long> {
Slice<DeliveryMeeting> findAllByFoodCategoryAndMeetingStatus(FoodCategory foodCategory,
MeetingStatus meetingStatus, Pageable pageable);

List<DeliveryMeeting> findByMeetingStatusAndOrderDeadlineBefore(MeetingStatus meetingStatus,
LocalDateTime orderDeadline);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,12 @@
import java.time.LocalDateTime;
import java.util.List;

import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Slice;
import org.springframework.data.jpa.repository.JpaRepository;

import com.example.eatmate.app.domain.meeting.domain.MeetingStatus;
import com.example.eatmate.app.domain.meeting.domain.OfflineMeeting;
import com.example.eatmate.app.domain.meeting.domain.OfflineMeetingCategory;

public interface OfflineMeetingRepository extends JpaRepository<OfflineMeeting, Long> {
Slice<OfflineMeeting> findAllByOfflineMeetingCategoryAndMeetingStatus(OfflineMeetingCategory offlineMeetingCategory,
MeetingStatus meetingStatus, Pageable pageable);

List<OfflineMeeting> findByMeetingStatusAndMeetingDateBefore(MeetingStatus meetingStatus,
LocalDateTime meetingDate);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
package com.example.eatmate.app.domain.meeting.domain.repository;

import static com.example.eatmate.app.domain.meeting.domain.BankName.*;
import static com.example.eatmate.app.domain.meeting.domain.FoodCategory.*;
import static com.example.eatmate.app.domain.meeting.domain.GenderRestriction.*;
import static com.example.eatmate.app.domain.meeting.domain.MeetingBackgroundType.*;
import static com.example.eatmate.app.domain.meeting.domain.MeetingStatus.*;

import java.time.LocalDateTime;
import java.util.List;

import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.test.context.bean.override.mockito.MockitoBean;

import com.example.eatmate.app.domain.meeting.domain.DeliveryMeeting;
import com.querydsl.jpa.impl.JPAQueryFactory;

@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
class DeliveryMeetingRepositoryTest {

@Autowired
private DeliveryMeetingRepository deliveryMeetingRepository;

@MockitoBean
private JPAQueryFactory jpaQueryFactory;

@BeforeEach
void setUp() {
DeliveryMeeting deliveryMeeting1 = DeliveryMeeting.builder()
.meetingName("배달 모임1")
.meetingStatus(ACTIVE)
.orderDeadline(LocalDateTime.now().plusDays(1))
.backgroundType(DEFAULT_IMAGE_1)
.genderRestriction(ALL)
.accountNumber("123-123-123")
.bankName(국민은행)
.foodCategory(KOREAN)
.pickupLocation("서울시 강남구")
.storeName("맛집")
.build();

DeliveryMeeting deliveryMeeting2 = DeliveryMeeting.builder()
.meetingName("배달 모임2")
.meetingStatus(INACTIVE)
.orderDeadline(LocalDateTime.now().plusDays(1))
.backgroundType(DEFAULT_IMAGE_1)
.genderRestriction(ALL)
.accountNumber("123-123-123")
.bankName(국민은행)
.foodCategory(KOREAN)
.storeName("맛집")
.pickupLocation("서울시 강남구")
.build();

DeliveryMeeting deliveryMeeting3 = DeliveryMeeting.builder()
.meetingName("배달 모임3")
.meetingStatus(INACTIVE)
.orderDeadline(LocalDateTime.now().minusDays(1))
.backgroundType(DEFAULT_IMAGE_1)
.genderRestriction(ALL)
.accountNumber("123-123-123")
.foodCategory(KOREAN)
.bankName(국민은행)
.storeName("맛집")
.pickupLocation("서울시 강남구")
.build();

DeliveryMeeting deliveryMeeting4 = DeliveryMeeting.builder()
.meetingName("배달 모임4")
.meetingStatus(ACTIVE)
.orderDeadline(LocalDateTime.now().minusDays(1))
.backgroundType(DEFAULT_IMAGE_1)
.genderRestriction(ALL)
.accountNumber("123-123-123")
.foodCategory(KOREAN)
.bankName(국민은행)
.storeName("맛집")
.pickupLocation("서울시 강남구")
.build();

deliveryMeetingRepository.save(deliveryMeeting1);
deliveryMeetingRepository.save(deliveryMeeting2);
deliveryMeetingRepository.save(deliveryMeeting3);
deliveryMeetingRepository.save(deliveryMeeting4);

}

@Test
@DisplayName("미팅 상태가 ACTIVE이고 미팅 날짜가 현재 날짜 이전인 배달 미팅 조회")
public void findByMeetingStatusAndMeetingDateBefore() {
// given
LocalDateTime now = LocalDateTime.now();
// when
List<DeliveryMeeting> offlineMeetings = deliveryMeetingRepository.findByMeetingStatusAndOrderDeadlineBefore(
ACTIVE,
now);
// then
Assertions.assertThat(offlineMeetings.size()).isEqualTo(1);
Assertions.assertThat(offlineMeetings.get(0).getMeetingName()).isEqualTo("배달 모임4");
}
}
Loading