Skip to content

Commit 9e04be7

Browse files
committed
feat: Add tests for inbuilt models
1 parent c36ba71 commit 9e04be7

File tree

12 files changed

+249
-39
lines changed

12 files changed

+249
-39
lines changed

django-stubs/contrib/auth/models.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class Permission(models.Model):
2727
id: models.AutoField
2828
pk: models.AutoField
2929
name = models.CharField(max_length=255)
30-
content_type = models.ForeignKey[ContentType | Combinable, ContentType](ContentType, on_delete=models.CASCADE)
30+
content_type: models.ForeignKey[ContentType | Combinable, ContentType]
3131
content_type_id: int
3232
codename = models.CharField(max_length=100)
3333
group_set: ManyToManyDescriptor[Group, _Group_permissions]

django-stubs/contrib/gis/db/backends/oracle/models.pyi

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ from django.db.models.manager import Manager
66
from typing_extensions import Self
77

88
class OracleGeometryColumns(models.Model):
9-
table_name: Any
10-
column_name: Any
11-
srid: Any
9+
table_name: models.CharField
10+
column_name: models.CharField
11+
srid: models.IntegerField
1212
objects: ClassVar[Manager[Self]]
1313

1414
@classmethod
@@ -17,12 +17,12 @@ class OracleGeometryColumns(models.Model):
1717
def geom_col_name(cls) -> Any: ...
1818

1919
class OracleSpatialRefSys(models.Model, SpatialRefSysMixin):
20-
cs_name: Any
21-
srid: Any
22-
auth_srid: Any
23-
auth_name: Any
24-
wktext: Any
25-
cs_bounds: Any
20+
cs_name: models.CharField
21+
srid: models.IntegerField
22+
auth_srid: models.IntegerField
23+
auth_name: models.CharField
24+
wktext: models.TextField
25+
cs_bounds: models.PolygonField
2626
objects: ClassVar[Manager[Self]]
2727

2828
@property

django-stubs/contrib/gis/db/backends/postgis/models.pyi

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ from django.db import models
55
from typing_extensions import Self
66

77
class PostGISGeometryColumns(models.Model):
8-
f_table_catalog: Any
9-
f_table_schema: Any
10-
f_table_name: Any
11-
f_geometry_column: Any
12-
coord_dimension: Any
13-
srid: Any
14-
type: Any
8+
f_table_catalog: models.CharField
9+
f_table_schema: models.CharField
10+
f_table_name: models.CharField
11+
f_geometry_column: models.CharField
12+
coord_dimension: models.IntegerField
13+
srid: models.IntegerField
14+
type: models.CharField
1515
objects: ClassVar[models.Manager[Self]]
1616

1717
@classmethod
@@ -20,11 +20,11 @@ class PostGISGeometryColumns(models.Model):
2020
def geom_col_name(cls) -> Any: ...
2121

2222
class PostGISSpatialRefSys(models.Model, SpatialRefSysMixin):
23-
srid: Any
24-
auth_name: Any
25-
auth_srid: Any
26-
srtext: Any
27-
proj4text: Any
23+
srid: models.IntegerField
24+
auth_name: models.CharField
25+
auth_srid: models.IntegerField
26+
srtext: models.CharField
27+
proj4text: models.CharField
2828
objects: ClassVar[models.Manager[Self]]
2929

3030
@property

django-stubs/contrib/gis/db/backends/spatialite/models.pyi

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ from django.db import models
55
from typing_extensions import Self
66

77
class SpatialiteGeometryColumns(models.Model):
8-
f_table_name: Any
9-
f_geometry_column: Any
10-
coord_dimension: Any
11-
srid: Any
12-
spatial_index_enabled: Any
13-
type: Any
8+
f_table_name: models.CharField
9+
f_geometry_column: models.CharField
10+
coord_dimension: models.IntegerField
11+
srid: models.IntegerField
12+
spatial_index_enabled: models.IntegerField
13+
type: models.IntegerField
1414
objects: ClassVar[models.Manager[Self]]
1515

1616
@classmethod
@@ -19,12 +19,12 @@ class SpatialiteGeometryColumns(models.Model):
1919
def geom_col_name(cls) -> Any: ...
2020

2121
class SpatialiteSpatialRefSys(models.Model, SpatialRefSysMixin):
22-
srid: Any
23-
auth_name: Any
24-
auth_srid: Any
25-
ref_sys_name: Any
26-
proj4text: Any
27-
srtext: Any
22+
srid: models.IntegerField
23+
auth_name: models.CharField
24+
auth_srid: models.IntegerField
25+
ref_sys_name: models.CharField
26+
proj4text: models.CharField
27+
srtext: models.CharField
2828
objects: ClassVar[models.Manager[Self]]
2929

3030
@property

