File size: 1,848 Bytes
f69e608
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
"""
Unit tests for the self-healing adapter.
"""

import pytest
from modules.adaptation import Adapter


@pytest.fixture
def adapter():
    return Adapter()


class TestAdapter:
    """Tests for the prompt adaptation engine."""

    def test_normal_returns_base_prompt(self, adapter):
        prompt = adapter.adapt_prompt("normal")
        assert "RetailMind" in prompt
        assert "ACTIVE ADAPTATION" not in prompt

    def test_price_sensitive_injects_rules(self, adapter):
        prompt = adapter.adapt_prompt("price_sensitive")
        assert "PRICE SENSITIVITY" in prompt
        assert "cheapest" in prompt.lower()

    def test_summer_shift_injects_rules(self, adapter):
        prompt = adapter.adapt_prompt("summer_shift")
        assert "SEASONAL SHIFT" in prompt
        assert "lightweight" in prompt.lower()

    def test_eco_trend_injects_rules(self, adapter):
        prompt = adapter.adapt_prompt("eco_trend")
        assert "SUSTAINABILITY" in prompt
        assert "recycled" in prompt.lower() or "organic" in prompt.lower()

    def test_explanation_differs_per_state(self, adapter):
        explanations = set()
        for state in ["normal", "price_sensitive", "summer_shift", "eco_trend"]:
            explanations.add(adapter.get_explanation(state))
        assert len(explanations) == 4, "Each state should produce a unique explanation"

    def test_label_differs_per_state(self, adapter):
        labels = set()
        for state in ["normal", "price_sensitive", "summer_shift", "eco_trend"]:
            labels.add(adapter.get_label(state))
        assert len(labels) == 4, "Each state should produce a unique label"

    def test_base_prompt_contains_anti_hallucination(self, adapter):
        prompt = adapter.adapt_prompt("normal")
        assert "ONLY recommend" in prompt or "only recommend" in prompt.lower()