mirror of
				https://github.com/django/django.git
				synced 2025-10-26 07:06:08 +00:00 
			
		
		
		
	Fixed #26512 -- Added tests for SpatialRefSysMixin.get_units().
This commit is contained in:
		| @@ -164,15 +164,14 @@ class SpatialRefSysMixin(object): | |||||||
|     @classmethod |     @classmethod | ||||||
|     def get_units(cls, wkt): |     def get_units(cls, wkt): | ||||||
|         """ |         """ | ||||||
|         Class method used by GeometryField on initialization to |         Return a tuple of (unit_value, unit_name) for the given WKT without | ||||||
|         retrieve the units on the given WKT, without having to use |         using any of the database fields. | ||||||
|         any of the database fields. |  | ||||||
|         """ |         """ | ||||||
|         if gdal.HAS_GDAL: |         if gdal.HAS_GDAL: | ||||||
|             return gdal.SpatialReference(wkt).units |             return gdal.SpatialReference(wkt).units | ||||||
|         else: |         else: | ||||||
|             m = cls.units_regex.match(wkt) |             m = cls.units_regex.match(wkt) | ||||||
|             return m.group('unit'), m.group('unit_name') |             return float(m.group('unit')), m.group('unit_name') | ||||||
|  |  | ||||||
|     @classmethod |     @classmethod | ||||||
|     def get_spheroid(cls, wkt, string=True): |     def get_spheroid(cls, wkt, string=True): | ||||||
|   | |||||||
| @@ -1,8 +1,9 @@ | |||||||
|  | import re | ||||||
| import unittest | import unittest | ||||||
|  |  | ||||||
| from django.contrib.gis.gdal import HAS_GDAL | from django.contrib.gis.gdal import HAS_GDAL | ||||||
| from django.db import connection | from django.db import connection | ||||||
| from django.test import skipUnlessDBFeature | from django.test import mock, skipUnlessDBFeature | ||||||
| from django.utils import six | from django.utils import six | ||||||
|  |  | ||||||
| from .utils import SpatialRefSys, oracle, postgis, spatialite | from .utils import SpatialRefSys, oracle, postgis, spatialite | ||||||
| @@ -20,6 +21,18 @@ test_srs = ({ | |||||||
|     # From proj's "cs2cs -le" and Wikipedia (semi-minor only) |     # From proj's "cs2cs -le" and Wikipedia (semi-minor only) | ||||||
|     'ellipsoid': (6378137.0, 6356752.3, 298.257223563), |     'ellipsoid': (6378137.0, 6356752.3, 298.257223563), | ||||||
|     'eprec': (1, 1, 9), |     'eprec': (1, 1, 9), | ||||||
|  |     'wkt': re.sub('[\s+]', '', """ | ||||||
|  |         GEOGCS["WGS 84", | ||||||
|  |     DATUM["WGS_1984", | ||||||
|  |         SPHEROID["WGS 84",6378137,298.257223563, | ||||||
|  |             AUTHORITY["EPSG","7030"]], | ||||||
|  |         AUTHORITY["EPSG","6326"]], | ||||||
|  |     PRIMEM["Greenwich",0, | ||||||
|  |         AUTHORITY["EPSG","8901"]], | ||||||
|  |     UNIT["degree",0.01745329251994328, | ||||||
|  |         AUTHORITY["EPSG","9122"]], | ||||||
|  |     AUTHORITY["EPSG","4326"]] | ||||||
|  |     """) | ||||||
| }, { | }, { | ||||||
|     'srid': 32140, |     'srid': 32140, | ||||||
|     'auth_name': ('EPSG', False), |     'auth_name': ('EPSG', False), | ||||||
| @@ -43,6 +56,19 @@ test_srs = ({ | |||||||
| @skipUnlessDBFeature("has_spatialrefsys_table") | @skipUnlessDBFeature("has_spatialrefsys_table") | ||||||
| class SpatialRefSysTest(unittest.TestCase): | class SpatialRefSysTest(unittest.TestCase): | ||||||
|  |  | ||||||
|  |     def test_get_units(self): | ||||||
|  |         epsg_4326 = next(f for f in test_srs if f['srid'] == 4326) | ||||||
|  |         unit, unit_name = SpatialRefSys().get_units(epsg_4326['wkt']) | ||||||
|  |         self.assertEqual(unit_name, 'degree') | ||||||
|  |         self.assertAlmostEqual(unit, 0.01745329251994328) | ||||||
|  |  | ||||||
|  |     @mock.patch('django.contrib.gis.gdal.HAS_GDAL', False) | ||||||
|  |     def test_get_units_without_gdal(self): | ||||||
|  |         epsg_4326 = next(f for f in test_srs if f['srid'] == 4326) | ||||||
|  |         unit, unit_name = SpatialRefSys().get_units(epsg_4326['wkt']) | ||||||
|  |         self.assertEqual(unit_name, 'degree') | ||||||
|  |         self.assertAlmostEqual(unit, 0.01745329251994328) | ||||||
|  |  | ||||||
|     def test_retrieve(self): |     def test_retrieve(self): | ||||||
|         """ |         """ | ||||||
|         Test retrieval of SpatialRefSys model objects. |         Test retrieval of SpatialRefSys model objects. | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user