19 lines
761 B
Python
19 lines
761 B
Python
from decimal import Decimal
|
|
|
|
from app.domain.corporate_actions import calculate_stock_consolidation
|
|
|
|
|
|
def test_stock_consolidation_preserves_cost_and_scales_wac():
|
|
result = calculate_stock_consolidation(Decimal(1452), Decimal(726), Decimal("1086.23"))
|
|
assert result.average_price_after == Decimal("2172.46")
|
|
assert result.total_cost_basis == Decimal("1577205.96000000")
|
|
assert result.ratio == Decimal("0.5")
|
|
|
|
def test_stock_consolidation_rejects_fractional_result():
|
|
import pytest
|
|
|
|
from app.domain.corporate_actions import CorporateActionError
|
|
with pytest.raises(CorporateActionError) as exc:
|
|
calculate_stock_consolidation(Decimal(3), Decimal("1.5"), Decimal(10))
|
|
assert exc.value.code == "FRACTIONAL_RESULT_UNSUPPORTED"
|