def main(csv_path, source, share_price): payment_processor = PaymentProcessor() payments = payment_processor.get_payments(csv_path, source) eligible_payments = payment_processor.verify_payments(payments) share_engine = ShareEngine() share_orders = share_engine.generate_share_orders(share_price, eligible_payments) return generate_csv(["customer_id", "shares"], sorted(share_orders))
class TestShareEngine(unittest.TestCase): def setUp(self): self.share_engine = ShareEngine() self.share_price = Decimal("1.2") def test_generate_share_orders_different_customers(self): payments = [ create_payment(456, Decimal("900")), create_payment(123, Decimal("4200")), ] result = self.share_engine.generate_share_orders( self.share_price, payments) self.assertEqual(result, [ { "customer_id": 456, "shares": 750 }, { "customer_id": 123, "shares": 3500 }, ]) def test_generate_share_orders_same_customer(self): payments = [ create_payment(456, Decimal("900")), create_payment(456, Decimal("4200")), ] result = self.share_engine.generate_share_orders( self.share_price, payments) self.assertEqual(result, [ { "customer_id": 456, "shares": 4250 }, ])
def setUp(self): self.share_engine = ShareEngine() self.share_price = Decimal("1.2")