Files
tradon/modules/edocument_peppol_peppyrus/tests/scenario_edocument_peppol_peppyrus.rst
2026-03-14 09:42:12 +00:00

85 lines
2.7 KiB
ReStructuredText

==================================
EDocument Peppol Peppyrus Scenario
==================================
Imports::
>>> import os
>>> import time
>>> from unittest.mock import patch
>>> from proteus import Model
>>> from trytond.modules.company.tests.tools import create_company
>>> from trytond.modules.edocument_peppol.edocument import Peppol
>>> from trytond.tests.tools import activate_modules
>>> from trytond.tools import file_open
>>> FETCH_SLEEP, MAX_SLEEP = 1, 200
Patch Peppol::
>>> _validate = patch.object(Peppol, '_validate').start()
>>> render = patch.object(Peppol, 'render').start()
>>> participant_scheme, participant_id = (
... os.getenv('PEPPYRUS_PARTICIPANT_ID').split(':', 1))
>>> participant_vat = os.getenv('PEPPYRUS_PARTICIPANT_VAT')
>>> with file_open('edocument_peppol_peppyrus/tests/invoice.xml', mode='r') as fp:
... render.return_value = (
... fp.read()
... .replace('PARTICIPANT_SCHEME', participant_scheme)
... .replace('PARTICIPANT_ID', participant_id)
... .replace('PARTICIPANT_VAT', participant_vat.upper())
... .encode())
Activate modules::
>>> config = activate_modules('edocument_peppol_peppyrus', create_company)
>>> Cron = Model.get('ir.cron')
>>> Peppol = Model.get('edocument.peppol')
>>> PeppolService = Model.get('edocument.peppol.service')
Create a service::
>>> peppol_service = PeppolService(sequence=1)
>>> peppol_service.types = ['bis-billing-3']
>>> peppol_service.service = 'peppyrus'
>>> peppol_service.peppyrus_server = 'testing'
>>> peppol_service.peppyrus_api_key = os.getenv('PEPPYRUS_API_KEY')
>>> peppol_service.save()
Send out a Peppol document::
>>> peppol = Peppol(direction='out')
>>> peppol.type = 'bis-billing-3'
>>> peppol.service = peppol_service
>>> peppol.click('submit')
>>> peppol.state
'processing'
>>> bool(peppol.transmission_id)
True
Check Peppol status::
>>> cron, = Cron.find([
... ('method', '=', 'edocument.peppol|update_status'),
... ], limit=1)
>>> while peppol.state == 'processing':
... cron.click('run_once')
... peppol.reload()
>>> peppol.state
'succeeded'
Fetch messages::
>>> for _ in range(MAX_SLEEP):
... cron, = Cron.find([
... ('method', '=', 'edocument.peppol.service|peppyrus_fetch'),
... ], limit=1)
... cron.click('run_once')
... if bool(Peppol.find([('direction', '=', 'in')])):
... break
... time.sleep(FETCH_SLEEP)
>>> bool(Peppol.find([('direction', '=', 'in')]))
True