fix: honor tenant validation during plugin imports

This commit is contained in:
2026-08-05 13:28:01 +02:00
parent f558832cd2
commit 7a018807d8
11 changed files with 139 additions and 8 deletions
+55
View File
@@ -0,0 +1,55 @@
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"
def tenant_record():
return {
"fields": {},
"relations": {"tenant": {"ref": "tenancy.tenant:23"}},
}
def test_unresolved_tenant_blocks_initial_save_when_netbox_utilities_requires_it():
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_optional_tenant_remains_deferred_without_requirement():
resolver = ReferenceResolver({}, [], lambda label: None)
kwargs, unresolved, unresolved_values, missing_required = _field_kwargs(
TenantManagedObject,
tenant_record(),
resolver,
tenant_required=False,
)
assert kwargs == {}
assert unresolved == [("tenant", {"ref": "tenancy.tenant:23"})]
assert unresolved_values == []
assert missing_required == []