fix(): business logic fixes and code refactoring

This commit is contained in:
ITQ
2026-02-24 09:58:07 +03:00
parent e51b74a133
commit 16b48fee40
18 changed files with 307 additions and 140 deletions
@@ -21,6 +21,7 @@ from apps.metrics.services import (
)
from apps.reviews.services import review_settings_update
from apps.reviews.tests.helpers import make_approver, make_experimenter
from apps.users.tests.helpers import auth_header
class APIContractFlowTest(TestCase):
@@ -35,6 +36,7 @@ class APIContractFlowTest(TestCase):
)
owner = make_experimenter("_api")
self.auth = auth_header(owner)
approver = make_approver("_api")
self.experiment = make_experiment(
@@ -136,6 +138,7 @@ class APIContractFlowTest(TestCase):
"api-1:get_experiment_report",
args=[self.experiment.pk],
),
HTTP_AUTHORIZATION=self.auth,
)
self.assertEqual(report_resp.status_code, 200)
report = report_resp.json()
@@ -227,5 +230,6 @@ class APIContractFlowTest(TestCase):
"api-1:get_experiment_report",
args=[uuid.uuid4()],
),
HTTP_AUTHORIZATION=self.auth,
)
self.assertEqual(resp.status_code, 404)
@@ -36,11 +36,15 @@ def _start_experiment(owner, approver, suffix, traffic=Decimal("100.00")):
traffic_allocation=traffic,
)
add_two_variants(experiment)
experiment = experiment_submit_for_review(
experiment=experiment, user=owner
return experiment
def _submit_and_start(experiment, approver):
exp = experiment_submit_for_review(
experiment=experiment, user=experiment.owner
)
experiment = experiment_approve(experiment=experiment, approver=approver)
return experiment_start(experiment=experiment, user=owner)
exp = experiment_approve(experiment=exp, approver=approver)
return experiment_start(experiment=exp, user=experiment.owner)
class GuardrailPauseIntegrationTest(TestCase):
@@ -82,6 +86,8 @@ class GuardrailPauseIntegrationTest(TestCase):
action=GuardrailAction.PAUSE,
)
self.experiment = _submit_and_start(self.experiment, self.approver)
def test_guardrail_pauses_experiment_on_threshold_breach(self) -> None:
now = timezone.now().isoformat()
cache.clear()
@@ -186,6 +192,8 @@ class GuardrailRollbackIntegrationTest(TestCase):
action=GuardrailAction.ROLLBACK,
)
self.experiment = _submit_and_start(self.experiment, self.approver)
def test_rollback_completes_experiment_with_control_winner(self) -> None:
now = timezone.now().isoformat()
cache.clear()
@@ -255,6 +263,9 @@ class GuardrailCheckAllTest(TestCase):
action=GuardrailAction.PAUSE,
)
self.exp1 = _submit_and_start(self.exp1, self.approver)
self.exp2 = _submit_and_start(self.exp2, self.approver)
make_exposure_type(name="gca_exposure")
make_event_type(name="gca_error", display_name="Error")