§
    ­“j¼  ã                   óp   — d dl Zd dlmc mZ d dlZd dlZd dlZd dl	Z	d dl
mZ d dlmZ d dlmZ d„ Zd„ ZdS )é    N)ÚErpDatabaseClient)Ú	event_bus)Úprocess_outbox_eventsc                  óF   — t          j        t          ¦   «         ¦  «         d S ©N)ÚasyncioÚrunÚ _async_test_transactional_outbox© ó    ú*C:\Projects\DSCons\tests\test_event_bus.pyÚtest_transactional_outboxr   
   s   € Ý„KÕ0Ñ2Ô2Ñ3Ô3Ð3Ð3Ð3r   c            	   ƒ   óÀ  ‡K  — t          ¦   «         } |                      ¦   «         5 }|                     ¦   «         5 }|                     d¦  «         |                     ¦   «          d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   dt          j        ¦   «         dœ}|                      ¦   «         5 }|                     ¦   «         5 }t          j        |d|¦  «         |                     ¦   «          d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   |                      ¦   «         5 }|                     ¦   «         5 }|                     d¦  «         | 	                    ¦   «         }d }||u}|s—t          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        d	œz  }d
d|iz  }t!          t          j        |¦  «        ¦  «        ‚d x}}|d         }	d}
|	|
k    }|slt          j        d|fd|	|
f¦  «        t          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t!          t          j        |¦  «        ¦  «        ‚d x}	x}}
d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   g Šˆfd„}t          j        d|¦  «         t'          j        t+          ¦   «         ¦  «        }t'          j        d¦  «        ƒ d {V —† |                     ¦   «          t1          ‰¦  «        }d}||k    }|sòt          j        d|fd||f¦  «        dt          j        ¦   «         v st          j        t0          ¦  «        rt          j        t0          ¦  «        nddt          j        ¦   «         v st          j        ‰¦  «        rt          j        ‰¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t!          t          j        |¦  «        ¦  «        ‚d x}x}}‰d         d         }	d}
|	|
k    }|slt          j        d|fd|	|
f¦  «        t          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t!          t          j        |¦  «        ¦  «        ‚d x}	x}}
|                      ¦   «         5 }|                     ¦   «         5 }|                     d¦  «         | 	                    ¦   «         }|d         }	d}
|	|
k    }|slt          j        d|fd|	|
f¦  «        t          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t!          t          j        |¦  «        ¦  «        ‚d x}	x}}
d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )NzDELETE FROM erp_outbox_eventsÚdata)ÚtestÚidz
test.eventzDSELECT status FROM erp_outbox_events WHERE event_type = 'test.event')úis not)z%(py0)s is not %(py3)sÚrow)Úpy0Úpy3zassert %(py5)sÚpy5ÚstatusÚpending)ú==)z%(py1)s == %(py4)s)Úpy1Úpy4zassert %(py6)sÚpy6c                 ó2   •— ‰                      | ¦  «         d S r   )Úappend)ÚpayloadÚreceiveds    €r   Údummy_handlerz7_async_test_transactional_outbox.<locals>.dummy_handler%   s   ø€ Ø�Š˜Ñ Ô Ð Ð Ð r   g      à?é   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sÚlenr!   )r   r   r   r   zassert %(py8)sÚpy8r   r   Ú	completed)r   Úget_connectionÚcursorÚexecuteÚcommitÚuuidÚuuid4r   Úpublish_outboxÚfetchoneÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚ	subscriber   Úcreate_taskr   ÚsleepÚcancelr$   )ÚdbÚconnÚcurÚtest_payloadr   Ú@py_assert2Ú@py_assert1Ú@py_format4Ú@py_format6Ú@py_assert0Ú@py_assert3Ú@py_format5Ú@py_format7r"   Úworker_taskÚ@py_assert5Ú@py_assert4Ú@py_format9r!   s                     @r   r
   r
      s#  øè è € Ý	Ñ	Ô	€Bð 
×	Ò	Ñ	Ô	ð   d§k¢k¡m¤mð °sØ�ŠÐ3Ñ4Ô4Ð4Ø�Š‰Œˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð #­$¬*©,¬,Ð7Ð7€Lð 
×	Ò	Ñ	Ô	ð   d§k¢k¡m¤mð °sÝÔ   l°LÑAÔAÐAØ�Š‰Œˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð
 
×	Ò	Ñ	Ô	ð *  d§k¢k¡m¤mð *°sØ�ŠÐZÑ[Ô[Ð[Ø�lŠl‰nŒnˆØÐˆs˜$ˆÐÐÐÕÔÐÐÐÐˆs˜$ÐÑÔÐÕÔÑÔÐÐÕÔˆsÑÔÐÕÔˆsÑÔÐÐÕÔ˜$ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØ�8Œ}Ð) 	Ð)ˆ} 	Ò)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)ˆ} 	Ð)Ñ)Ô)Õ)Ô)ˆ}Ñ)Ô)Õ)Ô) 	Ñ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ð	*ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *ð *ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *ð €Hð!ð !ð !ð !ð !õ Ô˜ mÑ4Ô4Ð4õ Ô%Õ&;Ñ&=Ô&=Ñ>Ô>€KÝ
Œ-˜Ñ
Ô
ÐÐÐÐÐÐÐØ×ÒÑÔÐõ ˆx‰=Œ=Ð˜AÐˆ=˜AÒÐÐÐÕÔÐÐÐÐˆ=˜AÐÑÔÐÕÔÑÔÐÐÕÔ�3ÑÔÐÕÔ�3ÑÔÐÐÐÕÔÑÔÐÐÕÔˆxÑÔÐÕÔˆxÑÔÐÐÕÔˆ=ÑÔÕÔ˜AÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐØ�AŒ;�vÔÐ( &Ð(Ð &Ò(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð &Ð(Ñ(Ô(Õ(Ô(ÐÑ(Ô(Õ(Ô( &Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ð 
×	Ò	Ñ	Ô	ð ,  d§k¢k¡m¤mð ,°sØ�ŠÐZÑ[Ô[Ð[Ø�lŠl‰nŒnˆØ�8Œ}Ð+ Ð+ˆ} Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+ˆ} Ð+Ñ+Ô+Õ+Ô+ˆ}Ñ+Ô+Õ+Ô+ Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð ,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð ,ð ,sØ   ¦B»*A1Á%BÁ1A5	Á5BÁ8A5	Á9BÂBÂBÂ=D Ã+D	Ã=D Ä	D	ÄD ÄD	ÄD Ä D$Ä'D$Ä?KÅEJ1Ê%KÊ1J5	Ê5KÊ8J5	Ê9KËKËKÓ,WÔB.V;Ö/WÖ;V?	Ö?W×V?	×W×W×W)Úbuiltinsr1   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter/   ÚpytestÚjsonr+   r   Úapp.core.postgres.erp_clientr   Ú#app.core.module_framework.event_busr   Ú'app.core.module_framework.outbox_workerr   r   r
   r   r   r   ú<module>rT      s¡   ðØ  € € € € € € € € € € € € €€€€Ø €€€Ø €€€Ø €€€Ø :Ð :Ð :Ð :Ð :Ð :Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø IÐ IÐ IÐ IÐ IÐ Ið4ð 4ð 4ð*,ð *,ð *,ð *,ð *,r   