013 add price multiplier
This commit is contained in:
@@ -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")]
|
||||
|
||||
Reference in New Issue
Block a user