Skip to content

Commit e6f6d15

Browse files
committed
Unit test: check if date created default date is the same as today date (no times, only dates)
1 parent b9a462d commit e6f6d15

File tree

2 files changed

+36
-18
lines changed

2 files changed

+36
-18
lines changed

Networking/Networking/Model/Order.swift

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,23 +13,12 @@ public struct Order: Decodable {
1313
public let currency: String
1414
public let customerNote: String?
1515

16+
public let dateCreated: Date
1617
public let dateModified: Date
1718
public let datePaid: Date?
1819

1920
private let dateCreatedString: String?
2021
private let dateModifiedString: String?
21-
22-
private(set) public lazy var dateCreated: Date = {
23-
let format = ISO8601DateFormatter()
24-
25-
guard let dateString = dateCreatedString else {
26-
return Date()
27-
}
28-
29-
if let date = format.date(from: dateString) {
30-
return date
31-
}
32-
}()
3322

3423
public let discountTotal: String
3524
public let discountTax: String
@@ -52,12 +41,36 @@ public struct Order: Decodable {
5241
self.currency = currency
5342
self.customerNote = customerNote
5443

55-
self.dateCreatedString = dateCreatedString
44+
self.dateCreatedString = dateCreatedString == nil ? "" : dateCreatedString
5645
self.dateModifiedString = dateModifiedString
5746
self.datePaid = datePaid
5847

48+
let format = ISO8601DateFormatter()
49+
var dateCreated: Date?
50+
if let createdString = dateCreatedString {
51+
dateCreated = format.date(from: createdString)
52+
}
53+
54+
if let dateCreated = dateCreated {
55+
self.dateCreated = dateCreated
56+
} else {
57+
self.dateCreated = Date()
58+
}
59+
60+
var dateModified: Date?
61+
if let modifiedString = dateModifiedString {
62+
dateModified = format.date(from: modifiedString)
63+
}
64+
65+
if let dateModified = dateModified {
66+
self.dateModified = dateModified
67+
} else {
68+
self.dateModified = Date()
69+
}
70+
5971
self.discountTotal = discountTotal
6072
self.discountTax = discountTax
73+
self.shippingTotal = shippingTotal
6174
self.shippingTax = shippingTax
6275
self.total = total
6376
self.totalTax = totalTax
@@ -78,9 +91,9 @@ public struct Order: Decodable {
7891
let currency = try container.decode(String.self, forKey: .currency)
7992
let customerNote = try container.decode(String.self, forKey: .customerNote)
8093

81-
let dateCreatedString = try container.decode(String.self, forKey: .dateCreatedString)
82-
let dateModifiedString = try container.decode(String.self, forKey: .dateModifiedString)
83-
let datePaid = try container.decode(Date.self, forKey: .datePaid)
94+
let dateCreatedString = try container.decodeIfPresent(String.self, forKey: .dateCreatedString)
95+
let dateModifiedString = try container.decodeIfPresent(String.self, forKey: .dateModifiedString)
96+
let datePaid = try container.decodeIfPresent(Date.self, forKey: .datePaid)
8497

8598
let discountTotal = try container.decode(String.self, forKey: .discountTotal)
8699
let discountTax = try container.decode(String.self, forKey: .discountTax)

Networking/NetworkingTests/Mapper/OrderListMapperTests.swift

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,12 +79,17 @@ class OrderListMapperTests: XCTestCase {
7979

8080
/// Verifies that an Order in a broken state does [gets default values] | [gets skipped while parsing]
8181
///
82-
func testOrderHasDefaultValuesWhenInInvalidState() {
82+
func testOrderHasDefaultDateCreatedWhenNullDateReceived() {
8383
let orders = mapLoadBrokenOrderResponse()
8484
XCTAssert(orders.count == 1)
8585

8686
let brokenOrder = orders[0]
87-
87+
let format = DateFormatter()
88+
format.dateStyle = .short
89+
let orderCreatedString = format.string(from: brokenOrder.dateCreated)
90+
let todayCreatedString = format.string(from: Date())
91+
92+
XCTAssert(orderCreatedString == todayCreatedString)
8893
}
8994
}
9095

0 commit comments

Comments
 (0)