
    ZThW'                         d dl Z d dlZd dlmZmZ d dlmZ d dlmZmZ 	 d Z	e
dk(  r e j                   e	              yy)    N)datetimetimezone)
SiftClient)CalculatedChannelUpdateChannelReferencec                    K   t        j                  dd      } t        j                  dd      }t        j                  dd      }t        | ||      }|j                  j	                  d	      }|j
                  }t        d
|j                   d| d       d}t        j                  t        j                        j                  d      }t        d| d| d       g }t        |      D ]  }	|j                  j                  d| d|	 d|	 ddt!        dd      t!        dd      gd|gd|	       }
|j#                  |
       t        d |
j                   d|
j
                   d        |j                  j%                  d!|"      }t        d#t'        |       d$|D cg c]  }|j                   c}        t        d%       t        d&       |d'   }|j)                  t+        d(t!        dd      t!        dd      g)            }t        d*|j                   d+|j,                          t        d,       |d-   }|j)                  t+        d./            }t        d*|j                   d0|j.                          t        d1       |d2   }|j)                  t+        d34            }t        d*|j                   d5|j0                          t        d6       |d7   }d8| d9}|j)                  t+        |	            }t        d*|j                   d:|j                          t        d;       |d<   }|j)                  t+        d=d>?      d@A      }t        d*|j                   dB       t        dC|j.                          t        dD|j0                          t        dE|j2                          t        dF       |dG   }|j)                  t+        dHt!        dd      t!        dd      t!        dIdJ      g)            }t        d*|j                   dK|j,                          t        dL       |dM   }|j)                  t+        g N            }t        d*|j                   dO|j4                          t        dP       	 |j)                  t+        dQt!        dd      g)            }t        dR|j,                          t        dT       d'}|D ]/  }|j9                          t        dU|j                          |d-z  }1 t        dV       t        dWt'        |       dX       t        dU| dX       t'        |      |k(  sJ dY| dZt'        |              ||k(  sJ dY| d[|        t        d\       |j,                  d(k(  sJ d]|j,                          d^|j.                  v sJ d_|j.                          |j0                  d3k(  sJ d`|j0                          |j                  |k(  sJ da|j                          |j.                  d=k(  sJ d_|j.                          |j0                  d>k(  sJ d`|j0                          |j2                  d@k(  sJ db|j2                          |j,                  dHk(  sJ dc|j,                          t'        |j:                        d7k(  sJ ddt'        |j:                                |j4                  g k(  sJ de|j4                          |j                  j=                  |j
                  dfg      }t        d#t'        |       dh|d'   j                          t        di       t        dj       y c c}w # t6        $ r}t        dS|        Y d }~d }~ww xY ww)kN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%Sz
=== Creating z) calculated channels with unique suffix: z ===test_channel__zTest calculated channel z - initial descriptionz$1 / $2z$1zmainmotor.velocity)channel_referencechannel_identifierz$2voltagezvelocity/voltagez,Created for testing update fields - channel )r   description
expressionchannel_referencesunits	asset_ids
user_noteszCreated calculated channel: ztest_channel.*)
name_regexasset_idzFound z calculated channels: z/
=== Testing comprehensive update scenarios ===z9
--- Test 1: Update expression and channel references ---r   z$1 / $2 * 100)r   expression_channel_referenceszUpdated z: expression = z#
--- Test 2: Update description ---   zQUpdated description with more details about velocity-to-voltage ratio calculation)r   z: description = z
--- Test 3: Update units ---   
percentage)r   z
: units = z
--- Test 4: Update name ---   renamed_channel__5z -> z6
--- Test 5: Update multiple fields simultaneously ---   zMulti-field update testratio)r   r   zUpdated via multi-field update)r   :z  - description: z  - units: z  - user_notes: z/
--- Test 6: Update with complex expression ---   z($1 / $2) * 100 + ($3 * 0.1)z$3temperaturez: complex expression = z
--- Test 7: Update tag_ids ---   )tag_idsz: tag_ids = z5
--- Test 7b: Edge case - Invalid expression test ---invalid_expressionz2Invalid expression update succeeded (unexpected): z.Invalid expression update failed as expected: z!
--- Test 8: Archive channels ---z
Archived: z
=== Test Summary ===z	Created: z	 channelsz	Expected z created channels, got z archived channels, got z
=== Validation Checks ===zExpression update failed: zmore detailszDescription update failed: zUnits update failed: zName update failed: zUser notes update failed: z"Complex expression update failed: z1Complex expression should have 3 references, got zTag IDs update failed: 
   )calculated_channel_idlimitz versions for zAll validation checks passed!z$
=== Test completed successfully ===)osgetenvr   assetsfindid_printr   r   nowr   utcstrftimerangecalculated_channelscreater   appendlistlenupdater   r   r   r   r   r/   	Exceptionarchiver   list_versions) r   r   r   clientassetr!   num_channelsunique_name_suffixcreated_channelsicalculated_channelsearch_resultscc	channel_1updated_channel_1	channel_2updated_channel_2	channel_3updated_channel_3	channel_4new_nameupdated_channel_4	channel_5updated_channel_5	channel_6updated_channel_6	channel_7updated_channel_7invalid_updateearchived_countversionss                                    v/home/www/backend.miabetepe.com/venv/lib/python3.12/site-packages/sift_client/_tests/integrated/calculated_channels.pymainrd   &   s    yy*;<Hii+Gyy*:;H7XNF MMO4EyyH	M%**VH:Q
78 L!6??O	
,'PQcPddhi <  
#77>> !3 4AaS921#5KL  4L`a 4IV  %jEaSI ? 
 	 23*+=+B+B*C6J\J`J`Iaabc	

& //44# 5 N 
F3~&''=Q_>`2rww>`=a
bc	
<= 

FG #I!((& 4L`a 4IV+	
 
H&++,O<M<X<X;Y
Z[ 

01 #I!((k	

 
H&++,,<=N=Z=Z<[
\] 

*+ #I!((	

 
H&++,J7H7N7N6O
PQ 

)* #I!"4!5R8H!((	

 
HY^^$D):)?)?(@
AB 

CD #I!((1	
 4 )  
H&++,A
./	/;;<
=>	K)//0
12	.99:
;< 

<= #I!((5 4L`a 4IV 4MZ+	
	 
H&++,,CDUD`D`Ca
bc 

,- #I "((	

 
H&++,L9J9R9R8S
TU 

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

./N 



277)$%!
 

"#	Ic*+,I
67	J~&i
01  L0 
L>!8=M9N8OP0 \) 
L>!9.9IJ)
 

'( ''?: 
$%6%A%A$BC: .::: 
%&7&C&C%DE: ""l2 
 1 7 7892 !!X-^1EFWF\F\E]/^^-((,EE 
%&7&C&C%DEE ""g-`1FGXG^G^F_/``-''+KK 
$%6%A%A$BCK ''+II 
,->-I-I,JKI  3349 
;C@Q@d@d<e;fg9 $$*a.EFWF_F_E`,aa*))77'mm 8 H 
F3x=/0@0C0H0H/I
JK	
)*	
12K ?aT  D>qcBCCDs?   F ]:"]5K]:A ] J]:	]7]2,]:2]77]:__main__)asyncior4   r   r   sift_client.clientr   sift_client.sift_typesr   r   rd   __name__run     rc   <module>rm      sA     	 ' )
2O3d zGKK rl   