Commit f383de09 authored by Jesse Pollak's avatar Jesse Pollak Committed by GitHub
Browse files

Merge pull request #45 from a-wart/validate-expiry-string

Allow «validateCardExpiry()» to recieve plain card expiry input value
Showing with 21 additions and 2 deletions
+21 -2
......@@ -101,13 +101,14 @@ Example:
Payment.fns.validateCardNumber('4242 4242 4242 4242'); //=> true
```
### Payment.fns.validateCardExpiry(month, year)
### Payment.fns.validateCardExpiry(month, year), Payment.fns.validateCardExpiry('month / year')
Validates a card expiry:
* Validates numbers
* Validates in the future
* Supports year shorthand
* Supports formatted as `formatCardExpiry` input value
Example:
......@@ -115,6 +116,8 @@ Example:
Payment.fns.validateCardExpiry('05', '20'); //=> true
Payment.fns.validateCardExpiry('05', '2015'); //=> true
Payment.fns.validateCardExpiry('05', '05'); //=> false
Payment.fns.validateCardExpiry('05 / 25'); //=> true
Payment.fns.validateCardExpiry('05 / 2015'); //=> false
```
### Payment.fns.validateCardCVC(cvc, type)
......
......@@ -495,9 +495,11 @@ var payment =
return (ref = num.length, indexOf.call(card.length, ref) >= 0) && (card.luhn === false || luhnCheck(num));
},
validateCardExpiry: function(month, year) {
var currentTime, expiry, prefix, ref;
var currentTime, expiry, prefix, ref, ref1;
if (typeof month === 'object' && 'month' in month) {
ref = month, month = ref.month, year = ref.year;
} else if (typeof month === 'string' && indexOf.call(month, '/') >= 0) {
ref1 = Payment.fns.cardExpiryVal(month), month = ref1.month, year = ref1.year;
}
if (!(month && year)) {
return false;
......
......@@ -141,6 +141,18 @@ describe 'payment', ->
topic = Payment.fns.validateCardExpiry currentTime.getMonth() + '', currentTime.getFullYear() + ''
assert.equal topic, true
it 'should validate a string with two digits month and year delimited by slash', ->
topic = Payment.fns.validateCardExpiry '03 / 25'
assert.equal topic, true
it 'should validate a string with two digits month and four digits year delimited by slash', ->
topic = Payment.fns.validateCardExpiry '03 / 2025'
assert.equal topic, true
it 'should fail if expires is string mm/yyyy where the year is before the current year', ->
topic = Payment.fns.validateCardExpiry '03 / 205'
assert.equal topic, false
it 'that has non-numbers', ->
topic = Payment.fns.validateCardExpiry 'h12', '3300'
assert.equal topic, false
......
......@@ -391,6 +391,8 @@ class Payment
# Allow passing an object
if typeof month is 'object' and 'month' of month
{month, year} = month
else if typeof month is 'string' and '/' in month
{month, year} = Payment.fns.cardExpiryVal(month)
return false unless month and year
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment