
    Zi                     l    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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                       e Zd Zd Zd Zd Zd Zd Z ed          d             Z	 ed          d             Z
 ed          d	             Zd
 Zd Zd Zd Zd ZdS )
TestScopesc                 "    t                       d S )N)r   selfs    S/root/projects/butler/venv/lib/python3.11/site-packages/posthog/test/test_scopes.pysetUpzTestScopes.setUp   s        c                     t          d          5  t          dd           t          dd           t                      }|d         dk    sJ |d         dk    sJ 	 d d d            d S # 1 swxY w Y   d S )NTfreshkey1value1key2   r   r   r   )r   tagss     r   test_tag_and_get_tagsz TestScopes.test_tag_and_get_tags   s    t$$$ 	% 	%!!!NNN::D<8++++<1$$$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   AA**A.1A.c                     t          d          5  t          dd           t                      d         dk    sJ t                       t                      i k    sJ 	 d d d            d S # 1 swxY w Y   d S )NTr   r   r   )r   r   r   r   r   s    r   test_clear_tagszTestScopes.test_clear_tags   s    t$$$ 	$ 	$!!!::f%1111LLL::#####	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   AA,,A03A0c                    t          d          5  t          dd           t          d          5  t                      i k    sJ t          dd           t                      d         dk    sJ |                     dt                                 d d d            n# 1 swxY w Y   t          d          5  t                      ddik    sJ 	 d d d            n# 1 swxY w Y   |                     dt                                 t                      d         dk    sJ 	 d d d            d S # 1 swxY w Y   d S )NTr   outervalueinnerF)r   r   r   assertNotInr   s    r   test_new_context_isolationz%TestScopes.test_new_context_isolation'   s
   t$$$ 	2 	2!!!4((( 	6 	6zzR'''' GW%%%zz'*g5555   (**555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 5))) 8 8zzgw%7777778 8 8 8 8 8 8 8 8 8 8 8 8 8 8
 Whjj111 ::g&'11111/	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2sY   !D3A!BD3B#	#D3&B#	'D3:CD3C"	"D3%C"	&?D33D7:D7c                    t          d          5  t          dd           t          d          5  t          dd           t          d          5  t          dd           t                      ddik    sJ 	 d d d            n# 1 swxY w Y   t                      ddik    sJ 	 d d d            n# 1 swxY w Y   t                      ddik    sJ 	 d d d            d S # 1 swxY w Y   d S )	NTr   level1r   level2value2level3value3r   r   s    r   test_nested_contextszTestScopes.test_nested_contextsA   s   t$$$ 	6 	6(###4((( : :Hh''' t,,, > >(+++#::(H)======> > > > > > > > > > > > > > >
  zzh%999999: : : : : : : : : : : : : : : ::(H!555555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6sX   !C$!B5'B;B5BB5BB5)C$5B9	9C$<B9	=C$$C(+C(zposthog.capture_exceptionc                     t                      d             } |dd          }|dk    sJ |                                 t                      i k    sJ d S )Nc                 L    t          d|            t          d|           | |z   S )Nxyr   )r0   r1   s     r   successful_functionzETestScopes.test_scoped_decorator_success.<locals>.successful_functionT   s%    QKKKQKKKq5Lr      r      )r   assert_not_calledr   )r   mock_capturer3   results       r   test_scoped_decorator_successz(TestScopes.test_scoped_decorator_successR   ss    		 	 
	
 %$Q** {{{{ 	&&((( zzRr   c                 6   t          d          d }||_        t                      fd            }|                     t                     5   |             d d d            n# 1 swxY w Y   |                               t                      i k    sJ d S )NzTest exceptionc                 X    t                      }|                    d          dk    sJ d S Nimportant_contextr#   r   get	exceptionkwargscurrent_tagss      r   check_context_on_capturezLTestScopes.test_scoped_decorator_exception.<locals>.check_context_on_capturei   s1    #::L##$788GCCCCCCr   c                  (    t          dd            r<   r2   )test_exceptions   r   failing_functionzDTestScopes.test_scoped_decorator_exception.<locals>.failing_functionp   s    #W---  r   )
ValueErrorside_effectr   assertRaisesassert_called_once_withr   )r   r7   rD   rG   rF   s       @r   test_scoped_decorator_exceptionz*TestScopes.test_scoped_decorator_exceptione   s   #$455	D 	D 	D
 $< 		! 	! 	! 	! 
	!
 z** 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	,,^<<< zzRs   A%%A),A)c                    t          d          }d }||_        t                      5  t          dd           	 t                      5  t          dd           |# 1 swxY w Y   n# t           $ r Y nw xY wt	                      d         dk    sJ 	 d d d            n# 1 swxY w Y   |                    |           d S )NzContext exceptionc                 X    t                      }|                    d          dk    sJ d S )Ninner_contextinner_valuer>   r@   s      r   rD   zPTestScopes.test_new_context_exception_handling.<locals>.check_context_on_capture   s0    #::L##O44EEEEEEr   outer_contextouter_valuerO   rP   )RuntimeErrorrI   r   r   r   rK   )r   r7   rF   rD   s       r   #test_new_context_exception_handlingz.TestScopes.test_new_context_exception_handling   sg   %&9::	F 	F 	F
 $<  ]] 	@ 	@/// ]] ) )777(() ) ) ) ) ) ) ) )      ::o.-?????	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	,,^<<<<<sR   BA'AA	A'"A	#A'&B'
A41B3A44BB"%B"c                     t          d          5  t                      J t          d           t                      dk    sJ 	 d d d            d S # 1 swxY w Y   d S )NTr   user123)r   r   r	   r   s    r   test_identify_contextz TestScopes.test_identify_context   s    t$$$ 	: 	:*,,444 Y'''*,,	99999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:   4AAAc                     t          d          5  t                      J t          d           t                      dk    sJ 	 d d d            d S # 1 swxY w Y   d S )NTr   
session456)r   r   r
   r   s    r   test_set_context_sessionz#TestScopes.test_set_context_session   s    t$$$ 	< 	<)++333  ---)++|;;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<rX   c                 x   t          d          5  t          d           t          d           t          d          5  t                      J t	                      J 	 d d d            n# 1 swxY w Y   t                      dk    sJ t	                      dk    sJ 	 d d d            d S # 1 swxY w Y   d S )NTr   rV   rZ   r   r	   r
   r   r   r   s    r   &test_context_inheritance_fresh_contextz1TestScopes.test_context_inheritance_fresh_context   sS   t$$$ 	< 	<Y'''---4((( 8 8.00888-//77778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 +,,	9999)++|;;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s5   /B/ !A."B/.A2	2B/5A2	6+B//B36B3c                    t          d          5  t          d           t          d           t          d          5  t                      dk    sJ t	                      dk    sJ t          d           t          d           t                      dk    sJ t	                      dk    sJ 	 d d d            n# 1 swxY w Y   t                      dk    sJ t	                      dk    sJ 	 d d d            d S # 1 swxY w Y   d S )NTr   rV   rZ   Fuser789
session999r]   r   s    r   *test_context_inheritance_non_fresh_contextz5TestScopes.test_context_inheritance_non_fresh_context   s   t$$$ 	< 	<Y'''---5))) 	@ 	@.00I====-//<???? !+++#L111.00I====-//<?????	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ +,,	9999)++|;;;;;#	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s6   /C= A/B<0C=<C 	 C=C 	+C==DDc                     t                      d             } |            \  }}|dk    sJ |dk    sJ t                      J t                      J d S )Nc                  v    t          d           t          d           t                      t                      fS )Nuser456
session789)r	   r
   r   r    r   r   function_with_contextzPTestScopes.test_scoped_decorator_with_context_ids.<locals>.function_with_context   s6    Y'''---*,,.D.F.FFFr   re   rf   )r   r   r   )r   rh   distinct_id
session_ids       r   &test_scoped_decorator_with_context_idsz1TestScopes.test_scoped_decorator_with_context_ids   s    		G 	G 
	G
 #8"7"9"9Zi''''\)))) '((000%''/////r   N)__name__
__module____qualname__r   r   r    r&   r-   r   r9   rL   rT   rW   r[   r^   rb   rk   rg   r   r   r   r      s         % % %$ $ $2 2 246 6 6" U&''    (' $ U&''    (' 2 U&''= = ('=6: : :< < << < << < <(0 0 0 0 0r   r   )unittestunittest.mockr   posthog.scopesr   r   r   r   r   r	   r
   r   r   TestCaser   rg   r   r   <module>rs      s          
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
K0 K0 K0 K0 K0" K0 K0 K0 K0 K0r   