o
    \h                     @   sV   d dl Z d dlmZ d dlmZmZmZmZmZm	Z	m
Z
mZmZ G dd de jZdS )    N)patch)	
clear_tagsget_tagsnew_contextscopedtagidentify_contextset_context_sessionget_context_session_idget_context_distinct_idc                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zeddd Z	eddd Z
eddd Zdd Zdd Zdd Zdd Zdd ZdS )
TestScopesc                 C   s
   t   d S )N)r   self r   [/home/air/segue/gemini/backup/venv/lib/python3.10/site-packages/posthog/test/test_scopes.pysetUp   s   
zTestScopes.setUpc                 C   sj   t dd& tdd tdd t }|d dksJ |d dks#J W d    d S 1 s.w   Y  d S )NTfreshkey1value1key2   r   r   r   )r   tagsr   r   r   test_tag_and_get_tags   s   

"z TestScopes.test_tag_and_get_tagsc                 C   s`   t dd! tdd t d dksJ t  t i ksJ W d    d S 1 s)w   Y  d S )NTr   r   r   )r   r   r   r   r   r   r   r   test_clear_tags   s   
"zTestScopes.test_clear_tagsc              	   C   s   t ddm tdd t dd$ t i ksJ tdd t d dks&J | dt  W d    n1 s7w   Y  t dd t ddiksKJ W d    n1 sUw   Y  | dt  t d dksjJ W d    d S 1 suw   Y  d S )NTr   outervalueinnerF)r   r   r   assertNotInr   r   r   r   test_new_context_isolation'   s   

"z%TestScopes.test_new_context_isolationc              
   C   s   t dd] tdd t dd9 tdd t dd tdd t ddiks*J W d    n1 s4w   Y  t ddiksBJ W d    n1 sLw   Y  t ddiksZJ W d    d S 1 sew   Y  d S )	NTr   level1r   level2value2level3value3r   r   r   r   r   test_nested_contextsA   s   


"zTestScopes.test_nested_contextszposthog.capture_exceptionc                 C   s>   t  dd }|dd}|dksJ |  t i ksJ d S )Nc                 S   s   t d|  t d| | | S )Nxyr   )r'   r(   r   r   r   successful_functionT   s   

zETestScopes.test_scoped_decorator_success.<locals>.successful_function   r      )r   assert_not_calledr   )r   mock_capturer*   resultr   r   r   test_scoped_decorator_successR   s   

z(TestScopes.test_scoped_decorator_successc                    st   t d dd }||_t  fdd}| t  |  W d    n1 s'w   Y  |  t i ks8J d S )NzTest exceptionc                 [      t  }|ddksJ d S Nimportant_contextr   r   get	exceptionkwargscurrent_tagsr   r   r   check_context_on_capturei      zLTestScopes.test_scoped_decorator_exception.<locals>.check_context_on_capturec                      s   t dd  r2   r)   r   test_exceptionr   r   failing_functionp   s   
zDTestScopes.test_scoped_decorator_exception.<locals>.failing_function)
ValueErrorside_effectr   assertRaisesassert_called_once_withr   )r   r.   r:   r>   r   r<   r   test_scoped_decorator_exceptione   s   
z*TestScopes.test_scoped_decorator_exceptionc              	   C   s   t d}dd }||_t 5 tdd zt  tdd |1 s#w   Y  W n	 t y2   Y nw t d dks<J W d    n1 sFw   Y  || d S )NzContext exceptionc                 [   r1   )Ninner_contextinner_valuer4   r6   r   r   r   r:      r;   zPTestScopes.test_new_context_exception_handling.<locals>.check_context_on_captureouter_contextouter_valuerD   rE   )RuntimeErrorr@   r   r   r   rB   )r   r.   r=   r:   r   r   r   #test_new_context_exception_handling   s    

z.TestScopes.test_new_context_exception_handlingc                 C   T   t dd t d u sJ td t dksJ W d    d S 1 s#w   Y  d S )NTr   user123)r   r   r   r   r   r   r   test_identify_context   
   "z TestScopes.test_identify_contextc                 C   rJ   )NTr   
session456)r   r
   r	   r   r   r   r   test_set_context_session   rM   z#TestScopes.test_set_context_sessionc              	   C   s   t ddB td td t dd t d u sJ t d u s"J W d    n1 s,w   Y  t dks8J t dks?J W d    d S 1 sJw   Y  d S )NTr   rK   rN   r   r   r	   r   r
   r   r   r   r   &test_context_inheritance_fresh_context   s   "z1TestScopes.test_context_inheritance_fresh_contextc              	   C   s   t ddX td td t dd, t dksJ t dks"J td td t dks1J t dks8J W d    n1 sBw   Y  t dksNJ t dksUJ W d    d S 1 s`w   Y  d S )NTr   rK   rN   Fuser789
session999rP   r   r   r   r   *test_context_inheritance_non_fresh_context   s   "z5TestScopes.test_context_inheritance_non_fresh_contextc                 C   sP   t  dd }| \}}|dksJ |dksJ t d u sJ t d u s&J d S )Nc                   S   s   t d td t t fS )Nuser456
session789)r   r	   r   r
   r   r   r   r   function_with_context   s   zPTestScopes.test_scoped_decorator_with_context_ids.<locals>.function_with_contextrU   rV   )r   r   r
   )r   rW   distinct_id
session_idr   r   r   &test_scoped_decorator_with_context_ids   s   

z1TestScopes.test_scoped_decorator_with_context_idsN)__name__
__module____qualname__r   r   r   r    r&   r   r0   rC   rI   rL   rO   rQ   rT   rZ   r   r   r   r   r      s"    	


		r   )unittestunittest.mockr   posthog.scopesr   r   r   r   r   r   r	   r
   r   TestCaser   r   r   r   r   <module>   s    ,