@@ -141,10 +141,14 @@ struct TodoDetailFeatureTests {
141141
142142 @Test ( " 시트와 편집 화면 상태를 액션에 맞게 변경한다 " )
143143 func 시트와_편집_화면_상태를_액션에_맞게_변경한다( ) async {
144- let fetchSpy = FetchTodoByIdUseCaseSpy ( todo: makeTodo ( id: " todo-2 " ) )
144+ let reference = makeTodoReference ( id: " todo-7 " , title: " Reference 7 " )
145+ let fetchSpy = FetchTodoByIdUseCaseSpy (
146+ todo: makeTodo ( id: " todo-2 " , content: " - refs #7 " )
147+ )
148+ let referenceSpy = FetchReferenceItemsUseCaseSpy ( references: [ 7 : reference] )
145149 let adapter = TodoDetailStoreTestAdapter (
146150 fetchUseCase: fetchSpy,
147- referenceUseCase: FetchReferenceItemsUseCaseSpy ( ) ,
151+ referenceUseCase: referenceSpy ,
148152 todoId: " todo-1 " ,
149153 showEditButton: false
150154 )
@@ -158,16 +162,18 @@ struct TodoDetailFeatureTests {
158162
159163 adapter. setSheet ( . todo( TodoIdItem ( id: " todo-2 " ) ) )
160164
161- #expect( adapter. sheet? . todoDetail ? . todoId == " todo-2 " )
162- #expect( adapter. sheet? . todoDetail ? . showEditButton == false )
165+ #expect( todoDetailState ( in : adapter. sheet) ? . todoId == " todo-2 " )
166+ #expect( todoDetailState ( in : adapter. sheet) ? . showEditButton == false )
163167
164168 adapter. onSheetTodoAppear ( )
165169
166170 await waitUntil {
167- adapter. sheet? . todoDetail ? . todo ? . id == " todo-2 "
171+ todoDetailState ( in : adapter. sheet) ? . referenceItems [ 7 ] == TodoReferenceItem ( from : reference )
168172 }
169173
170174 #expect( fetchSpy. todoIds == [ " todo-2 " ] )
175+ #expect( referenceSpy. numbers == [ [ 7 ] ] )
176+ #expect( adapter. referenceItems. isEmpty)
171177
172178 adapter. dismissSheet ( )
173179 adapter. dismissFullScreenCover ( )
@@ -202,37 +208,14 @@ private protocol TodoDetailTestAdapter {
202208private struct TodoDetailStoreTestAdapter : TodoDetailTestAdapter {
203209 private let store : StoreOf < TodoDetailFeature >
204210
205- var todoId : String {
206- store. todoId
207- }
208-
209- var showEditButton : Bool {
210- store. showEditButton
211- }
212-
213- var todo : Todo ? {
214- store. todo
215- }
216-
217- var referenceItems : [ Int : TodoReferenceItem ] {
218- store. referenceItems
219- }
220-
221- var isLoading : Bool {
222- store. isLoading
223- }
224-
225- var alert : AlertState < Never > ? {
226- store. alert
227- }
228-
229- var sheet : TodoDetailFeature . SheetState ? {
230- store. sheet
231- }
232-
233- var fullScreenCover : TodoDetailFeature . FullScreenCoverState ? {
234- store. fullScreenCover
235- }
211+ var todoId : String { store. todoId }
212+ var showEditButton : Bool { store. showEditButton }
213+ var todo : Todo ? { store. todo }
214+ var referenceItems : [ Int : TodoReferenceItem ] { store. referenceItems }
215+ var isLoading : Bool { store. isLoading }
216+ var alert : AlertState < Never > ? { store. alert }
217+ var sheet : TodoDetailFeature . SheetState ? { store. sheet }
218+ var fullScreenCover : TodoDetailFeature . FullScreenCoverState ? { store. fullScreenCover }
236219
237220 init (
238221 fetchUseCase: FetchTodoByIdUseCase ,
@@ -284,6 +267,13 @@ private struct TodoDetailStoreTestAdapter: TodoDetailTestAdapter {
284267 }
285268}
286269
270+ private func todoDetailState(
271+ in sheet: TodoDetailFeature . SheetState ?
272+ ) -> TodoDetailFeature . State ? {
273+ guard case . todo( let state) = sheet else { return nil }
274+ return state
275+ }
276+
287277private func expectedErrorAlert( ) -> AlertState < Never > {
288278 AlertState {
289279 TextState ( String ( localized: " common_error_title " ) )
0 commit comments