diff --git a/changes/227.added b/changes/227.added new file mode 100644 index 00000000..bf3b7412 --- /dev/null +++ b/changes/227.added @@ -0,0 +1 @@ +Added some tests for VLAN chatops. \ No newline at end of file diff --git a/changes/227.fixed b/changes/227.fixed new file mode 100644 index 00000000..b446e79b --- /dev/null +++ b/changes/227.fixed @@ -0,0 +1 @@ +Fixed parameters that should be set to None if they have not been defined yet by default. \ No newline at end of file diff --git a/nautobot_chatops/tests/workers/test_nautobot.py b/nautobot_chatops/tests/workers/test_nautobot.py new file mode 100644 index 00000000..a6c7db59 --- /dev/null +++ b/nautobot_chatops/tests/workers/test_nautobot.py @@ -0,0 +1,56 @@ +"""Tests for the /nautobot chatops commands.""" +from unittest.mock import MagicMock + +from django.test import TestCase +from nautobot.dcim.models import Site +from nautobot.ipam.models import VLAN +from nautobot.extras.models import Status +from nautobot_chatops.choices import CommandStatusChoices + +from nautobot_chatops.dispatchers import Dispatcher +from nautobot_chatops.workers.nautobot import get_vlans + + +class IpamTestCase(TestCase): + """Tests related to IPAM ChatOps commands.""" + + def setUp(self): + """Per-test-case setup function.""" + self.active_status = Status.objects.get(name="Active") + self.site = Site.objects.create(name="site-1", status=self.active_status) + self.vlans, _ = VLAN.objects.get_or_create(vid=1, name="vlan-1", status=self.active_status, site=self.site) + + # Mock the dispatcher + self.dispatcher = MagicMock(Dispatcher) + + def test_get_vlans_initial_prompt(self): + """Test get VLANs initial command.""" + self.assertFalse(get_vlans(self.dispatcher)) + self.dispatcher.send_error.assert_not_called() + self.dispatcher.prompt_from_menu.assert_called_with( + "nautobot get-vlans", + "select a vlan filter", + [ + ("VLAN ID", "id"), + ("Group", "group"), + ("Name", "name"), + ("Role", "role"), + ("Site", "site"), + ("Status", "status"), + ("Tenant", "tenant"), + ("All (no filter)", "all"), + ], + ) + + def test_get_vlans_filter_type_sent_filter_name(self): + """Test get VLANs with filter type Name selected.""" + self.assertFalse(get_vlans(self.dispatcher, "name")) + self.dispatcher.send_error.assert_not_called() + self.dispatcher.prompt_from_menu.assert_called_with( + "nautobot get-vlans name", "select a vlan name", [("vlan-1", "vlan-1")], offset=0 + ) + + def test_get_vlans_filter_type_sent_filter_all(self): + """Test get VLANs with filter type All selected.""" + self.assertEqual(get_vlans(self.dispatcher, "all"), CommandStatusChoices.STATUS_SUCCEEDED) + self.dispatcher.send_error.assert_not_called() diff --git a/nautobot_chatops/workers/nautobot.py b/nautobot_chatops/workers/nautobot.py index 747a3be1..642d457a 100644 --- a/nautobot_chatops/workers/nautobot.py +++ b/nautobot_chatops/workers/nautobot.py @@ -160,7 +160,7 @@ def examine_termination_endpoints(circuit): # pylint: disable=too-many-statements @subcommand_of("nautobot") -def get_vlans(dispatcher, filter_type, filter_value_1): +def get_vlans(dispatcher, filter_type=None, filter_value_1=None): """Return a filtered list of VLANs based on filter type and/or `filter_value_1`.""" # pylint: disable=no-else-return if not filter_type: