65 lines
2.6 KiB
Python
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)
|