
    ZThp-                     b    d dl Z d dlmZmZ d dlmZ d dlmZmZmZm	Z	 	 d Z
edk(  r e
        yy)    N)datetimetimezone)
SiftClient)ChannelReference
RuleActionRuleAnnotationType
RuleUpdatec                     t        j                  dd      } t        j                  dd      }t        j                  dd      }t        | ||      }|j                  j	                  d	      }|j
                  }t        d
|j                   d| d       t        j                  t        j                        j                  d      }d}t        d| d| d       g }t        |      D ]  }	|j                  j                  d| d|	 d|	 ddt!        dd      gt#        j$                  t&        j(                  ddgd       |g      }
|j+                  |
       t        d|
j                   d|
j
                   d        |j                  j-                  d| d !      }t/        |      |k(  sJ d"| d#t/        |              t        d$       t        d%       |d&   }|j1                         }|j3                  t5        d't!        dd      g(            }|j1                         }t        d)|j                   d*|j6                          t        d+       |d,   }|j3                  t5        d-.            }t        d)|j                   d/|j8                          t        d0       |d1   }|j3                  t5        t#        j$                  t&        j:                  g d2|j<                        3            }t        d)|j                   d4|j>                  j@                          t        d5|j>                  jB                          t        d6|j>                  jD                          t        d7|j>                  jF                          t        d8       |d9   }d:| d;}|j3                  t5        |	            }t        d)|j                   d<|j                          t        d=       |d>   }|j3                  t5        d?.      d@A      }t        d)|j                   dB       t        dC|j8                          t        dD|jH                  r|jH                  jJ                  nd         t        dE       |dF   }|j3                  t5        dGt!        dd      g(            }t        d)|j                   dH|j6                          t        dI       |dJ   }|}t        dK       |dL   }|j3                  t5        dMdNgO            }t        d)|j                   dB       t        dP|jL                          t        dQ|jN                          t        dR       	 |j3                  t5        dSt!        dd      g(            }t        dT|j6                          t        dV       ||||||||g}!|!D 
cg c]  }
|
j
                   }"}
|j                  jS                  |"W      }#t        dXt/        |#       dY       |#D ]'  }
t        dZ|
j                   d[|
j6                          ) t        d\       |j                  jU                  |]       t        d^       t        d_t/        |       d`       t        dat/        |!       d`       t/        |      |k(  sJ d"| d#t/        |              t/        |!      |k(  sJ d"| dbt/        |!              t        dc       |j6                  d'k(  sJ dd|j6                          |de   |de   k(  sJ df|de    d<|j8                          |dg   |dg   k(  sJ dh|dg    d<|jV                          |di   |di   k(  sJ dj|di    d<|jX                          |dk   |dk   k(  sJ dl|dk    d<|jL                          |dm   |dm   k(  sJ dn|jN                          do|j8                  v sJ dp|j8                          |j>                  jB                  t&        j:                  k(  sJ dq|j>                  jB                          |j                  |k(  sJ dr|j                          |j6                  dGk(  sJ ds|j6                          t/        |jN                        d1k(  sJ dn|jN                          t        dt       t        du       y # tP        $ r} t        dU|         Y d } ~ &d } ~ ww xY wc c}
w )vNSIFT_GRPC_URIzlocalhost:50051SIFT_API_KEY SIFT_REST_URIzlocalhost:8080)grpc_urlapi_keyrest_urlNostromoLV426)namezUsing asset: z (ID: ))tzz%Y%m%d%H%M%S   z
=== Creating z rules with unique suffix: z ===
test_rule__z
Test rule z - initial descriptionz$1 > 0.1z$1zmainmotor.velocity)channel_referencechannel_identifiertestinitial)annotation_typetagsdefault_assignee_user_id)r   description
expressionchannel_referencesaction	asset_idszCreated rule: z.*)
name_regexz	Expected z created rules, got z/
=== Testing comprehensive update scenarios ===z9
--- Test 1: Update expression and channel references ---r   z$1 > 0.5)r!   r"   zUpdated z: expression = z#
--- Test 2: Update description ---   zPUpdated description with more details about velocity-to-voltage ratio monitoring)r    z: description = z
--- Test 3: Update action ---   )updatedphasealert)r#   z: action type = z  - annotation type: z
  - tags: z  - assignee: z
