From 6e7a1dba616460f874b0026697633a1fba277b91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=9D=80=EC=A7=80?= Date: Sat, 5 Sep 2026 22:26:34 +0900 Subject: [PATCH 1/2] =?UTF-8?q?test:=20=EC=84=B8=EA=B7=B8=EB=A8=BC?= =?UTF-8?q?=ED=8A=B8=20=EB=AF=B8=EC=84=A0=ED=83=9D=20=EB=A1=9C=EA=B9=85=20?= =?UTF-8?q?=EB=B0=A9=EC=A7=80=20=EB=B0=8F=20=EB=AC=B4=EC=8B=9C=20=EC=8A=A4?= =?UTF-8?q?=EC=99=80=EC=9D=B4=ED=94=84=20=EB=A1=9C=EA=B9=85=20=EB=B0=A9?= =?UTF-8?q?=EC=A7=80=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- koinUnitTests/Dining/DiningLoggingTests.swift | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/koinUnitTests/Dining/DiningLoggingTests.swift b/koinUnitTests/Dining/DiningLoggingTests.swift index 4229a5c7..1988eb5b 100644 --- a/koinUnitTests/Dining/DiningLoggingTests.swift +++ b/koinUnitTests/Dining/DiningLoggingTests.swift @@ -99,4 +99,25 @@ struct DiningLoggingTests { #expect(bed.recorder.loggedEvents == [DiningLoggedEvent("menu_time", "click", "저녁")]) } + + @Test("세그먼트가 선택되지 않으면 로깅하지 않는다") + func 세그먼트가_선택되지_않으면_로깅하지_않는다() { + let bed = DiningLoggingTestBed() + bed.selectSegment(-1) + + bed.tapMenuImage(place: "A코너") + bed.scrollDiningList() + + #expect(bed.recorder.loggedEvents.isEmpty) + } + + @Test("무시된 스와이프는 로깅하지 않는다") + func 무시된_스와이프는_로깅하지_않는다() { + let bed = DiningLoggingTestBed() + bed.selectSegment(0) + + bed.swipe(.right) + + #expect(bed.recorder.loggedEvents.isEmpty) + } } From ed7831bd7bf2ea5d2fe4b39fee37955b974ccb11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=9D=80=EC=A7=80?= Date: Sat, 5 Sep 2026 22:32:44 +0900 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=EC=84=B8=EA=B7=B8=EB=A8=BC=ED=8A=B8?= =?UTF-8?q?=20=EB=AF=B8=EC=84=A0=ED=83=9D/=EB=AC=B4=EC=8B=9C=EB=90=9C=20?= =?UTF-8?q?=EC=8A=A4=EC=99=80=EC=9D=B4=ED=94=84=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EC=9E=98=EB=AA=BB=20=EA=B8=B0=EB=A1=9D=EB=90=98=EB=8D=98=20?= =?UTF-8?q?=EB=A1=9C=EA=B9=85=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dining/Dining/DiningViewController.swift | 39 +++++++++++-------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/Koin/Presentation/Dining/Dining/DiningViewController.swift b/Koin/Presentation/Dining/Dining/DiningViewController.swift index b664afc9..4a6e3f5f 100644 --- a/Koin/Presentation/Dining/Dining/DiningViewController.swift +++ b/Koin/Presentation/Dining/Dining/DiningViewController.swift @@ -173,8 +173,10 @@ final class DiningViewController: UIViewController { zoomedImageViewController.setImage(tappedDiningImage) self.present(zoomedImageViewController, animated: true, completion: nil) - inputSubject.send(.logEvent(EventParameter.EventLabel.Campus.menuImage, .click, "\(self.currentDiningType.name)_\(tappedPlaceText)")) - + if let currentDiningType = self.currentDiningType { + inputSubject.send(.logEvent(EventParameter.EventLabel.Campus.menuImage, .click, "\(currentDiningType.name)_\(tappedPlaceText)")) + } + }.store(in: &subscriptions) diningListCollectionView.shareButtonPublisher.sink { [weak self] item in @@ -183,8 +185,8 @@ final class DiningViewController: UIViewController { }.store(in: &subscriptions) diningListCollectionView.logScrollPublisher.sink { [weak self] _ in - guard let self = self else { return } - self.inputSubject.send(.logEvent(EventParameter.EventLabel.Campus.menuTime, .scroll, self.currentDiningType.name)) + guard let self = self, let currentDiningType = self.currentDiningType else { return } + self.inputSubject.send(.logEvent(EventParameter.EventLabel.Campus.menuTime, .scroll, currentDiningType.name)) }.store(in: &subscriptions) NotificationCenter.default.publisher(for: UIApplication.willEnterForegroundNotification).sink { [weak self] _ in @@ -213,21 +215,26 @@ extension DiningViewController { @objc func handleSwipe(_ gesture: UISwipeGestureRecognizer) { let currentSegmentIndex = diningTypeSegmentControl.selectedSegmentIndex - if gesture.direction == .left { - if currentSegmentIndex < diningTypeSegmentControl.numberOfSegments - 1 { - diningTypeSegmentControl.selectedSegmentIndex = currentSegmentIndex + 1 - } - } else if gesture.direction == .right { - if currentSegmentIndex > 0 { - diningTypeSegmentControl.selectedSegmentIndex = currentSegmentIndex - 1 - } + let nextSegmentIndex: Int + + switch gesture.direction { + case .left: nextSegmentIndex = currentSegmentIndex + 1 + case .right: nextSegmentIndex = currentSegmentIndex - 1 + default: return } + + guard (0..