import unittest
from settlement import settle_order


class TestSettlement(unittest.TestCase):
    def test_rounding_after_sum(self):
        # 3 items at $1.11 each with a 15% discount (0.85): sum first -> 3.33 * 0.85 = 2.8305 -> 2.83
        # Rounding each item first gives round(1.11 * 0.85, 2) = 0.94, which sums to 2.82
        items = [{"name": "A", "price": 1.11, "qty": 1}, {"name": "B", "price": 1.11, "qty": 1}, {"name": "C", "price": 1.11, "qty": 1}]
        self.assertEqual(settle_order(items, discount_rate=0.85), 2.83)

    def test_coupon_threshold_uses_discounted_subtotal(self):
        # Pre-discount price is $100, discounted subtotal at 10% off is $90, below the $95 threshold for $10 off
        items = [{"name": "ProPlan", "price": 100.0, "qty": 1}]
        self.assertEqual(settle_order(items, discount_rate=0.9, coupon_min_spend=95.0, coupon_off=10.0), 90.0)


if __name__ == "__main__":
    unittest.main()
