Add tests for audits and flavor utilities, update .gitignore, and enhance CPU data handling
This commit is contained in:
64
dashboard/tests/test_flavor.py
Normal file
64
dashboard/tests/test_flavor.py
Normal file
@@ -0,0 +1,64 @@
|
||||
"""Tests for dashboard.openstack_utils.flavor."""
|
||||
from unittest.mock import MagicMock
|
||||
|
||||
from django.test import TestCase
|
||||
|
||||
from dashboard.openstack_utils.flavor import get_flavor_list
|
||||
|
||||
|
||||
def make_mock_server(flavor_id):
|
||||
"""Create a mock server object with flavor['id']."""
|
||||
s = MagicMock()
|
||||
s.flavor = {"id": flavor_id}
|
||||
return s
|
||||
|
||||
|
||||
class GetFlavorListTest(TestCase):
|
||||
"""Tests for get_flavor_list."""
|
||||
|
||||
def test_returns_first_second_third_common_flavor_keys(self):
|
||||
mock_conn = MagicMock()
|
||||
mock_conn.compute.servers.return_value = [
|
||||
make_mock_server("m1.small"),
|
||||
make_mock_server("m1.small"),
|
||||
make_mock_server("m1.medium"),
|
||||
]
|
||||
result = get_flavor_list(connection=mock_conn)
|
||||
self.assertIn("first_common_flavor", result)
|
||||
self.assertIn("second_common_flavor", result)
|
||||
self.assertIn("third_common_flavor", result)
|
||||
|
||||
def test_most_common_flavor_first(self):
|
||||
mock_conn = MagicMock()
|
||||
mock_conn.compute.servers.return_value = [
|
||||
make_mock_server("m1.large"),
|
||||
make_mock_server("m1.small"),
|
||||
make_mock_server("m1.small"),
|
||||
make_mock_server("m1.small"),
|
||||
]
|
||||
result = get_flavor_list(connection=mock_conn)
|
||||
self.assertEqual(result["first_common_flavor"]["name"], "m1.small")
|
||||
self.assertEqual(result["first_common_flavor"]["count"], 3)
|
||||
self.assertEqual(result["second_common_flavor"]["name"], "m1.large")
|
||||
self.assertEqual(result["second_common_flavor"]["count"], 1)
|
||||
self.assertEqual(result["third_common_flavor"]["name"], "—")
|
||||
self.assertEqual(result["third_common_flavor"]["count"], 0)
|
||||
|
||||
def test_empty_servers_uses_placeholder_for_all(self):
|
||||
mock_conn = MagicMock()
|
||||
mock_conn.compute.servers.return_value = []
|
||||
result = get_flavor_list(connection=mock_conn)
|
||||
placeholder = {"name": "—", "count": 0}
|
||||
self.assertEqual(result["first_common_flavor"], placeholder)
|
||||
self.assertEqual(result["second_common_flavor"], placeholder)
|
||||
self.assertEqual(result["third_common_flavor"], placeholder)
|
||||
|
||||
def test_skips_servers_without_flavor_id(self):
|
||||
mock_conn = MagicMock()
|
||||
s_with_id = make_mock_server("m1.small")
|
||||
s_without = MagicMock()
|
||||
s_without.flavor = {} # no 'id'
|
||||
mock_conn.compute.servers.return_value = [s_with_id, s_without]
|
||||
result = get_flavor_list(connection=mock_conn)
|
||||
self.assertEqual(result["first_common_flavor"]["name"], "m1.small")
|
||||
self.assertEqual(result["first_common_flavor"]["count"], 1)
|
||||
Reference in New Issue
Block a user