stdnum
Version:
Standard Number Validation
95 lines (68 loc) • 2.54 kB
text/typescript
import { validate, format } from './nino';
import { InvalidLength, InvalidFormat } from '../exceptions';
describe('gb/nino', () => {
it('format:HH 012345 D', () => {
const result = format('HH 012345 D');
expect(result).toEqual('HH012345D');
});
it('validate:HH012345D', () => {
// A valid number with a suffix
const result = validate('HH012345D');
expect(result.isValid && result.compact).toEqual('HH012345D');
});
it('validate:TJ012345D', () => {
// A valid number with a suffix
const result = validate('TJ012345D');
expect(result.isValid && result.compact).toEqual('TJ012345D');
});
it('validate:hh012345d', () => {
// A valid number with lowercase letters
const result = validate('hh012345d');
expect(result.isValid && result.compact).toEqual('HH012345D');
});
it('validate:HH012345', () => {
// A valid number without a suffix
const result = validate('HH012345');
expect(result.isValid && result.compact).toEqual('HH012345');
});
it('validate:HH01234', () => {
// Invalid length, too short
const result = validate('HH01234');
expect(result.error).toBeInstanceOf(InvalidLength);
});
it('validate:HH0123456D', () => {
// Invalid length, too long
const result = validate('HH0123456D');
expect(result.error).toBeInstanceOf(InvalidLength);
});
it('validate:00012345D', () => {
// Invalid numeric prefix, valid numbers, suffix
const result = validate('00012345D');
expect(result.error).toBeInstanceOf(InvalidFormat);
});
it('validate:XO012345D', () => {
// Invalid letter, valid numbers, suffix
const result = validate('XO012345D');
expect(result.error).toBeInstanceOf(InvalidFormat);
});
it('validate:XO012345', () => {
// Invalid letter, valid numbers, without suffix
const result = validate('XO012345');
expect(result.error).toBeInstanceOf(InvalidFormat);
});
it('validate:HH01A345D', () => {
// Valid prefix, invalid numeric section, with suffix
const result = validate('HH01A345D');
expect(result.error).toBeInstanceOf(InvalidFormat);
});
it('validate:HH012345E', () => {
// Valid prefix, valid numeric section, invalid suffix
const result = validate('HH012345E');
expect(result.error).toBeInstanceOf(InvalidFormat);
});
it('validate:TO012345D', () => {
// Invalid prefix, valid numeric section, valid suffix
const result = validate('TO012345D');
expect(result.error).toBeInstanceOf(InvalidFormat);
});
});