Skip to content

Commit 2b4a27f

Browse files
committed
Adds nested property wrapper example test
1 parent 3ea38f9 commit 2b4a27f

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

Tests/BetterCodableTests/DefaultCodableTests.swift

+35
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,41 @@ class DefaultCodableTest_DateStrategy: XCTestCase {
5454
}
5555
}
5656

57+
// MARK: -
58+
// MARK: Nested Property Wrapper
59+
60+
class DefaultCodableTest_NestedPropertyWrapper: XCTestCase {
61+
enum DefaultToNowTimeStampDateValue: DefaultCodableStrategy {
62+
static var defaultValue: DateValue<TimestampStrategy> {
63+
.init(wrappedValue: Date(timeIntervalSince1970: 0))
64+
}
65+
}
66+
67+
struct Fixture: Codable {
68+
@DefaultCodable<DefaultToNowTimeStampDateValue>
69+
@DateValue<TimestampStrategy>
70+
var returnDate: Date
71+
}
72+
73+
func testNestedPropertyWrappersCanMergeDefaultCodableWithDateStrategy() throws {
74+
let _1970 = Date(timeIntervalSince1970: 0)
75+
let _1971 = Date(timeIntervalSince1970: 31536000)
76+
77+
let jsonData1 = #"{ "returnDate": null }"#.data(using: .utf8)!
78+
let jsonData2 = #"{ }"#.data(using: .utf8)!
79+
let jsonData3 = #"{ "returnDate": 31536000 }"#.data(using: .utf8)!
80+
81+
let fixture1 = try JSONDecoder().decode(Fixture.self, from: jsonData1)
82+
let fixture2 = try JSONDecoder().decode(Fixture.self, from: jsonData2)
83+
let fixture3 = try JSONDecoder().decode(Fixture.self, from: jsonData3)
84+
85+
XCTAssertEqual(fixture1.returnDate, _1970)
86+
XCTAssertEqual(fixture2.returnDate, _1970)
87+
XCTAssertEqual(fixture3.returnDate, _1971)
88+
}
89+
}
90+
91+
5792
// MARK: -
5893
// MARK: Types with Containers
5994

0 commit comments

Comments
 (0)