""" Unit tests text helper. """ import importlib # Now import the module under test text_helper = importlib.import_module('slidedeckai.helpers.text_helper') def test_is_valid_prompt_valid() -> None: """Test that a valid prompt returns True. A valid prompt must be at least 7 characters long and contain a space. """ assert text_helper.is_valid_prompt('Hello world') is True def test_is_valid_prompt_invalid_short() -> None: """Test that a too-short prompt returns False.""" assert text_helper.is_valid_prompt('short') is False def test_is_valid_prompt_invalid_no_space() -> None: """Test that a long prompt without a space returns False.""" assert text_helper.is_valid_prompt('longwordwithnospaces') is False def test_get_clean_json_with_backticks() -> None: """Test cleaning a JSON string wrapped in ```json ... ``` fences.""" inp = '```json{"key":"value"}```' out = text_helper.get_clean_json(inp) assert out == '{"key":"value"}' def test_get_clean_json_with_extra_text() -> None: """Test cleaning where extra text follows the closing fence.""" inp = '```json{"k": 1}``` some extra text' out = text_helper.get_clean_json(inp) assert out == '{"k": 1}' def test_get_clean_json_no_fences() -> None: """When no fences are present the original string should be returned.""" inp = '{"plain": true}' out = text_helper.get_clean_json(inp) assert out == inp def test_get_clean_json_irrelevant_fence() -> None: """If fences are present but not enclosing JSON the original should be preserved. """ inp = 'some text ```not json``` more text' out = text_helper.get_clean_json(inp) assert out == inp def test_fix_malformed_json_uses_json_repair() -> None: """Ensure fix_malformed_json delegates to json_repair.repair_json.""" sample = '{bad: json}' repaired = text_helper.fix_malformed_json(sample) assert repaired == '{"bad": "json"}'