@@ -19,29 +19,62 @@ def test_evaluators_returns_config_value
1919
2020 def test_auth_strategy_returns_no_auth_for_none
2121 Engine . config . auth = :none
22- Engine . reset_services!
2322 assert_instance_of Braintrust ::Server ::Auth ::NoAuth , Engine . auth_strategy
2423 end
2524
2625 def test_auth_strategy_returns_clerk_token_by_default
2726 Engine . config . auth = :clerk_token
28- Engine . reset_services!
2927 assert_instance_of Braintrust ::Server ::Auth ::ClerkToken , Engine . auth_strategy
3028 end
3129
3230 def test_auth_strategy_accepts_custom_object
3331 custom = Braintrust ::Server ::Auth ::NoAuth . new
3432 Engine . config . auth = custom
35- Engine . reset_services!
3633 assert_same custom , Engine . auth_strategy
3734 end
3835
3936 def test_auth_strategy_raises_for_unknown_symbol
4037 Engine . config . auth = :jwt
41- Engine . reset_services!
4238 assert_raises ( ArgumentError ) { Engine . auth_strategy }
4339 end
4440
41+ def test_auth_strategy_raises_for_unknown_string
42+ Engine . config . auth = "jwt"
43+ assert_raises ( ArgumentError ) { Engine . auth_strategy }
44+ end
45+
46+ def test_auth_strategy_reflects_config_changes_without_manual_reset
47+ Engine . config . auth = :none
48+ assert_instance_of Braintrust ::Server ::Auth ::NoAuth , Engine . auth_strategy
49+
50+ Engine . config . auth = :clerk_token
51+ assert_instance_of Braintrust ::Server ::Auth ::ClerkToken , Engine . auth_strategy
52+ end
53+
54+ def test_list_service_uses_latest_evaluators_without_manual_reset
55+ first = Braintrust ::Eval ::Evaluator . new ( task : -> ( input ) { input } )
56+ second = Braintrust ::Eval ::Evaluator . new ( task : -> ( input ) { input } )
57+
58+ Engine . config . evaluators = { "first" => first }
59+ assert_equal [ "first" ] , Engine . list_service . call . keys
60+
61+ Engine . config . evaluators = { "second" => second }
62+ assert_equal [ "second" ] , Engine . list_service . call . keys
63+ end
64+
65+ def test_eval_service_uses_latest_evaluators_without_manual_reset
66+ first = Braintrust ::Eval ::Evaluator . new ( task : -> ( input ) { input } )
67+ second = Braintrust ::Eval ::Evaluator . new ( task : -> ( input ) { input } )
68+ payload = { "data" => { "data" => [ { "input" => "hello" } ] } }
69+
70+ Engine . config . evaluators = { "first" => first }
71+ service = Engine . eval_service
72+ assert_same first , service . validate ( payload . merge ( "name" => "first" ) ) [ :evaluator ]
73+
74+ Engine . config . evaluators = { "second" => second }
75+ assert_same second , service . validate ( payload . merge ( "name" => "second" ) ) [ :evaluator ]
76+ end
77+
4578 def test_eval_service_returns_eval_instance
4679 assert_instance_of Braintrust ::Server ::Services ::Eval , Engine . eval_service
4780 end
@@ -56,16 +89,10 @@ def test_eval_service_is_memoized
5689 assert_same svc1 , svc2
5790 end
5891
59- def test_reset_services_clears_memoized_instances
60- svc1 = Engine . eval_service
61- Engine . reset_services!
62- svc2 = Engine . eval_service
63- refute_same svc1 , svc2
64- end
65-
66- def test_configure_yields_config_and_resets_services
92+ def test_configure_yields_config_without_resetting_eval_service
6793 svc_before = Engine . eval_service
6894 evaluator = Braintrust ::Eval ::Evaluator . new ( task : -> ( input ) { input } )
95+ payload = { "name" => "configured-eval" , "data" => { "data" => [ { "input" => "hello" } ] } }
6996
7097 Engine . configure do |config |
7198 config . evaluators = { "configured-eval" => evaluator }
@@ -74,7 +101,8 @@ def test_configure_yields_config_and_resets_services
74101
75102 assert_same evaluator , Engine . evaluators [ "configured-eval" ]
76103 assert_instance_of Braintrust ::Server ::Auth ::NoAuth , Engine . auth_strategy
77- refute_same svc_before , Engine . eval_service
104+ assert_same svc_before , Engine . eval_service
105+ assert_same evaluator , Engine . eval_service . validate ( payload ) [ :evaluator ]
78106 end
79107
80108 def test_cors_middleware_is_in_middleware_stack
0 commit comments