fix fish variz name, dalilrad, sms, bale
This commit is contained in:
1 parent
90931a5a64
commit
35a1ec1794
30 files changed
+674
-39
No files matched your search
@@ -0,0 +1,42 @@
|
||||
from playwright.sync_api import expect
|
||||
|
||||
from .receipt_upload import ReceiptUploadPage
|
||||
|
||||
|
||||
class ReceiptCustomerDetailsPage(ReceiptUploadPage):
|
||||
def expect_payer(self, value):
|
||||
expect(self.page.get_by_label('نام واریزکننده')).to_have_value(value)
|
||||
|
||||
def enter_payer(self, name):
|
||||
self.page.get_by_label('نام واریزکننده').fill(name)
|
||||
|
||||
def expect_missing_payer(self):
|
||||
expect(self.page.locator('#error-depositor_name')).to_contain_text('نام واریزکننده را وارد کنید')
|
||||
|
||||
def select_destination(self, account_id, bank=None, identifier=None):
|
||||
self.page.locator('#id_destination_account').select_option(str(account_id))
|
||||
warning = self.page.locator('#destination-deposit-warning')
|
||||
if bank:
|
||||
expect(warning).to_be_visible()
|
||||
expect(warning).to_contain_text(bank)
|
||||
expect(warning).to_contain_text(identifier)
|
||||
expect(warning).to_contain_text('برگشت بخورد')
|
||||
assert warning.evaluate('el => getComputedStyle(el).color') == 'rgb(180, 35, 24)'
|
||||
else:
|
||||
expect(warning).to_be_hidden()
|
||||
|
||||
def reject(self, reason, *, confirm):
|
||||
expect(self.page.locator('#decision-help')).to_contain_text('با پیامک برای مشتری ارسال میشود')
|
||||
self.page.locator('#decision-reason').fill(reason)
|
||||
previews = []
|
||||
def answer(dialog):
|
||||
previews.append(dialog.message)
|
||||
dialog.accept() if confirm else dialog.dismiss()
|
||||
self.page.once('dialog', answer)
|
||||
self.page.get_by_role('button', name='رد فیش', exact=True).click()
|
||||
assert len(previews) == 1 and reason in previews[0] and 'برای مشتری ارسال' in previews[0]
|
||||
if confirm:
|
||||
expect(self.page.locator('.pay-status').first).to_have_text('رد شده')
|
||||
else:
|
||||
expect(self.page.get_by_role('button', name='رد فیش', exact=True)).to_be_visible()
|
||||
expect(self.page.locator('#decision-reason')).to_have_value(reason)
|
||||
@@ -21,7 +21,7 @@ def payment_case(settings,tmp_path):
|
||||
settings.MEDIA_ROOT=tmp_path
|
||||
bank,_=BankInstitution.objects.get_or_create(code='melli',defaults={'name':'ملی'})
|
||||
account=CompanyBankAccount.objects.create(name='حساب فروش شرکت',holder='شرکت',bank=bank,account_number='000123')
|
||||
customer=User.objects.create_user(username='payment-e2e-customer',mobile='09120009021',password=PASSWORD,account_type='CUSTOMER')
|
||||
customer=User.objects.create_user(username='payment-e2e-customer',mobile='09120009021',first_name='مشتری',last_name='آزمایشی',password=PASSWORD,account_type='CUSTOMER')
|
||||
reviewers=[]
|
||||
for index in range(2):
|
||||
user=User.objects.create_user(username=f'payment-e2e-reviewer-{index}',password=PASSWORD,account_type='STAFF')
|
||||
@@ -308,6 +308,7 @@ def test_customer_linked_receipt_status_and_reason_without_access_roster(live_se
|
||||
expect(page.get_by_role('button', name='ثبت تأیید من', exact=True)).to_be_visible()
|
||||
expect(page.get_by_role('heading', name='افراد تعیینشده', exact=True)).to_have_count(0)
|
||||
page.locator('#decision-reason').fill('تصویر فیش خوانا نیست')
|
||||
page.once('dialog', lambda dialog: dialog.accept())
|
||||
page.get_by_role('button', name='رد فیش', exact=True).click()
|
||||
expect(page.get_by_text('تصویر فیش خوانا نیست', exact=True)).to_be_visible()
|
||||
page.get_by_role('button', name='خروج', exact=True).first.click()
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
from urllib.parse import urlsplit
|
||||
|
||||
import pytest
|
||||
from django.urls import reverse
|
||||
from playwright.sync_api import expect
|
||||
|
||||
from apps.payments import services
|
||||
from apps.payments.access import issue_payment_link
|
||||
from apps.payments.deposit_identifier import generate_id_algorithm
|
||||
from apps.payments.models import CompanyBankAccount
|
||||
from tests.e2e.pages.auth import AuthenticationPage
|
||||
from tests.e2e.pages.receipt_customer_details import ReceiptCustomerDetailsPage
|
||||
from tests.e2e.test_payments_e2e import payment_case, PASSWORD, PNG
|
||||
|
||||
pytestmark = [pytest.mark.e2e, pytest.mark.django_db(transaction=True)]
|
||||
|
||||
|
||||
@pytest.mark.parametrize('mode', ['independent', 'linked', 'staff', 'link'])
|
||||
def test_required_payer_on_every_receipt_entry_point(live_server, browser_page, payment_case, mode):
|
||||
customer, account, reviewers = payment_case
|
||||
customer.first_name = customer.last_name = ''
|
||||
customer.save()
|
||||
notice = services.issue_notice(reviewers[0], {'customer': customer, 'account': account, 'subject': 'ثبت فیش با نام', 'amount': 12345})
|
||||
link_path = urlsplit(issue_payment_link(notice=notice)[1]).path if mode == 'link' else ''
|
||||
with browser_page() as page:
|
||||
page.set_viewport_size({'width': 320, 'height': 900})
|
||||
view = ReceiptCustomerDetailsPage(page, live_server.url)
|
||||
if mode == 'link':
|
||||
view.goto(link_path)
|
||||
page.get_by_role('link', name='ارسال فیش این واریز', exact=True).click()
|
||||
elif mode == 'staff':
|
||||
AuthenticationPage(page, live_server.url).login_staff(reviewers[0], PASSWORD)
|
||||
view.goto(reverse('staff_payments:receipt_new', args=[customer.public_id]))
|
||||
else:
|
||||
AuthenticationPage(page, live_server.url).login_customer(customer, PASSWORD)
|
||||
view.goto(reverse('payments:receipt_new') + ('?notice=' + str(notice.public_id) if mode == 'linked' else ''))
|
||||
if mode in ['independent', 'staff']:
|
||||
page.get_by_label('واریز مستقل', exact=True).check()
|
||||
view.expect_payer('')
|
||||
view.fill_receipt(account.pk, PNG)
|
||||
view.submit()
|
||||
view.expect_missing_payer()
|
||||
view.enter_payer('رضا احمدی')
|
||||
view.submit()
|
||||
expect(page.locator('.flash')).to_contain_text('فیش ثبت شد')
|
||||
expect(page.get_by_text('رضا احمدی', exact=True)).to_be_visible()
|
||||
assert page.evaluate('document.documentElement.scrollWidth <= document.documentElement.clientWidth + 1')
|
||||
|
||||
|
||||
def test_identifier_warning_follows_destination_and_mode(live_server, browser_page, payment_case):
|
||||
customer, account, reviewers = payment_case
|
||||
account.requires_deposit_id = True
|
||||
account.save()
|
||||
other = CompanyBankAccount.objects.create(name='حساب بدون شناسه', holder='شرکت', bank=account.bank, account_number='1234')
|
||||
identifier = generate_id_algorithm(customer.local_mobile)
|
||||
notice = services.issue_notice(reviewers[0], {'customer': customer, 'account': account, 'subject': 'شناسه اختصاصی', 'amount': 12345, 'deposit_id': identifier})
|
||||
with browser_page() as page:
|
||||
view = ReceiptCustomerDetailsPage(page, live_server.url)
|
||||
AuthenticationPage(page, live_server.url).login_customer(customer, PASSWORD)
|
||||
view.goto(reverse('payments:receipt_new') + '?notice=' + str(notice.public_id))
|
||||
view.expect_payer('مشتری آزمایشی')
|
||||
view.select_destination(account.pk, account.bank.name, identifier)
|
||||
page.get_by_label('واریز مستقل', exact=True).check()
|
||||
view.select_destination(other.pk)
|
||||
view.select_destination(account.pk, account.bank.name, identifier)
|
||||
|
||||
|
||||
def test_staff_can_cancel_then_confirm_rejection_sms(live_server, browser_page, payment_case):
|
||||
customer, account, reviewers = payment_case
|
||||
with browser_page() as page:
|
||||
view = ReceiptCustomerDetailsPage(page, live_server.url)
|
||||
auth = AuthenticationPage(page, live_server.url)
|
||||
auth.login_customer(customer, PASSWORD)
|
||||
view.goto(reverse('payments:receipt_new'))
|
||||
page.get_by_label('واریز مستقل', exact=True).check()
|
||||
view.fill_receipt(account.pk, PNG)
|
||||
view.submit()
|
||||
expect(page.locator('.flash')).to_contain_text('فیش ثبت شد')
|
||||
receipt_id = page.url.rstrip('/').rsplit('/', 1)[-1]
|
||||
page.get_by_role('button', name='خروج', exact=True).first.click()
|
||||
auth.login_staff(reviewers[0], PASSWORD)
|
||||
view.goto(reverse('staff_payments:receipt_detail', args=[receipt_id]))
|
||||
view.reject('تصویر فیش ناخوانا است.', confirm=False)
|
||||
view.reject('تصویر فیش ناخوانا است.', confirm=True)
|
||||
expect(page.get_by_text('تصویر فیش ناخوانا است.', exact=True)).to_be_visible()
|
||||
@@ -78,7 +78,7 @@ def test_revised_receipt_uses_upload_progress(live_server, browser_page, payment
|
||||
today = jdatetime.date.fromgregorian(date=timezone.localdate())
|
||||
client.force_login(customer)
|
||||
response = client.post(reverse('payments:receipt_new'), {
|
||||
'receipt_mode': 'independent', 'paid_amount': '12345', 'destination_account': account.pk,
|
||||
'depositor_name': 'مشتری آزمایشی', 'receipt_mode': 'independent', 'paid_amount': '12345', 'destination_account': account.pk,
|
||||
'paid_day': str(today.day), 'paid_month': str(today.month), 'paid_year': str(today.year),
|
||||
'submission_key': str(uuid.uuid4()),
|
||||
'receipt_image': SimpleUploadedFile('receipt.png', PNG, content_type='image/png'),
|
||||
|
||||
@@ -27,7 +27,7 @@ def test_staff_default_action_tab_and_pagination(live_server, browser_page, paym
|
||||
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',
|
||||
response = client.post(reverse('payments:receipt_new'), {'depositor_name': 'مشتری آزمایشی', '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')})
|
||||
|
||||
Reference in new issue
Block a user