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)
|