Skip to content

Commit 8b6c40e

Browse files
authored
[#621] 로그아웃, 회원탈퇴 이후 앱 배지가 그대로 남아있는 현상을 해결한다 (#646)
* fix: 로그아웃 시 앱 배지 초기화 * fix: 배지 테스트 spy 동기화 처리
1 parent 088d922 commit 8b6c40e

3 files changed

Lines changed: 29 additions & 3 deletions

File tree

Application/DevLogPresentation/Sources/Root/RootFeature.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,10 @@ struct RootFeature {
109109
if result {
110110
state.selectedMainTab = .home
111111
} else {
112-
return trackLoginScreenEffect()
112+
return .merge(
113+
trackLoginScreenEffect(),
114+
clearApplicationBadgeCountEffect()
115+
)
113116
}
114117
}
115118

Application/DevLogPresentation/Tests/Root/RootFeatureTestSupport.swift

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import Combine
99
import ComposableArchitecture
1010
import DevLogCore
1111
import DevLogDomain
12+
import Foundation
1213
import Testing
1314
@testable import DevLogPresentation
1415

@@ -299,9 +300,18 @@ final class RootTrackAnalyticsEventUseCaseSpy: TrackAnalyticsEventUseCase {
299300
}
300301

301302
final class RootApplicationBadgeCountSpy: @unchecked Sendable {
302-
private(set) var counts = [Int]()
303+
private let lock = NSLock()
304+
private var protectedCounts = [Int]()
305+
306+
var counts: [Int] {
307+
lock.withLock {
308+
protectedCounts
309+
}
310+
}
303311

304312
func setBadgeCount(_ count: Int) async throws {
305-
counts.append(count)
313+
lock.withLock {
314+
protectedCounts.append(count)
315+
}
306316
}
307317
}

Application/DevLogPresentation/Tests/Root/RootFeatureTests.swift

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,19 @@ struct RootFeatureTests {
3939
await verifyDidLoginedFalse(adapter: adapter, trackAnalyticsEventUseCaseSpy: trackSpy)
4040
}
4141

42+
@Test("RootFeature didLogined(false)는 앱 badge 초기화를 요청한다")
43+
func RootFeature_didLogined_false는_앱_badge_초기화를_요청한다() async {
44+
let badgeSpy = RootApplicationBadgeCountSpy()
45+
let adapter = RootStoreTestAdapter(badgeCountSpy: badgeSpy)
46+
47+
await adapter.didLogined(false)
48+
await waitUntil {
49+
badgeSpy.counts == [0]
50+
}
51+
52+
#expect(badgeSpy.counts == [0])
53+
}
54+
4255
@Test("RootFeature didLogined(true)는 기존 Root 상태관리처럼 signIn 상태를 true로 갱신하고 selectedMainTab을 home으로 되돌린다")
4356
func RootFeature_didLogined_true는_기존_Root_상태관리처럼_signIn_상태를_true로_갱신하고_selectedMainTab을_home으로_되돌린다() async {
4457
let trackSpy = RootTrackAnalyticsEventUseCaseSpy()

0 commit comments

Comments
 (0)