Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[AN/USER] 테스트 코드 리팩터링 (티켓 목록, 티켓 예매, 티켓 기록, 홈화면) (#497) #506

Merged
merged 4 commits into from
Oct 7, 2023
Merged
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 @@ -33,10 +33,14 @@ class HomeViewModelTest {
Dispatchers.resetMain()
}

private fun `사용자 인증 유무가 다음과 같을 때`(isSigned: Boolean) {
every { authRepository.isSigned } returns isSigned
}

@Test
fun `축제 목록을 요청했을 때 토큰이 있으면 축제 목록이 보인다`() = runTest {
// given
every { authRepository.isSigned } returns true
`사용자 인증 유무가 다음과 같을 때`(true)

// when
vm.event.test {
Expand All @@ -50,7 +54,7 @@ class HomeViewModelTest {
@Test
fun `축제 목록을 요청했을 때 토큰이 없어도 축제 목록이 보인다`() = runTest {
// given
every { authRepository.isSigned } returns false
`사용자 인증 유무가 다음과 같을 때`(false)

vm.event.test {
// when
Expand All @@ -64,7 +68,7 @@ class HomeViewModelTest {
@Test
fun `티켓 목록을 요청했을 때 토큰이 있으면 티켓 목록 보기 이벤트가 발생한다`() = runTest {
// given
every { authRepository.isSigned } returns true
`사용자 인증 유무가 다음과 같을 때`(true)

vm.event.test {
// when
Expand All @@ -78,7 +82,7 @@ class HomeViewModelTest {
@Test
fun `티켓 목록을 요청했을 때 토큰이 있으면 로그인 보기 이벤트가 발생한다`() = runTest {
// given
every { authRepository.isSigned } returns false
`사용자 인증 유무가 다음과 같을 때`(false)

vm.event.test {
// when
Expand All @@ -92,7 +96,7 @@ class HomeViewModelTest {
@Test
fun `마이페이지를 요청했을 때 토큰이 있으면 마이페이지 보기 이벤트가 발생한다`() = runTest {
// given
every { authRepository.isSigned } returns true
`사용자 인증 유무가 다음과 같을 때`(true)

vm.event.test {
// when
Expand All @@ -106,7 +110,7 @@ class HomeViewModelTest {
@Test
fun `마이페이즈를 요청했을 때 토큰이 없으면 로그인 보기 이벤트가 발생한다`() = runTest {
// given
every { authRepository.isSigned } returns false
`사용자 인증 유무가 다음과 같을 때`(false)

vm.event.test {
// when
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,16 @@ class TicketListViewModelTest {
Dispatchers.resetMain()
}

private fun `현재 티켓 요청 결과가 다음과 같을 때`(result: Result<List<Ticket>>) {
coEvery { ticketRepository.loadCurrentTickets() } returns result
}

@Test
fun `티켓을 받아왔을 때 티켓이 있으면 성공이고 티켓도 존재하는 상태이다`() {
// given
val tickets = TicketFixture.getMemberTickets((1L..10L).toList())

coEvery { ticketRepository.loadCurrentTickets() } returns Result.success(tickets)
`현재 티켓 요청 결과가 다음과 같을 때`(Result.success(tickets))

// when
vm.loadCurrentTickets()
Expand All @@ -71,7 +75,8 @@ class TicketListViewModelTest {
fun `티켓을 받아왔을 때 티켓이 없으면 성공이지만 티켓은 없는 상태이다`() {
// given
val fakeEmptyTickets = emptyList<Ticket>()
coEvery { ticketRepository.loadCurrentTickets() } returns Result.success(fakeEmptyTickets)

`현재 티켓 요청 결과가 다음과 같을 때`(Result.success(fakeEmptyTickets))

// when
vm.loadCurrentTickets()
Expand All @@ -98,9 +103,7 @@ class TicketListViewModelTest {
@Test
fun `티켓 목록 받아오기를 실패하면 에러 상태이다`() {
// given
coEvery { ticketRepository.loadCurrentTickets() } answers {
Result.failure(Exception())
}
`현재 티켓 요청 결과가 다음과 같을 때`(Result.failure(Exception()))

// when
vm.loadCurrentTickets()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,16 +42,18 @@ class TicketHistoryViewModelTest {
Dispatchers.resetMain()
}

private fun `티켓 기록 요청 결과가 다음과 같을 때`(result: Result<List<Ticket>>) {
coEvery {
ticketRepository.loadHistoryTickets(any())
} returns result
}

@Test
fun `빈 리스트가 아닌 티켓들을 가져오면 성공 상태이다`() {
// given
val ids = listOf(1L, 2L, 3L, 4L, 5L)

coEvery {
ticketRepository.loadHistoryTickets(any())
} answers {
Result.success(TicketFixture.getMemberTickets(ids))
}
`티켓 기록 요청 결과가 다음과 같을 때`(Result.success(TicketFixture.getMemberTickets(ids)))

// when
vm.loadTicketHistories()
Expand Down Expand Up @@ -79,11 +81,7 @@ class TicketHistoryViewModelTest {
@Test
fun `빈 리스트인 티켓을 받아도 성공 상태이다`() {
// given
coEvery {
ticketRepository.loadHistoryTickets(any())
} answers {
Result.success(emptyList())
}
`티켓 기록 요청 결과가 다음과 같을 때`(Result.success(listOf()))

// when
vm.loadTicketHistories()
Expand Down Expand Up @@ -136,11 +134,7 @@ class TicketHistoryViewModelTest {
@Test
fun `티켓을 받아오기 실패하면 에러 상태이다`() {
// given
coEvery {
ticketRepository.loadHistoryTickets(any())
} answers {
Result.failure(Exception())
}
`티켓 기록 요청 결과가 다음과 같을 때`(Result.failure(Exception()))

// when
vm.loadTicketHistories()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,20 +86,27 @@ class TicketReserveViewModelTest {
Dispatchers.resetMain()
}

private fun `예약 정보 요청 결과가 다음과 같을 때`(result: Result<Reservation>) {
coEvery { festivalRepository.loadFestivalDetail(any()) } returns result
}

private fun `인증 여부가 다음과 같을 때`(isSigned: Boolean) {
coEvery { authRepository.isSigned } answers { isSigned }
}

private fun `특정 공연의 티켓 타입 요청 결과가 다음과 같을 때`(result: Result<List<ReservationTicket>>) {
coEvery { reservationTicketRepository.loadTicketTypes(any()) } returns result
}

private fun `티켓 예약 요청 결과가 다음과 같을 때`(result: Result<ReservedTicket>) {
coEvery { ticketRepository.reserveTicket(any()) } returns result
}

@Test
fun `예약 정보를 불러오면 성공 이벤트가 발생하고 리스트를 반환한다`() {
// given
coEvery {
festivalRepository.loadFestivalDetail(0)
} answers {
Result.success(fakeReservation)
}

coEvery {
authRepository.isSigned
} answers {
true
}
`예약 정보 요청 결과가 다음과 같을 때`(Result.success(fakeReservation))
`인증 여부가 다음과 같을 때`(true)

// when
vm.loadReservation()
Expand All @@ -122,7 +129,7 @@ class TicketReserveViewModelTest {
@Test
fun `예약 정보를 불러오는 것을 실패하면 에러 이벤트가 발생한다`() {
// given
coEvery { festivalRepository.loadFestivalDetail(0) } returns Result.failure(Exception())
`예약 정보 요청 결과가 다음과 같을 때`(Result.failure(Exception()))

// when
vm.loadReservation(0)
Expand Down Expand Up @@ -151,15 +158,8 @@ class TicketReserveViewModelTest {
@Test
fun `특정 공연의 티켓 타입을 보여주는 이벤트가 발생하면 해당 공연의 티켓 타입을 보여준다`() = runTest {
// given
coEvery {
reservationTicketRepository.loadTicketTypes(1)
} answers {
Result.success(fakeReservationTickets)
}

coEvery { authRepository.isSigned } answers {
true
}
`특정 공연의 티켓 타입 요청 결과가 다음과 같을 때`(Result.success(fakeReservationTickets))
`인증 여부가 다음과 같을 때`(true)

vm.event.test {
// when
Expand All @@ -181,13 +181,8 @@ class TicketReserveViewModelTest {
@Test
fun `특정 공연의 티켓 타입을 보여주는 것을 실패하면 에러 이벤트가 발생한다`() {
// given
coEvery { reservationTicketRepository.loadTicketTypes(1) } returns Result.failure(Exception())

coEvery {
authRepository.isSigned
} answers {
true
}
`특정 공연의 티켓 타입 요청 결과가 다음과 같을 때`(Result.failure(Exception()))
`인증 여부가 다음과 같을 때`(true)

// when
vm.showTicketTypes(1, LocalDateTime.MIN)
Expand Down Expand Up @@ -217,11 +212,7 @@ class TicketReserveViewModelTest {
@Test
fun `티켓 유형을 선택하고 예약하는 것을 실패하면 예약 실패 이벤트가 발생한다`() = runTest {
// given
coEvery {
ticketRepository.reserveTicket(0)
} answers {
Result.failure(Exception())
}
`티켓 예약 요청 결과가 다음과 같을 때`(Result.failure(Exception()))

vm.event.test {
// when
Expand Down