import unittest
from settlement import settle_order


class TestSettlement(unittest.TestCase):
    def test_rounding_after_sum(self):
        # 3 件单价 1.11 元的商品打 85 折：先求和 3.33 * 0.85 = 2.8305 -> 2.83
        # 如果逐件提前 round(1.11 * 0.85, 2) = 0.94，3 件加起来会变成 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):
        # 原价 100 元，打 9 折后是 90 元，未达到满 95 减 10 的折后门槛，不应扣减
        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()
