Skip to content

Commit 1ac8443

Browse files
authored
Merge pull request #1253 from guardrails-ai/fix-reask-bug-fix
Sync FIX_REASK Bug Fix
2 parents f5afb70 + fdd6019 commit 1ac8443

File tree

2 files changed

+83
-0
lines changed

2 files changed

+83
-0
lines changed

guardrails/validator_service/sequential_validator_service.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,7 @@ def run_validators(
374374
metadata,
375375
validator_logs,
376376
stream,
377+
validation_session_id=iteration.id,
377378
**kwargs,
378379
)
379380
value = self.perform_correction(
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
from unittest.mock import MagicMock
2+
from guardrails.classes.history.iteration import Iteration
3+
from guardrails.classes.validation.validation_result import FailResult, PassResult
4+
from guardrails.classes.validation.validator_logs import ValidatorLogs
5+
from guardrails.types.on_fail import OnFailAction
6+
from guardrails.validator_base import Validator, register_validator
7+
from guardrails.validator_service.sequential_validator_service import (
8+
SequentialValidatorService,
9+
)
10+
11+
12+
@register_validator(name="guardrails/mock-validator", data_type="string")
13+
class MockValidator(Validator):
14+
pass
15+
16+
17+
class TestRunValidators:
18+
def test_sends_validation_session_id_to_run_validator_sync(self, mocker):
19+
val_svc = SequentialValidatorService(disable_tracer=True)
20+
21+
validation_result = FailResult( # type: ignore
22+
error_message="error", # type: ignore
23+
fix_value="bar", # type: ignore
24+
)
25+
26+
validator_logs = ValidatorLogs(
27+
validator_name="MockValidator", # type: ignore
28+
registered_name="guardrails/mock-validator", # type: ignore
29+
value_before_validation="foo", # type: ignore
30+
property_path="$", # type: ignore
31+
instance_id=1, # type: ignore
32+
validation_result=validation_result, # type: ignore
33+
)
34+
35+
rechecked_value = PassResult()
36+
37+
mock_run_validator = mocker.patch.object(
38+
val_svc, "run_validator", autospec=True
39+
)
40+
mock_run_validator.return_value = validator_logs
41+
42+
mock_run_validator_sync = mocker.patch.object(
43+
val_svc, "run_validator_sync", autospec=True
44+
)
45+
mock_run_validator_sync.return_value = rechecked_value
46+
47+
mock_perform_correction = mocker.patch.object(
48+
val_svc, "perform_correction", autospec=True
49+
)
50+
mock_perform_correction.return_value = "bar"
51+
52+
iteration = MagicMock(spec=Iteration)
53+
iteration.id = "12345"
54+
mock_validator = MockValidator(on_fail=OnFailAction.FIX_REASK)
55+
56+
result, metadata = val_svc.run_validators(
57+
iteration=iteration,
58+
validator_map={"$": [mock_validator]},
59+
value="foo",
60+
metadata={},
61+
absolute_property_path="$",
62+
reference_property_path="$",
63+
)
64+
65+
assert result == "bar"
66+
mock_run_validator.assert_called_once_with(
67+
iteration, mock_validator, "foo", {}, "$", False
68+
)
69+
mock_run_validator_sync.assert_called_once_with(
70+
mock_validator,
71+
"bar",
72+
{},
73+
validator_logs,
74+
False,
75+
validation_session_id="12345",
76+
)
77+
mock_perform_correction.assert_called_once_with(
78+
validation_result,
79+
"foo",
80+
mock_validator,
81+
rechecked_value=rechecked_value,
82+
)

0 commit comments

Comments
 (0)