Skip to content

Commit 38a6175

Browse files
authored
Merge pull request #2177 from woocommerce/issue/956-fix-age-from
Fix Age.from returning `today` instead of `upcoming`
2 parents 2d41565 + fb1f856 commit 38a6175

File tree

3 files changed

+45
-2
lines changed

3 files changed

+45
-2
lines changed

WooCommerce/Classes/Model/Age.swift

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,12 @@ extension Age {
5353
return .yesterday
5454
}
5555

56-
if let day = dateComponents.day, day == 0 {
56+
if let month = dateComponents.month,
57+
let weekOfYear = dateComponents.weekOfYear,
58+
let day = dateComponents.day,
59+
month == 0,
60+
weekOfYear == 0,
61+
day == 0 {
5762
return .today
5863
}
5964

WooCommerce/Classes/ViewRelated/Orders/OrdersViewModel.swift

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11

22
import Foundation
33
import Yosemite
4+
import class AutomatticTracks.CrashLogging
45
import protocol Storage.StorageManagerType
56

67
/// ViewModel for `OrdersViewController`.
@@ -89,7 +90,17 @@ final class OrdersViewModel {
8990
///
9091
func activateAndForwardUpdates(to tableView: UITableView) {
9192
resultsController.startForwardingEvents(to: tableView)
92-
try? resultsController.performFetch()
93+
performFetch()
94+
}
95+
96+
/// Execute the `resultsController` query, logging the error if there's any.
97+
///
98+
private func performFetch() {
99+
do {
100+
try resultsController.performFetch()
101+
} catch {
102+
CrashLogging.logError(error)
103+
}
93104
}
94105

95106
/// Returns what `OrderAction` should be used when synchronizing.

WooCommerce/WooCommerceTests/Model/AgeTests.swift

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,4 +122,31 @@ final class AgeTests: XCTestCase {
122122

123123
XCTAssertEqual(age, .upcoming)
124124
}
125+
126+
func testItReturnsUpcomingIfTheDateFromIsExactlyAMonthAfterDateTo() {
127+
let dateFrom = dateFormatter.date(from: "2020-04-08T00:00:00Z")!
128+
let dateTo = dateFormatter.date(from: "2020-03-08T00:00:00Z")!
129+
130+
let age = Age.from(startDate: dateFrom, toDate: dateTo, using: calendar)
131+
132+
XCTAssertEqual(age, .upcoming)
133+
}
134+
135+
func testItReturnsUpcomingIfTheDateFromIsExactlyAWeekAfterDateTo() {
136+
let dateFrom = dateFormatter.date(from: "2020-03-15T00:00:00Z")!
137+
let dateTo = dateFormatter.date(from: "2020-03-08T00:00:00Z")!
138+
139+
let age = Age.from(startDate: dateFrom, toDate: dateTo, using: calendar)
140+
141+
XCTAssertEqual(age, .upcoming)
142+
}
143+
144+
func testItReturnsUpcomingIfTheDateFromIsExactlyAYearAfterDateTo() {
145+
let dateFrom = dateFormatter.date(from: "2021-03-08T00:00:00Z")!
146+
let dateTo = dateFormatter.date(from: "2020-03-08T00:00:00Z")!
147+
148+
let age = Age.from(startDate: dateFrom, toDate: dateTo, using: calendar)
149+
150+
XCTAssertEqual(age, .upcoming)
151+
}
125152
}

0 commit comments

Comments
 (0)