Files
NetBox-Export/tests/test_importer_plugin_compat.py
T

96 lines
2.4 KiB
Python

from typing import ClassVar
from django.db import models
from netbox_export.services.importer import _field_kwargs
from netbox_export.services.references import ReferenceResolver
class Tenant(models.Model):
class Meta:
app_label = "tenancy"
class TenantManagedObject(models.Model):
tenant = models.ForeignKey(Tenant, on_delete=models.PROTECT, null=True)
class Meta:
app_label = "compat_tests"
class Platform(models.Model):
class Meta:
app_label = "compat_tests"
class ConstrainedInstallation(models.Model):
platform = models.ForeignKey(Platform, on_delete=models.PROTECT, null=True)
class Meta:
app_label = "compat_tests"
constraints: ClassVar[list] = [
models.CheckConstraint(
condition=models.Q(platform__isnull=False),
name="compat_tests_installation_platform",
)
]
def tenant_record():
return {
"fields": {},
"relations": {"tenant": {"ref": "tenancy.tenant:23"}},
}
def test_unresolved_tenant_always_blocks_initial_save():
resolver = ReferenceResolver({}, [], lambda label: None)
kwargs, unresolved, unresolved_values, missing_required = _field_kwargs(
TenantManagedObject,
tenant_record(),
resolver,
tenant_required=True,
)
assert kwargs is None
assert unresolved == []
assert unresolved_values == []
assert missing_required == []
def test_unresolved_tenant_also_blocks_when_policy_detection_is_unavailable():
resolver = ReferenceResolver({}, [], lambda label: None)
kwargs, unresolved, unresolved_values, missing_required = _field_kwargs(
TenantManagedObject,
tenant_record(),
resolver,
tenant_required=False,
)
assert kwargs is None
assert unresolved == []
assert unresolved_values == []
assert missing_required == []
def test_unresolved_relation_in_check_constraint_blocks_initial_save():
resolver = ReferenceResolver({}, [], lambda label: None)
record = {
"fields": {},
"relations": {"platform": {"ref": "compat_tests.platform:5"}},
}
kwargs, unresolved, unresolved_values, missing_required = _field_kwargs(
ConstrainedInstallation,
record,
resolver,
tenant_required=False,
)
assert kwargs is None
assert unresolved == []
assert unresolved_values == []
assert missing_required == []