Skip to content

Commit 35c88c7

Browse files
committed
test: AccountFeature 로딩 테스트 폴링 제거
1 parent e849161 commit 35c88c7

1 file changed

Lines changed: 40 additions & 29 deletions

File tree

Application/DevLogPresentation/Tests/Settings/AccountFeatureTests.swift

Lines changed: 40 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
// Created by opfic on 6/11/26.
66
//
77

8+
// swiftlint:disable file_length
9+
810
import Testing
911
import ComposableArchitecture
1012
import Foundation
@@ -87,38 +89,53 @@ struct AccountFeatureTests {
8789
)
8890
let linkSpy = LinkAuthProviderUseCaseSpy()
8991
linkSpy.shouldSuspend = true
90-
let driver = AccountTestDriver(
91-
fetchUseCase: fetchSpy,
92-
linkUseCase: linkSpy,
93-
configureDependencies: {
94-
$0.continuousClock = clock
95-
}
96-
)
97-
98-
driver.linkWithProvider(.github)
99-
100-
await waitUntil {
101-
linkSpy.providers == [.github]
92+
let target = LoadingFeature.Target.default
93+
let store = TestStore(initialState: AccountFeature.State()) {
94+
AccountFeature()
95+
} withDependencies: {
96+
$0.fetchAuthProvidersUseCase = fetchSpy
97+
$0.linkAuthProviderUseCase = linkSpy
98+
$0.unlinkAuthProviderUseCase = UnlinkAuthProviderUseCaseSpy()
99+
$0.continuousClock = clock
102100
}
101+
store.exhaustivity = .off(showSkippedAssertions: false)
103102

104-
#expect(!driver.isLoading)
103+
await store.send(.linkWithProvider(.github)) {
104+
$0.activeLoadingProvider = .github
105+
}
106+
await store.receive(\.loading.begin) {
107+
$0.loading.delayedCountByTarget[target] = 1
108+
$0.loading.scheduledDelayedTargets = [target]
109+
}
110+
#expect(linkSpy.providers == [.github])
111+
#expect(!store.state.isLoading)
105112

106113
await clock.advance(by: .milliseconds(300))
107-
108-
await waitUntil {
109-
driver.isLoading
114+
await store.receive(\.loading.delayedLoadingDidBecomeVisible, target) {
115+
$0.loading.scheduledDelayedTargets = []
116+
$0.loading.visibleDelayedTargets = [target]
117+
$0.loading.visibleTargets = [target]
118+
$0.loading.isLoading = true
110119
}
111120

112-
#expect(driver.isLoading)
113-
#expect(driver.activeLoadingProvider == .github)
121+
#expect(store.state.isLoading)
122+
#expect(store.state.activeLoadingProvider == .github)
114123

115124
linkSpy.resume()
116-
117-
await waitUntil {
118-
!driver.isLoading && fetchSpy.executeCallCount == 1
125+
await store.receive(\.setProviders) {
126+
$0.currentProvider = .google
127+
$0.connectedProviders = [.github]
128+
$0.disconnectedProviders = [.apple]
129+
}
130+
await store.receive(\.loading.end) {
131+
$0.loading.delayedCountByTarget[target] = 0
132+
$0.loading.visibleDelayedTargets = []
133+
$0.loading.visibleTargets = []
134+
$0.loading.isLoading = false
135+
$0.activeLoadingProvider = nil
119136
}
120137

121-
#expect(!driver.isLoading)
138+
#expect(!store.state.isLoading)
122139
}
123140

124141
@Test("인증 제공자 조회에 실패하면 공통 에러 알림을 표시한다")
@@ -253,19 +270,14 @@ private struct AccountTestDriver {
253270
feature.state.isLoading
254271
}
255272

256-
var activeLoadingProvider: AuthProvider? {
257-
feature.state.activeLoadingProvider
258-
}
259-
260273
var alert: AlertState<Never>? {
261274
feature.state.alert
262275
}
263276

264277
init(
265278
fetchUseCase: FetchAuthProvidersUseCase = FetchAuthProvidersUseCaseSpy(),
266279
linkUseCase: LinkAuthProviderUseCase = LinkAuthProviderUseCaseSpy(),
267-
unlinkUseCase: UnlinkAuthProviderUseCase = UnlinkAuthProviderUseCaseSpy(),
268-
configureDependencies: ((inout DependencyValues) -> Void)? = nil
280+
unlinkUseCase: UnlinkAuthProviderUseCase = UnlinkAuthProviderUseCaseSpy()
269281
) {
270282
feature = Store(initialState: AccountFeature.State()) {
271283
AccountFeature()
@@ -274,7 +286,6 @@ private struct AccountTestDriver {
274286
$0.linkAuthProviderUseCase = linkUseCase
275287
$0.unlinkAuthProviderUseCase = unlinkUseCase
276288
$0.continuousClock = ContinuousClock()
277-
configureDependencies?(&$0)
278289
}
279290
}
280291

0 commit comments

Comments
 (0)