File tree Expand file tree Collapse file tree
Application/DevLogPresentation Expand file tree Collapse file tree Original file line number Diff line number Diff 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
Original file line number Diff line number Diff line change @@ -9,6 +9,7 @@ import Combine
99import ComposableArchitecture
1010import DevLogCore
1111import DevLogDomain
12+ import Foundation
1213import Testing
1314@testable import DevLogPresentation
1415
@@ -299,9 +300,18 @@ final class RootTrackAnalyticsEventUseCaseSpy: TrackAnalyticsEventUseCase {
299300}
300301
301302final 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}
Original file line number Diff line number Diff 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 ( )
You can’t perform that action at this time.
0 commit comments