Skip to content

Commit 2d31f8a

Browse files
committed
Merge branch 'feat/8108-iap-integration' into feat/8045-domain-selector-updates
* feat/8108-iap-integration: Update sample stats with averageOrderValue from mock Update metadata strings Update release notes for 11.3 Add averageOrderValue to OrderStatsV4Totals storage entity Use Decimal type for consistent stats data handling Add Average Order Value to OrderStatsV4Totals model
2 parents a04aab2 + 9fdf543 commit 2d31f8a

23 files changed

+972
-22
lines changed

Fakes/Fakes/Networking.generated.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -604,7 +604,8 @@ extension Networking.OrderStatsV4Totals {
604604
taxes: .fake(),
605605
shipping: .fake(),
606606
netRevenue: .fake(),
607-
totalProducts: .fake()
607+
totalProducts: .fake(),
608+
averageOrderValue: .fake()
608609
)
609610
}
610611
}

Networking/Networking/Model/Copiable/Models+Copiable.generated.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -729,7 +729,8 @@ extension Networking.OrderStatsV4Totals {
729729
taxes: CopiableProp<Decimal> = .copy,
730730
shipping: CopiableProp<Decimal> = .copy,
731731
netRevenue: CopiableProp<Decimal> = .copy,
732-
totalProducts: NullableCopiableProp<Int> = .copy
732+
totalProducts: NullableCopiableProp<Int> = .copy,
733+
averageOrderValue: CopiableProp<Decimal> = .copy
733734
) -> Networking.OrderStatsV4Totals {
734735
let totalOrders = totalOrders ?? self.totalOrders
735736
let totalItemsSold = totalItemsSold ?? self.totalItemsSold
@@ -741,6 +742,7 @@ extension Networking.OrderStatsV4Totals {
741742
let shipping = shipping ?? self.shipping
742743
let netRevenue = netRevenue ?? self.netRevenue
743744
let totalProducts = totalProducts ?? self.totalProducts
745+
let averageOrderValue = averageOrderValue ?? self.averageOrderValue
744746

745747
return Networking.OrderStatsV4Totals(
746748
totalOrders: totalOrders,
@@ -752,7 +754,8 @@ extension Networking.OrderStatsV4Totals {
752754
taxes: taxes,
753755
shipping: shipping,
754756
netRevenue: netRevenue,
755-
totalProducts: totalProducts
757+
totalProducts: totalProducts,
758+
averageOrderValue: averageOrderValue
756759
)
757760
}
758761
}

Networking/Networking/Model/Stats/OrderStatsV4Totals.swift

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public struct OrderStatsV4Totals: Decodable, Equatable, GeneratedCopiable, Gener
1313
public let shipping: Decimal
1414
public let netRevenue: Decimal
1515
public let totalProducts: Int?
16+
public let averageOrderValue: Decimal
1617

1718
public init(totalOrders: Int,
1819
totalItemsSold: Int,
@@ -23,7 +24,8 @@ public struct OrderStatsV4Totals: Decodable, Equatable, GeneratedCopiable, Gener
2324
taxes: Decimal,
2425
shipping: Decimal,
2526
netRevenue: Decimal,
26-
totalProducts: Int?) {
27+
totalProducts: Int?,
28+
averageOrderValue: Decimal) {
2729
self.totalOrders = totalOrders
2830
self.totalItemsSold = totalItemsSold
2931
self.grossRevenue = grossRevenue
@@ -34,6 +36,7 @@ public struct OrderStatsV4Totals: Decodable, Equatable, GeneratedCopiable, Gener
3436
self.shipping = shipping
3537
self.netRevenue = netRevenue
3638
self.totalProducts = totalProducts
39+
self.averageOrderValue = averageOrderValue
3740
}
3841

3942
public init(from decoder: Decoder) throws {
@@ -48,6 +51,7 @@ public struct OrderStatsV4Totals: Decodable, Equatable, GeneratedCopiable, Gener
4851
let shipping = try container.decode(Decimal.self, forKey: .shipping)
4952
let netRevenue = try container.decode(Decimal.self, forKey: .netRevenue)
5053
let totalProducts = try container.decodeIfPresent(Int.self, forKey: .products)
54+
let averageOrderValue = try container.decode(Decimal.self, forKey: .averageOrderValue)
5155

5256
self.init(totalOrders: totalOrders,
5357
totalItemsSold: totalItemsSold,
@@ -58,7 +62,8 @@ public struct OrderStatsV4Totals: Decodable, Equatable, GeneratedCopiable, Gener
5862
taxes: taxes,
5963
shipping: shipping,
6064
netRevenue: netRevenue,
61-
totalProducts: totalProducts)
65+
totalProducts: totalProducts,
66+
averageOrderValue: averageOrderValue)
6267
}
6368
}
6469

@@ -77,5 +82,6 @@ private extension OrderStatsV4Totals {
7782
case shipping
7883
case netRevenue = "net_revenue"
7984
case products
85+
case averageOrderValue = "avg_order_value"
8086
}
8187
}

