81 lines
2.8 KiB
Python
81 lines
2.8 KiB
Python
import freezegun
|
||
import pytest
|
||
from httmock import HTTMock, response
|
||
|
||
import tests.utils
|
||
from passerelle.apps.airquality.models import AirQuality
|
||
|
||
SAMPLE_RESPONSE = {
|
||
"licence": "https://opendatacommons.org/licenses/odbl/",
|
||
"commune": "LYON-1ER-ARRONDISSEMENT",
|
||
"code_insee": "69381",
|
||
"indices": {
|
||
"current_page": 1,
|
||
"data": [
|
||
{
|
||
"date": "2020-12-22",
|
||
"valeur": "26.6503231768126",
|
||
"couleur_html": "#5CCB60",
|
||
"qualificatif": "Bon",
|
||
"type_valeur": "prévision",
|
||
},
|
||
{
|
||
"date": "2020-12-21",
|
||
"valeur": "21.6876695818178",
|
||
"couleur_html": "#5CCB60",
|
||
"qualificatif": "Bon",
|
||
"type_valeur": "prévision",
|
||
},
|
||
{
|
||
"date": "2020-12-20",
|
||
"valeur": "26.1405508214683",
|
||
"couleur_html": "#5CCB60",
|
||
"qualificatif": "Bon",
|
||
"type_valeur": "prévision",
|
||
},
|
||
],
|
||
},
|
||
"first_page_url": "https://api.atmo-aura.fr/communes/69381/indices?api_token=XXX&page=1",
|
||
"from": 1,
|
||
"last_page": 23,
|
||
"last_page_url": "https://api.atmo-aura.fr/communes/69381/indices?api_token=XXX&page=23",
|
||
"next_page_url": "https://api.atmo-aura.fr/communes/69381/indices?api_token=XXX&page=2",
|
||
"path": "https://api.atmo-aura.fr/communes/69381/indices",
|
||
"per_page": 50,
|
||
"prev_page_url": None,
|
||
"to": 50,
|
||
"total": 1137,
|
||
}
|
||
|
||
SAMPLE_COMMENT_RESPONSE = {
|
||
"licence": "https://opendatacommons.org/licenses/odbl/",
|
||
"commentaire": "Jeudi 11 mai, le temps perturbé a permis d’avoir une bonne qualité de l’air sur la zone de surveillance.",
|
||
}
|
||
|
||
|
||
@pytest.fixture
|
||
def airquality(db):
|
||
return AirQuality.objects.create(slug='atmo', atmo_aura_api_token='XXX')
|
||
|
||
|
||
def mocked_http(url, request):
|
||
if url.path.startswith('/commune'):
|
||
return response(200, SAMPLE_RESPONSE, request=request)
|
||
if url.path.startswith('/commentaire'):
|
||
return response(200, SAMPLE_COMMENT_RESPONSE, request=request)
|
||
|
||
|
||
@freezegun.freeze_time('2020-12-21')
|
||
def test_airquality_details(app, airquality):
|
||
endpoint = tests.utils.generic_endpoint_url('airquality', 'details', slug=airquality.slug)
|
||
assert endpoint == '/airquality/atmo/details'
|
||
with HTTMock(mocked_http):
|
||
resp = app.get(endpoint + '/fr/lyon/', status=200)
|
||
assert resp.json['data']['latest']['value'] == '21.6876695818178'
|
||
assert 'Jeudi 11 mai, le temps' in resp.json['data']['comment']
|
||
|
||
|
||
def test_airquality_details_unknown_city(app, airquality):
|
||
endpoint = tests.utils.generic_endpoint_url('airquality', 'details', slug=airquality.slug)
|
||
app.get(endpoint + '/fr/paris/', status=404)
|