--- Test 4: Update name ---   renamed_rule__4z -> z6
--- Test 5: Update multiple fields simultaneously ---   zMulti-field update testzUpdated via multi-field update)version_notes:z  - description: z  - version_notes: z/
--- Test 6: Update with complex expression ---   z$1 > 0.3 && $1 < 0.8z: complex expression = z.
--- Test 7: Update action to notification ---   z7
--- Test 8: Update tag_ids and contextual_channels ---   temperaturepressure)contextual_channelsz  - asset_tag_ids: z  - contextual_channels: z5
--- Test 8b: Edge case - Invalid expression test ---invalid_expressionz2Invalid expression update succeeded (unexpected): z.Invalid expression update failed as expected: z/
--- Test 9: Batch operations demonstration ---)rule_idszBatch retrieved z rules:z  - z: z
--- Test 10: Archive rules ---)rulesz
=== Test Summary ===z	Created: z rulesz	Updated: z updated rules, got z
=== Validation Checks ===zExpression update failed: r    z$Expected no description change, got r"   z+Expected no channel references change, got r$   z"Expected no asset IDs change, got asset_tag_idsz Expected no tag IDs change, got r6   z#Contextual channels update failed: zmore detailszDescription update failed: zAction update failed: zName update failed: z"Complex expression update failed: zAll validation checks passed!z$
=== Test completed successfully ===)-osgetenvr   assetsfindid_printr   r   nowr   utcstrftimeranger9   creater   r   
annotationr   DATA_REVIEWappendlistlen
model_dumpupdater	   r!   r    PHASEcreated_by_user_idr#   action_typer   r   r   rule_versionr/   r:   r6   	Exception	batch_getarchiver"   r$   )$r   r   r   clientassetasset_idunique_name_suffix	num_rulescreated_rulesirulesearch_resultsrule_1rule_1_model_dumpupdated_rule_1updated_rule_1_model_dumprule_2updated_rule_2rule_3updated_rule_3rule_4new_nameupdated_rule_4rule_5updated_rule_5rule_6updated_rule_6rule_7updated_rule_7rule_8updated_rule_8invalid_updateeall_updated_rulesr8   batch_ruless$                                       h/home/www/backend.miabetepe.com/venv/lib/python3.12/site-packages/sift_client/_tests/integrated/rules.pymainru   &   s	   yy*;<Hii+Gyy*:;H7XNFMMO4EyyH	M%**VH:Q
78!6??OI	OI;&ABTAUUY
Z[M9 =||""011#6$QC'=>! 4L`a  (( 2 > >i()-
  j # 
 	T"tyykz;<!=& \\&& 2326 ' N ~)+ 
I;23~3F2GH+ 

<= 

FG1F))+]]! 4L`a 	
N !/ 9 9 ;	H^(()9R9R8S
TU 

011F]]j	
N
 
H^(())9.:T:T9U
VW 

+,1F]](( 2 8 82)/)B)B	
N 
H^(())9.:O:O:[:[9\
]^	!."7"7"G"G!H
IJ	J~,,112
34	N>00IIJ
KL 

)*1F12"5H]]	
N
 
HV[[Mn&9&9%:
;< 

CD1F]]1	
 7	 # N 
H^(()
+,	n889
:;	
>KfKfn99GGlpqr
 

<=1F]]- 4L`a 	
N 
H^(())@AZAZ@[
\] 

;<1FN 

DE1F]]!.
 ;	
N 
H^(()
+,	 < <=
>?	%n&H&H%I
JK 

BCD/$*.CW$	
 	B>C\C\B]^_
 

<=	 &77T7H7,,((((;K	S-.g
67 5TYYKr$//!2345 

,-
LL}-	
"#	Ic-()
01	Ic+,-V
45 }* 
I;23}3E2FG*  !Y. 
I;237H3I2JK.
 

'( $$
2 
$^%>%>$?@2 %]37H7WW 
./@/O.PPTUcUoUoTpqW 	""67;LMa;bb 66GH\6]5^^bcq  dE  dE  cF  	Gb %[15F{5SS 
,->{-K,LDQ_QiQiPjkS %_59J?9[[ 
*+<_+M*NdSaSoSoRpq[ 	""78<MNc<ddR	,^-O-O,PQRd^777 
%n&@&@%AB7   004F4L4LL 
 !6!6!F!F GHL (*X.B>CVCVBW,XX*$$(>> 
,^-F-F,GH>
 ~112a7 
-n.P.P-QR7 

)*	
12e  D>qcBCCD" 8s   $A b- =c-	c6c

c__main__)r;   r   r   sift_client.clientr   sift_client.sift_typesr   r   r   r	   ru   __name__     rt   <module>r|      s8    	 ' ) 0w3t zF r{   