Skip to content

Commit 1dc6560

Browse files
committed
Fix delta calculation when previous value is zero and current value is negative
1 parent f4e316b commit 1dc6560

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

WooCommerce/Classes/ViewRelated/Dashboard/Factories/StatsDataTextFormatter.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,10 @@ extension StatsDataTextFormatter {
127127
return DeltaPercentage(value: 0) // Missing or equal values: 0% change
128128
}
129129

130-
guard previousValue > 0 else {
131-
return DeltaPercentage(value: 1) // Previous value was 0: 100% change
130+
// If the previous value was 0, return a 100% or -100% change
131+
guard previousValue != 0 else {
132+
let deltaValue: Decimal = currentValue > 0 ? 1 : -1
133+
return DeltaPercentage(value: deltaValue)
132134
}
133135

134136
return DeltaPercentage(value: (currentValue - previousValue) / previousValue)

WooCommerce/WooCommerceTests/ViewRelated/Dashboard/StatsDataTextFormatterTests.swift

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ final class StatsDataTextFormatterTests: XCTestCase {
307307
XCTAssertEqual(delta.direction, .zero)
308308
}
309309

310-
func test_createDeltaPercentage_returns_100_percent_change_when_previous_value_is_zero() {
310+
func test_createDeltaPercentage_returns_positive_100_percent_change_when_previous_value_is_zero() {
311311
// Given
312312
let previousValue: Double = 0
313313
let currentValue: Double = 10
@@ -320,6 +320,19 @@ final class StatsDataTextFormatterTests: XCTestCase {
320320
XCTAssertEqual(delta.direction, .positive)
321321
}
322322

323+
func test_createDeltaPercentage_returns_negative_100_percent_change_when_previous_value_is_zero() {
324+
// Given
325+
let previousValue: Double = 0
326+
let currentValue: Double = -10
327+
328+
// When
329+
let delta = StatsDataTextFormatter.createDeltaPercentage(from: previousValue, to: currentValue)
330+
331+
// Then
332+
XCTAssertEqual(delta.string, "-100%")
333+
XCTAssertEqual(delta.direction, .negative)
334+
}
335+
323336
func test_createDeltaPercentage_returns_negative_100_percent_change_when_current_value_is_zero() {
324337
// Given
325338
let previousValue: Double = 10

0 commit comments

Comments
 (0)