summaryrefslogtreecommitdiff
path: root/chimere/tests.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@peacefrogs.net>2012-11-19 01:08:51 +0100
committerÉtienne Loks <etienne.loks@peacefrogs.net>2012-11-19 01:08:51 +0100
commitded35ffba989c28d8dd515fc9c0f4e241038d668 (patch)
treee756e63c9dca53bdf0f23e68a367a16b927ab61b /chimere/tests.py
parent5db6ae2fc14ebbec4b52151c7250ca0bba98bc02 (diff)
parent7d8c3719bb2dfaa70b1d6c5e2a19c53588091d3b (diff)
downloadChimère-ded35ffba989c28d8dd515fc9c0f4e241038d668.tar.bz2
Chimère-ded35ffba989c28d8dd515fc9c0f4e241038d668.zip
Merge branch 'master' into saclay
Conflicts: chimere/admin.py chimere/models.py chimere/templates/chimere/detail.html chimere/templatetags/chimere_tags.py chimere/tests.py
Diffstat (limited to 'chimere/tests.py')
-rw-r--r--chimere/tests.py125
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)