mirror of
https://github.com/danog/CodiceFiscaleJS.git
synced 2024-11-26 20:14:55 +01:00
improved location validation
This commit is contained in:
parent
278fff8d95
commit
90abd3505d
2
dist/codice.fiscale.amd.js
vendored
2
dist/codice.fiscale.amd.js
vendored
File diff suppressed because one or more lines are too long
2
dist/codice.fiscale.commonjs2.js
vendored
2
dist/codice.fiscale.commonjs2.js
vendored
File diff suppressed because one or more lines are too long
2
dist/codice.fiscale.umd.js
vendored
2
dist/codice.fiscale.umd.js
vendored
File diff suppressed because one or more lines are too long
2
dist/codice.fiscale.var.js
vendored
2
dist/codice.fiscale.var.js
vendored
File diff suppressed because one or more lines are too long
24
src/index.js
24
src/index.js
@ -14,7 +14,7 @@ class CodiceFiscale {
|
|||||||
let code = this.surnameCode(codiceFiscaleObject.surname)
|
let code = this.surnameCode(codiceFiscaleObject.surname)
|
||||||
code += this.nameCode(codiceFiscaleObject.name)
|
code += this.nameCode(codiceFiscaleObject.name)
|
||||||
code += this.dateCode(codiceFiscaleObject.day, codiceFiscaleObject.month, codiceFiscaleObject.year, codiceFiscaleObject.gender)
|
code += this.dateCode(codiceFiscaleObject.day, codiceFiscaleObject.month, codiceFiscaleObject.year, codiceFiscaleObject.gender)
|
||||||
code += this.findComuneCode(codiceFiscaleObject.birthplace, codiceFiscaleObject.birthplaceProvincia)
|
code += this.findLocationCode(codiceFiscaleObject.birthplace, codiceFiscaleObject.birthplaceProvincia)
|
||||||
code += this.getCheckCode(code)
|
code += this.getCheckCode(code)
|
||||||
|
|
||||||
return code
|
return code
|
||||||
@ -83,18 +83,20 @@ class CodiceFiscale {
|
|||||||
return String(year + month + day)
|
return String(year + month + day)
|
||||||
}
|
}
|
||||||
|
|
||||||
static findComuneCode (birthplace, birthplaceProvincia) {
|
static findLocationCode (location, areaCode) {
|
||||||
if (!this.CODICI_CATASTALI[birthplaceProvincia]) {
|
if (!this.CODICI_CATASTALI[this.normalizeString(areaCode)]) {
|
||||||
throw new Error('Provincia not found')
|
throw new Error('Area code not found')
|
||||||
}
|
}
|
||||||
const comune = this.CODICI_CATASTALI[birthplaceProvincia]
|
const locationCode = this.CODICI_CATASTALI[this.normalizeString(areaCode)]
|
||||||
.find(comune => {
|
.reduce((code, locationTuple) => {
|
||||||
return this.normalizeString(comune[0]) === this.normalizeString(birthplace)
|
return this.normalizeString(locationTuple[0]) === this.normalizeString(location)
|
||||||
})
|
? locationTuple[1]
|
||||||
if (comune === undefined) {
|
: code
|
||||||
throw new Error('Comune not found')
|
}, undefined)
|
||||||
|
if (locationCode == null) {
|
||||||
|
throw new Error('Location not found')
|
||||||
}
|
}
|
||||||
return comune[1]
|
return locationCode
|
||||||
}
|
}
|
||||||
|
|
||||||
static normalizeString (str) {
|
static normalizeString (str) {
|
||||||
|
@ -101,39 +101,39 @@ describe('CodiceFiscale.compute', () => {
|
|||||||
birthplaceProvincia: 'EE'
|
birthplaceProvincia: 'EE'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
expect(comuneInventato).toThrowError('Comune not found')
|
expect(comuneInventato).toThrowError('Location not found')
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
describe('CodiceFiscale.findComuneCode', () => {
|
describe('CodiceFiscale.findLocationCode', () => {
|
||||||
test('è definito', () => {
|
test('è definito', () => {
|
||||||
expect(CodiceFiscale.findComuneCode).not.toBe(undefined)
|
expect(CodiceFiscale.findLocationCode).not.toBe(undefined)
|
||||||
})
|
})
|
||||||
|
|
||||||
test('trova il codice del comune', () => {
|
test('trova il codice del comune', () => {
|
||||||
expect(CodiceFiscale.findComuneCode('Roma', 'RM')).toBe('H501')
|
expect(CodiceFiscale.findLocationCode('Roma', 'RM')).toBe('H501')
|
||||||
})
|
})
|
||||||
|
|
||||||
test('trova il codice di un comune che contiene apostrofi', () => {
|
test('trova il codice di un comune che contiene apostrofi', () => {
|
||||||
expect(CodiceFiscale.findComuneCode("Sant'Angelo Romano", 'RM')).toBe('I284')
|
expect(CodiceFiscale.findLocationCode("Sant'Angelo Romano", 'RM')).toBe('I284')
|
||||||
})
|
})
|
||||||
|
|
||||||
test('trova il codice di un comune che contiene lettere accentate', () => {
|
test('trova il codice di un comune che contiene lettere accentate', () => {
|
||||||
expect(CodiceFiscale.findComuneCode('Riccò del Golfo di Spezia', 'SP')).toBe('H275')
|
expect(CodiceFiscale.findLocationCode('Riccò del Golfo di Spezia', 'SP')).toBe('H275')
|
||||||
})
|
})
|
||||||
|
|
||||||
test('se la provincia non esiste lancia un eccezione', () => {
|
test('se la provincia non esiste lancia un eccezione', () => {
|
||||||
var comuneInventato = function () {
|
var comuneInventato = function () {
|
||||||
CodiceFiscale.findComuneCode('Pufflandia', 'XX')
|
CodiceFiscale.findLocationCode('Foo', 'Bar')
|
||||||
}
|
}
|
||||||
expect(comuneInventato).toThrowError('Provincia not found')
|
expect(comuneInventato).toThrowError('Area code not found')
|
||||||
})
|
})
|
||||||
|
|
||||||
test('se il comune non esiste lancia un eccezione', () => {
|
test('se il comune non esiste lancia un eccezione', () => {
|
||||||
var comuneInventato = function () {
|
var comuneInventato = function () {
|
||||||
CodiceFiscale.findComuneCode('Pufflandia', 'RM')
|
CodiceFiscale.findLocationCode('Foo', 'RM')
|
||||||
}
|
}
|
||||||
expect(comuneInventato).toThrowError('Comune not found')
|
expect(comuneInventato).toThrowError('Location not found')
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user