Files
watcher-visio/dashboard/tests/test_flavor.py

65 lines
2.6 KiB
Python

"""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)