Skip to content

Commit ddee353

Browse files
authored
Merge pull request #2 from cruisediary/develop
Fix DateValidatorType
2 parents 33e7b9a + 30e011b commit ddee353

File tree

2 files changed

+52
-5
lines changed

2 files changed

+52
-5
lines changed

Example/RxValidatorExample/RxValidatorExampleTests/DateValidateTests.swift

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class DateValidateTests: XCTestCase {
2020
func testDateValidation() {
2121

2222
let targetDate = "2018-05-29T12:00+09:00".date(format: .iso8601Auto)!.absoluteDate
23-
let afterTargetDate = "2018-05-29T12:00+09:00".date(format: .iso8601Auto)!.absoluteDate
23+
let afterTargetDate = "2018-05-29T12:01+09:00".date(format: .iso8601Auto)!.absoluteDate
2424
let beforeTargetDate = "2018-05-29T11:59+09:00".date(format: .iso8601Auto)!.absoluteDate
2525
let sameTargetDate = "2018-05-29T12:00+09:00".date(format: .iso8601Auto)!.absoluteDate
2626

@@ -49,6 +49,53 @@ class DateValidateTests: XCTestCase {
4949
expect(resultDate).toEventually(equal(targetDate))
5050
}
5151

52+
func testDateValidationShouldBeforeThenWithSameTargetDate() {
53+
// given
54+
let targetDate = "2018-05-29T12:00+09:00".date(format: .iso8601Auto)!.absoluteDate
55+
let sameTargetDate = "2018-05-29T12:00+09:00".date(format: .iso8601Auto)!.absoluteDate
56+
var resultDate: Date?
57+
var resultError: RxValidatorResult = .valid
58+
let underTest = DateValidationTarget(targetDate)
59+
60+
// when
61+
underTest
62+
.validate(.shouldBeforeThen(date: sameTargetDate))
63+
.asObservable()
64+
.subscribe(onNext: { (date) in
65+
resultDate = date
66+
}, onError: { (error) in
67+
resultError = RxValidatorResult.determine(error: error)
68+
}).disposed(by: disposeBag)
69+
70+
// then
71+
// it should not before date
72+
expect(resultError).toEventually(equal(RxValidatorResult.notBeforeDate))
73+
expect(resultDate).toEventually(beNil())
74+
}
75+
76+
func testDateValidationShouldAfterThenWithSameTargetDate() {
77+
// given
78+
let targetDate = "2018-05-29T12:00+09:00".date(format: .iso8601Auto)!.absoluteDate
79+
let sameTargetDate = "2018-05-29T12:00+09:00".date(format: .iso8601Auto)!.absoluteDate
80+
var resultDate: Date?
81+
var resultError: RxValidatorResult = .valid
82+
let underTest = DateValidationTarget(targetDate)
83+
84+
// when
85+
underTest
86+
.validate(.shouldAfterThen(date: sameTargetDate))
87+
.asObservable()
88+
.subscribe(onNext: { (date) in
89+
resultDate = date
90+
}, onError: { (error) in
91+
resultError = RxValidatorResult.determine(error: error)
92+
}).disposed(by: disposeBag)
93+
94+
// then
95+
// it should not after date
96+
expect(resultError).toEventually(equal(RxValidatorResult.notAfterDate))
97+
expect(resultDate).toEventually(beNil())
98+
}
5299

53100
func testDateValidationWithAllday() {
54101
let targetDate = "2018-05-29T12:00:00+09:00".date(format: .iso8601Auto)!.absoluteDate

Sources/rules/Date/DateValidatorType.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,22 +30,22 @@ public enum DateValidatorType {
3030
}
3131
case let .shouldBeforeThen(comparison):
3232
let result = calendar.compare(value, to: comparison, toGranularity: granularity)
33-
if result == .orderedDescending {
33+
if result != .orderedAscending {
3434
throw RxValidatorResult.notBeforeDate
3535
}
3636
case let .shouldBeforeOrSameThen(comparison):
3737
let result = calendar.compare(value, to: comparison, toGranularity: granularity)
38-
if result == .orderedAscending {
38+
if result == .orderedDescending {
3939
throw RxValidatorResult.notBeforeDate
4040
}
4141
case let .shouldAfterThen(comparison):
4242
let result = calendar.compare(value, to: comparison, toGranularity: granularity)
43-
if result == .orderedAscending {
43+
if result != .orderedDescending {
4444
throw RxValidatorResult.notAfterDate
4545
}
4646
case let .shouldAfterOrSameThen(comparison):
4747
let result = calendar.compare(value, to: comparison, toGranularity: granularity)
48-
if !(result != .orderedAscending) {
48+
if result == .orderedAscending {
4949
throw RxValidatorResult.notAfterDate
5050
}
5151
case let .shouldBeCloseDates(comparison, termOfDays):

0 commit comments

Comments
 (0)