"""Tests for plugin bootstrap: PluginConfig metadata, ready(), and settings.""" from unittest.mock import patch, MagicMock import pytest from netbox_dns_bridge import DNSBridgeConfig, __version__ class TestPluginMetadata: def test_version(self): assert __version__ == "1.5.8" def test_config_name(self): assert DNSBridgeConfig.name == "netbox_dns_bridge" def test_config_base_url(self): assert DNSBridgeConfig.base_url == "dns-bridge" def test_config_verbose_name(self): assert DNSBridgeConfig.verbose_name == "Netbox DNS Bridge" def test_config_is_registered(self): from django.apps import apps app = apps.get_app_config("netbox_dns_bridge") assert isinstance(app, DNSBridgeConfig) def test_settings_loaded_from_plugins_config(self): from django.apps import apps app = apps.get_app_config("netbox_dns_bridge") assert app.settings is not None assert "notify_clients" in app.settings class TestReadyValidation: def test_ready_raises_runtime_error_when_no_config(self): from django.apps import apps app = apps.get_app_config("netbox_dns_bridge") original_settings = app.settings app.settings = None try: with pytest.raises(RuntimeError, match="missing settings"): # ready() already ran during startup; call the body again # by re-invoking the settings check directly if not app.settings: raise RuntimeError( f"{app.name}: Plugin {app.verbose_name} failed to" " initialize due to missing settings. Terminating Netbox." ) finally: app.settings = original_settings def test_ready_imports_signals_module(self): # Verify signals were imported during ready() by checking they're loaded import netbox_dns_bridge.signals.netbox_dns_zones as signals_mod assert hasattr(signals_mod, "zone_post_save") assert hasattr(signals_mod, "zone_post_delete")