add tests
This commit is contained in:
parent
89b83bc73f
commit
2cb019ff5c
@ -5,6 +5,7 @@ import * as fs from 'fs'
|
|||||||
|
|
||||||
import mappingConfigIRVE from './mappings/converters/configIRVE'
|
import mappingConfigIRVE from './mappings/converters/configIRVE'
|
||||||
import mappingConfigIRVE_simple from './mappings/converters/mappingConfigIRVE_simple'
|
import mappingConfigIRVE_simple from './mappings/converters/mappingConfigIRVE_simple'
|
||||||
|
import mappingTest from './mappings/converters/configTest'
|
||||||
import mapping_engine from './mappings/engine'
|
import mapping_engine from './mappings/engine'
|
||||||
import {BoundingBoxCoordinatesType, FeatureCollection} from "./mappings/mapping-config.type";
|
import {BoundingBoxCoordinatesType, FeatureCollection} from "./mappings/mapping-config.type";
|
||||||
import utils from './mappings/utils'
|
import utils from './mappings/utils'
|
||||||
@ -17,7 +18,7 @@ const debugLog = utils.debugLog;
|
|||||||
let use_mapping_engine = false
|
let use_mapping_engine = false
|
||||||
use_mapping_engine = true
|
use_mapping_engine = true
|
||||||
|
|
||||||
let Mapping_engine = new mapping_engine(mappingConfigIRVE)
|
|
||||||
|
|
||||||
let mini_arguments: any = minimist(process.argv.slice(2))
|
let mini_arguments: any = minimist(process.argv.slice(2))
|
||||||
|
|
||||||
@ -55,6 +56,14 @@ if (mini_arguments['source']) {
|
|||||||
if (mini_arguments['engine']) {
|
if (mini_arguments['engine']) {
|
||||||
use_mapping_engine = mini_arguments['engine']
|
use_mapping_engine = mini_arguments['engine']
|
||||||
}
|
}
|
||||||
|
let Mapping_engine:any;
|
||||||
|
|
||||||
|
if (mini_arguments['testingConfig']) {
|
||||||
|
console.log('testing')
|
||||||
|
Mapping_engine = new mapping_engine(mappingTest)
|
||||||
|
}else{
|
||||||
|
Mapping_engine = new mapping_engine(mappingConfigIRVE)
|
||||||
|
}
|
||||||
|
|
||||||
let filterZipCode = new RegExp(`^${filterDepartment}`)
|
let filterZipCode = new RegExp(`^${filterDepartment}`)
|
||||||
let filterZipCodeAdresse = new RegExp(` ${filterDepartment}`)
|
let filterZipCodeAdresse = new RegExp(` ${filterDepartment}`)
|
||||||
@ -285,8 +294,10 @@ function mapElementFromConfSimple(featurePoint: any, mappingConfig: any) {
|
|||||||
if (use_mapping_engine) {
|
if (use_mapping_engine) {
|
||||||
debugLog(' - using mapping engine')
|
debugLog(' - using mapping engine')
|
||||||
debugLog(' - pointCounterMax', pointCounterMax)
|
debugLog(' - pointCounterMax', pointCounterMax)
|
||||||
Mapping_engine.setConfig(mappingConfigIRVE)
|
|
||||||
convertDataForIRVE(sourceFilePathGeoJson, mappingConfigIRVE, pointCounterMax, boundingBoxCoordinates)
|
// Mapping_engine.setConfig(mappingConfigIRVE)
|
||||||
|
let currentMappingConfig = Mapping_engine.getConfig();
|
||||||
|
convertDataForIRVE(sourceFilePathGeoJson, currentMappingConfig, pointCounterMax, boundingBoxCoordinates)
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
@ -1,34 +1,63 @@
|
|||||||
import MappingConfigType from "../../mappings/mapping-config.type";
|
import MappingConfigType, {FeaturePropertyMappingConfigType} from "../../mappings/mapping-config.type";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* configurations de mapping pour les cas de tests
|
* configurations de mapping pour les cas de tests
|
||||||
*/
|
*/
|
||||||
export const mappingRemoveAll: MappingConfigType = {
|
export const mappingRemoveAll: MappingConfigType = {
|
||||||
config_name: 'testing config',
|
config_name: 'testing config mappingRemoveAll',
|
||||||
config_author: 'tykayn <contact@cipherbliss.com>',
|
config_author: 'tykayn <contact@cipherbliss.com>',
|
||||||
default_properties_of_point: {
|
default_properties_of_point: {},
|
||||||
'amenity': 'charging_station'
|
tags: {},
|
||||||
},
|
add_not_mapped_tags_too: false,
|
||||||
tags: {
|
source: {},
|
||||||
nom_amenageur: {
|
filters: {},
|
||||||
key_converted: 'autre_nom_amenageur',
|
|
||||||
conditional_values: {
|
|
||||||
'Accessibilité inconnue': {
|
|
||||||
ignore_this_data: true, // ne pas ajouter de tag si la valeur est égale à Accessibilité inconnue.
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
export const mappingIgnore: MappingConfigType = {
|
export const mappingSame: MappingConfigType = {
|
||||||
config_name: 'testing config',
|
config_name: 'testing config mappingSame',
|
||||||
config_author: 'tykayn <contact@cipherbliss.com>',
|
config_author: 'tykayn <contact@cipherbliss.com>',
|
||||||
default_properties_of_point: {
|
default_properties_of_point: {},
|
||||||
'amenity': 'charging_station'
|
|
||||||
},
|
|
||||||
tags: {
|
tags: {
|
||||||
nom_amenageur: {
|
equal : 'equal'
|
||||||
ignore_this_data: true,
|
},
|
||||||
}
|
add_not_mapped_tags_too: false,
|
||||||
}
|
source: {},
|
||||||
}
|
filters: {},
|
||||||
|
}
|
||||||
|
export const mappingName: MappingConfigType = {
|
||||||
|
config_name: 'testing config mappingName',
|
||||||
|
config_author: 'tykayn <contact@cipherbliss.com>',
|
||||||
|
default_properties_of_point: {},
|
||||||
|
tags: {
|
||||||
|
nom_amenageur : 'name'
|
||||||
|
},
|
||||||
|
add_not_mapped_tags_too: true,
|
||||||
|
source: {},
|
||||||
|
filters: {},
|
||||||
|
}
|
||||||
|
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: {},
|
||||||
|
}
|
||||||
|
// export const mappingIgnore: MappingConfigType = {
|
||||||
|
// config_name: 'testing config',
|
||||||
|
// config_author: 'tykayn <contact@cipherbliss.com>',
|
||||||
|
// default_properties_of_point: {
|
||||||
|
// 'amenity': 'charging_station'
|
||||||
|
// },
|
||||||
|
// tags: {
|
||||||
|
// nom_amenageur: {
|
||||||
|
// ignore_this_data: true,
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
@ -11,8 +11,10 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"properties": {
|
"properties": {
|
||||||
"nom_amenageur": "ELECTRA",
|
"nom_amenageur": "Bob",
|
||||||
"siren_amenageur": "891624884",
|
"siren_amenageur": "891624884",
|
||||||
|
"telephone_operateur": "0123456789",
|
||||||
|
"equal": "same value",
|
||||||
"consolidated_commune": "S\u00e9r\u00e9zin-du-Rh\u00f4ne",
|
"consolidated_commune": "S\u00e9r\u00e9zin-du-Rh\u00f4ne",
|
||||||
"consolidated_is_lon_lat_correct": true
|
"consolidated_is_lon_lat_correct": true
|
||||||
}
|
}
|
||||||
|
@ -1 +0,0 @@
|
|||||||
,tykayn,spaceship,11.08.2023 21:43,file:///home/tykayn/.config/libreoffice/4;
|
|
@ -11,17 +11,21 @@ import {parse} from 'csv'
|
|||||||
const fs = require('fs')
|
const fs = require('fs')
|
||||||
const minimist = require('minimist')
|
const minimist = require('minimist')
|
||||||
|
|
||||||
|
let mini_arguments: any = minimist(process.argv.slice(2))
|
||||||
|
|
||||||
interface VarianceType {
|
interface VarianceType {
|
||||||
[key: string]: Array<string>
|
[key: string]: Array<string>
|
||||||
}
|
}
|
||||||
|
|
||||||
let csv_content = 'variance de dataset\n';
|
let csv_content = 'variance de dataset\n';
|
||||||
let separator = ';';
|
let separator = ';';
|
||||||
// let columns_headings = [];
|
|
||||||
let data_variance: VarianceType = {};
|
let data_variance: VarianceType = {};
|
||||||
|
|
||||||
const inputPath = './etalab_data/toilettes/sanisettesparis_reworked.csv'
|
// const inputPath = './etalab_data/toilettes/sanisettesparis_reworked.csv'
|
||||||
// const inputPath = './etalab_data/small.csv'
|
const inputPath = './etalab_data/small.csv'
|
||||||
|
if (mini_arguments['source']) {
|
||||||
|
inputPath = mini_arguments['source']
|
||||||
|
}
|
||||||
let columns_headings: Array<string> = [];
|
let columns_headings: Array<string> = [];
|
||||||
let lines_count = 0;
|
let lines_count = 0;
|
||||||
let longest_variance_count = 0;
|
let longest_variance_count = 0;
|
||||||
|
@ -39,7 +39,10 @@ const MappingIRVE: MappingConfigType = {
|
|||||||
nom_amenageur: 'operator',
|
nom_amenageur: 'operator',
|
||||||
siren_amenageur: 'owner:ref:FR:SIREN',
|
siren_amenageur: 'owner:ref:FR:SIREN',
|
||||||
nom_operateur: 'operator',
|
nom_operateur: 'operator',
|
||||||
telephone_operateur: 'phone',
|
telephone_operateur: {
|
||||||
|
key_converted: 'phone',
|
||||||
|
convert_to_phone: true, // convertit en yes ou no
|
||||||
|
},
|
||||||
contact_operateur: 'email', // ici, on souhaite convertir la clé contact_operateur=bidule en email=bidule
|
contact_operateur: 'email', // ici, on souhaite convertir la clé contact_operateur=bidule en email=bidule
|
||||||
|
|
||||||
// id_station_itinerance: 'ref:EU:EVSE',
|
// id_station_itinerance: 'ref:EU:EVSE',
|
||||||
|
21
mappings/converters/configTest.ts
Normal file
21
mappings/converters/configTest.ts
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
/**
|
||||||
|
* plan de conversion des clés du jeu de données vers les tags OSM
|
||||||
|
* détail dans le tableau
|
||||||
|
* https://wiki.openstreetmap.org/wiki/France/data.gouv.fr/Bornes_de_Recharge_pour_V%C3%A9hicules_%C3%89lectriques
|
||||||
|
*/
|
||||||
|
import MappingConfigType from "../mapping-config.type";
|
||||||
|
|
||||||
|
const MappingTest: MappingConfigType = {
|
||||||
|
config_name: 'testing config mappingSame',
|
||||||
|
config_author: 'tykayn <contact@cipherbliss.com>',
|
||||||
|
default_properties_of_point: {},
|
||||||
|
tags: {
|
||||||
|
nom_amenageur : 'name'
|
||||||
|
},
|
||||||
|
add_not_mapped_tags_too: false,
|
||||||
|
source: {},
|
||||||
|
filters: {},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export default MappingTest;
|
@ -18,13 +18,19 @@ export default class {
|
|||||||
mapping_config: any = {}
|
mapping_config: any = {}
|
||||||
|
|
||||||
constructor(mappingConfig: MappingConfigType) {
|
constructor(mappingConfig: MappingConfigType) {
|
||||||
|
|
||||||
this.setConfig(mappingConfig)
|
this.setConfig(mappingConfig)
|
||||||
}
|
}
|
||||||
|
|
||||||
setConfig(mappingConfig: MappingConfigType) {
|
setConfig(mappingConfig: MappingConfigType) {
|
||||||
|
console.log('load config', mappingConfig.config_name)
|
||||||
this.mapping_config = mappingConfig
|
this.mapping_config = mappingConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getConfig() {
|
||||||
|
return this.mapping_config
|
||||||
|
}
|
||||||
|
|
||||||
mapFeaturePoint(featurePointGeoJson: any) {
|
mapFeaturePoint(featurePointGeoJson: any) {
|
||||||
|
|
||||||
let geoJSONConvertedPoint: any = {}
|
let geoJSONConvertedPoint: any = {}
|
||||||
@ -85,7 +91,7 @@ export default class {
|
|||||||
mapElementFromConf(featurePoint: any): any {
|
mapElementFromConf(featurePoint: any): any {
|
||||||
// debugLog('mapElementFromConf: mapElementFromConf', featurePoint)
|
// debugLog('mapElementFromConf: mapElementFromConf', featurePoint)
|
||||||
if (!this.mapping_config) {
|
if (!this.mapping_config) {
|
||||||
throw new Error('no config was loaded in the mapping engine. use setConfig(my_mapping_config) on this instance of mapping engine before using this.')
|
throw new Error('no config was loaded in the mapping engine. use setConfig(my_mapping_config) on this instance of mapping engine before using this. Your config should be typed to MappingConfigType Type.')
|
||||||
}
|
}
|
||||||
|
|
||||||
debugLog('mapElementFromConf: config_name', this.mapping_config.config_name)
|
debugLog('mapElementFromConf: config_name', this.mapping_config.config_name)
|
||||||
@ -234,6 +240,11 @@ export default class {
|
|||||||
} else {
|
} else {
|
||||||
debugLog('convertProperty: is NOT having boolean_value_conversion', mappingValueObject)
|
debugLog('convertProperty: is NOT having boolean_value_conversion', mappingValueObject)
|
||||||
}
|
}
|
||||||
|
if (configObject.convert_to_phone) {
|
||||||
|
console.log('originalValue', originalValue.substring(1))
|
||||||
|
let temp = `${'' + originalValue.substring(1)}`
|
||||||
|
convertedValue = `+33 ${temp}`;
|
||||||
|
}
|
||||||
if (configObject.remove_original_key) {
|
if (configObject.remove_original_key) {
|
||||||
remove_original_key = true
|
remove_original_key = true
|
||||||
}
|
}
|
||||||
@ -311,7 +322,7 @@ export default class {
|
|||||||
}
|
}
|
||||||
|
|
||||||
debugLog('convertProperty: convertedValue ==========> {', newKey, ':', convertedValue, '}')
|
debugLog('convertProperty: convertedValue ==========> {', newKey, ':', convertedValue, '}')
|
||||||
debugLog(' =============== remove_original_key',newKey, remove_original_key)
|
debugLog(' =============== remove_original_key', newKey, remove_original_key)
|
||||||
if (!remove_original_key && newKey && convertedValue && !configObject.ignore_this_data) {
|
if (!remove_original_key && newKey && convertedValue && !configObject.ignore_this_data) {
|
||||||
|
|
||||||
debugLog('convertProperty: added')
|
debugLog('convertProperty: added')
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -19,7 +19,8 @@
|
|||||||
"simple": "ts-node convert_to_osm_tags.ts",
|
"simple": "ts-node convert_to_osm_tags.ts",
|
||||||
"chargemap": "ts-node chargemap.ts",
|
"chargemap": "ts-node chargemap.ts",
|
||||||
"filter": "node convert_to_osm_tags.ts --department=974 --engine=true",
|
"filter": "node convert_to_osm_tags.ts --department=974 --engine=true",
|
||||||
"test": "jest --coverage --watch"
|
"test": "jest --coverage --watch",
|
||||||
|
"testing": "ts-node convert_to_osm_tags.ts --source=\"./data_other/testing/testing.json\" --testingConfig --engine"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"csv": "^6.3.1",
|
"csv": "^6.3.1",
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import mapping_engine from '../mappings/engine.ts'
|
import mapping_engine from '../mappings/engine.ts'
|
||||||
import { mappingRemoveAll } from '../data_other/testing/mappings_to_test'
|
import { mappingRemoveAll, mappingSame, mappingPhone, mappingName } from '../data_other/testing/mappings_to_test'
|
||||||
import MappingConfigType, {BoundingBoxCoordinatesType, FeatureCollection} from "../mappings/mapping-config.type";
|
import MappingConfigType, {BoundingBoxCoordinatesType, FeatureCollection} from "../mappings/mapping-config.type";
|
||||||
|
|
||||||
const testingGeoJson = require('../data_other/testing/testing.json')
|
const testingGeoJson = require('../data_other/testing/testing.json')
|
||||||
@ -13,21 +13,44 @@ describe('mapping properties with rich mapping engine', () => {
|
|||||||
// test('do not add properties at all when there is nothing in tags of the mapping config', () => {
|
// test('do not add properties at all when there is nothing in tags of the mapping config', () => {
|
||||||
//
|
//
|
||||||
// })
|
// })
|
||||||
|
let feature_to_test = testingGeoJson.features[0];
|
||||||
test('remove all properties when mapping says so', () => {
|
test('remove all properties when mapping says so', () => {
|
||||||
|
|
||||||
let Mapping_engine = new mapping_engine(mappingRemoveAll)
|
let Mapping_engine = new mapping_engine(mappingRemoveAll)
|
||||||
|
let mapped_point = Mapping_engine.mapElementFromConf(feature_to_test)
|
||||||
let mapped_point = Mapping_engine.mapElementFromConf(testingGeoJson.features[0])
|
|
||||||
expect(mapped_point).toBeTruthy()
|
expect(mapped_point).toBeTruthy()
|
||||||
// expect(mapped_point.properties).toBe([])
|
expect(Object.keys(mapped_point.properties)).toStrictEqual([])
|
||||||
|
|
||||||
})
|
})
|
||||||
// test('maps simple key to key, and keep the same value', () => { })
|
// test('maps simple key to key, and keep the same value', () => {
|
||||||
|
// let Mapping_engine = new mapping_engine(mappingSame)
|
||||||
|
// let mapped_point = Mapping_engine.mapElementFromConf(feature_to_test)
|
||||||
|
// console.log('mapped_point', mapped_point)
|
||||||
|
// expect(mapped_point.properties).toBe({
|
||||||
|
// equal : "same value"
|
||||||
|
// })
|
||||||
|
// })
|
||||||
|
test('retrieve config name in mapping engine', () => {
|
||||||
|
let Mapping_engine = new mapping_engine(mappingRemoveAll)
|
||||||
|
expect(Mapping_engine.getConfig().config_name).toBe('testing config mappingRemoveAll')
|
||||||
|
})
|
||||||
|
test('maps nom_amenageur to name, and keep the same value', () => {
|
||||||
|
let Mapping_engine = new mapping_engine(mappingName)
|
||||||
|
let mapped_point = Mapping_engine.mapElementFromConf(feature_to_test)
|
||||||
|
expect(Mapping_engine.getConfig().config_name).toBe('testing config mappingName')
|
||||||
|
expect(mapped_point).toBe({
|
||||||
|
name : "Bob"
|
||||||
|
})
|
||||||
|
})
|
||||||
// test('ignore one value', () => { })
|
// test('ignore one value', () => { })
|
||||||
// test('conditional value', () => { })
|
// test('conditional value', () => { })
|
||||||
// test('conditional transform', () => { })
|
// test('conditional transform', () => { })
|
||||||
// test('conditional truthy transform', () => { })
|
// test('conditional truthy transform', () => { })
|
||||||
// test('conditional falsy transform', () => { })
|
// test('conditional falsy transform', () => { })
|
||||||
|
// test('conditional phone transform', () => {
|
||||||
|
// let Mapping_engine = new mapping_engine(mappingPhone)
|
||||||
|
// let mapped_point = Mapping_engine.mapElementFromConf(feature_to_test)
|
||||||
|
// expect(mapped_point.properties).toBe({phone:'+33123456789'})
|
||||||
|
// })
|
||||||
})
|
})
|
||||||
|
|
||||||
xdescribe('filters points', () => {
|
xdescribe('filters points', () => {
|
||||||
|
Loading…
Reference in New Issue
Block a user