From 9ea012e0e9e6762dfef278169f4577488c29865c Mon Sep 17 00:00:00 2001 From: opficdev <162981733+opficdev@users.noreply.github.com> Date: Fri, 26 Jun 2026 14:21:45 +0900 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=EB=A1=9C=EA=B7=B8=EC=95=84=EC=9B=83?= =?UTF-8?q?=20=EC=8B=9C=20=EC=95=B1=20=EB=B0=B0=EC=A7=80=20=EC=B4=88?= =?UTF-8?q?=EA=B8=B0=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/Root/RootFeature.swift | 5 ++++- .../Tests/Root/RootFeatureTests.swift | 13 +++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/Application/DevLogPresentation/Sources/Root/RootFeature.swift b/Application/DevLogPresentation/Sources/Root/RootFeature.swift index 861530c1..36669c45 100644 --- a/Application/DevLogPresentation/Sources/Root/RootFeature.swift +++ b/Application/DevLogPresentation/Sources/Root/RootFeature.swift @@ -109,7 +109,10 @@ struct RootFeature { if result { state.selectedMainTab = .home } else { - return trackLoginScreenEffect() + return .merge( + trackLoginScreenEffect(), + clearApplicationBadgeCountEffect() + ) } } diff --git a/Application/DevLogPresentation/Tests/Root/RootFeatureTests.swift b/Application/DevLogPresentation/Tests/Root/RootFeatureTests.swift index bd75da05..db68a4a1 100644 --- a/Application/DevLogPresentation/Tests/Root/RootFeatureTests.swift +++ b/Application/DevLogPresentation/Tests/Root/RootFeatureTests.swift @@ -39,6 +39,19 @@ struct RootFeatureTests { await verifyDidLoginedFalse(adapter: adapter, trackAnalyticsEventUseCaseSpy: trackSpy) } + @Test("RootFeature didLogined(false)는 앱 badge 초기화를 요청한다") + func RootFeature_didLogined_false는_앱_badge_초기화를_요청한다() async { + let badgeSpy = RootApplicationBadgeCountSpy() + let adapter = RootStoreTestAdapter(badgeCountSpy: badgeSpy) + + await adapter.didLogined(false) + await waitUntil { + badgeSpy.counts == [0] + } + + #expect(badgeSpy.counts == [0]) + } + @Test("RootFeature didLogined(true)는 기존 Root 상태관리처럼 signIn 상태를 true로 갱신하고 selectedMainTab을 home으로 되돌린다") func RootFeature_didLogined_true는_기존_Root_상태관리처럼_signIn_상태를_true로_갱신하고_selectedMainTab을_home으로_되돌린다() async { let trackSpy = RootTrackAnalyticsEventUseCaseSpy() From 85a9de0e81082da7cfa1163d2f43bc730be3f37f Mon Sep 17 00:00:00 2001 From: opficdev <162981733+opficdev@users.noreply.github.com> Date: Fri, 26 Jun 2026 14:43:21 +0900 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=EB=B0=B0=EC=A7=80=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20spy=20=EB=8F=99=EA=B8=B0=ED=99=94=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Tests/Root/RootFeatureTestSupport.swift | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/Application/DevLogPresentation/Tests/Root/RootFeatureTestSupport.swift b/Application/DevLogPresentation/Tests/Root/RootFeatureTestSupport.swift index a961b077..f297e540 100644 --- a/Application/DevLogPresentation/Tests/Root/RootFeatureTestSupport.swift +++ b/Application/DevLogPresentation/Tests/Root/RootFeatureTestSupport.swift @@ -9,6 +9,7 @@ import Combine import ComposableArchitecture import DevLogCore import DevLogDomain +import Foundation import Testing @testable import DevLogPresentation @@ -299,9 +300,18 @@ final class RootTrackAnalyticsEventUseCaseSpy: TrackAnalyticsEventUseCase { } final class RootApplicationBadgeCountSpy: @unchecked Sendable { - private(set) var counts = [Int]() + private let lock = NSLock() + private var protectedCounts = [Int]() + + var counts: [Int] { + lock.withLock { + protectedCounts + } + } func setBadgeCount(_ count: Int) async throws { - counts.append(count) + lock.withLock { + protectedCounts.append(count) + } } }