fix payment
This commit is contained in:
1 parent
4f7486152c
commit
bb3ddd1610
47 files changed
+2137
-51
No files matched your search
@@ -0,0 +1,76 @@
|
||||
import uuid
|
||||
from urllib.parse import parse_qs, urlsplit
|
||||
|
||||
import jdatetime
|
||||
import pytest
|
||||
from django.core.files.uploadedfile import SimpleUploadedFile
|
||||
from django.urls import reverse
|
||||
from django.utils import timezone
|
||||
|
||||
from apps.notifications.models import NotificationJob
|
||||
from apps.payments import services
|
||||
from apps.payments.models import PaymentNotification, PaymentNotificationAttempt
|
||||
from tests.e2e.pages.auth import AuthenticationPage
|
||||
from tests.e2e.pages.staff_payments import StaffPaymentsPage
|
||||
from tests.e2e.test_payments_e2e import payment_case, PASSWORD, PNG
|
||||
|
||||
pytestmark = [pytest.mark.e2e, pytest.mark.django_db(transaction=True)]
|
||||
|
||||
|
||||
@pytest.mark.parametrize('notices', [False, True])
|
||||
def test_staff_default_action_tab_and_pagination(live_server, browser_page, payment_case, client, notices):
|
||||
customer, account, reviewers = payment_case
|
||||
if notices:
|
||||
for index in range(26):
|
||||
services.issue_notice(reviewers[0], {'customer': customer, 'account': account, 'subject': f'اعلامیه صفحه بندی {index}', 'amount': 12345})
|
||||
else:
|
||||
client.force_login(customer)
|
||||
today = jdatetime.date.fromgregorian(date=timezone.localdate())
|
||||
for _ in range(26):
|
||||
response = client.post(reverse('payments:receipt_new'), {'receipt_mode': 'independent',
|
||||
'paid_amount': '12345', 'destination_account': account.pk, 'submission_key': str(uuid.uuid4()),
|
||||
'paid_day': str(today.day), 'paid_month': str(today.month), 'paid_year': str(today.year),
|
||||
'receipt_image': SimpleUploadedFile('receipt.png', PNG, content_type='image/png')})
|
||||
assert response.status_code == 302
|
||||
with browser_page() as page:
|
||||
page.set_viewport_size({'width': 320, 'height': 900})
|
||||
AuthenticationPage(page, live_server.url).login_staff(reviewers[0], PASSWORD)
|
||||
view = StaffPaymentsPage(page, live_server.url)
|
||||
view.open_desk()
|
||||
view.assert_action_tab()
|
||||
if notices:
|
||||
page.get_by_role('link', name='اعلامیههای واریز', exact=True).click()
|
||||
view.search(customer.username)
|
||||
view.next_page()
|
||||
query = parse_qs(urlsplit(page.url).query)
|
||||
assert query['q'] == [customer.username]
|
||||
assert query['tab'] == ['notices' if notices else 'receipts']
|
||||
if not notices:
|
||||
assert query['mine'] == ['1']
|
||||
view.assert_action_tab()
|
||||
assert page.evaluate('document.documentElement.scrollWidth <= document.documentElement.clientWidth + 1')
|
||||
|
||||
|
||||
@pytest.mark.parametrize('width', [320, 1440])
|
||||
def test_staff_sms_history_and_resend(live_server, browser_page, payment_case, width):
|
||||
customer, account, reviewers = payment_case
|
||||
notice = services.issue_notice(reviewers[0], {'customer': customer, 'account': account, 'subject': 'اعلامیه با سوابق پیامک', 'amount': 12345})
|
||||
first = PaymentNotification.objects.get(notice=notice)
|
||||
NotificationJob.objects.filter(pk=first.job_id).update(status='FAILED', attempts=1, last_error='اعتبار پنل کافی نیست')
|
||||
PaymentNotificationAttempt.objects.create(notification=first, finished_at=timezone.now(), success=False,
|
||||
provider_code='-19', error='اعتبار پنل کافی نیست')
|
||||
delivered = services.resend_notice_sms(reviewers[0], notice, str(uuid.uuid4()))
|
||||
NotificationJob.objects.filter(pk=delivered.pk).update(status='SENT', provider_message_id='old-delivered-id',
|
||||
sent_at=timezone.now(), delivery_status='DELIVERED', delivery_is_final=True, delivery_checked_at=timezone.now())
|
||||
PaymentNotificationAttempt.objects.create(notification=delivered.payment_notification, finished_at=timezone.now(),
|
||||
success=True, provider_code='2', provider_id='old-delivered-id')
|
||||
with browser_page() as page:
|
||||
page.set_viewport_size({'width': width, 'height': 900})
|
||||
AuthenticationPage(page, live_server.url).login_staff(reviewers[0], PASSWORD)
|
||||
view = StaffPaymentsPage(page, live_server.url)
|
||||
view.open_notice(notice.public_id)
|
||||
view.inspect_history()
|
||||
assert page.evaluate('document.documentElement.scrollWidth <= document.documentElement.clientWidth + 1')
|
||||
view.resend_sms()
|
||||
assert PaymentNotification.objects.filter(notice=notice).count() == 3
|
||||
assert PaymentNotification.objects.filter(notice=notice, job__status='PENDING').count() == 1
|
||||
Reference in new issue
Block a user