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