Code architected by Disco DeDisco <discodedisco@outlook.com> Git commit message Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
55 lines
2.3 KiB
Python
55 lines
2.3 KiB
Python
from django.test import SimpleTestCase
|
||
|
||
from apps.epic.utils import _planet_house, top_capacitors
|
||
|
||
|
||
class PlanetHouseFallbackTest(SimpleTestCase):
|
||
def test_returns_1_when_no_cusp_matches(self):
|
||
# Pathological cusps list: all 12 cusps identical (zero-width arcs).
|
||
# No range has start < end, and the wrap-around condition is also
|
||
# never satisfied, so the loop exhausts without returning — hitting
|
||
# the fallback `return 1`.
|
||
cusps = [0.0] * 12
|
||
self.assertEqual(_planet_house(180.0, cusps), 1)
|
||
|
||
def test_returns_1_when_degree_in_first_house_normal(self):
|
||
# Standard, sequential cusps: degree=15 should land in house 1 (0–30).
|
||
cusps = [i * 30.0 for i in range(12)]
|
||
self.assertEqual(_planet_house(15.0, cusps), 1)
|
||
|
||
|
||
class TopCapacitorsTest(SimpleTestCase):
|
||
"""top_capacitors — capacitor names tied for the highest element count."""
|
||
|
||
def test_returns_empty_when_elements_is_empty(self):
|
||
self.assertEqual(top_capacitors({}), [])
|
||
|
||
def test_returns_empty_when_elements_is_none(self):
|
||
self.assertEqual(top_capacitors(None), [])
|
||
|
||
def test_returns_empty_when_all_counts_are_zero(self):
|
||
"""All-zero counts (e.g. a brand-new chart with no planets) → empty list,
|
||
not an Ardor-by-default. Exercises the `max(counts.values()) <= 0` branch."""
|
||
self.assertEqual(
|
||
top_capacitors({"Fire": 0, "Stone": 0, "Time": 0, "Space": 0, "Air": 0, "Water": 0}),
|
||
[],
|
||
)
|
||
|
||
def test_returns_single_top_capacitor_when_one_element_wins(self):
|
||
# Stone has highest count → Ossum
|
||
result = top_capacitors({"Fire": 1, "Stone": 5, "Time": 2})
|
||
self.assertEqual(result, ["Ossum"])
|
||
|
||
def test_returns_multiple_capacitors_on_tie_in_clockwise_order(self):
|
||
# Fire + Stone tied at 3 → order follows ELEMENT_ORDER (Fire first).
|
||
result = top_capacitors({"Fire": 3, "Stone": 3, "Time": 2})
|
||
self.assertEqual(result, ["Ardor", "Ossum"])
|
||
|
||
def test_accepts_dict_values_with_count_key(self):
|
||
"""`elements` may carry enriched dicts like {"count": N, ...}."""
|
||
result = top_capacitors({
|
||
"Fire": {"count": 1, "sign": "Aries"},
|
||
"Stone": {"count": 4, "sign": "Taurus"},
|
||
})
|
||
self.assertEqual(result, ["Ossum"])
|