Skip to content

Commit 59c64ac

Browse files
authored
[#630] Presentation 레이어의 ci 테스트에 걸리는 시간을 개선한다 (#631)
* chore: Persistence Presentation CI job 분리 * test: AccountFeature 로딩 테스트 폴링 제거 * test: AccountFeature 테스트 엄격 검증 유지
1 parent bee0cf5 commit 59c64ac

2 files changed

Lines changed: 43 additions & 32 deletions

File tree

.github/workflows/ci.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -224,8 +224,10 @@ jobs:
224224
include:
225225
- name: Domain-Data
226226
schemes: "DevLogDomain DevLogData"
227-
- name: Persistence-Presentation
228-
schemes: "DevLogPersistence DevLogPresentation"
227+
- name: Persistence
228+
schemes: "DevLogPersistence"
229+
- name: Presentation
230+
schemes: "DevLogPresentation"
229231
- name: Widget
230232
schemes: "DevLogWidget DevLogWidgetCore"
231233
steps:

Application/DevLogPresentation/Tests/Settings/AccountFeatureTests.swift

Lines changed: 39 additions & 30 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,51 @@ 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
}
103-
104-
#expect(!driver.isLoading)
101+
await store.send(.linkWithProvider(.github)) {
102+
$0.activeLoadingProvider = .github
103+
}
104+
await store.receive(\.loading.begin) {
105+
$0.loading.delayedCountByTarget[target] = 1
106+
$0.loading.scheduledDelayedTargets = [target]
107+
}
108+
#expect(linkSpy.providers == [.github])
109+
#expect(!store.state.isLoading)
105110

106111
await clock.advance(by: .milliseconds(300))
107-
108-
await waitUntil {
109-
driver.isLoading
112+
await store.receive(\.loading.delayedLoadingDidBecomeVisible, target) {
113+
$0.loading.scheduledDelayedTargets = []
114+
$0.loading.visibleDelayedTargets = [target]
115+
$0.loading.visibleTargets = [target]
116+
$0.loading.isLoading = true
110117
}
111118

112-
#expect(driver.isLoading)
113-
#expect(driver.activeLoadingProvider == .github)
119+
#expect(store.state.isLoading)
120+
#expect(store.state.activeLoadingProvider == .github)
114121

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

121-
#expect(!driver.isLoading)
136+
#expect(!store.state.isLoading)
122137
}
123138

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

256-
var activeLoadingProvider: AuthProvider? {
257-
feature.state.activeLoadingProvider
258-
}
259-
260271
var alert: AlertState<Never>? {
261272
feature.state.alert
262273
}
263274

264275
init(
265276
fetchUseCase: FetchAuthProvidersUseCase = FetchAuthProvidersUseCaseSpy(),
266277
linkUseCase: LinkAuthProviderUseCase = LinkAuthProviderUseCaseSpy(),
267-
unlinkUseCase: UnlinkAuthProviderUseCase = UnlinkAuthProviderUseCaseSpy(),
268-
configureDependencies: ((inout DependencyValues) -> Void)? = nil
278+
unlinkUseCase: UnlinkAuthProviderUseCase = UnlinkAuthProviderUseCaseSpy()
269279
) {
270280
feature = Store(initialState: AccountFeature.State()) {
271281
AccountFeature()
@@ -274,7 +284,6 @@ private struct AccountTestDriver {
274284
$0.linkAuthProviderUseCase = linkUseCase
275285
$0.unlinkAuthProviderUseCase = unlinkUseCase
276286
$0.continuousClock = ContinuousClock()
277-
configureDependencies?(&$0)
278287
}
279288
}
280289

0 commit comments

Comments
 (0)