def test_unsuccessful_charge(facade: PaymentsFacade, inserted_payment: dict, connection: Connection, event_bus: Mock) -> None: payment_uuid = uuid.UUID(inserted_payment["uuid"]) with patch.object(ApiConsumer, "charge", side_effect=PaymentFailedError) as charge_mock: facade.charge(payment_uuid, inserted_payment["customer_id"], "token") charge_mock.assert_called_once_with( get_dollars(inserted_payment["amount"] / 100), "token") assert get_payment( connection, inserted_payment["uuid"]).status == PaymentStatus.FAILED.value event_bus.post.assert_called_once_with( PaymentFailed(payment_uuid, inserted_payment["customer_id"]))
def test_successful_charge_updates_status(facade: PaymentsFacade, inserted_payment: dict, connection: Connection, event_bus: Mock) -> None: payment_uuid = uuid.UUID(inserted_payment["uuid"]) charge_id = "SOME_CHARGE_ID" with patch.object(ApiConsumer, "charge", return_value=charge_id) as charge_mock: facade.charge(uuid.UUID(inserted_payment["uuid"]), inserted_payment["customer_id"], "token") charge_mock.assert_called_once_with( get_dollars(inserted_payment["amount"] / 100), "token") payment_row = get_payment(connection, inserted_payment["uuid"]) assert payment_row.status == PaymentStatus.CHARGED.value assert payment_row.charge_id == charge_id event_bus.post.assert_called_once_with( PaymentCharged(payment_uuid, inserted_payment["customer_id"]))