70 lines
4.0 KiB
Python
70 lines
4.0 KiB
Python
from playwright.sync_api import expect
|
|
|
|
from .payments import PaymentsPage
|
|
|
|
|
|
class PaymentLinkPage(PaymentsPage):
|
|
def prepare_copy(self, manual=False):
|
|
self.manual_copy = manual
|
|
if manual:
|
|
self.page.add_init_script("Object.defineProperty(navigator, 'clipboard', {value: {writeText: async () => {throw new Error('Clipboard unavailable');}}});")
|
|
else:
|
|
self.page.context.grant_permissions(['clipboard-read', 'clipboard-write'])
|
|
|
|
def copied_text(self, button_name):
|
|
self.page.get_by_role('button', name=button_name, exact=True).click()
|
|
if button_name == 'کپی لینک کوتاه این صفحه برای ارسال به دیگران':
|
|
expect(self.page.locator('.pay-share-feedback')).to_contain_text('لینک آماده است')
|
|
if self.manual_copy:
|
|
dialog = self.page.get_by_role('dialog')
|
|
expect(dialog).to_be_visible()
|
|
value = dialog.locator('textarea').input_value()
|
|
dialog.get_by_role('button', name='بستن', exact=True).click()
|
|
return value
|
|
expect(self.page.get_by_text('کپی شد', exact=True)).to_be_visible()
|
|
return self.page.evaluate('navigator.clipboard.readText()')
|
|
|
|
def copy_short_link(self):
|
|
value = self.copied_text('کپی لینک کوتاه این صفحه برای ارسال به دیگران')
|
|
expect(self.page.locator('.pay-share-feedback')).to_contain_text('لینک آماده است')
|
|
return value
|
|
|
|
def open_link(self, path):
|
|
self.goto(path)
|
|
expect(self.page.get_by_role('heading', name='جزئیات واریز', exact=True)).to_be_visible()
|
|
|
|
def copy_all(self):
|
|
self.page.get_by_role('button', name='کپی کامل اطلاعات', exact=True).click()
|
|
expect(self.page.get_by_text('کپی شد', exact=True).or_(
|
|
self.page.get_by_role('heading', name='متن را انتخاب و کپی کنید'))).to_be_visible()
|
|
if self.page.get_by_role('dialog').is_visible():
|
|
self.page.get_by_role('button', name='بستن', exact=True).click()
|
|
|
|
def open_receipt_form(self, linked):
|
|
if linked:
|
|
self.page.get_by_role('link', name='ارسال فیش این واریز', exact=True).click()
|
|
else:
|
|
self.page.get_by_role('link', name='ارسال فیش واریز مستقل', exact=True).click()
|
|
expect(self.page.get_by_role('heading', name='ارسال فیش واریزی', exact=True)).to_be_visible()
|
|
|
|
def show_required_errors(self):
|
|
self.page.get_by_role('button', name='ثبت و ارسال فیش', exact=True).click()
|
|
expect(self.page.locator('#receipt-errors')).to_be_visible()
|
|
expect(self.page.locator('#id_paid_amount')).to_be_focused()
|
|
|
|
def submit_payment(self, png, account_id=None):
|
|
if account_id is not None:
|
|
self.page.locator('#id_destination_account').select_option(str(account_id))
|
|
self.page.get_by_label('شناسه واریز که با آن پرداخت انجام دادهاید (اختیاری)', exact=True).fill('')
|
|
expect(self.page.locator('#id_deposit_id')).not_to_have_attribute('required', '')
|
|
self.page.locator('#id_paid_amount').fill('۱۲۳۴۵')
|
|
expect(self.page.locator('#id_paid_amount')).to_have_value('۱۲٬۳۴۵')
|
|
self.page.get_by_role('button', name='امروز', exact=True).click()
|
|
with self.page.expect_file_chooser() as picker:
|
|
self.page.locator('label.customer-file-button').click()
|
|
picker.value.set_files({'name': 'screenshot.png', 'mimeType': 'image/png', 'buffer': png})
|
|
expect(self.page.locator('#receipt-file-status')).to_contain_text('screenshot.png')
|
|
expect(self.page.locator('#receipt-file-preview')).to_be_visible()
|
|
self.page.get_by_role('button', name='ثبت و ارسال فیش', exact=True).click()
|
|
expect(self.page.locator('.flash')).to_contain_text('فیش ثبت شد و در انتظار بررسی است.')
|