Files
odoo_source/addons/payment_demo/tests/test_payment_transaction.py
T
Horacio Tellez f7b8f07501 [IMP] payment: rename of acquirer to provider
Changing the name of model payment.acquirer to payment.provider
and everything that it touches. It is technically incorrect to
use the term "acquirer" for systems that only provide a service
of payment.
After this commit the model payment.acquirer and all related to
it will be renamed to payment.provider.

Task - 2842088

closes odoo/odoo#90899

Related: odoo/upgrade#3542
Related: odoo/documentation#1981
Related: odoo/enterprise#27131
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
2022-09-09 13:38:08 +02:00

83 lines
4.2 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
from unittest.mock import patch
from odoo.tests import tagged
from odoo.tools import mute_logger
from odoo.addons.payment_demo.tests.common import PaymentDemoCommon
from odoo.addons.payment.tests.http_common import PaymentHttpCommon
@tagged('-at_install', 'post_install')
class TestPaymentTransaction(PaymentDemoCommon, PaymentHttpCommon):
def test_processing_notification_data_sets_transaction_pending(self):
""" Test that the transaction state is set to 'pending' when the notification data indicate
a pending payment. """
tx = self._create_transaction('direct')
tx._process_notification_data(dict(self.notification_data, simulated_state='pending'))
self.assertEqual(tx.state, 'pending')
def test_processing_notification_data_authorizes_transaction(self):
""" Test that the transaction state is set to 'authorize' when the notification data
indicate a successful payment and manual capture is enabled. """
self.provider.capture_manually = True
tx = self._create_transaction('direct')
tx._process_notification_data(self.notification_data)
self.assertEqual(tx.state, 'authorized')
def test_processing_notification_data_confirms_transaction(self):
""" Test that the transaction state is set to 'done' when the notification data indicate a
successful payment. """
tx = self._create_transaction('direct')
tx._process_notification_data(self.notification_data)
self.assertEqual(tx.state, 'done')
def test_processing_notification_data_cancels_transaction(self):
""" Test that the transaction state is set to 'cancel' when the notification data indicate
an unsuccessful payment. """
tx = self._create_transaction('direct')
tx._process_notification_data(dict(self.notification_data, simulated_state='cancel'))
self.assertEqual(tx.state, 'cancel')
def test_processing_notification_data_sets_transaction_in_error(self):
""" Test that the transaction state is set to 'error' when the notification data indicate
an error during the payment. """
tx = self._create_transaction('direct')
tx._process_notification_data(dict(self.notification_data, simulated_state='error'))
self.assertEqual(tx.state, 'error')
def test_processing_notification_data_tokenizes_transaction(self):
""" Test that the transaction is tokenized when it was requested and the notification data
include token data. """
tx = self._create_transaction('direct', tokenize=True)
with patch(
'odoo.addons.payment_demo.models.payment_transaction.PaymentTransaction'
'._demo_tokenize_from_notification_data'
) as tokenize_mock:
tx._process_notification_data(self.notification_data)
self.assertEqual(tokenize_mock.call_count, 1)
@mute_logger('odoo.addons.payment_demo.models.payment_transaction')
def test_processing_notification_data_propagates_simulated_state_to_token(self):
""" Test that the simulated state of the notification data is set on the token when
processing notification data. """
for counter, state in enumerate(['pending', 'done', 'cancel', 'error']):
tx = self._create_transaction(
'direct', reference=f'{self.reference}-{counter}', tokenize=True
)
tx._process_notification_data(dict(self.notification_data, simulated_state=state))
self.assertEqual(tx.token_id.demo_simulated_state, state)
def test_making_a_payment_request_propagates_token_simulated_state_to_transaction(self):
""" Test that the simulated state of the token is set on the transaction when making a
payment request. """
for counter, state in enumerate(['pending', 'done', 'cancel', 'error']):
tx = self._create_transaction(
'direct', reference=f'{self.reference}-{counter}'
)
tx.token_id = self._create_token(demo_simulated_state=state)
tx._send_payment_request()
self.assertEqual(tx.state, tx.token_id.demo_simulated_state)