import unittest from tests.fakes import config, pr_ref from werkrevisor.review import pr_agent_settings def ordered_config(): return config(engine={"mode": "combined"}, model={"provider_order": ["minimax", "deepinfra"]}) class ProviderOrderTest(unittest.TestCase): def test_the_model_review_asks_the_providers_in_the_configured_order(self): """Scenario#56.01""" values = pr_agent_settings(ordered_config(), pr_ref(), "t" * 20, "k" * 20, "extra") self.assertEqual(values["openrouter.provider_order"], ["minimax", "deepinfra"]) self.assertIs(values["openrouter.allow_fallbacks"], True) self.assertNotIn("openrouter.provider_order", pr_agent_settings(config(), pr_ref(), "t" * 20, "k" * 20, "")) def test_the_order_reaches_the_openrouter_request(self): """The tests run in the PR-Agent image, so the real handler builds the request.""" from pr_agent.algo.ai_handlers.litellm_ai_handler import LiteLLMAIHandler from pr_agent.config_loader import get_settings from werkrevisor.review import apply_settings apply_settings(get_settings(), pr_agent_settings(ordered_config(), pr_ref(), "t" * 20, "k" * 20, "extra")) handler = LiteLLMAIHandler() kwargs = handler._apply_openrouter_request_controls("openrouter/minimax/minimax-m3", {}) self.assertEqual(kwargs["extra_body"]["provider"], {"order": ["minimax", "deepinfra"], "allow_fallbacks": True}) def test_provider_order_is_validated(self): from werkrevisor.config import ConfigError with self.assertRaisesRegex(ConfigError, r"\[model\] provider_order must be a list of provider names"): config(engine={"mode": "combined"}, model={"provider_order": "minimax"}) if __name__ == "__main__": unittest.main()