"""Tests for HMS error code translations.""" import pytest from backend.app.services.hms_errors import HMS_ERROR_DESCRIPTIONS, get_error_description class TestHMSErrorDescriptions: """Tests for the HMS error descriptions dictionary.""" def test_dictionary_is_not_empty(self): """Verify the error descriptions dictionary has entries.""" assert len(HMS_ERROR_DESCRIPTIONS) > 0 def test_dictionary_has_expected_count(self): """Verify we have the expected number of error codes.""" # Should have 853 error codes from the frontend assert len(HMS_ERROR_DESCRIPTIONS) == 853 def test_all_keys_are_valid_format(self): """Verify all keys follow the XXXX_YYYY format.""" import re pattern = re.compile(r"^[0-9A-F]{4}_[0-9A-F]{4}$") for code in HMS_ERROR_DESCRIPTIONS: assert pattern.match(code), f"Invalid error code format: {code}" def test_all_values_are_non_empty_strings(self): """Verify all descriptions are non-empty strings.""" for code, description in HMS_ERROR_DESCRIPTIONS.items(): assert isinstance(description, str), f"Description for {code} is not a string" assert len(description) > 0, f"Description for {code} is empty" class TestGetErrorDescription: """Tests for the get_error_description function.""" def test_returns_description_for_known_code(self): """Verify known error codes return their descriptions.""" # 0300_400C = "The task was canceled." result = get_error_description("0300_400C") assert result == "The task was canceled." def test_returns_description_for_ams_error(self): """Verify AMS error codes return their descriptions.""" # 0700_8010 = AMS assist motor overloaded result = get_error_description("0700_8010") assert "AMS assist motor" in result def test_returns_none_for_unknown_code(self): """Verify unknown error codes return None.""" result = get_error_description("XXXX_YYYY") assert result is None def test_handles_lowercase_input(self): """Verify function handles lowercase input.""" result = get_error_description("0300_400c") assert result == "The task was canceled." def test_handles_mixed_case_input(self): """Verify function handles mixed case input.""" result = get_error_description("0300_400C") assert result == "The task was canceled." def test_common_error_codes_have_descriptions(self): """Verify common error codes have descriptions.""" common_codes = [ "0300_4000", # Z axis homing failed "0300_4006", # Nozzle clogged "0300_8004", # Filament ran out "0500_4001", # Failed to connect to Bambu Cloud "0700_8010", # AMS assist motor overloaded ] for code in common_codes: result = get_error_description(code) assert result is not None, f"Missing description for common code: {code}"