mirror of
https://github.com/OCA/bank-statement-import.git
synced 2025-01-20 12:37:43 +02:00
[FIX] account_statement_import_online_paypal: tests
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
# Copyright 2019 Brainbean Apps (https://brainbeanapps.com)
|
||||
# Copyright 2022 CorporateHub (https://corporatehub.eu)
|
||||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
||||
|
||||
from datetime import datetime
|
||||
@@ -53,6 +54,13 @@ class TestAccountBankAccountStatementImportOnlinePayPal(
|
||||
super().setUp()
|
||||
|
||||
self.now = fields.Datetime.now()
|
||||
self.now_isoformat = self.now.isoformat() + '+0000'
|
||||
self.today = datetime(self.now.year, self.now.month, self.now.day)
|
||||
self.today_isoformat = self.today.isoformat() + '+0000'
|
||||
self.today_timestamp = str(int(self.today.timestamp()))
|
||||
self.yesterday = self.today - relativedelta(days=1)
|
||||
self.yesterday_isoformat = self.yesterday.isoformat() + '+0000'
|
||||
self.yesterday_timestamp = str(int(self.yesterday.timestamp()))
|
||||
self.currency_eur = self.env.ref('base.EUR')
|
||||
self.currency_usd = self.env.ref('base.USD')
|
||||
self.AccountJournal = self.env['account.journal']
|
||||
@@ -220,9 +228,10 @@ class TestAccountBankAccountStatementImportOnlinePayPal(
|
||||
}
|
||||
],
|
||||
"account_id": "1234567890",
|
||||
"as_of_time": "2019-08-01T00:00:00+0000",
|
||||
"last_refresh_time": "2019-08-01T00:00:00+0000"
|
||||
}""")
|
||||
"as_of_time": "%s",
|
||||
"last_refresh_time": "%s"
|
||||
}""" % (self.now_isoformat, self.now_isoformat,)
|
||||
)
|
||||
with mock.patch(
|
||||
_provider_class + '._paypal_urlopen',
|
||||
side_effect=[mocked_response_1, mocked_response_2],
|
||||
@@ -297,14 +306,17 @@ class TestAccountBankAccountStatementImportOnlinePayPal(
|
||||
mocked_response_1 = json.loads("""{
|
||||
"transaction_details": [],
|
||||
"account_number": "1234567890",
|
||||
"start_date": "2019-08-01T00:00:00+0000",
|
||||
"end_date": "2019-08-01T00:00:00+0000",
|
||||
"last_refreshed_datetime": "2019-09-01T00:00:00+0000",
|
||||
"start_date": "%s",
|
||||
"end_date": "%s",
|
||||
"last_refreshed_datetime": "%s",
|
||||
"page": 1,
|
||||
"total_items": 0,
|
||||
"total_pages": 0
|
||||
}""", parse_float=Decimal)
|
||||
mocked_response_2 = json.loads("""{
|
||||
}""" % (self.now_isoformat, self.now_isoformat, self.now_isoformat,),
|
||||
parse_float=Decimal,
|
||||
)
|
||||
mocked_response_2 = json.loads(
|
||||
"""{
|
||||
"balances": [
|
||||
{
|
||||
"currency": "EUR",
|
||||
@@ -324,9 +336,12 @@ class TestAccountBankAccountStatementImportOnlinePayPal(
|
||||
}
|
||||
],
|
||||
"account_id": "1234567890",
|
||||
"as_of_time": "2019-08-01T00:00:00+0000",
|
||||
"last_refresh_time": "2019-08-01T00:00:00+0000"
|
||||
}""", parse_float=Decimal)
|
||||
"as_of_time": "%s",
|
||||
"last_refresh_time": "%s"
|
||||
}"""
|
||||
% (self.now_isoformat, self.now_isoformat,),
|
||||
parse_float=Decimal,
|
||||
)
|
||||
with mock.patch(
|
||||
_provider_class + '._paypal_retrieve',
|
||||
side_effect=[mocked_response_1, mocked_response_2],
|
||||
@@ -355,13 +370,15 @@ class TestAccountBankAccountStatementImportOnlinePayPal(
|
||||
mocked_response = json.loads("""{
|
||||
"transaction_details": [],
|
||||
"account_number": "1234567890",
|
||||
"start_date": "2019-08-01T00:00:00+0000",
|
||||
"end_date": "2019-08-01T00:00:00+0000",
|
||||
"last_refreshed_datetime": "2019-09-01T00:00:00+0000",
|
||||
"start_date": "%s",
|
||||
"end_date": "%s",
|
||||
"last_refreshed_datetime": "%s",
|
||||
"page": 1,
|
||||
"total_items": 0,
|
||||
"total_pages": 0
|
||||
}""", parse_float=Decimal)
|
||||
}""" % (self.now_isoformat, self.now_isoformat, self.now_isoformat,),
|
||||
parse_float=Decimal,
|
||||
)
|
||||
with mock.patch(
|
||||
_provider_class + '._paypal_retrieve',
|
||||
return_value=mocked_response,
|
||||
@@ -389,8 +406,8 @@ class TestAccountBankAccountStatementImportOnlinePayPal(
|
||||
"paypal_account_id": "1234567890",
|
||||
"transaction_id": "1234567890",
|
||||
"transaction_event_code": "T1234",
|
||||
"transaction_initiation_date": "2019-08-01T00:00:00+0000",
|
||||
"transaction_updated_date": "2019-08-01T00:00:00+0000",
|
||||
"transaction_initiation_date": "%s",
|
||||
"transaction_updated_date": "%s",
|
||||
"transaction_amount": {
|
||||
"currency_code": "USD",
|
||||
"value": "1000.00"
|
||||
@@ -431,8 +448,8 @@ class TestAccountBankAccountStatementImportOnlinePayPal(
|
||||
"paypal_account_id": "1234567890",
|
||||
"transaction_id": "1234567891",
|
||||
"transaction_event_code": "T1234",
|
||||
"transaction_initiation_date": "2019-08-02T00:00:00+0000",
|
||||
"transaction_updated_date": "2019-08-02T00:00:00+0000",
|
||||
"transaction_initiation_date": "%s",
|
||||
"transaction_updated_date": "%s",
|
||||
"transaction_amount": {
|
||||
"currency_code": "USD",
|
||||
"value": "1000.00"
|
||||
@@ -470,43 +487,53 @@ class TestAccountBankAccountStatementImportOnlinePayPal(
|
||||
"incentive_info": {}
|
||||
}],
|
||||
"account_number": "1234567890",
|
||||
"start_date": "2019-08-01T00:00:00+0000",
|
||||
"end_date": "2019-08-02T00:00:00+0000",
|
||||
"last_refreshed_datetime": "2019-09-01T00:00:00+0000",
|
||||
"start_date": "%s",
|
||||
"end_date": "%s",
|
||||
"last_refreshed_datetime": "%s",
|
||||
"page": 1,
|
||||
"total_items": 1,
|
||||
"total_pages": 1
|
||||
}""", parse_float=Decimal)
|
||||
}""" % (
|
||||
self.yesterday_isoformat,
|
||||
self.yesterday_isoformat,
|
||||
self.today_isoformat,
|
||||
self.today_isoformat,
|
||||
self.yesterday_isoformat,
|
||||
self.today_isoformat,
|
||||
self.now_isoformat,
|
||||
),
|
||||
parse_float=Decimal,
|
||||
)
|
||||
with mock.patch(
|
||||
_provider_class + '._paypal_retrieve',
|
||||
return_value=mocked_response,
|
||||
), self.mock_token():
|
||||
data = provider._obtain_statement_data(
|
||||
datetime(2019, 8, 1),
|
||||
datetime(2019, 8, 2),
|
||||
)
|
||||
data = provider._obtain_statement_data(self.yesterday, self.today,)
|
||||
|
||||
self.assertEqual(len(data[0]), 2)
|
||||
self.assertEqual(data[0][0], {
|
||||
'date': datetime(2019, 8, 1),
|
||||
'amount': '1000.00',
|
||||
'name': 'Invoice 1',
|
||||
'note': '1234567890: Payment for Invoice(s) 1',
|
||||
'partner_name': 'Acme, Inc.',
|
||||
'unique_import_id': '1234567890-1564617600',
|
||||
})
|
||||
self.assertEqual(data[0][1], {
|
||||
'date': datetime(2019, 8, 1),
|
||||
'amount': '-100.00',
|
||||
'name': 'Fee for Invoice 1',
|
||||
'note': 'Transaction fee for 1234567890: Payment for Invoice(s) 1',
|
||||
'partner_name': 'PayPal',
|
||||
'unique_import_id': '1234567890-1564617600-FEE',
|
||||
})
|
||||
self.assertEqual(data[1], {
|
||||
'balance_start': 0.0,
|
||||
'balance_end_real': 900.0,
|
||||
})
|
||||
self.assertEqual(
|
||||
data[0][0],
|
||||
{
|
||||
"date": self.yesterday,
|
||||
"amount": "1000.00",
|
||||
"name": "Invoice 1",
|
||||
"note": "1234567890: Payment for Invoice(s) 1",
|
||||
"partner_name": "Acme, Inc.",
|
||||
"unique_import_id": "1234567890-%s" % (self.yesterday_timestamp,),
|
||||
},
|
||||
)
|
||||
self.assertEqual(
|
||||
data[0][1],
|
||||
{
|
||||
"date": self.yesterday,
|
||||
"amount": "-100.00",
|
||||
"name": "Fee for Invoice 1",
|
||||
"note": "Transaction fee for 1234567890: Payment for Invoice(s) 1",
|
||||
"partner_name": "PayPal",
|
||||
"unique_import_id": "1234567890-%s-FEE" % (self.yesterday_timestamp,),
|
||||
},
|
||||
)
|
||||
self.assertEqual(data[1], {"balance_start": 0.0, "balance_end_real": 900.0})
|
||||
|
||||
def test_transaction_parse_1(self):
|
||||
lines = self.paypal_parse_transaction("""{
|
||||
@@ -514,8 +541,8 @@ class TestAccountBankAccountStatementImportOnlinePayPal(
|
||||
"paypal_account_id": "1234567890",
|
||||
"transaction_id": "1234567890",
|
||||
"transaction_event_code": "T1234",
|
||||
"transaction_initiation_date": "2019-08-01T00:00:00+0000",
|
||||
"transaction_updated_date": "2019-08-01T00:00:00+0000",
|
||||
"transaction_initiation_date": "%s",
|
||||
"transaction_updated_date": "%s",
|
||||
"transaction_amount": {
|
||||
"currency_code": "USD",
|
||||
"value": "1000.00"
|
||||
@@ -551,16 +578,20 @@ class TestAccountBankAccountStatementImportOnlinePayPal(
|
||||
"store_info": {},
|
||||
"auction_info": {},
|
||||
"incentive_info": {}
|
||||
}""")
|
||||
}""" % (self.today_isoformat, self.today_isoformat,)
|
||||
)
|
||||
self.assertEqual(len(lines), 1)
|
||||
self.assertEqual(lines[0], {
|
||||
'date': datetime(2019, 8, 1),
|
||||
'amount': '1000.00',
|
||||
'name': 'Invoice 1',
|
||||
'note': '1234567890: Payment for Invoice(s) 1',
|
||||
'partner_name': 'Acme, Inc.',
|
||||
'unique_import_id': '1234567890-1564617600',
|
||||
})
|
||||
self.assertEqual(
|
||||
lines[0],
|
||||
{
|
||||
"date": self.today,
|
||||
"amount": "1000.00",
|
||||
"name": "Invoice 1",
|
||||
"note": "1234567890: Payment for Invoice(s) 1",
|
||||
"partner_name": "Acme, Inc.",
|
||||
"unique_import_id": "1234567890-%s" % (self.today_timestamp,),
|
||||
},
|
||||
)
|
||||
|
||||
def test_transaction_parse_2(self):
|
||||
lines = self.paypal_parse_transaction("""{
|
||||
@@ -568,8 +599,8 @@ class TestAccountBankAccountStatementImportOnlinePayPal(
|
||||
"paypal_account_id": "1234567890",
|
||||
"transaction_id": "1234567890",
|
||||
"transaction_event_code": "T1234",
|
||||
"transaction_initiation_date": "2019-08-01T00:00:00+0000",
|
||||
"transaction_updated_date": "2019-08-01T00:00:00+0000",
|
||||
"transaction_initiation_date": "%s",
|
||||
"transaction_updated_date": "%s",
|
||||
"transaction_amount": {
|
||||
"currency_code": "USD",
|
||||
"value": "1000.00"
|
||||
@@ -605,16 +636,20 @@ class TestAccountBankAccountStatementImportOnlinePayPal(
|
||||
"store_info": {},
|
||||
"auction_info": {},
|
||||
"incentive_info": {}
|
||||
}""")
|
||||
}""" % (self.today_isoformat, self.today_isoformat,)
|
||||
)
|
||||
self.assertEqual(len(lines), 1)
|
||||
self.assertEqual(lines[0], {
|
||||
'date': datetime(2019, 8, 1),
|
||||
'amount': '1000.00',
|
||||
'name': 'Invoice 1',
|
||||
'note': '1234567890: Payment for Invoice(s) 1',
|
||||
'partner_name': 'Acme, Inc.',
|
||||
'unique_import_id': '1234567890-1564617600',
|
||||
})
|
||||
self.assertEqual(
|
||||
lines[0],
|
||||
{
|
||||
"date": self.today,
|
||||
"amount": "1000.00",
|
||||
"name": "Invoice 1",
|
||||
"note": "1234567890: Payment for Invoice(s) 1",
|
||||
"partner_name": "Acme, Inc.",
|
||||
"unique_import_id": "1234567890-%s" % (self.today_timestamp,),
|
||||
},
|
||||
)
|
||||
|
||||
def test_transaction_parse_3(self):
|
||||
lines = self.paypal_parse_transaction("""{
|
||||
@@ -622,8 +657,8 @@ class TestAccountBankAccountStatementImportOnlinePayPal(
|
||||
"paypal_account_id": "1234567890",
|
||||
"transaction_id": "1234567890",
|
||||
"transaction_event_code": "T1234",
|
||||
"transaction_initiation_date": "2019-08-01T00:00:00+0000",
|
||||
"transaction_updated_date": "2019-08-01T00:00:00+0000",
|
||||
"transaction_initiation_date": "%s",
|
||||
"transaction_updated_date": "%s",
|
||||
"transaction_amount": {
|
||||
"currency_code": "USD",
|
||||
"value": "1000.00"
|
||||
@@ -659,24 +694,31 @@ class TestAccountBankAccountStatementImportOnlinePayPal(
|
||||
"store_info": {},
|
||||
"auction_info": {},
|
||||
"incentive_info": {}
|
||||
}""")
|
||||
}""" % (self.today_isoformat, self.today_isoformat,)
|
||||
)
|
||||
self.assertEqual(len(lines), 2)
|
||||
self.assertEqual(lines[0], {
|
||||
'date': datetime(2019, 8, 1),
|
||||
'amount': '1000.00',
|
||||
'name': 'Invoice 1',
|
||||
'note': '1234567890: Payment for Invoice(s) 1',
|
||||
'partner_name': 'Acme, Inc.',
|
||||
'unique_import_id': '1234567890-1564617600',
|
||||
})
|
||||
self.assertEqual(lines[1], {
|
||||
'date': datetime(2019, 8, 1),
|
||||
'amount': '-100.00',
|
||||
'name': 'Fee for Invoice 1',
|
||||
'note': 'Transaction fee for 1234567890: Payment for Invoice(s) 1',
|
||||
'partner_name': 'PayPal',
|
||||
'unique_import_id': '1234567890-1564617600-FEE',
|
||||
})
|
||||
self.assertEqual(
|
||||
lines[0],
|
||||
{
|
||||
"date": self.today,
|
||||
"amount": "1000.00",
|
||||
"name": "Invoice 1",
|
||||
"note": "1234567890: Payment for Invoice(s) 1",
|
||||
"partner_name": "Acme, Inc.",
|
||||
"unique_import_id": "1234567890-%s" % (self.today_timestamp,),
|
||||
},
|
||||
)
|
||||
self.assertEqual(
|
||||
lines[1],
|
||||
{
|
||||
"date": self.today,
|
||||
"amount": "-100.00",
|
||||
"name": "Fee for Invoice 1",
|
||||
"note": "Transaction fee for 1234567890: Payment for Invoice(s) 1",
|
||||
"partner_name": "PayPal",
|
||||
"unique_import_id": "1234567890-%s-FEE" % (self.today_timestamp,),
|
||||
},
|
||||
)
|
||||
|
||||
def test_transaction_parse_4(self):
|
||||
lines = self.paypal_parse_transaction("""{
|
||||
@@ -684,8 +726,8 @@ class TestAccountBankAccountStatementImportOnlinePayPal(
|
||||
"paypal_account_id": "1234567890",
|
||||
"transaction_id": "1234567890",
|
||||
"transaction_event_code": "T1234",
|
||||
"transaction_initiation_date": "2019-08-01T00:00:00+0000",
|
||||
"transaction_updated_date": "2019-08-01T00:00:00+0000",
|
||||
"transaction_initiation_date": "%s",
|
||||
"transaction_updated_date": "%s",
|
||||
"transaction_amount": {
|
||||
"currency_code": "USD",
|
||||
"value": "1000.00"
|
||||
@@ -717,13 +759,17 @@ class TestAccountBankAccountStatementImportOnlinePayPal(
|
||||
"store_info": {},
|
||||
"auction_info": {},
|
||||
"incentive_info": {}
|
||||
}""")
|
||||
}""" % (self.today_isoformat, self.today_isoformat,)
|
||||
)
|
||||
self.assertEqual(len(lines), 1)
|
||||
self.assertEqual(lines[0], {
|
||||
'date': datetime(2019, 8, 1),
|
||||
'amount': '1000.00',
|
||||
'name': 'Invoice 1',
|
||||
'note': '1234567890: Payment for Invoice(s) 1',
|
||||
'partner_name': 'Acme, Inc.',
|
||||
'unique_import_id': '1234567890-1564617600',
|
||||
})
|
||||
self.assertEqual(
|
||||
lines[0],
|
||||
{
|
||||
"date": self.today,
|
||||
"amount": "1000.00",
|
||||
"name": "Invoice 1",
|
||||
"note": "1234567890: Payment for Invoice(s) 1",
|
||||
"partner_name": "Acme, Inc.",
|
||||
"unique_import_id": "1234567890-%s" % (self.today_timestamp,),
|
||||
},
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user