@@ -164,33 +164,37 @@ extension CardValidatorTests {
164
164
expiryYear: " 2021 " ,
165
165
expectedResult: . success( ExpiryDate ( month: 11 , year: 2021 ) ) )
166
166
167
- let dateComponents2040 = stubCalendar. dateFromComponentsCalledWith
168
- XCTAssertEqual ( dateComponents2040? . month, 11 )
169
- XCTAssertEqual ( dateComponents2040? . year, 2021 )
167
+ let components = stubCalendar. dateFromComponentsCalledWith
168
+ XCTAssertEqual ( components? . month, 11 )
169
+ XCTAssertEqual ( components? . year, 2021 )
170
+ }
170
171
171
- test_validate (
172
- expiryMonth: " 11 " ,
173
- expiryYear: " 2021 " ,
174
- expectedResult: . success( ExpiryDate ( month: 11 , year: 2021 ) ) )
172
+ func test_validate_expiryMonthYearString_providedMontInThePast_SameYear_returnsCorrectError( ) {
173
+ let formatter = DateFormatter ( )
174
+ formatter. dateFormat = " yyyy/MM/dd HH:mm "
175
175
176
- let dateComponents40 = stubCalendar. dateFromComponentsCalledWith
177
- XCTAssertEqual ( dateComponents40? . month, 11 )
178
- XCTAssertEqual ( dateComponents40? . year, 2021 )
176
+ stubCalendar. currentDateToReturn = formatter. date ( from: " 2023/06/20 00:00 " )
177
+
178
+ test_validate (
179
+ expiryMonth: " 05 " ,
180
+ expiryYear: " 2023 " ,
181
+ expectedResult: . failure( . inThePast) )
179
182
}
180
183
181
184
func test_validate_expiryMonthYearString_providedDateInThePast_returnsCorrectError( ) {
182
185
let formatter = DateFormatter ( )
183
186
formatter. dateFormat = " yyyy/MM/dd HH:mm "
184
187
185
- stubCalendar. dateFromComponentsToReturn = formatter. date ( from: " 2020/10/01 00:00" )
188
+ stubCalendar. currentDateToReturn = formatter. date ( from: " 2023/05/25 00:00" )
186
189
187
190
test_validate (
188
191
expiryMonth: " 11 " ,
189
- expiryYear: " 2040 " ,
192
+ expiryYear: " 2022 " ,
190
193
expectedResult: . failure( . inThePast) )
191
194
}
192
195
193
196
func test_validate_expiryMonthYearString_calendarDateReturnsNil_returnsCorrectError( ) {
197
+ stubCalendar. forceToReturnNilComponents = true
194
198
stubCalendar. dateFromComponentsToReturn = nil
195
199
test_validate (
196
200
expiryMonth: " 11 " ,
@@ -247,7 +251,7 @@ extension CardValidatorTests {
247
251
let formatter = DateFormatter ( )
248
252
formatter. dateFormat = " yyyy/MM/dd HH:mm "
249
253
250
- stubCalendar. dateFromComponentsToReturn = formatter. date ( from: " 2099 /10/01 00:00" )
254
+ stubCalendar. currentDateToReturn = formatter. date ( from: " 2039 /10/01 00:00" )
251
255
252
256
test_validate (
253
257
expiryMonth: 11 ,
@@ -273,7 +277,9 @@ extension CardValidatorTests {
273
277
private func test_validate(
274
278
expiryMonth: String ,
275
279
expiryYear: String ,
276
- expectedResult: Result < ExpiryDate , ValidationError . ExpiryDate >
280
+ expectedResult: Result < ExpiryDate , ValidationError . ExpiryDate > ,
281
+ file: StaticString = #file,
282
+ line: UInt = #line
277
283
) {
278
284
let result = subject. validate (
279
285
expiryMonth: expiryMonth,
@@ -284,18 +290,18 @@ extension CardValidatorTests {
284
290
285
291
switch expectedResult {
286
292
case . success( let expectedExpiryDate) :
287
- XCTAssertEqual ( expiryDate, expectedExpiryDate)
293
+ XCTAssertEqual ( expiryDate, expectedExpiryDate, file : file , line : line )
288
294
case . failure( let error) :
289
- XCTFail ( error. localizedDescription)
295
+ XCTFail ( error. localizedDescription, file : file , line : line )
290
296
}
291
297
292
298
case . failure( let error) :
293
299
294
300
switch expectedResult {
295
301
case . success( let expiryDate) :
296
- XCTFail ( " Unexpected successful expiry date validation: \( expiryDate) . " )
302
+ XCTFail ( " Unexpected successful expiry date validation: \( expiryDate) . " , file : file , line : line )
297
303
case . failure( let expectedError) :
298
- XCTAssertEqual ( expectedError, error)
304
+ XCTAssertEqual ( expectedError, error, file : file , line : line )
299
305
}
300
306
}
301
307
}
0 commit comments