Refs #26605 -- Added migrations state test for a swappable model inheriting an abstract model inheriting concrete model.
Thanks Sébastien Diemer for the report and test.
This commit is contained in:
parent
df8f1d018f
commit
67b2b1f116
|
@ -1006,6 +1006,48 @@ class ModelStateTests(SimpleTestCase):
|
||||||
self.assertEqual(author_state.bases, (models.Model, ))
|
self.assertEqual(author_state.bases, (models.Model, ))
|
||||||
self.assertEqual(author_state.managers, [])
|
self.assertEqual(author_state.managers, [])
|
||||||
|
|
||||||
|
@override_settings(TEST_SWAPPABLE_MODEL='migrations.SomeFakeModel')
|
||||||
|
def test_create_swappable_from_abstract(self):
|
||||||
|
"""
|
||||||
|
A swappable model inheriting from a hierarchy:
|
||||||
|
concrete -> abstract -> concrete.
|
||||||
|
"""
|
||||||
|
new_apps = Apps(['migrations'])
|
||||||
|
|
||||||
|
class SearchableLocation(models.Model):
|
||||||
|
keywords = models.CharField(max_length=256)
|
||||||
|
|
||||||
|
class Station(SearchableLocation):
|
||||||
|
name = models.CharField(max_length=128)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
abstract = True
|
||||||
|
|
||||||
|
class BusStation(Station):
|
||||||
|
bus_routes = models.CharField(max_length=128)
|
||||||
|
inbound = models.BooleanField(default=False)
|
||||||
|
|
||||||
|
class Meta(Station.Meta):
|
||||||
|
app_label = 'migrations'
|
||||||
|
apps = new_apps
|
||||||
|
swappable = 'TEST_SWAPPABLE_MODEL'
|
||||||
|
|
||||||
|
station_state = ModelState.from_model(BusStation)
|
||||||
|
self.assertEqual(station_state.app_label, 'migrations')
|
||||||
|
self.assertEqual(station_state.name, 'BusStation')
|
||||||
|
self.assertEqual(
|
||||||
|
[x for x, y in station_state.fields],
|
||||||
|
['searchablelocation_ptr', 'name', 'bus_routes', 'inbound']
|
||||||
|
)
|
||||||
|
self.assertEqual(station_state.fields[1][1].max_length, 128)
|
||||||
|
self.assertEqual(station_state.fields[2][1].null, False)
|
||||||
|
self.assertEqual(
|
||||||
|
station_state.options,
|
||||||
|
{'abstract': False, 'swappable': 'TEST_SWAPPABLE_MODEL', 'indexes': []}
|
||||||
|
)
|
||||||
|
self.assertEqual(station_state.bases, ('migrations.searchablelocation', ))
|
||||||
|
self.assertEqual(station_state.managers, [])
|
||||||
|
|
||||||
@override_settings(TEST_SWAPPABLE_MODEL='migrations.SomeFakeModel')
|
@override_settings(TEST_SWAPPABLE_MODEL='migrations.SomeFakeModel')
|
||||||
def test_custom_manager_swappable(self):
|
def test_custom_manager_swappable(self):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue