diff options
Diffstat (limited to 'chimere/tests.py')
-rw-r--r-- | chimere/tests.py | 406 |
1 files changed, 211 insertions, 195 deletions
diff --git a/chimere/tests.py b/chimere/tests.py index 6c39cba..369fe6b 100644 --- a/chimere/tests.py +++ b/chimere/tests.py @@ -8,86 +8,68 @@ import simplejson as json test_path = os.path.abspath(__file__) test_dir_path = os.path.dirname(test_path) + os.sep -from django.conf import settings from django.contrib.auth.models import User from django.contrib.gis.geos import GEOSGeometry -from django.contrib.messages.storage.fallback import FallbackStorage from django.core.files import File from django.core.urlresolvers import reverse from django.template import Context from django.test import TestCase -from django.test.client import Client -from chimere.admin import managed_modified, MarkerAdmin -from chimere.models import Area, Icon, Importer, Category, SubCategory, Marker,\ - Route, News +from chimere.models import Area, Icon, Importer, Category, SubCategory, \ + Marker, Route, News from chimere.forms import MarkerForm, AreaAdminForm from chimere.templatetags.chimere_tags import display_news from chimere.utils import ShapefileManager + def areas_setup(): - area_1 = Area.objects.create(name='area 1', urn='area-1', order=1, - available=True, - upper_left_corner='SRID=4326;POINT(-4.907753 48.507656)', - lower_right_corner='SRID=4326;POINT(-4.049447 48.279688)') - area_2 = Area.objects.create(name='area 2', urn='area-2', order=2, - available=True, - upper_left_corner='SRID=4326;POINT(-3 47.5)', - lower_right_corner='SRID=4326;POINT(-2.5 47)') - area_3 = Area.objects.create(name='area 3', urn='area-3', order=3, - available=True, - upper_left_corner='SRID=4326;POINT(-1.5 1.5)', - lower_right_corner='SRID=4326;POINT(1.5 -1.5)') + area_1 = Area.objects.create( + name='area 1', urn='area-1', order=1, available=True, + upper_left_corner='SRID=4326;POINT(-4.907753 48.507656)', + lower_right_corner='SRID=4326;POINT(-4.049447 48.279688)') + area_2 = Area.objects.create( + name='area 2', urn='area-2', order=2, available=True, + upper_left_corner='SRID=4326;POINT(-3 47.5)', + lower_right_corner='SRID=4326;POINT(-2.5 47)') + area_3 = Area.objects.create( + name='area 3', urn='area-3', order=3, available=True, + upper_left_corner='SRID=4326;POINT(-1.5 1.5)', + lower_right_corner='SRID=4326;POINT(1.5 -1.5)') return [area_1, area_2, area_3] + def subcategory_setup(): - category = Category.objects.create(name='Main category', - available=True, - order=1, - description='') + category = Category.objects.create( + name='Main category', available=True, order=1, description='') icon = Icon.objects.create(name='Default icon', image='icons/marker.png', height=25, width=21) - subcategory_1 = SubCategory.objects.create(category=category, - name='Subcategory 1', - available=True, - icon=icon, - order=1, - item_type='M',) - - subcategory_2 = SubCategory.objects.create(category=category, - name='Subcategory 2', - available=True, - icon=icon, - order=1, - item_type='M',) - - subcategory_3 = SubCategory.objects.create(category=category, - name='Subcategory 3', - available=True, - icon=icon, - order=1, - item_type='M',) - - subcategory_4 = SubCategory.objects.create(category=category, - name='Subcategory 4', - available=True, - icon=icon, - order=1, - item_type='M',) - - subcategory_5 = SubCategory.objects.create(category=category, - name='Subcategory 5', - available=True, - icon=icon, - order=1, - item_type='M',) + subcategory_1 = SubCategory.objects.create( + category=category, name='Subcategory 1', available=True, icon=icon, + order=1, item_type='M',) + + subcategory_2 = SubCategory.objects.create( + category=category, name='Subcategory 2', available=True, icon=icon, + order=1, item_type='M',) + + subcategory_3 = SubCategory.objects.create( + category=category, name='Subcategory 3', available=True, icon=icon, + order=1, item_type='M',) + + subcategory_4 = SubCategory.objects.create( + category=category, name='Subcategory 4', available=True, icon=icon, + order=1, item_type='M',) + + subcategory_5 = SubCategory.objects.create( + category=category, name='Subcategory 5', available=True, icon=icon, + order=1, item_type='M',) return [subcategory_1, subcategory_2, subcategory_3, subcategory_4, subcategory_5] + def marker_setup(sub_categories=[]): if not sub_categories: sub_categories = subcategory_setup() @@ -105,41 +87,46 @@ def marker_setup(sub_categories=[]): start_date=current_date) marker_2.categories.add(sub_categories[1]) markers.append(marker_2) - marker_3 = Marker.objects.create(name="Marker 3", status='A', - point='SRID=4326;POINT(-4.5 48.45)', - is_front_page=True, - available_date=current_date - datetime.timedelta(days=60), - start_date=current_date - datetime.timedelta(days=60), - end_date=current_date - datetime.timedelta(days=30)) + marker_3 = Marker.objects.create( + name="Marker 3", status='A', point='SRID=4326;POINT(-4.5 48.45)', + is_front_page=True, + available_date=current_date - datetime.timedelta(days=60), + start_date=current_date - datetime.timedelta(days=60), + end_date=current_date - datetime.timedelta(days=30)) marker_3.categories.add(sub_categories[1]) markers.append(marker_3) return markers + def route_setup(sub_categories=[]): if not sub_categories: sub_categories = subcategory_setup() - current_date = datetime.datetime.now() + # current_date = datetime.datetime.now() routes = [] - route_1 = Route.objects.create(name="Route 1", status='A', - has_associated_marker=True, route='SRID=4326;LINESTRING(-1 1, 1 -1)') + route_1 = Route.objects.create( + name="Route 1", status='A', has_associated_marker=True, + route='SRID=4326;LINESTRING(-1 1, 1 -1)') route_1.categories.add(sub_categories[0]) routes.append(route_1) - route_2 = Route.objects.create(name="Route 2", status='A', - has_associated_marker=False, route='SRID=4326;LINESTRING(0 0, 2 2)') + route_2 = Route.objects.create( + name="Route 2", status='A', has_associated_marker=False, + route='SRID=4326;LINESTRING(0 0, 2 2)') route_2.categories.add(sub_categories[1]) routes.append(route_2) return routes + class ImporterTest: def test_get(self): nb_by_cat = {} for importer, awaited_nb in self.marker_importers: nb, nb_updated, res = importer.manager.get() - if awaited_nb == None: + if awaited_nb is None: continue - self.assertEqual(nb, awaited_nb, - msg=u"%s: get test failed - got %d when %d was awaited" % - (unicode(self.__class__), nb, awaited_nb)) + self.assertEqual( + nb, awaited_nb, + msg=u"%s: get test failed - got %d when %d was awaited" % + (unicode(self.__class__), nb, awaited_nb)) self.assertEqual(nb_updated, 0) for cat in importer.categories.all(): if cat not in nb_by_cat: @@ -154,7 +141,7 @@ class ImporterTest: importer.overwrite = True importer.save() nb, nb_updated, res = importer.manager.get() - if awaited_nb == None: + if awaited_nb is None: continue self.assertEqual(nb, 0) # manage overwrite @@ -164,11 +151,11 @@ class ImporterTest: # mimic the modification of one item for cls in (Marker, Route): items = cls.objects.filter( - categories=importer.categories.all()[0] - ).order_by('-pk').all() + categories=importer.categories.all()[0]).order_by( + '-pk').all() if items.count(): item = items.all()[0] - item.import_version = 99999 # fake version number + item.import_version = 99999 # fake version number item.save() # as when the import_version it is considered as an import # modification force the modification flag @@ -177,41 +164,49 @@ class ImporterTest: importer.overwrite = False importer.save() nb, nb_updated, res = importer.manager.get() - if awaited_nb == None: + if awaited_nb is None: continue - self.assertEqual(nb, 1, msg=u"%s: overwrite test failed" % - unicode(self.__class__)) + self.assertEqual( + nb, 1, msg=u"%s: overwrite test failed" % + unicode(self.__class__)) + class KMLImporterTest(TestCase, ImporterTest): def setUp(self): subcategories = subcategory_setup() - importer1 = Importer.objects.create(importer_type='KML', - source=test_dir_path+'tests/sample.kml', + importer1 = Importer.objects.create( + importer_type='KML', + source=test_dir_path + 'tests/sample.kml', filtr="Category 1") importer1.categories.add(subcategories[0]) - importer2 = Importer.objects.create(importer_type='KML', - source=test_dir_path+'tests/sample.kml', - filtr="Subcategory 1", associate_marker_to_way=True) + importer2 = Importer.objects.create( + importer_type='KML', + source=test_dir_path + 'tests/sample.kml', + filtr="Subcategory 1", associate_marker_to_way=True) importer2.categories.add(subcategories[1]) - importer3 = Importer.objects.create(importer_type='KML', - source=test_path+'tests/sample.kml', - filtr="Subcategory 3") + importer3 = Importer.objects.create( + importer_type='KML', + source=test_path + 'tests/sample.kml', + filtr="Subcategory 3") importer3.categories.add(subcategories[2]) - importer4 = Importer.objects.create(importer_type='KML', - source=test_dir_path+'tests/sample.kml.zip', zipped=True, - default_description="Default description") + importer4 = Importer.objects.create( + importer_type='KML', + source=test_dir_path + 'tests/sample.kml.zip', zipped=True, + default_description="Default description") importer4.categories.add(subcategories[3]) - importer5 = Importer.objects.create(importer_type='KML', - source=test_dir_path+'tests/sample-no-folder.kml', zipped=False, - default_description="Default description") + importer5 = Importer.objects.create( + importer_type='KML', + source=test_dir_path + 'tests/sample-no-folder.kml', zipped=False, + default_description="Default description") importer5.categories.add(subcategories[4]) - self.marker_importers = [(importer1, 1), (importer2, 3), (importer3, 0), - (importer4, 4), (importer5, 3)] + self.marker_importers = [ + (importer1, 1), (importer2, 3), (importer3, 0), (importer4, 4), + (importer5, 3)] def test_defaultdescription(self): Marker.objects.all().delete() @@ -231,19 +226,22 @@ class KMLImporterTest(TestCase, ImporterTest): self.assertEqual(last_marker.description, new_desc) + class ShapefileImporterTest(TestCase, ImporterTest): def setUp(self): self.subcategories = subcategory_setup() - importer = Importer.objects.create(importer_type='SHP', - source=test_dir_path+'tests/sample_nodes.shp.zip', zipped=True) + importer = Importer.objects.create( + importer_type='SHP', + source=test_dir_path + 'tests/sample_nodes.shp.zip', zipped=True) importer.categories.add(self.subcategories[0]) - importer2 = Importer.objects.create(importer_type='SHP', - source=test_dir_path+'tests/sample_ways.shp.zip', + importer2 = Importer.objects.create( + importer_type='SHP', + source=test_dir_path + 'tests/sample_ways.shp.zip', zipped=True) importer2.categories.add(self.subcategories[1]) self.marker_importers = [(importer, 29), - (importer2, 5),] + (importer2, 5)] self.markers = marker_setup() def test_export(self): @@ -268,60 +266,71 @@ class ShapefileImporterTest(TestCase, ImporterTest): ).count() self.assertEqual(nb, 0) + class OSMImporterTest(TestCase, ImporterTest): def setUp(self): subcategories = subcategory_setup() - markers = marker_setup() - importer1 = Importer.objects.create(importer_type='OSM', - source=test_dir_path+'tests/sample_nodes.osm') + marker_setup() + importer1 = Importer.objects.create( + importer_type='OSM', + source=test_dir_path + 'tests/sample_nodes.osm') importer1.categories.add(subcategories[0]) - importer2 = Importer.objects.create(importer_type='OSM', - source=test_dir_path+'tests/sample_ways.osm') + importer2 = Importer.objects.create( + importer_type='OSM', + source=test_dir_path + 'tests/sample_ways.osm') importer2.categories.add(subcategories[1]) - importer3 = Importer.objects.create(importer_type='OSM', - source='http://open.mapquestapi.com/xapi/api/0.6/way'\ - '[highway=motorway]'\ - '[bbox=2.0393839939136975,48.68908639634696,'\ + importer3 = Importer.objects.create( + importer_type='OSM', + source='http://open.mapquestapi.com/xapi/api/0.6/way' + '[highway=motorway]' + '[bbox=2.0393839939136975,48.68908639634696,' '2.3140421970277316,48.790972349390415]') self.marker_importers = [(importer1, 19), (importer2, 8), (importer3, None)] + class GeoRSSImporterTest(TestCase, ImporterTest): def setUp(self): subcategories = subcategory_setup() - importer1 = Importer.objects.create(importer_type='RSS', - source=test_dir_path+'tests/georss_simple.xml') + importer1 = Importer.objects.create( + importer_type='RSS', + source=test_dir_path + 'tests/georss_simple.xml') importer1.categories.add(subcategories[0]) - importer2 = Importer.objects.create(importer_type='RSS', - source=test_dir_path+'tests/eqs7day-M5.xml') + importer2 = Importer.objects.create( + importer_type='RSS', source=test_dir_path + 'tests/eqs7day-M5.xml') importer2.categories.add(subcategories[1]) self.marker_importers = [(importer1, 1), (importer2, 32)] + class HtmlXsltImporterTest(TestCase, ImporterTest): def setUp(self): subcategories = subcategory_setup() xslt1 = File(open(test_dir_path + 'tests/villiers-le-bacle.xslt')) - xslt2 = File(open(test_dir_path + 'tests/villiers-le-bacle-detail.xslt')) - importer1 = Importer.objects.create(importer_type='XSLT', - source='http://www.chymeres.net/test/ville-villierslebacle.fr/', - source_file=xslt1, source_file_alt=xslt2, - default_localisation='SRID=4326;POINT(-4.5 48.4)',) + xslt2 = File(open(test_dir_path + + 'tests/villiers-le-bacle-detail.xslt')) + importer1 = Importer.objects.create( + importer_type='XSLT', + source='http://www.chymeres.net/test/ville-villierslebacle.fr/', + source_file=xslt1, source_file_alt=xslt2, + default_localisation='SRID=4326;POINT(-4.5 48.4)',) importer1.categories.add(subcategories[0]) - self.marker_importers = [(importer1, 7),] + self.marker_importers = [(importer1, 7)] + class XmlXsltImporterTest(TestCase, ImporterTest): def setUp(self): subcategories = subcategory_setup() xslt1 = File(open(test_dir_path + 'tests/magny-xml.xslt')) - importer1 = Importer.objects.create(importer_type='XXLT', - source='http://www.chymeres.net/test/magny.xml', - source_file=xslt1, - default_localisation='SRID=4326;POINT(-4.5 48.4)',) + importer1 = Importer.objects.create( + importer_type='XXLT', + source='http://www.chymeres.net/test/magny.xml', + source_file=xslt1, + default_localisation='SRID=4326;POINT(-4.5 48.4)',) importer1.categories.add(subcategories[0]) - self.marker_importers = [(importer1, 10),] + self.marker_importers = [(importer1, 10)] class JsonImporterTest(TestCase, ImporterTest): @@ -357,31 +366,31 @@ class FeedsTest(TestCase): doc = lxml.etree.fromstring(response.content) self.assertEqual(int(doc.xpath('count(//item)')), 2) + class AdminTest(TestCase): def setUp(self): self.areas = areas_setup() self.markers = marker_setup() - self.adminuser = User.objects.create_superuser('admin', - 'admin@test.com', - 'pass') + self.adminuser = User.objects.create_superuser( + 'admin', 'admin@test.com', 'pass') self.client.login(username='admin', password='pass') def test_actions(self): q_markers = Marker.objects.filter(pk__in=[m.pk for m in self.markers]) # disable - response = self.client.post('/admin/chimere/marker/', - data={'action':['disable'], - '_selected_action':[unicode(m.pk) - for m in self.markers], - }) + self.client.post( + '/admin/chimere/marker/', + data={'action': ['disable'], + '_selected_action': [unicode(m.pk) for m in self.markers], + }) self.assertEqual(q_markers.count(), q_markers.filter(status='D').count()) # validate - response = self.client.post('/admin/chimere/marker/', - data={'action':['validate'], - '_selected_action':[unicode(m.pk) - for m in self.markers] - }) + self.client.post('/admin/chimere/marker/', + data={'action': ['validate'], + '_selected_action': [unicode(m.pk) + for m in self.markers] + }) self.assertEqual(q_markers.count(), q_markers.filter(status='A').count()) @@ -393,13 +402,16 @@ class MarkerFormTest(TestCase): def test_marker_creation(self): current_date = datetime.datetime.now() # end_date before start_date - data = {'name':"Marker 1", 'status':'A', 'available_date':current_date, - 'point':'SRID=4326;POINT(-4.5 48.4)', 'start_date':current_date, - 'end_date':current_date - datetime.timedelta(1), - 'categories':[self.subcategories[0].pk]} + data = {'name': "Marker 1", 'status': 'A', + 'available_date': current_date, + 'point': 'SRID=4326;POINT(-4.5 48.4)', + 'start_date': current_date, + 'end_date': current_date - datetime.timedelta(1), + 'categories': [self.subcategories[0].pk]} form = MarkerForm(data) self.assertEqual(form.is_valid(), False) + class AreaTest(TestCase): def setUp(self): self.areas = areas_setup() @@ -411,6 +423,7 @@ class AreaTest(TestCase): response = self.client.get('/%s/' % area_1.urn) self.assertRedirects(response, '/') + class AreaAdminFormTest(TestCase): def setUp(self): self.areas = areas_setup() @@ -425,14 +438,15 @@ class AreaAdminFormTest(TestCase): self.assertEqual(area_1.default, False) def test_area_creation(self): - base_data = {'name':u'New test', 'order':3, 'available':True, - 'urn':'area-new', - 'upper_left_lat':48.5, - 'upper_left_lon':-5, - 'lower_right_lat':48, - 'lower_right_lon':-4, - 'upper_left_corner':'SRID=4326;POINT(0 0)', - 'lower_right_corner':'SRID=4326;POINT(0 0)'} + base_data = { + 'name': u'New test', 'order': 3, 'available': True, + 'urn': 'area-new', + 'upper_left_lat': 48.5, + 'upper_left_lon': -5, + 'lower_right_lat': 48, + 'lower_right_lon': -4, + 'upper_left_corner': 'SRID=4326;POINT(0 0)', + 'lower_right_corner': 'SRID=4326;POINT(0 0)'} # order already given data = base_data.copy() data['order'] = self.areas[0].order @@ -452,6 +466,7 @@ class AreaAdminFormTest(TestCase): form = AreaAdminForm(data) self.assertEqual(form.is_valid(), False) + class DynamicCategoryTest(TestCase): def setUp(self): self.areas = areas_setup() @@ -472,55 +487,55 @@ class DynamicCategoryTest(TestCase): cats = json.loads(response.content)['categories'] self.assertEqual(len(cats), 5) + class NewsTest(TestCase): def setUp(self): self.areas = areas_setup() self.markers = marker_setup() current_date = datetime.datetime.now() - marker = Marker.objects.create(name="Marker 4", status='A', - point='SRID=4326;POINT(-4.5 48.45)', - available_date=current_date - datetime.timedelta(days=90), - start_date=current_date - datetime.timedelta(days=90), - end_date=None) + Marker.objects.create( + name="Marker 4", status='A', point='SRID=4326;POINT(-4.5 48.45)', + available_date=current_date - datetime.timedelta(days=90), + start_date=current_date - datetime.timedelta(days=90), + end_date=None) self.news = [] self.news.append(News.objects.create(is_front_page=True, - title=u"Test news 1", available=True, - date=datetime.date.today())) + title=u"Test news 1", available=True, + date=datetime.date.today())) self.news.append(News.objects.create(is_front_page=True, - title=u"Test news 2", available=False, - date=datetime.date.today())) + title=u"Test news 2", available=False, + date=datetime.date.today())) def test_news_display(self): context = display_news(Context({})) self.assertEqual(len(context['news_lst']), 2) - context = display_news(Context({'area_name':'area-2'})) + context = display_news(Context({'area_name': 'area-2'})) self.assertEqual(len(context['news_lst']), 1) + class RapprochementTest(TestCase): def setUp(self): self.areas = areas_setup() self.subcategories = subcategory_setup() self.markers = marker_setup(self.subcategories) self.routes = route_setup(self.subcategories) - self.adminuser = User.objects.create_superuser('admin', - 'admin@test.com', - 'pass') + self.adminuser = User.objects.create_superuser( + 'admin', 'admin@test.com', 'pass') self.client.login(username='admin', password='pass') def test_managed_modified_markers(self): ref_marker = self.markers[0] - new_vals = {'name':"Marker 1 - modified", - 'point':GEOSGeometry('SRID=4326;POINT(-4 48)')} - values = {'status':'M', 'ref_item':ref_marker} + new_vals = {'name': "Marker 1 - modified", + 'point': GEOSGeometry('SRID=4326;POINT(-4 48)')} + values = {'status': 'M', 'ref_item': ref_marker} values.update(new_vals) modified_marker = Marker.objects.create(**values) modified_marker.categories.add(ref_marker.categories.all()[0]) - response = self.client.post('/admin/chimere/marker/', - data={'action':['managed_modified'], - 'index':0, 'rapprochement':1, - 'name':1, 'point':1, - '_selected_action':[unicode(ref_marker.pk)] - }) + self.client.post( + '/admin/chimere/marker/', + data={'action': ['managed_modified'], + 'index': 0, 'rapprochement': 1, 'name': 1, 'point': 1, + '_selected_action': [unicode(ref_marker.pk)]}) ref_marker = Marker.objects.get(pk=ref_marker.pk) self.assertEqual(Marker.objects.filter(ref_item=ref_marker, status='M').count(), 0) @@ -529,20 +544,20 @@ class RapprochementTest(TestCase): def test_managed_modified_imported_markers(self): ref_marker = self.markers[0] - new_vals = {'name':"Marker 1 - modified", - 'point':GEOSGeometry('SRID=4326;POINT(-4 48)')} - values = {'status':'I', 'ref_item':ref_marker, 'import_version':42} + new_vals = {'name': "Marker 1 - modified", + 'point': GEOSGeometry('SRID=4326;POINT(-4 48)')} + values = {'status': 'I', 'ref_item': ref_marker, 'import_version': 42} values.update(new_vals) modified_marker = Marker.objects.create(**values) self.assertNotEqual(ref_marker.import_version, modified_marker.import_version) modified_marker.categories.add(ref_marker.categories.all()[0]) - response = self.client.post('/admin/chimere/marker/', - data={'action':['managed_modified'], - 'index':0, 'rapprochement':1, - 'name':1, 'point':1, - '_selected_action':[unicode(ref_marker.pk)] - }) + self.client.post('/admin/chimere/marker/', + data={'action': ['managed_modified'], + 'index': 0, 'rapprochement': 1, + 'name': 1, 'point': 1, + '_selected_action': [unicode(ref_marker.pk)] + }) ref_marker = Marker.objects.get(pk=ref_marker.pk) self.assertEqual(Marker.objects.filter(ref_item=ref_marker, status='I').count(), 0) @@ -551,37 +566,38 @@ class RapprochementTest(TestCase): def test_managed_modified_routes(self): ref_route = self.routes[0] - new_vals = {'name':"Route 1 - modified", - 'route':GEOSGeometry('SRID=4326;LINESTRING(1 1,2 2)')} - values = {'status':'M', 'ref_item':ref_route, - 'has_associated_marker':True} + new_vals = {'name': "Route 1 - modified", + 'route': GEOSGeometry('SRID=4326;LINESTRING(1 1,2 2)')} + values = {'status': 'M', 'ref_item': ref_route, + 'has_associated_marker': True} values.update(new_vals) modified_route = Route.objects.create(**values) modified_route.categories.add(self.subcategories[1]) - response = self.client.post('/admin/chimere/route/', - data={'action':['managed_modified'], - 'index':0, 'rapprochement':1, - 'name':1, 'route':1, 'categories':1, - '_selected_action':[unicode(ref_route.pk)] - }) + self.client.post('/admin/chimere/route/', + data={'action': ['managed_modified'], + 'index': 0, 'rapprochement': 1, + 'name': 1, 'route': 1, 'categories': 1, + '_selected_action': [unicode(ref_route.pk)] + }) ref_route = Route.objects.get(pk=ref_route.pk) self.assertEqual(Route.objects.filter(ref_item=ref_route, - status='M').count(), 0) + status='M').count(), 0) self.assertEqual(ref_route.name, new_vals['name']) self.assertEqual(ref_route.route.wkt, new_vals['route'].wkt) self.assertEqual(ref_route.categories.all()[0], self.subcategories[1]) self.assertEqual(ref_route.associated_marker.all()[0].name, ref_route.name) + class RouteTest(TestCase): def setUp(self): self.subcategories = subcategory_setup() def test_route_creation(self): - route_1 = Route.objects.create(name='Route 1', - route='SRID=4326;LINESTRING (30 10, 10 30, 40 40)') + route_1 = Route.objects.create( + name='Route 1', route='SRID=4326;LINESTRING (30 10, 10 30, 40 40)') self.assertEqual(Marker.objects.filter(route=route_1).count(), 1) - route_2 = Route.objects.create(name='Route 1', - route='SRID=4326;LINESTRING (30 10, 10 30, 40 40)', - has_associated_marker=False) + route_2 = Route.objects.create( + name='Route 1', route='SRID=4326;LINESTRING (30 10, 10 30, 40 40)', + has_associated_marker=False) self.assertEqual(Marker.objects.filter(route=route_2).count(), 0) |