Networking/NetworkingTests/Mapper/OrderStatsMapperV4Tests.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ final class OrderStatsV4MapperTests: XCTestCase {
3030
XCTAssertEqual(hourlyStats.totals.shipping, 0)
3131
XCTAssertEqual(hourlyStats.totals.netRevenue, 800)
3232
XCTAssertEqual(hourlyStats.totals.totalProducts, 2)
33+
XCTAssertEqual(hourlyStats.totals.averageOrderValue, 266)
3334

3435
XCTAssertEqual(hourlyStats.intervals.count, 24)
3536

@@ -47,6 +48,7 @@ final class OrderStatsV4MapperTests: XCTestCase {
4748
XCTAssertEqual(nonZeroHourTotals.shipping, 0)
4849
XCTAssertEqual(nonZeroHourTotals.netRevenue, 350)
4950
XCTAssertNil(nonZeroHourTotals.totalProducts)
51+
XCTAssertEqual(nonZeroHourTotals.averageOrderValue, 175)
5052
}
5153

5254
/// Verifies that all of the daily unit OrderStatsV4 fields are parsed correctly.
@@ -70,6 +72,7 @@ final class OrderStatsV4MapperTests: XCTestCase {
7072
XCTAssertEqual(dailyStats.totals.shipping, 0)
7173
XCTAssertEqual(dailyStats.totals.netRevenue, 800)
7274
XCTAssertEqual(dailyStats.totals.totalProducts, 2)
75+
XCTAssertEqual(dailyStats.totals.averageOrderValue, 266)
7376

7477
XCTAssertEqual(dailyStats.intervals.count, 1)
7578

@@ -87,6 +90,7 @@ final class OrderStatsV4MapperTests: XCTestCase {
8790
XCTAssertEqual(nonZeroDayTotals.shipping, 0)
8891
XCTAssertEqual(nonZeroDayTotals.netRevenue, 800)
8992
XCTAssertNil(nonZeroDayTotals.totalProducts)
93+
XCTAssertEqual(nonZeroDayTotals.averageOrderValue, 266)
9094
}
9195

9296
/// Verifies that all of the weekly unit OrderStatsV4 fields are parsed correctly.
@@ -110,6 +114,7 @@ final class OrderStatsV4MapperTests: XCTestCase {
110114
XCTAssertEqual(weeklyStats.totals.shipping, 0)
111115
XCTAssertEqual(weeklyStats.totals.netRevenue, 800)
112116
XCTAssertEqual(weeklyStats.totals.totalProducts, 2)
117+
XCTAssertEqual(weeklyStats.totals.averageOrderValue, 266)
113118

114119
XCTAssertEqual(weeklyStats.intervals.count, 2)
115120

@@ -127,6 +132,7 @@ final class OrderStatsV4MapperTests: XCTestCase {
127132
XCTAssertEqual(nonZeroWeekTotals.shipping, 0)
128133
XCTAssertEqual(nonZeroWeekTotals.netRevenue, 800)
129134
XCTAssertNil(nonZeroWeekTotals.totalProducts)
135+
XCTAssertEqual(nonZeroWeekTotals.averageOrderValue, 266)
130136
}
131137

132138
/// Verifies that all of the monthly unit OrderStatsV4 fields are parsed correctly.
@@ -150,6 +156,7 @@ final class OrderStatsV4MapperTests: XCTestCase {
150156
XCTAssertEqual(monthlyStats.totals.shipping, 0)
151157
XCTAssertEqual(monthlyStats.totals.netRevenue, 800)
152158
XCTAssertEqual(monthlyStats.totals.totalProducts, 2)
159+
XCTAssertEqual(monthlyStats.totals.averageOrderValue, 266)
153160

154161
XCTAssertEqual(monthlyStats.intervals.count, 1)
155162

@@ -167,6 +174,7 @@ final class OrderStatsV4MapperTests: XCTestCase {
167174
XCTAssertEqual(nonZeroMonthTotals.shipping, 0)
168175
XCTAssertEqual(nonZeroMonthTotals.netRevenue, 800)
169176
XCTAssertNil(nonZeroMonthTotals.totalProducts)
177+
XCTAssertEqual(nonZeroMonthTotals.averageOrderValue, 266)
170178
}
171179

172180
/// Verifies that all of the yearly unit OrderStatsV4 fields are parsed correctly.
@@ -190,6 +198,7 @@ final class OrderStatsV4MapperTests: XCTestCase {
190198
XCTAssertEqual(yearlyStats.totals.shipping, 0)
191199
XCTAssertEqual(yearlyStats.totals.netRevenue, 800)
192200
XCTAssertEqual(yearlyStats.totals.totalProducts, 2)
201+
XCTAssertEqual(yearlyStats.totals.averageOrderValue, 266)
193202

194203
XCTAssertEqual(yearlyStats.intervals.count, 1)
195204

@@ -207,6 +216,7 @@ final class OrderStatsV4MapperTests: XCTestCase {
207216
XCTAssertEqual(nonZeroYearTotals.shipping, 0)
208217
XCTAssertEqual(nonZeroYearTotals.netRevenue, 800)
209218
XCTAssertNil(nonZeroYearTotals.totalProducts)
219+
XCTAssertEqual(nonZeroYearTotals.averageOrderValue, 266)
210220
}
211221
}
212222

Networking/NetworkingTests/Responses/order-stats-v4-daily.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"shipping": 0,
1212
"net_revenue": 800,
1313
"products": 2,
14+
"avg_order_value": 266,
1415
"segments": []
1516
},
1617
"intervals": [
@@ -30,6 +31,7 @@
3031
"taxes": 0,
3132
"shipping": 0,
3233
"net_revenue": 800,
34+
"avg_order_value": 266,
3335
"segments": []
3436
}
3537
}

Networking/NetworkingTests/Responses/order-stats-v4-defaults.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"taxes": 0,
1111
"shipping": 0,
1212
"net_revenue": 800,
13+
"avg_order_value": 266,
1314
"products": 2,
1415
"segments": []
1516
},
@@ -30,6 +31,7 @@
3031
"taxes": 0,
3132
"shipping": 0,
3233
"net_revenue": 800,
34+
"avg_order_value": 266,
3335
"segments": []
3436
}
3537
},
@@ -49,6 +51,7 @@
4951
"taxes": 0,
5052
"shipping": 0,
5153
"net_revenue": 0,
54+
"avg_order_value": 0,
5255
"segments": []
5356
}
5457
}

0 commit comments

Comments
 (0)