Address review feedback on model_bakery conversion (#22087)
- Add model-bakery to base_requirements.txt and requirements.txt - Add comment explaining MPTT_ALLOW_TESTING_GENERATORS setting - Convert remaining bulk_create calls to baker.make in filtersets - Replace fragile .objects.first() refs with stored class attributes in JSON import tests
This commit is contained in:
parent
7117026492
commit
2ce649aa70
|
|
@ -101,6 +101,10 @@ jsonschema
|
|||
# https://python-markdown.github.io/changelog/
|
||||
Markdown
|
||||
|
||||
# Test object generation via field introspection
|
||||
# https://github.com/model-bakers/model_bakery
|
||||
model-bakery
|
||||
|
||||
# Retain MkDocs 1.x for mkdocstrings
|
||||
# https://github.com/mkdocs/mkdocs
|
||||
mkdocs<2.0
|
||||
|
|
|
|||
|
|
@ -220,82 +220,52 @@ class CircuitTestCase(TestCase, ChangeLoggedFilterSetTests):
|
|||
)
|
||||
|
||||
circuits = (
|
||||
Circuit(
|
||||
provider=providers[0],
|
||||
provider_account=provider_accounts[0],
|
||||
tenant=tenants[0],
|
||||
type=circuit_types[0],
|
||||
cid='Test Circuit 1',
|
||||
install_date='2020-01-01',
|
||||
termination_date='2021-01-01',
|
||||
commit_rate=1000,
|
||||
status=CircuitStatusChoices.STATUS_ACTIVE,
|
||||
description='foobar1',
|
||||
distance=10,
|
||||
distance_unit=DistanceUnitChoices.UNIT_FOOT,
|
||||
baker.make(
|
||||
'circuits.Circuit',
|
||||
provider=providers[0], provider_account=provider_accounts[0],
|
||||
tenant=tenants[0], type=circuit_types[0],
|
||||
cid='Test Circuit 1', install_date='2020-01-01', termination_date='2021-01-01',
|
||||
commit_rate=1000, status=CircuitStatusChoices.STATUS_ACTIVE,
|
||||
description='foobar1', distance=10, distance_unit=DistanceUnitChoices.UNIT_FOOT,
|
||||
),
|
||||
Circuit(
|
||||
provider=providers[0],
|
||||
provider_account=provider_accounts[0],
|
||||
tenant=tenants[0],
|
||||
type=circuit_types[0],
|
||||
cid='Test Circuit 2',
|
||||
install_date='2020-01-02',
|
||||
termination_date='2021-01-02',
|
||||
commit_rate=2000,
|
||||
status=CircuitStatusChoices.STATUS_ACTIVE,
|
||||
description='foobar2',
|
||||
distance=20,
|
||||
distance_unit=DistanceUnitChoices.UNIT_METER,
|
||||
baker.make(
|
||||
'circuits.Circuit',
|
||||
provider=providers[0], provider_account=provider_accounts[0],
|
||||
tenant=tenants[0], type=circuit_types[0],
|
||||
cid='Test Circuit 2', install_date='2020-01-02', termination_date='2021-01-02',
|
||||
commit_rate=2000, status=CircuitStatusChoices.STATUS_ACTIVE,
|
||||
description='foobar2', distance=20, distance_unit=DistanceUnitChoices.UNIT_METER,
|
||||
),
|
||||
Circuit(
|
||||
provider=providers[0],
|
||||
provider_account=provider_accounts[1],
|
||||
tenant=tenants[1],
|
||||
type=circuit_types[0],
|
||||
cid='Test Circuit 3',
|
||||
install_date='2020-01-03',
|
||||
termination_date='2021-01-03',
|
||||
commit_rate=3000,
|
||||
status=CircuitStatusChoices.STATUS_PLANNED,
|
||||
distance=30,
|
||||
distance_unit=DistanceUnitChoices.UNIT_METER,
|
||||
baker.make(
|
||||
'circuits.Circuit',
|
||||
provider=providers[0], provider_account=provider_accounts[1],
|
||||
tenant=tenants[1], type=circuit_types[0],
|
||||
cid='Test Circuit 3', install_date='2020-01-03', termination_date='2021-01-03',
|
||||
commit_rate=3000, status=CircuitStatusChoices.STATUS_PLANNED,
|
||||
distance=30, distance_unit=DistanceUnitChoices.UNIT_METER,
|
||||
),
|
||||
Circuit(
|
||||
provider=providers[1],
|
||||
provider_account=provider_accounts[1],
|
||||
tenant=tenants[1],
|
||||
type=circuit_types[1],
|
||||
cid='Test Circuit 4',
|
||||
install_date='2020-01-04',
|
||||
termination_date='2021-01-04',
|
||||
commit_rate=4000,
|
||||
status=CircuitStatusChoices.STATUS_PLANNED,
|
||||
baker.make(
|
||||
'circuits.Circuit',
|
||||
provider=providers[1], provider_account=provider_accounts[1],
|
||||
tenant=tenants[1], type=circuit_types[1],
|
||||
cid='Test Circuit 4', install_date='2020-01-04', termination_date='2021-01-04',
|
||||
commit_rate=4000, status=CircuitStatusChoices.STATUS_PLANNED,
|
||||
),
|
||||
Circuit(
|
||||
provider=providers[1],
|
||||
provider_account=provider_accounts[2],
|
||||
tenant=tenants[2],
|
||||
type=circuit_types[1],
|
||||
cid='Test Circuit 5',
|
||||
install_date='2020-01-05',
|
||||
termination_date='2021-01-05',
|
||||
commit_rate=5000,
|
||||
status=CircuitStatusChoices.STATUS_OFFLINE,
|
||||
baker.make(
|
||||
'circuits.Circuit',
|
||||
provider=providers[1], provider_account=provider_accounts[2],
|
||||
tenant=tenants[2], type=circuit_types[1],
|
||||
cid='Test Circuit 5', install_date='2020-01-05', termination_date='2021-01-05',
|
||||
commit_rate=5000, status=CircuitStatusChoices.STATUS_OFFLINE,
|
||||
),
|
||||
Circuit(
|
||||
provider=providers[1],
|
||||
provider_account=provider_accounts[2],
|
||||
tenant=tenants[2],
|
||||
type=circuit_types[1],
|
||||
cid='Test Circuit 6',
|
||||
install_date='2020-01-06',
|
||||
termination_date='2021-01-06',
|
||||
commit_rate=6000,
|
||||
status=CircuitStatusChoices.STATUS_OFFLINE,
|
||||
baker.make(
|
||||
'circuits.Circuit',
|
||||
provider=providers[1], provider_account=provider_accounts[2],
|
||||
tenant=tenants[2], type=circuit_types[1],
|
||||
cid='Test Circuit 6', install_date='2020-01-06', termination_date='2021-01-06',
|
||||
commit_rate=6000, status=CircuitStatusChoices.STATUS_OFFLINE,
|
||||
),
|
||||
)
|
||||
Circuit.objects.bulk_create(circuits)
|
||||
|
||||
circuit_terminations = ((
|
||||
CircuitTermination(circuit=circuits[0], termination=sites[0], term_side='A'),
|
||||
|
|
@ -667,39 +637,19 @@ class CircuitGroupAssignmentTestCase(TestCase, ChangeLoggedFilterSetTests):
|
|||
for i in range(3)
|
||||
]
|
||||
|
||||
assignments = (
|
||||
CircuitGroupAssignment(
|
||||
group=circuit_groups[0],
|
||||
member=circuits[0],
|
||||
priority=CircuitPriorityChoices.PRIORITY_PRIMARY
|
||||
),
|
||||
CircuitGroupAssignment(
|
||||
group=circuit_groups[1],
|
||||
member=circuits[1],
|
||||
priority=CircuitPriorityChoices.PRIORITY_SECONDARY
|
||||
),
|
||||
CircuitGroupAssignment(
|
||||
group=circuit_groups[2],
|
||||
member=circuits[2],
|
||||
priority=CircuitPriorityChoices.PRIORITY_TERTIARY
|
||||
),
|
||||
CircuitGroupAssignment(
|
||||
group=circuit_groups[0],
|
||||
member=virtual_circuits[0],
|
||||
priority=CircuitPriorityChoices.PRIORITY_PRIMARY
|
||||
),
|
||||
CircuitGroupAssignment(
|
||||
group=circuit_groups[1],
|
||||
member=virtual_circuits[1],
|
||||
priority=CircuitPriorityChoices.PRIORITY_SECONDARY
|
||||
),
|
||||
CircuitGroupAssignment(
|
||||
group=circuit_groups[2],
|
||||
member=virtual_circuits[2],
|
||||
priority=CircuitPriorityChoices.PRIORITY_TERTIARY
|
||||
),
|
||||
)
|
||||
CircuitGroupAssignment.objects.bulk_create(assignments)
|
||||
for i, priority in enumerate([
|
||||
CircuitPriorityChoices.PRIORITY_PRIMARY,
|
||||
CircuitPriorityChoices.PRIORITY_SECONDARY,
|
||||
CircuitPriorityChoices.PRIORITY_TERTIARY,
|
||||
]):
|
||||
baker.make(
|
||||
'circuits.CircuitGroupAssignment',
|
||||
group=circuit_groups[i], member=circuits[i], priority=priority,
|
||||
)
|
||||
baker.make(
|
||||
'circuits.CircuitGroupAssignment',
|
||||
group=circuit_groups[i], member=virtual_circuits[i], priority=priority,
|
||||
)
|
||||
|
||||
def test_group(self):
|
||||
groups = CircuitGroup.objects.all()[:2]
|
||||
|
|
@ -882,35 +832,17 @@ class VirtualCircuitTestCase(TestCase, ChangeLoggedFilterSetTests):
|
|||
|
||||
virtual_circuit_types = baker.make('circuits.VirtualCircuitType', _quantity=3)
|
||||
|
||||
VirtualCircuit.objects.bulk_create((
|
||||
VirtualCircuit(
|
||||
provider_network=provider_networks[0],
|
||||
provider_account=provider_accounts[0],
|
||||
tenant=tenants[0],
|
||||
cid='Virtual Circuit 1',
|
||||
type=virtual_circuit_types[0],
|
||||
status=CircuitStatusChoices.STATUS_PLANNED,
|
||||
description='virtualcircuit1',
|
||||
),
|
||||
VirtualCircuit(
|
||||
provider_network=provider_networks[1],
|
||||
provider_account=provider_accounts[1],
|
||||
tenant=tenants[1],
|
||||
cid='Virtual Circuit 2',
|
||||
type=virtual_circuit_types[1],
|
||||
status=CircuitStatusChoices.STATUS_ACTIVE,
|
||||
description='virtualcircuit2',
|
||||
),
|
||||
VirtualCircuit(
|
||||
provider_network=provider_networks[2],
|
||||
provider_account=provider_accounts[2],
|
||||
tenant=tenants[2],
|
||||
cid='Virtual Circuit 3',
|
||||
type=virtual_circuit_types[2],
|
||||
status=CircuitStatusChoices.STATUS_DEPROVISIONING,
|
||||
description='virtualcircuit3',
|
||||
),
|
||||
))
|
||||
for i, (status, desc) in enumerate([
|
||||
(CircuitStatusChoices.STATUS_PLANNED, 'virtualcircuit1'),
|
||||
(CircuitStatusChoices.STATUS_ACTIVE, 'virtualcircuit2'),
|
||||
(CircuitStatusChoices.STATUS_DEPROVISIONING, 'virtualcircuit3'),
|
||||
]):
|
||||
baker.make(
|
||||
'circuits.VirtualCircuit',
|
||||
provider_network=provider_networks[i], provider_account=provider_accounts[i],
|
||||
tenant=tenants[i], cid=f'Virtual Circuit {i + 1}',
|
||||
type=virtual_circuit_types[i], status=status, description=desc,
|
||||
)
|
||||
|
||||
def test_q(self):
|
||||
params = {'q': 'virtualcircuit1'}
|
||||
|
|
@ -1014,45 +946,20 @@ class VirtualCircuitTerminationTestCase(TestCase, ChangeLoggedFilterSetTests):
|
|||
for i in range(3)
|
||||
]
|
||||
|
||||
virtual_circuit_terminations = (
|
||||
VirtualCircuitTermination(
|
||||
virtual_circuit=virtual_circuits[0],
|
||||
role=VirtualCircuitTerminationRoleChoices.ROLE_HUB,
|
||||
interface=virtual_interfaces[0],
|
||||
description='termination1'
|
||||
),
|
||||
VirtualCircuitTermination(
|
||||
virtual_circuit=virtual_circuits[0],
|
||||
role=VirtualCircuitTerminationRoleChoices.ROLE_SPOKE,
|
||||
interface=virtual_interfaces[3],
|
||||
description='termination2'
|
||||
),
|
||||
VirtualCircuitTermination(
|
||||
virtual_circuit=virtual_circuits[1],
|
||||
role=VirtualCircuitTerminationRoleChoices.ROLE_PEER,
|
||||
interface=virtual_interfaces[1],
|
||||
description='termination3'
|
||||
),
|
||||
VirtualCircuitTermination(
|
||||
virtual_circuit=virtual_circuits[1],
|
||||
role=VirtualCircuitTerminationRoleChoices.ROLE_PEER,
|
||||
interface=virtual_interfaces[4],
|
||||
description='termination4'
|
||||
),
|
||||
VirtualCircuitTermination(
|
||||
virtual_circuit=virtual_circuits[2],
|
||||
role=VirtualCircuitTerminationRoleChoices.ROLE_PEER,
|
||||
interface=virtual_interfaces[2],
|
||||
description='termination5'
|
||||
),
|
||||
VirtualCircuitTermination(
|
||||
virtual_circuit=virtual_circuits[2],
|
||||
role=VirtualCircuitTerminationRoleChoices.ROLE_PEER,
|
||||
interface=virtual_interfaces[5],
|
||||
description='termination6'
|
||||
),
|
||||
termination_data = (
|
||||
(virtual_circuits[0], VirtualCircuitTerminationRoleChoices.ROLE_HUB, virtual_interfaces[0]),
|
||||
(virtual_circuits[0], VirtualCircuitTerminationRoleChoices.ROLE_SPOKE, virtual_interfaces[3]),
|
||||
(virtual_circuits[1], VirtualCircuitTerminationRoleChoices.ROLE_PEER, virtual_interfaces[1]),
|
||||
(virtual_circuits[1], VirtualCircuitTerminationRoleChoices.ROLE_PEER, virtual_interfaces[4]),
|
||||
(virtual_circuits[2], VirtualCircuitTerminationRoleChoices.ROLE_PEER, virtual_interfaces[2]),
|
||||
(virtual_circuits[2], VirtualCircuitTerminationRoleChoices.ROLE_PEER, virtual_interfaces[5]),
|
||||
)
|
||||
VirtualCircuitTermination.objects.bulk_create(virtual_circuit_terminations)
|
||||
for i, (vc, role, iface) in enumerate(termination_data, start=1):
|
||||
baker.make(
|
||||
'circuits.VirtualCircuitTermination',
|
||||
virtual_circuit=vc, role=role, interface=iface,
|
||||
description=f'termination{i}',
|
||||
)
|
||||
|
||||
def test_q(self):
|
||||
params = {'q': 'termination1'}
|
||||
|
|
|
|||
|
|
@ -105,16 +105,16 @@ class CircuitTestCase(ViewTestCases.PrimaryObjectViewTestCase):
|
|||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
baker.make('dcim.Site', name='Site 1', slug='site-1')
|
||||
cls.site = baker.make('dcim.Site', name='Site 1', slug='site-1')
|
||||
|
||||
providers = baker.make('circuits.Provider', _quantity=2)
|
||||
cls.providers = providers = baker.make('circuits.Provider', _quantity=2)
|
||||
|
||||
provider_accounts = [
|
||||
baker.make('circuits.ProviderAccount', provider=providers[0]),
|
||||
baker.make('circuits.ProviderAccount', provider=providers[1]),
|
||||
]
|
||||
|
||||
circuittypes = baker.make('circuits.CircuitType', _quantity=2)
|
||||
cls.circuittypes = circuittypes = baker.make('circuits.CircuitType', _quantity=2)
|
||||
|
||||
circuits = baker.make(
|
||||
'circuits.Circuit',
|
||||
|
|
@ -186,25 +186,24 @@ class CircuitTestCase(ViewTestCases.PrimaryObjectViewTestCase):
|
|||
'circuits.view_circuittype',
|
||||
'dcim.view_site',
|
||||
)
|
||||
site = Site.objects.first()
|
||||
json_data = f"""
|
||||
[
|
||||
{{
|
||||
"cid": "Circuit 7",
|
||||
"provider": "{Provider.objects.first().name}",
|
||||
"type": "{CircuitType.objects.first().name}",
|
||||
"provider": "{self.providers[0].name}",
|
||||
"type": "{self.circuittypes[0].name}",
|
||||
"status": "active",
|
||||
"description": "Testing Import",
|
||||
"terminations": [
|
||||
{{
|
||||
"term_side": "A",
|
||||
"termination_type": "dcim.site",
|
||||
"termination_id": "{site.pk}"
|
||||
"termination_id": "{self.site.pk}"
|
||||
}},
|
||||
{{
|
||||
"term_side": "Z",
|
||||
"termination_type": "dcim.site",
|
||||
"termination_id": "{site.pk}"
|
||||
"termination_id": "{self.site.pk}"
|
||||
}}
|
||||
]
|
||||
}}
|
||||
|
|
@ -539,9 +538,13 @@ class VirtualCircuitTestCase(ViewTestCases.PrimaryObjectViewTestCase):
|
|||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
provider = baker.make('circuits.Provider')
|
||||
provider_networks = baker.make('circuits.ProviderNetwork', provider=provider, _quantity=2)
|
||||
cls.provider_networks = provider_networks = baker.make(
|
||||
'circuits.ProviderNetwork', provider=provider, _quantity=2
|
||||
)
|
||||
provider_accounts = baker.make('circuits.ProviderAccount', provider=provider, _quantity=2)
|
||||
virtual_circuit_types = baker.make('circuits.VirtualCircuitType', _quantity=2)
|
||||
cls.virtual_circuit_types = virtual_circuit_types = baker.make(
|
||||
'circuits.VirtualCircuitType', _quantity=2
|
||||
)
|
||||
|
||||
virtual_circuits = baker.make(
|
||||
'circuits.VirtualCircuit',
|
||||
|
|
@ -626,8 +629,8 @@ class VirtualCircuitTestCase(ViewTestCases.PrimaryObjectViewTestCase):
|
|||
[
|
||||
{{
|
||||
"cid": "Virtual Circuit 7",
|
||||
"provider_network": "{ProviderNetwork.objects.first().name}",
|
||||
"type": "{VirtualCircuitType.objects.first().name}",
|
||||
"provider_network": "{self.provider_networks[0].name}",
|
||||
"type": "{self.virtual_circuit_types[0].name}",
|
||||
"status": "active",
|
||||
"terminations": [
|
||||
{{
|
||||
|
|
|
|||
|
|
@ -144,6 +144,7 @@ JINJA2_FILTERS = getattr(configuration, 'JINJA2_FILTERS', {})
|
|||
LANGUAGE_CODE = getattr(configuration, 'DEFAULT_LANGUAGE', 'en-us')
|
||||
LANGUAGE_COOKIE_PATH = CSRF_COOKIE_PATH
|
||||
LOGGING = getattr(configuration, 'LOGGING', {})
|
||||
# Allow model_bakery to generate MPTT model instances in tests (django-mptt blocks this by default)
|
||||
MPTT_ALLOW_TESTING_GENERATORS = getattr(configuration, 'MPTT_ALLOW_TESTING_GENERATORS', False)
|
||||
LOGIN_PERSISTENCE = getattr(configuration, 'LOGIN_PERSISTENCE', False)
|
||||
LOGIN_REQUIRED = getattr(configuration, 'LOGIN_REQUIRED', True)
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ gunicorn==26.0.0
|
|||
Jinja2==3.1.6
|
||||
jsonschema==4.26.0
|
||||
Markdown==3.10.2
|
||||
model-bakery==1.23.4
|
||||
mkdocs==1.6.1
|
||||
mkdocs-material==9.7.6
|
||||
mkdocstrings==1.0.4
|
||||
|
|
|
|||
Loading…
Reference in New Issue