import unittest
from pathlib import Path
import sys

project_root = Path(__file__).resolve().parent.parent
src_dir = project_root / "src"
if str(src_dir) not in sys.path:
    sys.path.insert(0, str(src_dir))

from preference.parser import PreferenceParser


class TestPreferenceParserDefaults(unittest.TestCase):
    def test_accepts_config_default_prefixed_keys(self):
        parser = PreferenceParser(
            default_params={
                "default_min_participation": 0.6,
                "default_max_pattern_size": 5,
                "default_priority": "confidence",
            }
        )

        parsed = parser.parse_preference("not a valid json response")

        self.assertIn("min_participation", parsed)
        self.assertIn("max_pattern_size", parsed)
        self.assertIn("priority", parsed)
        self.assertEqual(parsed["min_participation"], 0.6)
        self.assertEqual(parsed["max_pattern_size"], 5)
        self.assertEqual(parsed["priority"], "confidence")


if __name__ == "__main__":
    unittest.main()
