174 lines
5.7 KiB
Python
174 lines
5.7 KiB
Python
from django.test import TransactionTestCase
|
|
|
|
from core.clients.platform import LocalPlatformClient
|
|
from core.models import Ad, Asset, LinkGroup, Provider, Requisition
|
|
from core.tests.helpers import AggregatorPlatformMixin
|
|
|
|
|
|
class TestPlatform(AggregatorPlatformMixin, TransactionTestCase):
|
|
def setUp(self):
|
|
super().setUp()
|
|
self.plat_client = LocalPlatformClient()
|
|
self.plat_client.instance = self.platform
|
|
self.aggregator.account_info = {
|
|
"MONZO_MONZGB2L": [
|
|
{
|
|
"resourceId": "ssss",
|
|
"currency": "GBP",
|
|
"ownerName": "JSNOW LIMITED",
|
|
"cashAccountType": "CACC",
|
|
"status": "enabled",
|
|
"maskedPan": None,
|
|
"details": "Private Limited Company",
|
|
"bban": "ssss",
|
|
"name": None,
|
|
"product": None,
|
|
"bic": None,
|
|
"recipient": "TODO",
|
|
"account_id": "s-s-s-s-s",
|
|
"aggregator_id": str(self.aggregator.id),
|
|
"requisition_id": "3ba3e65d-f44c-4c4e-9e28-08cc080830f6",
|
|
"account_number": {"sort_code": "04-00-04", "number": "00000002"},
|
|
},
|
|
{
|
|
"resourceId": "ssss",
|
|
"currency": "GBP",
|
|
"ownerName": "John Snow Smith",
|
|
"cashAccountType": "CACC",
|
|
"status": "enabled",
|
|
"maskedPan": None,
|
|
"details": "Personal Account",
|
|
"bban": "ssss",
|
|
"name": None,
|
|
"product": None,
|
|
"bic": None,
|
|
"recipient": "TODO",
|
|
"account_id": "s-s-s-s-s",
|
|
"aggregator_id": str(self.aggregator.id),
|
|
"requisition_id": "3ba3e65d-f44c-4c4e-9e28-08cc080830f6",
|
|
"account_number": {"sort_code": "04-00-04", "number": "00000001"},
|
|
},
|
|
]
|
|
}
|
|
self.aggregator.currencies = ["GBP"]
|
|
|
|
self.aggregator.save()
|
|
|
|
self.expected_account_first = {
|
|
"sort_code": "04-00-04",
|
|
"number": "00000001",
|
|
"bank": "MONZO",
|
|
"recipient": "John Snow Smith",
|
|
"aggregator_id": str(self.aggregator.id),
|
|
"requisition_id": "3ba3e65d-f44c-4c4e-9e28-08cc080830f6",
|
|
}
|
|
|
|
asset = Asset.objects.create(
|
|
code="XMR",
|
|
name="Monero",
|
|
)
|
|
|
|
provider = Provider.objects.create(
|
|
code="REVOLUT",
|
|
name="Revolut",
|
|
)
|
|
|
|
self.ad = Ad.objects.create(
|
|
user=self.user,
|
|
name="Test",
|
|
text="Ad text",
|
|
payment_details="Payment details",
|
|
payment_details_real="Payment details real",
|
|
payment_method_details="Payment method details",
|
|
dist_list="",
|
|
# asset_list=asset,
|
|
# provider_list=provider,
|
|
# platforms=self.platform,
|
|
# aggregators=self.aggregator,
|
|
send_reference=True,
|
|
visible=True,
|
|
enabled=True,
|
|
# commit=False,
|
|
)
|
|
|
|
self.ad.asset_list.set([asset])
|
|
self.ad.provider_list.set([provider])
|
|
# self.ad.platforms.set([self.platform])
|
|
# self.ad.aggregators.set([self.aggregator])
|
|
|
|
self.ad.save()
|
|
|
|
self.linkgroup = LinkGroup.objects.create(
|
|
user=self.user,
|
|
name="Test",
|
|
platform_owner_cut_percentage=30,
|
|
requisition_owner_cut_percentage=40,
|
|
operator_cut_percentage=30,
|
|
)
|
|
|
|
self.aggregator.link_group = self.linkgroup
|
|
self.aggregator.save()
|
|
|
|
self.platform.link_group = self.linkgroup
|
|
self.platform.save()
|
|
|
|
self.req = Requisition.objects.create(
|
|
user=self.user,
|
|
aggregator=self.aggregator,
|
|
requisition_id="3ba3e65d-f44c-4c4e-9e28-08cc080830f6",
|
|
payment_details="CUSTOM PAYMENT",
|
|
)
|
|
|
|
def test_get_valid_account_details(self):
|
|
result = self.plat_client.get_valid_account_details(self.ad)
|
|
|
|
expected = (
|
|
["GBP"],
|
|
{"GBP": self.expected_account_first},
|
|
)
|
|
self.assertEqual(result, expected)
|
|
|
|
def test_get_matching_account_details(self):
|
|
result = self.plat_client.get_matching_account_details("GBP", self.ad)
|
|
|
|
self.assertEqual(result, self.expected_account_first)
|
|
|
|
def test_format_payment_details(self):
|
|
account_info = self.plat_client.get_matching_account_details("GBP", self.ad)
|
|
result = self.plat_client.format_payment_details(
|
|
"GBP",
|
|
account_info,
|
|
self.ad,
|
|
real=False,
|
|
)
|
|
|
|
expected = "Payment details"
|
|
self.assertEqual(result, expected)
|
|
|
|
def test_format_payment_details_real(self):
|
|
account_info = self.plat_client.get_matching_account_details("GBP", self.ad)
|
|
result = self.plat_client.format_payment_details(
|
|
"GBP",
|
|
account_info,
|
|
self.ad,
|
|
real=True,
|
|
)
|
|
|
|
expected = "CUSTOM PAYMENT"
|
|
self.assertEqual(result, expected)
|
|
|
|
async def test_successful_withdrawal(self):
|
|
self.platform.throughput = 100
|
|
self.req.throughput = 100
|
|
|
|
self.platform.save()
|
|
self.req.save()
|
|
|
|
await self.plat_client.successful_withdrawal()
|
|
|
|
self.platform.refresh_from_db()
|
|
self.req.refresh_from_db()
|
|
|
|
self.assertEqual(self.platform.throughput, 0)
|
|
self.assertEqual(self.req.throughput, 0)
|