
    Bvhu=                         d dl Z d dlZd dlmZ d dlmZ d dlmZmZm	Z	m
Z
  G d de j                        Z G d de j                        Zy)	    N)Client)FAKE_TEST_API_KEY)FeatureFlagFeatureFlagResultFlagMetadata
FlagReasonc                   N    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)TestFeatureFlagResultc                    t        j                  ddd      }| j                  |j                  d       | j                  |j                  d       | j                  |j
                  d        | j                  |j                  g d       y )N	test-flagT	[1, 2, 3]         r   from_value_and_payloadassertEqualkeyenabledvariantpayloadselfresults     O/RAG/venv/lib/python3.12/site-packages/posthog/test/test_feature_flag_result.py test_from_bool_value_and_payloadz6TestFeatureFlagResult.test_from_bool_value_and_payload   sk    "99{
 	[1..3    c                    t        j                  ddd      }| j                  |j                  d       | j                  |j                  d       | j                  |j
                  d        | j                  |j                  ddi       y )Nr   F{"some": "value"}somevaluer   r   s     r   !test_from_false_value_and_payloadz7TestFeatureFlagResult.test_from_false_value_and_payload   sq    "99 3
 	[1/.&'):;r   c                    t        j                  ddd      }| j                  |j                  d       | j                  |j                  d       | j                  |j
                  d       | j                  |j                  d       y )Nr   controltrueTr   r   s     r   #test_from_variant_value_and_payloadz9TestFeatureFlagResult.test_from_variant_value_and_payload   sk    "99F
 	[1.3.r   c                 T    t        j                  dd d      }| j                  |       y )Nr   r    )r   r   assertIsNoner   s     r    test_from_none_value_and_payloadz6TestFeatureFlagResult.test_from_none_value_and_payload)   s*    "992
 	&!r   c                 `   t        ddd t        dddd      t        ddd      	      }t        j                  |      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d        | j                  |j                  d
       y )Nr   Tr   "Some string"idversiondescriptionr   test-reasonr   coder0   condition_indexr   r   r   metadatareasonSome string
r   r   r   r   from_flag_detailsr   r   r   r   r   r   flag_detailsr   s      r   test_from_boolean_flag_detailsz4TestFeatureFlagResult.test_from_boolean_flag_details/   s    "!a[/ "q

 #44\B[1..7r   c                 d   t        ddd t        dddd      t        ddd      	      }t        j                  |d
      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d
       | j                  |j                  d       y )Nr   Tr   r,   r-   r1   r   r2   r5   r%   override_match_valuer8   r9   r;   s      r   @test_from_boolean_flag_details_with_override_variant_match_valuezVTestFeatureFlagResult.test_from_boolean_flag_details_with_override_variant_match_valueC   s    "!a[/ "q

 #44y
 	[1.37r   c                 h   t        dddt        dddd      t        ddd	      
      }t        j                  |d      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d        | j                  |j                  ddi       y )Nr   Tr%   r   r    r-   r1   r   r2   r5   r?   r!   r"   r9   r;   s      r   @test_from_boolean_flag_details_with_override_boolean_match_valuezVTestFeatureFlagResult.test_from_boolean_flag_details_with_override_boolean_match_valueY   s    "!a[BU "q

 #44t
 	[1..&'):;r   c                 h   t        dddt        dddd      t        ddd	      
      }t        j                  |d      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d        | j                  |j                  ddi       y )Nr   Tr%   r   r    r-   r1   r   r2   r5   Fr?   r!   r"   r9   r;   s      r   >test_from_boolean_flag_details_with_override_false_match_valuezTTestFeatureFlagResult.test_from_boolean_flag_details_with_override_false_match_valueo   s    "!a[BU "q

 #44u
 	[1/.&'):;r   c                 d   t        dddt        dddd      t        ddd	      
      }t        j                  |      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       | j                  |j                  ddi       y )Nr   Tr%   r   r    r-   r1   r   r2   r5   r!   r"   r9   r;   s      r   test_from_variant_flag_detailsz4TestFeatureFlagResult.test_from_variant_flag_details   s    "!a[BU "q

 #44\B[1.3&'):;r   c                 P    t        j                  d       }| j                  |       y N)r   r:   r)   r   s     r   test_from_none_flag_detailsz1TestFeatureFlagResult.test_from_none_flag_details   s     "44T:&!r   c                 ^   t        ddd t        dddd       t        ddd            }t        j                  |      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d        | j                  |j                         y )	Nr   Tr   r-   r1   r   r2   r5   )r   r   r   r   r:   r   r   r   r   r)   r   r;   s      r   (test_from_flag_details_with_none_payloadz>TestFeatureFlagResult.test_from_flag_details_with_none_payload   s    "!a[$ "q

 #44\B[1..&..)r   N)__name__
__module____qualname__r   r#   r'   r*   r=   rA   rC   rE   rG   rJ   rL    r   r   r
   r
   
   s9    4</"8(8,<,<,<("
*r   r
   c                   
   e Zd Zed        Zed        Zd Zd Zej                  j                  ed      d        Zej                  j                  ed      d        Z ej                  d      ej                  j                  ed      d	               Z ej                  d      ej                  j                  ed      d
               Z ej                  d      ej                  j                  ed      d               Zy)TestGetFeatureFlagResultc                     t         j                  j                  t        d      | _        | j                  j                          y )Ncapture)mockpatchobjectr   capture_patchstartclss    r   
setUpClassz#TestGetFeatureFlagResult.setUpClass   s/     !JJ--fi@!r   c                 8    | j                   j                          y rI   )rX   stoprZ   s    r   tearDownClassz&TestGetFeatureFlagResult.tearDownClass   s     r   c                 ,    t        d||       d| _        y)zMark the failure handlerFAILTN)printfailed)r   ebatchs      r   set_failz!TestGetFeatureFlagResult.set_fail   s    far   c                 R    d| _         t        t        | j                        | _        y )NF)on_error)rc   r   r   rf   client)r   s    r   setUpzTestGetFeatureFlagResult.setUp   s    .Gr   rT   c           
      x   dddddddgdd	gd
dgddidd}|g| j                   _        | j                   j                  ddddi      }| j                  |j                  d       | j                  |j
                  d        | j                  |j                  d       |j                  ddddddddi d        y )Nr   Beta Featureperson-flagTregionexactUSApersonr   operatorr"   typed   
propertiesrollout_percentager&   300)groupspayloadsr.   namer   activefilterssome-distinct-idperson_properties,  $feature_flag_called$feature_flag$feature_flag_responselocally_evaluated$feature/person-flag$feature_flag_payloadrz   disable_geoip)ri   feature_flagsget_feature_flag_resultr   r   r   r   assert_called_with)r   patch_capture
basic_flagflag_results       r   5test_get_feature_flag_result_boolean_local_evaluationzNTestGetFeatureFlagResult.test_get_feature_flag_result_boolean_local_evaluation   s     "  (0,3*/(0	' /2
 $UO

, &0L!kk99-(EAR : 
 	,,d3,,d3,,c2(("!.*.%)(,),  	) 	
r   c           
      2   dddddddgdd	gd
dgdddddddgiddidd}|g| j                   _        | j                   j                  ddddi      }| j                  |j                  d       | j                  |j
                  d       | j                  |j                         d       | j                  |j                  ddi       |j                  ddddddddidi d        | j                   j                  ddddi      }| j                  |j                  d       | j                  |j
                  d       | j                  |j                         d       | j                  |j                         |j                  dddddddi d        y )Nr   rl   rm   Trn   ro   rp   rq   rr   ru   rv   variants	variant-12   )r   rx   z	variant-2r    )rz   multivariater{   r|   distinct_idr   r!   r"   r   r   r   zanother-distinct-id)r   r   r   r   )
ri   r   r   r   r   r   	get_valuer   r   r)   )r   r   r   r   another_flag_results        r   5test_get_feature_flag_result_variant_local_evaluationzNTestGetFeatureFlagResult.test_get_feature_flag_result_variant_local_evaluation   s    "  (0,3*/(0	' /2
  +2F +2F!! )*=>)

8 &0L!kk99=Xu<M : 
 	,,d3,,k:..0+>,,vw.?@(("!.*5%)(3*0'):  	) 	
 #kkAA0XuDU B 
 	,44d;,44kB,668+F-556((!"!.*5%)(3	  	) 	
r   zposthog.client.flagsc                 P   ddddd ddidddd	d
ii|_         | j                  j                  dd      }| j                  |j                  d       | j                  |j
                  d        | j                  |j                  d       |j                  dddddddddddi d        y )Nflagsrm   Tr0   Matched condition set 1   *   ry   r.   r/   r   r   r   r   r7   r6   r   r   r   Fr   r   r   r   z$feature_flag_reasonz$feature_flag_idz$feature_flag_versionr   r   )return_valueri   r   r   r   r   r   r   r   r   patch_flagsr   s       r   +test_get_feature_flag_result_boolean_decidezDTestGetFeatureFlagResult.test_get_feature_flag_result_boolean_decide@  s     (##%'@ !#%#(! $
 $ kk99-
 	,,d3,,d3,,c2(("!.*.%*(,(A$&)+),	  	) 	
r   c                    dddddddiddd	d
dii|_         | j                  j                  dd      }| j                  |j                  d       | j                  |j
                  d       | j                  |j                         d       | j                  |j                  g d       |j                  dddddddddg ddi d        y )Nr   rm   Tr   r0   r   r   r   r   r   r   r   r   r   Fr   r   )	r   ri   r   r   r   r   r   r   r   r   s       r   +test_get_feature_flag_result_variant_decidezDTestGetFeatureFlagResult.test_get_feature_flag_result_variant_decidel  s     (#*%'@  #$#.! $
 $ kk99-W,,d3,,k:..0+>,,i8(("!.*5%*(3(A$%)*)2	  	) 	
r   c           
          ddddd ddidddd	d
ii|_         | j                  j                  dd      }| j                  |       |j	                  dddd dd di d        y )Nr   rm   Tr0   r   r   r   ry   r   r   zno-person-flagr   r   F)r   r   r   z$feature/no-person-flagr   )r   ri   r   r)   r   r   s       r   )test_get_feature_flag_result_unknown_flagzBTestGetFeatureFlagResult.test_get_feature_flag_result_unknown_flag  s     (##%'@ !#%#(! $
 $ kk990
 	+&(("!1*.%*+/	  	) 	
r   N)rM   rN   rO   classmethodr\   r_   rf   rj   rU   rV   rW   r   r   r   r   r   r   rP   r   r   rR   rR      s.   " "
 ! !
H 
ZZvy)+
 *+
Z 
ZZvy)H
 *H
T TZZ&'	ZZvy)(
 * ((
T TZZ&'	ZZvy)'
 * ('
R TZZ&'	ZZvy)#
 * (#
r   rR   )unittestrU   posthog.clientr   posthog.test.test_utilsr   posthog.typesr   r   r   r   TestCaser
   rR   rP   r   r   <module>r      s@      ! 5 R Rf*H-- f*RI
x00 I
r   