Skip to content

Commit

Permalink
Merge pull request #303 from basedosdados/feat/multiple-coverages-in-api
Browse files Browse the repository at this point in the history
correcting logic to table full_coverage
  • Loading branch information
mfagundes authored Aug 11, 2023
2 parents 5dabf28 + df5217c commit 54bbd46
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 7 deletions.
29 changes: 22 additions & 7 deletions basedosdados_api/api/v1/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -1087,21 +1087,36 @@ def full_coverage(self) -> str:
"type": "open",
}
)
if first_closed_datetime_range:
if first_closed_datetime_range:
if not first_open_datetime_range:
full_coverage.append(
{
"year": str(first_closed_datetime_range.end_year)
if first_closed_datetime_range.end_year
"year": str(first_closed_datetime_range.start_year)
if first_closed_datetime_range.start_year
else None,
"month": str(first_closed_datetime_range.end_month).zfill(2)
if first_closed_datetime_range.end_month
"month": str(first_closed_datetime_range.start_month).zfill(2)
if first_closed_datetime_range.start_month
else None,
"day": str(first_closed_datetime_range.end_day).zfill(2)
if first_closed_datetime_range.end_day
"day": str(first_closed_datetime_range.start_day).zfill(2)
if first_closed_datetime_range.start_day
else None,
"type": "closed",
}
)
full_coverage.append(
{
"year": str(first_closed_datetime_range.end_year)
if first_closed_datetime_range.end_year
else None,
"month": str(first_closed_datetime_range.end_month).zfill(2)
if first_closed_datetime_range.end_month
else None,
"day": str(first_closed_datetime_range.end_day).zfill(2)
if first_closed_datetime_range.end_day
else None,
"type": "closed",
}
)

return json.dumps(full_coverage)

Expand Down
44 changes: 44 additions & 0 deletions basedosdados_api/api/v1/tests/test_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -277,3 +277,47 @@ def test_table_with_multiple_coverages(
]

assert tabela_bairros.full_coverage == json.dumps(table_expected_coverage)


@pytest.mark.django_db
def test_table_with_open_coverages(
tabela_bairros,
coverage_tabela_open,
datetime_range_1,
):
"""Test for Dataset with multiple coverages."""
tabela_bairros.save()
coverage_tabela_open.save()
datetime_range_1.coverage = coverage_tabela_open
datetime_range_1.save()
tabela_bairros.coverages.add(coverage_tabela_open)
tabela_bairros.save()

table_expected_coverage = [
{"year": "2021", "month": "06", "day": None, "type": "open"},
{"year": "2023", "month": "06", "day": None, "type": "open"},
]

assert tabela_bairros.full_coverage == json.dumps(table_expected_coverage)


@pytest.mark.django_db
def test_table_with_closed_coverages(
tabela_bairros,
coverage_tabela_closed,
datetime_range_3,
):
"""Test for Dataset with multiple coverages."""
tabela_bairros.save()
coverage_tabela_closed.save()
datetime_range_3.coverage = coverage_tabela_closed
datetime_range_3.save()
tabela_bairros.coverages.add(coverage_tabela_closed)
tabela_bairros.save()

table_expected_coverage = [
{"year": "2023", "month": "07", "day": None, "type": "closed"},
{"year": "2026", "month": "06", "day": None, "type": "closed"},
]

assert tabela_bairros.full_coverage == json.dumps(table_expected_coverage)

0 comments on commit 54bbd46

Please sign in to comment.