import pytest from app.models import BaseUnit, Product from app.services.conversion import ConversionError, to_base def test_base_unit(db, rice): assert to_base(db, rice, 200, "Gramm") == 200 assert to_base(db, rice, 200, "g") == 200 # Kürzel-Alias def test_kilogram_converts_to_grams(db, rice): assert to_base(db, rice, 1, "Kilogramm") == 1000 assert to_base(db, rice, 2.5, "kg") == 2500 def test_package_uses_package_size(db, rice): # rice: package_size = 500 g assert to_base(db, rice, 3, "package") == 1500 def test_wrong_kind_rejected(db, rice): # rice ist ein Gewichts-Produkt -> Volumeneinheit passt nicht with pytest.raises(ConversionError): to_base(db, rice, 1, "Liter") def test_unknown_unit_rejected(db, rice): with pytest.raises(ConversionError): to_base(db, rice, 1, "Eimer") def test_volume_product(db): milk = Product(name="Milch", base_unit=BaseUnit.milliliter, package_size=1000) db.add(milk) db.commit() assert to_base(db, milk, 1, "Liter") == 1000 assert to_base(db, milk, 500, "ml") == 500 def test_non_positive_quantity_rejected(db, rice): with pytest.raises(ConversionError): to_base(db, rice, 0, "Gramm")