diff options
Diffstat (limited to 'chimere/tests.py')
-rw-r--r-- | chimere/tests.py | 125 |
1 files changed, 118 insertions, 7 deletions
diff --git a/chimere/tests.py b/chimere/tests.py index 7de79d8..f8b41b1 100644 --- a/chimere/tests.py +++ b/chimere/tests.py @@ -9,13 +9,18 @@ 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.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.forms import MarkerForm +from chimere.forms import MarkerForm, AreaAdminForm from chimere.templatetags.chimere_tags import display_news from chimere.utils import ShapefileManager @@ -28,7 +33,7 @@ def areas_setup(): available=True, upper_left_corner='SRID=4326;POINT(-3 47.5)', lower_right_corner='SRID=4326;POINT(-2.5 47)') - return [area_1] + return [area_1, area_2] def subcategory_setup(): category = Category.objects.create(name='Main category', @@ -118,7 +123,7 @@ class KMLImporterTest(TestCase, ImporterTest): importer2 = Importer.objects.create(importer_type='KML', source=test_dir_path+'tests/sample.kml', - filtr="Subcategory 1") + filtr="Subcategory 1", associate_marker_to_way=True) importer2.categories.add(subcategory_1) importer2.categories.add(subcategory_2) @@ -136,14 +141,14 @@ class KMLImporterTest(TestCase, ImporterTest): class ShapefileImporterTest(TestCase, ImporterTest): def setUp(self): - subcategory_1, subcategory_2 = subcategory_setup() + self.subcategory_1, self.subcategory_2 = subcategory_setup() importer = Importer.objects.create(importer_type='SHP', source=test_dir_path+'tests/sample_nodes.shp.zip', zipped=True) - importer.categories.add(subcategory_1) + importer.categories.add(self.subcategory_1) importer2 = Importer.objects.create(importer_type='SHP', source=test_dir_path+'tests/sample_ways.shp.zip', zipped=True) - importer2.categories.add(subcategory_2) + importer2.categories.add(self.subcategory_2) self.marker_importers = [(importer, 29), (importer2, 5),] @@ -152,6 +157,23 @@ class ShapefileImporterTest(TestCase, ImporterTest): def test_export(self): filename, zip_stream = ShapefileManager.export(Marker.objects.all()) + def test_associate_marker_to_way(self): + importer, nb = self.marker_importers[1] + + importer.associate_marker_to_way = True + importer.save() + nb, nb_updated, res = importer.manager.get() + nb = Marker.objects.filter(categories__pk=self.subcategory_2.pk).count() + self.assertEqual(nb, 5) + Marker.objects.filter(categories__pk=self.subcategory_2.pk).delete() + Route.objects.filter(categories__pk=self.subcategory_2.pk).delete() + + importer.associate_marker_to_way = False + importer.save() + nb, nb_updated, res = importer.manager.get() + nb = Marker.objects.filter(categories__pk=self.subcategory_2.pk).count() + self.assertEqual(nb, 0) + class OSMImporterTest(TestCase, ImporterTest): def setUp(self): subcategory_1, subcategory_2 = subcategory_setup() @@ -213,7 +235,54 @@ class MarkerFormTest(TestCase): form = MarkerForm(data) self.assertEqual(form.is_valid(), False) -class CategoryTest(TestCase): +class AreaTest(TestCase): + def setUp(self): + self.areas = areas_setup() + + def test_area_availability(self): + area_1 = self.areas[0] + area_1.available = False + area_1.save() + response = self.client.get('/%s/' % area_1.urn) + self.assertRedirects(response, '/') + +class AreaAdminFormTest(TestCase): + def setUp(self): + self.areas = areas_setup() + + def test_area_default(self): + area_1, area_2 = self.areas[0], self.areas[1] + area_1.default = True + area_1.save() + area_2.default = True + area_2.save() + area_1 = Area.objects.get(urn=area_1.urn) + 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)'} + # order already given + data = base_data.copy() + data['order'] = 1 + form = AreaAdminForm(data) + self.assertEqual(form.is_valid(), False) + # empty area + data = base_data.copy() + data.update({'upper_left_lat': 0, + 'upper_left_lon': 0, + 'lower_right_lat': 0, + 'lower_right_lon': 0}) + form = AreaAdminForm(data) + self.assertEqual(form.is_valid(), False) + +class DynamicCategoryTest(TestCase): def setUp(self): self.areas = areas_setup() self.markers = marker_setup() @@ -244,3 +313,45 @@ class NewsTest(TestCase): self.assertEqual(len(context['news_lst']), 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.markers = marker_setup() + self.adminuser = User.objects.create_superuser('admin', + 'admin@test.com', + 'pass') + self.client.login(username='admin', password='pass') + + def test_managed_modified(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} + 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)] + }) + ref_marker = Marker.objects.get(pk=ref_marker.pk) + self.assertEqual(Marker.objects.filter(ref_item=ref_marker, + status='M').count(), 0) + for k in new_vals: + self.assertEqual(getattr(ref_marker, k), new_vals[k]) + +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)') + 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) + self.assertEqual(Marker.objects.filter(route=route_2).count(), 0) |