diff --git a/SharedPackages/DataBrokerProtectionCore/Sources/DataBrokerProtectionCore/UIWeb/DBPUICommunicationModelScanStateExtensions.swift b/SharedPackages/DataBrokerProtectionCore/Sources/DataBrokerProtectionCore/UIWeb/DBPUICommunicationModelScanStateExtensions.swift index 529fd5f020a..1621aec5e7d 100644 --- a/SharedPackages/DataBrokerProtectionCore/Sources/DataBrokerProtectionCore/UIWeb/DBPUICommunicationModelScanStateExtensions.swift +++ b/SharedPackages/DataBrokerProtectionCore/Sources/DataBrokerProtectionCore/UIWeb/DBPUICommunicationModelScanStateExtensions.swift @@ -146,8 +146,9 @@ public extension DBPUIScanAndOptOutMaintenanceState { laterDate: eightDaysAfterToday) let earliestScanPreferredRunDate = nonRemovedBrokerProfileQueryData.earliestScanPreferredRunDate() ?? currentDate + let displayDate = max(earliestScanPreferredRunDate, currentDate) - return DBPUIScanDate(date: earliestScanPreferredRunDate.timeIntervalSince1970, dataBrokers: brokers) + return DBPUIScanDate(date: displayDate.timeIntervalSince1970, dataBrokers: brokers) } } diff --git a/SharedPackages/DataBrokerProtectionCore/Tests/DataBrokerProtectionCoreTests/DBPUICommunicationViewModelScanStateExtensionsTests.swift b/SharedPackages/DataBrokerProtectionCore/Tests/DataBrokerProtectionCoreTests/DBPUICommunicationViewModelScanStateExtensionsTests.swift index afc40868635..5a5c2143e06 100644 --- a/SharedPackages/DataBrokerProtectionCore/Tests/DataBrokerProtectionCoreTests/DBPUICommunicationViewModelScanStateExtensionsTests.swift +++ b/SharedPackages/DataBrokerProtectionCore/Tests/DataBrokerProtectionCoreTests/DBPUICommunicationViewModelScanStateExtensionsTests.swift @@ -409,6 +409,20 @@ final class DBPUICommunicationViewModelScanStateExtensionsTests: XCTestCase { XCTAssertTrue(areDatesEqualsOnDayMonthAndYear(date1: Date().tomorrow, date2: Date(timeIntervalSince1970: result.scanSchedule.nextScan.date))) } + func testNextScans_whenPreferredRunDateIsInThePast_thenDisplayDateIsClampedToNow() { + let pastPreferredRunDate = Date().addingTimeInterval(-3600) + let now = Date() + + let brokerProfileQueryData: [BrokerProfileQueryData] = [ + .mock(dataBrokerName: "Broker #1", url: "broker1.com", preferredRunDate: pastPreferredRunDate) + ] + + let result = DBPUIScanAndOptOutMaintenanceState(from: brokerProfileQueryData) + + let nextScanDate = Date(timeIntervalSince1970: result.scanSchedule.nextScan.date) + XCTAssertGreaterThanOrEqual(nextScanDate, now) + } + func testBrokersWithMixedScanProgress_areOrderedByLastRunDate_andHaveCorrectStatus() { // Given