Skip to content

Commit

Permalink
test: 시내버스 시간표 테스트 작성
Browse files Browse the repository at this point in the history
  • Loading branch information
ImTotem committed Jul 19, 2024
1 parent 5f07e9d commit ea74541
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 7 deletions.
43 changes: 37 additions & 6 deletions src/test/java/in/koreatech/koin/acceptance/BusApiTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ class BusApiTest extends AcceptanceTest {
@BeforeEach
void setup() {
busFixture.버스_시간표_등록();
busFixture.시내버스_시간표_등록();
when(cityBusClient.getOpenApiResponse(anyString())).thenReturn("""
{
"response": {
Expand Down Expand Up @@ -373,16 +374,46 @@ void getSearchTimetable() {
@Test
@DisplayName("시내버스 시간표를 조회한다 - 지원하지 않음")
void getCityBusTimetable() {
RestAssured
Version version = Version.builder()
.version("test_version")
.type(VersionType.CITY.getValue())
.build();
versionRepository.save(version);

Long busNumber = 400L;
String direction = "종합터미널";

var response = RestAssured
.given()
.when()
.param("bus_type", "city")
.param("direction", "to")
.param("region", "천안")
.get("/bus/timetable")
.param("bus_number", busNumber)
.param("direction", direction)
.get("/bus/timetable/city")
.then()
.statusCode(HttpStatus.BAD_REQUEST.value())
.statusCode(HttpStatus.OK.value())
.extract();

JsonAssertions.assertThat(response.asPrettyString())
.isEqualTo("""
{
"bus_info": {
"arrival_node": "종합터미널",
"depart_node": "병천3리",
"number": 400
},
"bus_timetables": [
{
"day_of_week": "평일",
"depart_info": ["06:00", "07:00"]
},
{
"day_of_week": "주말",
"depart_info": ["08:00", "09:00"]
}
],
"updated_at": "2024-07-19 19:00:00"
}
""");
}

@Test
Expand Down
34 changes: 33 additions & 1 deletion src/test/java/in/koreatech/koin/fixture/BusFixture.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
package in.koreatech.koin.fixture;

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

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import in.koreatech.koin.domain.bus.model.mongo.BusCourse;
import in.koreatech.koin.domain.bus.model.mongo.CityBusTimetable;
import in.koreatech.koin.domain.bus.model.mongo.Route;
import in.koreatech.koin.domain.bus.repository.BusRepository;
import in.koreatech.koin.domain.bus.repository.CityBusTimetableRepository;

@Component
@SuppressWarnings("NonAsciiCharacters")
Expand All @@ -16,8 +19,12 @@ public final class BusFixture {
@Autowired
private final BusRepository busRepository;

public BusFixture(BusRepository busRepository) {
@Autowired
private final CityBusTimetableRepository cityBusTimetableRepository;

public BusFixture(BusRepository busRepository, CityBusTimetableRepository cityBusTimetableRepository) {
this.busRepository = busRepository;
this.cityBusTimetableRepository = cityBusTimetableRepository;
}

public void 버스_시간표_등록() {
Expand Down Expand Up @@ -57,4 +64,29 @@ public BusFixture(BusRepository busRepository) {
.build()
);
}

public void 시내버스_시간표_등록() {
cityBusTimetableRepository.save(
CityBusTimetable.builder()
.updatedAt(LocalDateTime.of(2024, 7, 19, 19, 0))
.busInfo(
CityBusTimetable.BusInfo.builder()
.number(400L)
.depart("병천3리")
.arrival("종합터미널")
.build()
)
.busTimetables(
List.of(
CityBusTimetable.BusTimetable.builder()
.dayOfWeek("평일")
.departInfo(List.of("06:00", "07:00")).build(),
CityBusTimetable.BusTimetable.builder()
.dayOfWeek("주말")
.departInfo(List.of("08:00", "09:00")).build()
)
)
.build()
);
}
}

0 comments on commit ea74541

Please sign in to comment.