013 add price multiplier

This commit is contained in:
Раис Юсупалиев
2026-03-09 16:14:49 +03:00
parent da301d4bc4
commit 2bd884c8d5
20 changed files with 312 additions and 25 deletions
+28 -1
View File
@@ -80,6 +80,18 @@ def test_filter_valid_prices_handles_empty_input() -> None:
assert filter_and_sort_prices([]) == []
def test_filter_valid_prices_applies_multiplier_and_rounds_half_up() -> None:
low = _make_price(provider="cdek", price=Decimal("100.40"))
high = _make_price(provider="boxberry", price=Decimal("100.50"))
result = filter_valid_prices(
[low, high],
price_multiplier=Decimal("1.1"),
)
assert [price.price for price in result] == [Decimal("110"), Decimal("111")]
def test_filter_valid_prices_excludes_invalid_records() -> None:
valid = _make_price(provider=" cdek ", service_name=" express ", currency="rub")
invalid_provider = _make_price(provider=" ")
@@ -128,6 +140,17 @@ def test_filter_valid_prices_excludes_none_provider_and_service() -> None:
assert result[0].service_name == "express"
def test_filter_valid_prices_excludes_prices_rounded_to_zero_after_multiplier() -> None:
low_price = _make_price(provider="cdek", price=Decimal("0.40"))
result = filter_valid_prices(
[low_price],
price_multiplier=Decimal("0.5"),
)
assert result == []
def test_sort_prices_by_price_keeps_equal_price_order_stable() -> None:
price_a = _make_price(provider="a", price=Decimal("150.00"))
price_b = _make_price(provider="b", price=Decimal("150.00"))
@@ -143,6 +166,10 @@ def test_filter_and_sort_prices_combines_domain_steps() -> None:
price_b = _make_price(provider="b", price=Decimal("100.00"))
invalid = _make_price(provider="", price=Decimal("50.00"))
result = filter_and_sort_prices([price_a, invalid, price_b])
result = filter_and_sort_prices(
[price_a, invalid, price_b],
price_multiplier=Decimal("1.3"),
)
assert [price.provider for price in result] == ["b", "a"]
assert [price.price for price in result] == [Decimal("130"), Decimal("286")]