Telegram Web K with changes to work inside I2P
https://web.telegram.i2p/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.7 KiB
59 lines
1.7 KiB
import cardFormattingPatterns from '../helpers/cards/cardFormattingPatterns'; |
|
import formatValueByPattern from '../helpers/cards/formatValueByPattern'; |
|
import {validateCardExpiry, validateCardNumber} from '../helpers/cards/validateCard'; |
|
|
|
describe('Card number', () => { |
|
test('Format', () => { |
|
const data = [ |
|
['4242424242424242', '4242 4242 4242 4242'], |
|
['371758885524003', '3717 588855 24003'] |
|
]; |
|
|
|
data.forEach(([plain, formatted]) => { |
|
const result = formatValueByPattern(cardFormattingPatterns.cardNumber, plain); |
|
expect(result.value).toEqual(formatted); |
|
}); |
|
}); |
|
|
|
test('Validate', () => { |
|
const data = [ |
|
['4242424242424242', null], |
|
['4242424242424241', 'invalid'], |
|
['424242424242424', 'incomplete'] |
|
]; |
|
|
|
data.forEach(([cardNumber, code]) => { |
|
const result = validateCardNumber(cardNumber); |
|
if(code) { |
|
expect(result.code).toEqual(code); |
|
} else { |
|
expect(result).toEqual(null); |
|
} |
|
}); |
|
}); |
|
}); |
|
|
|
describe('Expiry date', () => { |
|
const joiner = '/'; |
|
const getExpiryDate = (date: Date) => `${date.getMonth()}${joiner}${date.getFullYear() % 100}`; |
|
|
|
test('Format', () => { |
|
const month = 10; |
|
const year = 20; |
|
|
|
const {value} = formatValueByPattern(cardFormattingPatterns.cardExpiry, `${month}${year}`); |
|
expect(value).toEqual(`${month}${joiner}${year}`); |
|
}); |
|
|
|
test('Expired', () => { |
|
const date = new Date(); |
|
date.setMonth(date.getMonth() - 1); |
|
expect(validateCardExpiry(getExpiryDate(date))).toBeTruthy(); |
|
}); |
|
|
|
test('Nonexpired', () => { |
|
const date = new Date(); |
|
date.setFullYear(date.getFullYear() + 1); |
|
expect(validateCardExpiry(getExpiryDate(date))).toEqual(null); |
|
}); |
|
});
|
|
|