kiwi/tests/services/recipe/test_style_adapter.py
pyr0ball c18bfec8f5
Some checks are pending
CI / Backend (Python) (push) Waiting to run
CI / Frontend (Vue) (push) Waiting to run
Mirror / mirror (push) Waiting to run
fix(lint): add ruff config, fix all lint errors for GitHub CI
- pyproject.toml: add [tool.ruff] config suppressing E402/W293 globally,
  F841/E741/E702 in tests, E741 in scripts
- inventory.py: split semicolon import (E702)
- recipes.py: fix logger -> log (F821 undefined name)
- shopping.py: rename l -> lnk in list comprehension (E741)
- format_conversion.py: noqa F841 on CUDA flag (used as future hook)
- backfill_keywords.py: rename done -> _done (F841)
- ingest_purplecarrot.py: drop == True comparison (E712)
- Auto-fix: I001 import sorting, F401 unused imports across all files
2026-07-06 02:49:02 -07:00

74 lines
2.4 KiB
Python

from app.services.recipe.style_adapter import StyleAdapter
# --- Spec-required tests ---
def test_italian_style_biases_aromatics():
"""Garlic and onion appear when they're in both pantry and italian aromatics."""
adapter = StyleAdapter()
italian = adapter.get("italian")
pantry = ["garlic", "onion", "ginger"]
result = italian.bias_aroma_selection(pantry)
assert "garlic" in result
assert "onion" in result
def test_east_asian_method_weights_sum_to_one():
"""East Asian method_bias weights sum to ~1.0."""
adapter = StyleAdapter()
east_asian = adapter.get("east_asian")
weights = east_asian.method_weights()
assert abs(sum(weights.values()) - 1.0) < 1e-6
def test_style_adapter_loads_all_five_styles():
"""Adapter discovers all 5 cuisine YAML files."""
adapter = StyleAdapter()
assert len(adapter.styles) == 5
# --- Additional coverage ---
def test_load_italian_style():
adapter = StyleAdapter()
italian = adapter.get("italian")
assert italian is not None
assert "basil" in italian.aromatics or "oregano" in italian.aromatics
def test_bias_aroma_selection_excludes_non_style_items():
"""bias_aroma_selection does not include items not in the style's aromatics."""
adapter = StyleAdapter()
italian = adapter.get("italian")
pantry = ["butter", "parmesan", "basil", "cumin", "soy sauce"]
result = italian.bias_aroma_selection(pantry)
assert "basil" in result
assert "soy sauce" not in result
assert "cumin" not in result
def test_preferred_depth_sources():
"""preferred_depth_sources returns only depth sources present in pantry."""
adapter = StyleAdapter()
italian = adapter.get("italian")
pantry = ["parmesan", "olive oil", "pasta"]
result = italian.preferred_depth_sources(pantry)
assert "parmesan" in result
assert "olive oil" not in result
def test_bias_aroma_selection_adapter_method():
"""StyleAdapter.bias_aroma_selection returns italian-biased items."""
adapter = StyleAdapter()
pantry = ["butter", "parmesan", "basil", "cumin", "soy sauce"]
biased = adapter.bias_aroma_selection("italian", pantry)
assert "basil" in biased
assert "soy sauce" not in biased or "basil" in biased
def test_list_all_styles():
adapter = StyleAdapter()
styles = adapter.list_all()
style_ids = [s.style_id for s in styles]
assert "italian" in style_ids
assert "latin" in style_ids
assert "east_asian" in style_ids