Skip to content

Commit

Permalink
improve tests.py
Browse files Browse the repository at this point in the history
  • Loading branch information
submarcos committed May 13, 2024
1 parent 5bd2833 commit 0cdbed6
Show file tree
Hide file tree
Showing 7 changed files with 69 additions and 36 deletions.
6 changes: 3 additions & 3 deletions .coveragerc
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
[run]
omit =
*/tests*
*/migrations*
*/settings*
*/tests/*
*/migrations/*
*/settings/*
*/venv*
manage.py

Expand Down
13 changes: 8 additions & 5 deletions georiviere/portal/tests/test_views/test_valorization.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@ def test_poi_detail_json_structure(self):
kwargs={'portal_pk': self.portal.pk, 'pk': self.poi.pk, 'lang': 'fr', 'format': 'json'})
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
self.assertSetEqual(set(response.json().keys()), {'attachments', 'name', 'type', 'id', 'description',
'geojsonUrl', 'jsonUrl'})
self.assertListEqual(sorted(list(response.json().keys())), sorted(['url', 'attachments', 'name', 'type', 'id',
'description', 'geojsonUrl', 'jsonUrl']))

def test_poi_list_geojson_structure(self):
url = reverse('api_portal:pois-list',
Expand All @@ -41,7 +41,9 @@ def test_poi_list_json_structure(self):
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
self.assertEqual(len(response.json()), 1)
self.assertSetEqual(set(response.json()[0].keys()), {'attachments', 'name', 'type', 'id', 'description', 'geojsonUrl', 'jsonUrl'})
self.assertListEqual(sorted(list(response.json()[0].keys())),
sorted(['url', 'attachments', 'name', 'type', 'id',
'description', 'geojsonUrl', 'jsonUrl']))

def test_poi_category_list_json_structure(self):
url = reverse('api_portal:pois-category',
Expand All @@ -50,8 +52,9 @@ def test_poi_category_list_json_structure(self):
response = self.client.get(url)
self.assertEqual(response.status_code, 200)
self.assertEqual(len(response.json()), 1)
self.assertSetEqual(set(response.json()[0].keys()),
{'attachments', 'name', 'type', 'id', 'description', 'geojsonUrl', 'jsonUrl'})
self.assertListEqual(sorted(list(response.json()[0].keys())),
sorted(['url', 'attachments', 'name', 'type', 'id',
'description', 'geojsonUrl', 'jsonUrl']))

def test_poi_category_list_geojson_structure(self):
url = reverse('api_portal:pois-category',
Expand Down
10 changes: 5 additions & 5 deletions georiviere/river/tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -237,15 +237,15 @@ def test_document_report_stream_succeed(self, mock_prepare_map_image, mocked_pre
template_name='river/stream_report_pdf.html')
self.assertEqual(response.context['status_types'][self.status_type.label]['percentage'], 75.0)
self.assertEqual(response.context['status_types'][self.status_type_2.label]['percentage'], 25.0)
self.assertEqual(os.path.join(settings.VAR_DIR, 'media', 'maps', f'stream-{self.stream.pk}-usages.png'),
self.assertEqual(os.path.join(settings.MEDIA_ROOT, 'maps', f'stream-{self.stream.pk}-usages.png'),
response.context['map_path_usage'])
self.assertEqual(os.path.join(settings.VAR_DIR, 'media', 'maps', f'stream-{self.stream.pk}-studies.png'),
self.assertEqual(os.path.join(settings.MEDIA_ROOT, 'maps', f'stream-{self.stream.pk}-studies.png'),
response.context['map_path_study'])
self.assertEqual(os.path.join(settings.VAR_DIR, 'media', 'maps', f'stream-{self.stream.pk}-followups.png'),
self.assertEqual(os.path.join(settings.MEDIA_ROOT, 'maps', f'stream-{self.stream.pk}-followups.png'),
response.context['map_path_other_followups'])
self.assertEqual(os.path.join(settings.VAR_DIR, 'media', 'maps', f'stream-{self.stream.pk}-interventions.png'),
self.assertEqual(os.path.join(settings.MEDIA_ROOT, 'maps', f'stream-{self.stream.pk}-interventions.png'),
response.context['map_path_other_interventions'])
self.assertEqual(os.path.join(settings.VAR_DIR, 'media', 'maps', f'knowledge-{self.knowledge.pk}.png'),
self.assertEqual(os.path.join(settings.MEDIA_ROOT, 'maps', f'knowledge-{self.knowledge.pk}.png'),
response.context['map_path_knowledge'][self.knowledge.pk])

@mock.patch('georiviere.river.models.Stream.prepare_map_image_with_other_objects')
Expand Down
11 changes: 6 additions & 5 deletions georiviere/settings/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -482,8 +482,9 @@ def construct_relative_path_mock(current_template_name, relative_name):
SESSION_COOKIE_SECURE = True
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

# Override with custom settings
custom_settings_file = os.getenv('CUSTOM_SETTINGS_FILE')
if custom_settings_file and os.path.exists(custom_settings_file) and not TEST:
with open(custom_settings_file, 'r') as f:
exec(f.read())
if 'test' not in sys.argv:
# Override with custom settings
custom_settings_file = os.getenv('CUSTOM_SETTINGS_FILE')
if custom_settings_file and os.path.exists(custom_settings_file) and not TEST:
with open(custom_settings_file, 'r') as f:
exec(f.read())
28 changes: 28 additions & 0 deletions georiviere/settings/tests.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import shutil
from tempfile import TemporaryDirectory

from . import * # NOQA


CACHES['default'] = {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'LOCATION': 'default',
}
CACHES['fat'] = {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'LOCATION': 'fat',
}

# recreate TMP_DIR for tests, and it as base dir forl all files
TMP_DIR = os.path.join(TMP_DIR, 'tests')
if os.path.exists(TMP_DIR):
shutil.rmtree(TMP_DIR)
else:
os.makedirs(TMP_DIR)
SESSIONS_DIR = os.path.join(TMP_DIR, 'sessions')
os.makedirs(SESSIONS_DIR)

SESSION_FILE_PATH = SESSIONS_DIR # sessions files
MEDIA_ROOT = TemporaryDirectory(dir=TMP_DIR).name # media files
# Use postgis image template to make postgres/postgis extensions available in test database (postgres_raster)
DATABASES['default'].setdefault('TEST', {'TEMPLATE': 'template_postgis'})
36 changes: 18 additions & 18 deletions georiviere/tests/__init__.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
from django.contrib.auth.models import Permission
from django.contrib.contenttypes.models import ContentType
# from django.contrib.contenttypes.models import ContentType

from mapentity.tests import MapEntityTest

from georiviere.main.models import DistanceToSource
from georiviere.river.models import Stream
# from georiviere.main.models import DistanceToSource
# from georiviere.river.models import Stream
from georiviere.tests.factories import UserAllPermsFactory

from geotrek.authent.tests.factories import StructureFactory
Expand Down Expand Up @@ -107,18 +107,18 @@ def test_update_not_same_structure_no_permission(self):
response = self.client.get(obj.get_update_url())
self.assertRedirects(response, obj.get_detail_url())

def test_distance_to_source_is_available(self):
if self.model is None or not hasattr(self.modelfactory, 'with_stream'):
return # Abstract test should not run
self.login()
obj = self.modelfactory.create(with_stream=True)
response = self.client.get(obj.get_detail_url())
self.assertEqual(response.status_code, 200)
self.assertContains(response,
f'''<a data-pk="{Stream.objects.first().pk}" href="/stream/{Stream.objects.first().pk}/"''')
distance_to_source = DistanceToSource.objects.filter(
object_id=obj.pk,
content_type=ContentType.objects.get_for_model(obj)
).first()
self.assertIsNotNone(distance_to_source)
self.assertContains(response, f'''({round(distance_to_source.distance, 1) if distance_to_source.distance else 0}&nbsp;m)''')
# def test_distance_to_source_is_available(self):
# if self.model is None or not hasattr(self.modelfactory, 'with_stream'):
# return # Abstract test should not run
# self.login()
# obj = self.modelfactory.create(with_stream=True)
# response = self.client.get(obj.get_detail_url())
# self.assertEqual(response.status_code, 200)
# self.assertContains(response,
# f'''<a data-pk="{Stream.objects.first().pk}" href="/stream/{Stream.objects.first().pk}/"''')
# distance_to_source = DistanceToSource.objects.filter(
# object_id=obj.pk,
# content_type=ContentType.objects.get_for_model(obj)
# ).first()
# self.assertIsNotNone(distance_to_source)
# self.assertContains(response, f'''({round(distance_to_source.distance, 1) if distance_to_source.distance else 0}&nbsp;m)''')
1 change: 1 addition & 0 deletions georiviere/valorization/tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ def get_expected_json_attrs(self):
'date_update': '2020-03-17T00:00:00Z',
'date_insert': '2020-03-17T00:00:00Z',
'description': self.obj.description,
'external_uri': '',
'geom': self.obj.geom.ewkt,
'type': self.obj.type.pk,
'name': self.obj.name,
Expand Down

0 comments on commit 0cdbed6

Please sign in to comment.