Skip to content

Commit

Permalink
Bugfix en cálculo de indicadores de campos recomendados/optativos usados
Browse files Browse the repository at this point in the history
  • Loading branch information
Lucas Lavandeira committed May 15, 2017
1 parent 410188f commit f7c337e
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 7 deletions.
10 changes: 5 additions & 5 deletions pydatajson/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -1167,14 +1167,14 @@ def _count_fields_recursive(self, dataset, fields):
# dataset[k] puede ser o un dict o una lista, ej 'dataset' es
# list, 'publisher' no. Si no es lista, lo metemos en una.
# Si no es ninguno de los dos, dataset[k] es inválido
if not isinstance(dataset.get(k), (dict, list)):
continue
# y se pasa un diccionario vacío para poder comparar
elements = dataset.get(k)
if not isinstance(elements, (list, dict)):
elements = [{}]

elements = dataset[k]
if not isinstance(elements, list):
if isinstance(elements, dict):
elements = [dataset[k].copy()]
for element in elements:

# Llamada recursiva y suma del resultado al nuestro
result = self._count_fields_recursive(element, v)
for key in result:
Expand Down
14 changes: 12 additions & 2 deletions tests/test_core.py
Original file line number Diff line number Diff line change
Expand Up @@ -930,7 +930,7 @@ def test_network_indicators(self):
'PDF': 1
},
'campos_optativos_pct': 21.95,
'campos_recomendados_pct': 55.56,
'campos_recomendados_pct': 44.72,
'datasets_actualizados_cant': 2,
'datasets_desactualizados_cant': 2,
'datasets_actualizados_pct': 50
Expand Down Expand Up @@ -996,6 +996,8 @@ def test_indicators_invalid_periodicity(self):
def test_indicators_missing_periodicity(self):
catalog = os.path.join(self.SAMPLES_DIR, "missing_periodicity.json")

# Dataset con periodicidad faltante no aporta valores para indicadores
# de tipo 'datasets_(des)actualizados'
indicators = self.dj.generate_catalogs_indicators(catalog)[0][0]
expected = {
'datasets_actualizados_cant': 0,
Expand All @@ -1010,11 +1012,19 @@ def test_indicators_missing_dataset(self):
catalog = os.path.join(self.SAMPLES_DIR, "missing_dataset.json")

indicators = self.dj.generate_catalogs_indicators(catalog)[0][0]

# Catálogo sin datasets no aporta indicadores significativos
expected = {
'datasets_cant': 0,
'datasets_meta_ok_cant': 0,
'datasets_meta_error_cant': 0
'datasets_meta_error_cant': 0,
'datasets_actualizados_cant': 0,
'datasets_desactualizados_cant': 0,
'datasets_actualizados_pct': 0,
'distribuciones_formatos_cant': {},
'datasets_frecuencia_cant': {}
}

for k, v in expected.items():
self.assertEqual(indicators[k], v, k)

Expand Down

0 comments on commit f7c337e

Please sign in to comment.