From 83de27a5489fbb91ca502e7c8cfd3d92eba3f88d Mon Sep 17 00:00:00 2001 From: Roy Date: Mon, 19 Oct 2026 23:18:35 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9D=B4=EC=9A=A9=EA=B6=8C=20Delegate=20?= =?UTF-8?q?=EC=95=A1=EC=85=98=EC=9D=84=20=EC=9D=B4=EB=B2=A4=ED=8A=B8=20?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=EC=9C=BC=EB=A1=9C=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 등록 확인과 추가 등록 요청을 자식 화면에서 발생한 이벤트로 명명하고 코디네이터 및 테스트 호출처를 함께 변경한다. --- .../Sources/Navigation/Class/ClassCoordinator.swift | 4 ++-- .../App/Tests/Sources/ClassCoordinatorTests.swift | 6 +++--- .../ClassTicket/Reducer/ClassTicketFeature.swift | 11 +++++++---- .../Class/Tests/Sources/ClassTicketTests.swift | 4 ++-- 4 files changed, 14 insertions(+), 11 deletions(-) diff --git a/Projects/App/Sources/Navigation/Class/ClassCoordinator.swift b/Projects/App/Sources/Navigation/Class/ClassCoordinator.swift index e31e72ab..411c56f7 100644 --- a/Projects/App/Sources/Navigation/Class/ClassCoordinator.swift +++ b/Projects/App/Sources/Navigation/Class/ClassCoordinator.swift @@ -480,7 +480,7 @@ private extension ClassCoordinator { state.routes.push(.ticket(.init(instanceID: uuid()))) return .none - case let .routeAction(routeID, action: .ticket(.delegate(.showOverview(startDate, endDate)))): + case let .routeAction(routeID, action: .ticket(.delegate(.registrationConfirmed(startDate: startDate, endDate: endDate)))): guard routeID == state.routes.count - 1, case let .ticket(completed)? = state.routes.last?.screen, completed.phase == .registered, @@ -517,7 +517,7 @@ private extension ClassCoordinator { } return .none - case let .routeAction(routeID, action: .ticket(.delegate(.addRegistration))): + case let .routeAction(routeID, action: .ticket(.delegate(.addRegistrationRequested))): guard routeID == state.routes.count - 1, case let .ticket(overview)? = state.routes.last?.screen, overview.phase == .overview diff --git a/Projects/App/Tests/Sources/ClassCoordinatorTests.swift b/Projects/App/Tests/Sources/ClassCoordinatorTests.swift index 63c26ec2..f0b02dac 100644 --- a/Projects/App/Tests/Sources/ClassCoordinatorTests.swift +++ b/Projects/App/Tests/Sources/ClassCoordinatorTests.swift @@ -1942,7 +1942,7 @@ struct ClassParticipantPushTests { await store.send(.router(.routeAction( id: 1, - action: .ticket(.delegate(.showOverview(firstStart, firstEnd))) + action: .ticket(.delegate(.registrationConfirmed(startDate: firstStart, endDate: firstEnd))) ))) await store.receive(\.inner) { var overview = ClassTicketFeature.State(instanceID: UUID(0)) @@ -1956,7 +1956,7 @@ struct ClassParticipantPushTests { await store.send(.router(.routeAction( id: 2, - action: .ticket(.delegate(.addRegistration)) + action: .ticket(.delegate(.addRegistrationRequested)) ))) { $0.routes.push(.ticket(.init(instanceID: UUID(1)))) $0.ticketInstanceIDs = [originalID, UUID(0), UUID(1)] @@ -1999,7 +1999,7 @@ struct ClassParticipantPushTests { } await store.send(.router(.routeAction( id: 3, - action: .ticket(.delegate(.showOverview(secondStart, secondEnd))) + action: .ticket(.delegate(.registrationConfirmed(startDate: secondStart, endDate: secondEnd))) ))) #expect(store.state.routes.count == 4) await store.receive(\.inner) { diff --git a/Projects/Feature/Class/Sources/ClassTicket/Reducer/ClassTicketFeature.swift b/Projects/Feature/Class/Sources/ClassTicket/Reducer/ClassTicketFeature.swift index 1763c885..633bbe23 100644 --- a/Projects/Feature/Class/Sources/ClassTicket/Reducer/ClassTicketFeature.swift +++ b/Projects/Feature/Class/Sources/ClassTicket/Reducer/ClassTicketFeature.swift @@ -59,8 +59,8 @@ public struct ClassTicketFeature { @CasePathable public enum DelegateAction: Equatable { case dismiss - case showOverview(Date, Date) - case addRegistration + case registrationConfirmed(startDate: Date, endDate: Date) + case addRegistrationRequested case registered(Date, Date) } @@ -93,11 +93,14 @@ public struct ClassTicketFeature { let registrationStartDate = state.registrationStartDate, let expirationDate = state.expirationDate else { return .none } - return .send(.delegate(.showOverview(registrationStartDate, expirationDate))) + return .send(.delegate(.registrationConfirmed( + startDate: registrationStartDate, + endDate: expirationDate + ))) case .view(.addRegistrationTapped): guard state.phase == .overview else { return .none } - return .send(.delegate(.addRegistration)) + return .send(.delegate(.addRegistrationRequested)) case let .view(.faqTapped(index)): state.expandedFAQ = state.expandedFAQ == index ? nil : index diff --git a/Projects/Feature/Class/Tests/Sources/ClassTicketTests.swift b/Projects/Feature/Class/Tests/Sources/ClassTicketTests.swift index 4e8f54b4..98e3b5a1 100644 --- a/Projects/Feature/Class/Tests/Sources/ClassTicketTests.swift +++ b/Projects/Feature/Class/Tests/Sources/ClassTicketTests.swift @@ -160,7 +160,7 @@ struct ClassTicketTests { let store = TestStore(initialState: state) { ClassTicketFeature() } await store.send(.view(.confirmTapped)) - await store.receive(\.delegate, .showOverview(start, end)) + await store.receive(\.delegate, .registrationConfirmed(startDate: start, endDate: end)) #expect(store.state.navigationTitle == "이용권 등록하기") } @@ -191,7 +191,7 @@ struct ClassTicketTests { #expect(store.state.navigationTitle == "클래스 이용권") #expect(store.state.periodText == "2026.10.09 – 2027.04.08") await store.send(.view(.addRegistrationTapped)) - await store.receive(\.delegate, .addRegistration) + await store.receive(\.delegate, .addRegistrationRequested) await store.send(.view(.backTapped)) await store.receive(\.delegate, .dismiss) }