def test_detail_target_objects(self): self.login() if settings.TREKKING_TOPOLOGY_ENABLED: path = PathFactory.create(geom=LineString((200, 200), (300, 300))) signa = SignageFactory.create(paths=[(path, .5, .5)]) signa.save() infrastructure = InfrastructureFactory.create(paths=[(path, .5, .5)]) infrastructure.save() poi = POIFactory.create(paths=[(path, .5, .5)]) trek = TrekFactory.create(paths=[(path, .5, .5)]) service = ServiceFactory.create(paths=[(path, .5, .5)]) topo = TopologyFactory.create(paths=[(path, .5, .5)]) topo.save() path_other = PathFactory.create( geom=LineString((10000, 0), (10010, 0))) signa_other = SignageFactory.create(paths=[(path_other, .5, .5)]) signa_other.save() else: signa = SignageFactory.create(geom='SRID=2154;POINT (250 250)') infrastructure = InfrastructureFactory.create( geom='SRID=2154;POINT (250 250)') poi = POIFactory.create(geom='SRID=2154;POINT (250 250)') trek = TrekFactory.create(geom='SRID=2154;POINT (250 250)') service = ServiceFactory.create(geom='SRID=2154;POINT (250 250)') topo = TopologyFactory.create(geom='SRID=2154;POINT (250 250)') signa_other = SignageFactory.create( geom='SRID=2154;POINT (10005 0)') intervention_signa = InterventionFactory.create(target=signa) intervention_infra = InterventionFactory.create(target=infrastructure) intervention_poi = InterventionFactory.create(target=poi) intervention_trek = InterventionFactory.create(target=trek) intervention_service = InterventionFactory.create(target=service) intervention_topo = InterventionFactory.create(target=topo) blade = BladeFactory(signage=signa, number="1") intervention_blade = InterventionFactory.create(target=blade) intervention_other = InterventionFactory.create(target=signa_other) response = self.client.get(signa.get_detail_url()) self.assertEqual(response.status_code, 200) self.assertContains(response, intervention_signa.target_display) self.assertContains(response, intervention_infra.target_display) self.assertContains(response, intervention_poi.target_display) self.assertContains(response, intervention_trek.target_display) self.assertContains(response, intervention_service.target_display) self.assertContains(response, intervention_blade.target_display) self.assertContains(response, intervention_topo.target_display) self.assertNotContains(response, intervention_other.target_display)
def test_delete_multiple_path(self): path_1 = PathFactory.create(name="path_1", geom=LineString((0, 0), (4, 0))) path_2 = PathFactory.create(name="path_2", geom=LineString((2, 2), (2, -2))) poi = POIFactory.create(no_path=True, name="POI_1") poi.add_path(path_1, start=0, end=0) infrastructure = InfrastructureFactory.create(no_path=True, name="INFRA_1") infrastructure.add_path(path_1, start=0, end=1) signage = SignageFactory.create(no_path=True, name="SIGNA_1") signage.add_path(path_1, start=0, end=1) trail = TrailFactory.create(no_path=True, name="TRAIL_1") trail.add_path(path_2, start=0, end=1) service = ServiceFactory.create(no_path=True) service.add_path(path_2, start=0, end=1) InterventionFactory.create(topology=signage, name="INTER_1") response = self.client.get(reverse('core:multiple_path_delete', args=['%s,%s' % (path_1.pk, path_2.pk)])) self.assertIn("POI_1", response.content) self.assertIn("INFRA_1", response.content) self.assertIn("SIGNA_1", response.content) self.assertIn("TRAIL_1", response.content) self.assertIn("ServiceType", response.content) self.assertIn("INTER_1", response.content) response = self.client.post(reverse('core:multiple_path_delete', args=['%s,%s' % (path_1.pk, path_2.pk)])) self.assertEqual(response.status_code, 302) self.assertEqual(Path.objects.count(), 2) self.assertEqual(Path.objects.filter(pk__in=[path_1.pk, path_2.pk]).count(), 0)
def test_delete_show_topologies(self): self.login() path = PathFactory(name="PATH_AB", geom=LineString((0, 0), (4, 0))) poi = POIFactory.create(name='POI', no_path=True) poi.add_path(path, start=0.5, end=0.5) trail = TrailFactory.create(name='Trail', no_path=True) trail.add_path(path, start=0.1, end=0.2) trek = TrekFactory.create(name='Trek', no_path=True) trek.add_path(path, start=0.2, end=0.3) service = ServiceFactory.create(no_path=True, type__name='ServiceType') service.add_path(path, start=0.2, end=0.3) signage = SignageFactory.create(name='Signage', no_path=True) signage.add_path(path, start=0.2, end=0.2) infrastructure = InfrastructureFactory.create(name='Infrastructure', no_path=True) infrastructure.add_path(path, start=0.2, end=0.2) intervention1 = InterventionFactory.create(topology=signage, name='Intervention1') t = TopologyFactory.create(no_path=True) t.add_path(path, start=0.2, end=0.5) intervention2 = InterventionFactory.create(topology=t, name='Intervention2') response = self.client.get(path.get_delete_url()) self.assertEqual(response.status_code, 200) self.assertContains(response, 'Different topologies are linked with this path') self.assertContains(response, '<a href="/poi/%d/">POI</a>' % poi.pk) self.assertContains(response, '<a href="/trail/%d/">Trail</a>' % trail.pk) self.assertContains(response, '<a href="/trek/%d/">Trek</a>' % trek.pk) self.assertContains(response, '<a href="/service/%d/">ServiceType</a>' % service.pk) self.assertContains(response, '<a href="/signage/%d/">Signage</a>' % signage.pk) self.assertContains(response, '<a href="/infrastructure/%d/">Infrastructure</a>' % infrastructure.pk) self.assertContains(response, '<a href="/intervention/%d/">Intervention1</a>' % intervention1.pk) self.assertContains(response, '<a href="/intervention/%d/">Intervention2</a>' % intervention2.pk)
def test_deleted_services_nds(self): trek = TrekFactory.create(geom=LineString((0, 0), (4, 4))) service = ServiceFactory.create(geom=Point(2.4, 2.4)) service.type.practices.add(trek.practice) self.assertCountEqual(trek.services, [service]) service.delete() self.assertCountEqual(trek.services, [])
def test_helpers(self): p1 = PathFactory.create(geom=LineString((0, 0), (4, 4))) p2 = PathFactory.create(geom=LineString((4, 4), (8, 8))) trek = TrekFactory.create(paths=[(p1, 0.5, 1), (p2, 0, 1)]) poi = POIFactory.create(paths=[(p1, 0.6, 0.6)]) poi2 = POIFactory.create(paths=[(p1, 0.6, 0.6)]) service = ServiceFactory.create(paths=[(p1, 0.7, 0.7)]) service.type.practices.add(trek.practice) trek.pois_excluded.add(poi2.pk) # /!\ District are automatically linked to paths at DB level d1 = DistrictFactory.create(geom=MultiPolygon( Polygon(((-2, -2), (3, -2), (3, 3), (-2, 3), (-2, -2))))) # Ensure related objects are accessible self.assertCountEqual(trek.pois_excluded.all(), [poi2]) self.assertCountEqual(trek.all_pois, [poi, poi2]) self.assertCountEqual(trek.pois, [poi]) self.assertCountEqual(trek.services, [service]) self.assertCountEqual(poi.treks, [trek]) self.assertCountEqual(service.treks, [trek]) self.assertCountEqual(trek.districts, [d1]) # Ensure there is no duplicates self.assertCountEqual(trek.pois_excluded.all(), [poi2]) self.assertCountEqual(trek.all_pois, [poi, poi2]) self.assertCountEqual(trek.pois, [poi]) self.assertCountEqual(trek.services, [service]) self.assertCountEqual(poi.treks, [trek]) self.assertCountEqual(service.treks, [trek]) d2 = DistrictFactory.create(geom=MultiPolygon( Polygon(((3, 3), (9, 3), (9, 9), (3, 9), (3, 3))))) self.assertCountEqual(trek.districts, [d1, d2])
def test_deleted_services(self): p1 = PathFactory.create(geom=LineString((0, 0), (4, 4))) trek = TrekFactory.create(paths=[p1]) service = ServiceFactory.create(paths=[(p1, 0.6, 0.6)]) service.type.practices.add(trek.practice) self.assertCountEqual(trek.services, [service]) service.delete() self.assertCountEqual(trek.services, [])
def test_deleted_services(self): p1 = PathFactory.create(geom=LineString((0, 0), (4, 4))) trek = TrekFactory.create(no_path=True) trek.add_path(p1) service = ServiceFactory.create(no_path=True) service.type.practices.add(trek.practice) service.add_path(p1, start=0.6, end=0.6) self.assertItemsEqual(trek.services, [service]) service.delete() self.assertItemsEqual(trek.services, [])
def test_delete_multiple_path(self): path_1 = PathFactory.create(name="path_1", geom=LineString((0, 0), (4, 0))) path_2 = PathFactory.create(name="path_2", geom=LineString((2, 2), (2, -2))) POIFactory.create(paths=[(path_1, 0, 0)], name="POI_1") InfrastructureFactory.create(paths=[(path_1, 0, 1)], name="INFRA_1") signage = SignageFactory.create(paths=[(path_1, 0, 1)], name="SIGNA_1") TrailFactory.create(paths=[(path_2, 0, 1)], name="TRAIL_1") ServiceFactory.create(paths=[(path_2, 0, 1)]) InterventionFactory.create(target=signage, name="INTER_1") response = self.client.get(reverse('core:multiple_path_delete', args=['%s,%s' % (path_1.pk, path_2.pk)])) self.assertContains(response, "POI_1") self.assertContains(response, "INFRA_1") self.assertContains(response, "SIGNA_1") self.assertContains(response, "TRAIL_1") self.assertContains(response, "Service type") self.assertContains(response, "INTER_1") response = self.client.post(reverse('core:multiple_path_delete', args=['%s,%s' % (path_1.pk, path_2.pk)])) self.assertEqual(response.status_code, 302) self.assertEqual(Path.objects.count(), 2) self.assertEqual(Path.objects.filter(pk__in=[path_1.pk, path_2.pk]).count(), 0)
def test_helpers(self): trek = TrekFactory.create(no_path=True) p1 = PathFactory.create(geom=LineString((0, 0), (4, 4))) p2 = PathFactory.create(geom=LineString((4, 4), (8, 8))) poi = POIFactory.create(no_path=True) service = ServiceFactory.create(no_path=True) service.type.practices.add(trek.practice) PathAggregationFactory.create(topo_object=trek, path=p1, start_position=0.5) PathAggregationFactory.create(topo_object=trek, path=p2) PathAggregationFactory.create(topo_object=poi, path=p1, start_position=0.6, end_position=0.6) PathAggregationFactory.create(topo_object=service, path=p1, start_position=0.7, end_position=0.7) # /!\ District are automatically linked to paths at DB level d1 = DistrictFactory.create(geom=MultiPolygon( Polygon(((-2, -2), (3, -2), (3, 3), (-2, 3), (-2, -2))))) # Ensure related objects are accessible self.assertItemsEqual(trek.pois, [poi]) self.assertItemsEqual(trek.services, [service]) self.assertItemsEqual(poi.treks, [trek]) self.assertItemsEqual(service.treks, [trek]) self.assertItemsEqual(trek.districts, [d1]) # Ensure there is no duplicates PathAggregationFactory.create(topo_object=trek, path=p1, end_position=0.5) self.assertItemsEqual(trek.pois, [poi]) self.assertItemsEqual(trek.services, [service]) self.assertItemsEqual(poi.treks, [trek]) self.assertItemsEqual(service.treks, [trek]) d2 = DistrictFactory.create( geom=MultiPolygon(Polygon(((3, 3), (9, 3), (9, 9), (3, 9), (3, 3))))) self.assertItemsEqual(trek.districts, [d1, d2])
def test_helpers_nds(self): trek = TrekFactory.create(geom=LineString((2, 2), (8, 8))) poi = POIFactory.create(geom=Point(2.4, 2.4)) poi2 = POIFactory.create(geom=Point(2.4, 2.4)) service = ServiceFactory.create(geom=Point(2.8, 2.8)) service.type.practices.add(trek.practice) trek.pois_excluded.add(poi2.pk) # /!\ District are automatically linked to paths at DB level d1 = DistrictFactory.create(geom=MultiPolygon( Polygon(((-2, -2), (3, -2), (3, 3), (-2, 3), (-2, -2))))) # Ensure related objects are accessible self.assertCountEqual(trek.pois_excluded.all(), [poi2]) self.assertCountEqual(trek.all_pois, [poi, poi2]) self.assertCountEqual(trek.pois, [poi]) self.assertCountEqual(trek.services, [service]) self.assertCountEqual(poi.treks, [trek]) self.assertCountEqual(service.treks, [trek]) self.assertCountEqual(trek.districts, [d1])
def test_helpers(self): trek = TrekFactory.create(no_path=True) p1 = PathFactory.create(geom=LineString((0, 0), (4, 4))) p2 = PathFactory.create(geom=LineString((4, 4), (8, 8))) poi = POIFactory.create(no_path=True) poi2 = POIFactory.create(no_path=True) service = ServiceFactory.create(no_path=True) service.type.practices.add(trek.practice) trek.add_path(path=p1, start=0.5, end=1) trek.add_path(path=p2, start=0, end=1) poi.add_path(path=p1, start=0.6, end=0.6) poi2.add_path(path=p1, start=0.6, end=0.6) service.add_path(path=p1, start=0.7, end=0.7) trek.pois_excluded.add(poi2.pk) # /!\ District are automatically linked to paths at DB level d1 = DistrictFactory.create(geom=MultiPolygon( Polygon(((-2, -2), (3, -2), (3, 3), (-2, 3), (-2, -2))))) # Ensure related objects are accessible self.assertItemsEqual(trek.pois_excluded.all(), [poi2]) self.assertItemsEqual(trek.all_pois, [poi, poi2]) self.assertItemsEqual(trek.pois, [poi]) self.assertItemsEqual(trek.services, [service]) self.assertItemsEqual(poi.treks, [trek]) self.assertItemsEqual(service.treks, [trek]) self.assertItemsEqual(trek.districts, [d1]) # Ensure there is no duplicates trek.add_path(path=p1, start=0.5, end=1) self.assertItemsEqual(trek.pois_excluded.all(), [poi2]) self.assertItemsEqual(trek.all_pois, [poi, poi2]) self.assertItemsEqual(trek.pois, [poi]) self.assertItemsEqual(trek.services, [service]) self.assertItemsEqual(poi.treks, [trek]) self.assertItemsEqual(service.treks, [trek]) d2 = DistrictFactory.create(geom=MultiPolygon( Polygon(((3, 3), (9, 3), (9, 9), (3, 9), (3, 3))))) self.assertItemsEqual(trek.districts, [d1, d2])
def test_helpers(self): trek = TrekFactory.create(no_path=True) p1 = PathFactory.create(geom=LineString((0, 0), (4, 4))) p2 = PathFactory.create(geom=LineString((4, 4), (8, 8))) poi = POIFactory.create(no_path=True) service = ServiceFactory.create(no_path=True) service.type.practices.add(trek.practice) PathAggregationFactory.create(topo_object=trek, path=p1, start_position=0.5) PathAggregationFactory.create(topo_object=trek, path=p2) PathAggregationFactory.create(topo_object=poi, path=p1, start_position=0.6, end_position=0.6) PathAggregationFactory.create(topo_object=service, path=p1, start_position=0.7, end_position=0.7) # /!\ District are automatically linked to paths at DB level d1 = DistrictFactory.create(geom=MultiPolygon( Polygon(((-2, -2), (3, -2), (3, 3), (-2, 3), (-2, -2))))) # Ensure related objects are accessible self.assertItemsEqual(trek.pois, [poi]) self.assertItemsEqual(trek.services, [service]) self.assertItemsEqual(poi.treks, [trek]) self.assertItemsEqual(service.treks, [trek]) self.assertItemsEqual(trek.districts, [d1]) # Ensure there is no duplicates PathAggregationFactory.create(topo_object=trek, path=p1, end_position=0.5) self.assertItemsEqual(trek.pois, [poi]) self.assertItemsEqual(trek.services, [service]) self.assertItemsEqual(poi.treks, [trek]) self.assertItemsEqual(service.treks, [trek]) d2 = DistrictFactory.create(geom=MultiPolygon( Polygon(((3, 3), (9, 3), (9, 9), (3, 9), (3, 3))))) self.assertItemsEqual(trek.districts, [d1, d2])