65 lines
2.6 KiB
Markdown
65 lines
2.6 KiB
Markdown
|
# Tests
|
||
|
|
||
|
Les tests sont lancés avec Jest et sont à écrire dans le dossier "tests", par défaut le runner est en mode auto rechargement des tests à la modification des fichiers.
|
||
|
`npm run test`
|
||
|
|
||
|
Ils fonctionnent avec des jeux de données qui se trouvent dans tests/data et des convertisseurs placés dans mappings/converters.
|
||
|
## Jeu de données
|
||
|
Le json de test disponible par défaut est un Geojson de type FeatureCollection dans testing.json
|
||
|
Les tests consistent à examiner les propriétés de chaque Feature Point et à les convertir selon les règles du Mapper de test.
|
||
|
|
||
|
## Mappers de test
|
||
|
Chaque test a à sa disposition plusieurs Mappers dans `mappings_to_test.ts` qui étendent `MappingConfigType` et peuvent s'appliquer à plusieurs jeux de données pour en tester la sortie.
|
||
|
|
||
|
- mappingPhone
|
||
|
- mappingRemoveAll
|
||
|
- mappingBoolean
|
||
|
- mappingName
|
||
|
- mappingSame
|
||
|
- mappingTruthy
|
||
|
- mappingFalsy
|
||
|
- mappingIgnoreFalsy
|
||
|
- mappingIgnoreTruthy
|
||
|
|
||
|
Leur objectif est de valider la qualité de conversion de données dans de multiples cas, et de vérifier que l'on ajoutera rien qui s'éloigne trop de ce que l'on peut deviner d'une valeur non fiable.
|
||
|
## Exemple de Mapper
|
||
|
|
||
|
Ce mappeur va appliquer la fonction de conversion de numéro de téléphone au format réglementaire pour les valeurs de tag "phone" selon la documentation du wiki OSM. C'est à dire que le numéro doit avoir un préfixe international (+33 pour la France) et avoir des espaces entre groupes de 2 chiffres.
|
||
|
```js
|
||
|
export const mappingPhone: MappingConfigType = {
|
||
|
|
||
|
config_name: 'testing config mappingPhone',
|
||
|
config_author: 'tykayn <contact@cipherbliss.com>',
|
||
|
default_properties_of_point: {},
|
||
|
tags: {
|
||
|
telephone_operateur: {
|
||
|
key_converted: 'phone',
|
||
|
convert_to_phone: true, // convertit en yes ou no
|
||
|
},
|
||
|
},
|
||
|
add_not_mapped_tags_too: false,
|
||
|
source: {},
|
||
|
filters: {},
|
||
|
}
|
||
|
```
|
||
|
|
||
|
# Écriture de tests
|
||
|
Pour réaliser les tests on importe l'Engine, le jeu de tests, on donne un Mapping à l'Engine, on applique la fonction de mapping, et on compare les propriétés obtenues à ce que l'on attend de la conversion.
|
||
|
```js
|
||
|
import mapping_engine from '../mappings/engine.ts'
|
||
|
import {
|
||
|
mappingPhone,
|
||
|
} from './data/mappings_to_test'
|
||
|
|
||
|
const testingGeoJson = require('./data/testing.json')
|
||
|
|
||
|
describe('mapping properties with rich mapping engine', () => {
|
||
|
test('conditional phone transform', () => {
|
||
|
let Mapping_engine = new mapping_engine(mappingPhone)
|
||
|
let mapped_point = Mapping_engine.mapElementFromConf(feature_to_test)
|
||
|
let expected_converted_phone = '+33 1 23 45 67 89'
|
||
|
expect(mapped_point.properties).toStrictEqual({ phone: expected_converted_phone })
|
||
|
})
|
||
|
})
|
||
|
```
|