scripts/stubtest/allowlist_todo.txt

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,15 +174,48 @@ django.contrib.gis.db.backends.mysql.introspection
174174
django.contrib.gis.db.backends.oracle.features.DatabaseFeatures.django_test_skips
175175
django.contrib.gis.db.backends.oracle.features.DatabaseFeatures.supports_tolerance_parameter
176176
django.contrib.gis.db.backends.oracle.features.DatabaseFeatures.unsupported_geojson_options
177+
django.contrib.gis.db.backends.oracle.models.OracleGeometryColumns.table_name
178+
django.contrib.gis.db.backends.oracle.models.OracleGeometryColumns.column_name
179+
django.contrib.gis.db.backends.oracle.models.OracleGeometryColumns.srid
180+
django.contrib.gis.db.backends.oracle.models.OracleSpatialRefSys.cs_name
181+
django.contrib.gis.db.backends.oracle.models.OracleSpatialRefSys.srid
182+
django.contrib.gis.db.backends.oracle.models.OracleSpatialRefSys.auth_srid
183+
django.contrib.gis.db.backends.oracle.models.OracleSpatialRefSys.auth_name
184+
django.contrib.gis.db.backends.oracle.models.OracleSpatialRefSys.wktext
185+
django.contrib.gis.db.backends.oracle.models.OracleSpatialRefSys.cs_bounds
177186
django.contrib.gis.db.backends.postgis.adapter.PostGISAdapter.prepare
178187
django.contrib.gis.db.backends.postgis.features.DatabaseFeatures.empty_intersection_returns_none
179188
django.contrib.gis.db.backends.postgis.features.DatabaseFeatures.supports_geography
189+
django.contrib.gis.db.backends.postgis.models.PostGISGeometryColumns.f_table_catalog
190+
django.contrib.gis.db.backends.postgis.models.PostGISGeometryColumns.f_table_schema
191+
django.contrib.gis.db.backends.postgis.models.PostGISGeometryColumns.f_table_name
192+
django.contrib.gis.db.backends.postgis.models.PostGISGeometryColumns.f_geometry_column
193+
django.contrib.gis.db.backends.postgis.models.PostGISGeometryColumns.coord_dimension
194+
django.contrib.gis.db.backends.postgis.models.PostGISGeometryColumns.srid
195+
django.contrib.gis.db.backends.postgis.models.PostGISGeometryColumns.type
196+
django.contrib.gis.db.backends.postgis.models.PostGISSpatialRefSys.srid
197+
django.contrib.gis.db.backends.postgis.models.PostGISSpatialRefSys.auth_srid
198+
django.contrib.gis.db.backends.postgis.models.PostGISSpatialRefSys.auth_name
199+
django.contrib.gis.db.backends.postgis.models.PostGISSpatialRefSys.srtext
200+
django.contrib.gis.db.backends.postgis.models.PostGISSpatialRefSys.proj4text
180201
django.contrib.gis.db.backends.postgis.operations.PostGISOperations.convert_extent
181202
django.contrib.gis.db.backends.postgis.operations.PostGISOperations.convert_extent3d
182203
django.contrib.gis.db.backends.postgis.schema.PostGISSchemaEditor.rast_index_template
183204
django.contrib.gis.db.backends.spatialite.base.DatabaseWrapper.ops
184205
django.contrib.gis.db.backends.spatialite.features.DatabaseFeatures.can_alter_geometry_field
185206
django.contrib.gis.db.backends.spatialite.features.DatabaseFeatures.django_test_skips
207+
django.contrib.gis.db.backends.spatialite.models.SpatialiteGeometryColumns.f_table_name
208+
django.contrib.gis.db.backends.spatialite.models.SpatialiteGeometryColumns.f_geometry_column
209+
django.contrib.gis.db.backends.spatialite.models.SpatialiteGeometryColumns.coord_dimension
210+
django.contrib.gis.db.backends.spatialite.models.SpatialiteGeometryColumns.srid
211+
django.contrib.gis.db.backends.spatialite.models.SpatialiteGeometryColumns.spatial_index_enabled
212+
django.contrib.gis.db.backends.spatialite.models.SpatialiteGeometryColumns.type
213+
django.contrib.gis.db.backends.spatialite.models.SpatialiteSpatialRefSys.srid
214+
django.contrib.gis.db.backends.spatialite.models.SpatialiteSpatialRefSys.auth_srid
215+
django.contrib.gis.db.backends.spatialite.models.SpatialiteSpatialRefSys.auth_name
216+
django.contrib.gis.db.backends.spatialite.models.SpatialiteSpatialRefSys.ref_sys_name
217+
django.contrib.gis.db.backends.spatialite.models.SpatialiteSpatialRefSys.proj4text
218+
django.contrib.gis.db.backends.spatialite.models.SpatialiteSpatialRefSys.srtext
186219
django.contrib.gis.db.backends.spatialite.operations.SpatiaLiteOperations.convert_extent
187220
django.contrib.gis.db.backends.spatialite.operations.SpatiaLiteOperations.from_text
188221
django.contrib.gis.db.backends.spatialite.operations.SpatiaLiteOperations.geom_lib_version

tests/assert_type/contrib/admin/test_utils.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@
1010

1111
@admin.display(description="Name")
1212
def upper_case_name(obj: Person) -> str:
13-
return f"{obj.first_name} {obj.last_name}".upper() # pyright: ignore[reportUnknownMemberType]
13+
return f"{obj.first_name} {obj.last_name}".upper()
1414

1515

1616
class Person(models.Model):
17-
first_name = models.CharField(max_length=None) # pyright: ignore[reportUnknownVariableType]
18-
last_name = models.CharField(max_length=None) # pyright: ignore[reportUnknownVariableType]
19-
birthday = models.DateField() # pyright: ignore[reportUnknownVariableType]
17+
first_name = models.CharField(max_length=None)
18+
last_name = models.CharField(max_length=None)
19+
birthday = models.DateField()
2020

2121

2222
class PersonListAdmin(admin.ModelAdmin[Person]):

tests/assert_type/contrib/auth/test_auth_models.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,5 +47,10 @@
4747
assert_type(permission.name, str)
4848
assert_type(permission.content_type, ContentType)
4949
assert_type(permission.content_type_id, int)
50+
assert_type(permission.codename, str)
51+
assert_type(permission.user_set.get(), User)
52+
assert_type(permission.user_set.through, type[_User_permissions])
53+
assert_type(permission.user_set.through.objects.get(), _User_permissions)
5054
assert_type(permission.group_set.get(), Group)
55+
assert_type(permission.group_set.through, type[_Group_permissions])
5156
assert_type(permission.group_set.through.objects.get(), _Group_permissions)

tests/assert_type/contrib/flatpages/test_flatpages_models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@
1313
assert_type(flat_page.template_name, str)
1414
assert_type(flat_page.registration_required, bool)
1515
assert_type(flat_page.sites.get(), Site)
16-
1716
assert_type(FlatPage.sites.through.objects, Manager[_FlatPage_sites])
17+
1818
flat_page_sites = FlatPage.sites.through.objects.get()
1919
assert_type(flat_page_sites.id, int)
2020
assert_type(flat_page_sites.pk, int)
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
from django.contrib.gis.db.backends.oracle.models import OracleGeometryColumns, OracleSpatialRefSys
2+
from django.contrib.gis.geos.polygon import Polygon
3+
from django.db.models.manager import Manager
4+
from typing_extensions import assert_type
5+
6+
columns = OracleGeometryColumns()
7+
assert_type(columns.table_name, str)
8+
assert_type(columns.column_name, str)
9+
assert_type(columns.srid, int)
10+
assert_type(columns.objects, Manager[OracleGeometryColumns])
11+
12+
spatial_ref_sys = OracleSpatialRefSys()
13+
assert_type(spatial_ref_sys.cs_name, str)
14+
assert_type(spatial_ref_sys.srid, int)
15+
assert_type(spatial_ref_sys.auth_srid, int)
16+
assert_type(spatial_ref_sys.auth_name, str)
17+
assert_type(spatial_ref_sys.wktext, str)
18+
assert_type(spatial_ref_sys.cs_bounds, Polygon)
19+
assert_type(spatial_ref_sys.objects, Manager[OracleSpatialRefSys])
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
from django.contrib.gis.db.backends.postgis.models import PostGISGeometryColumns, PostGISSpatialRefSys
2+
from django.db.models.manager import Manager
3+
from typing_extensions import assert_type
4+
5+
columns = PostGISGeometryColumns()
6+
assert_type(columns.f_table_catalog, str)
7+
assert_type(columns.f_table_schema, str)
8+
assert_type(columns.f_table_name, str)
9+
assert_type(columns.f_geometry_column, str)
10+
assert_type(columns.coord_dimension, int)
11+
assert_type(columns.srid, int)
12+
assert_type(columns.type, str)
13+
assert_type(columns.objects, Manager[PostGISGeometryColumns])
14+
15+
spatial_ref_sys = PostGISSpatialRefSys()
16+
assert_type(spatial_ref_sys.srid, int)
17+
assert_type(spatial_ref_sys.auth_name, str)
18+
assert_type(spatial_ref_sys.auth_srid, int)
19+
assert_type(spatial_ref_sys.srtext, str)
20+
assert_type(spatial_ref_sys.proj4text, str)
21+
assert_type(spatial_ref_sys.objects, Manager[PostGISSpatialRefSys])

0 commit comments

Comments
 (0)