
    ZThy&                         d dl m Z mZ d dlmZ d dlmZ d dlmZmZm	Z	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZ  G d	 d
e      Zy)    )datetimetimezone)TestCase)	MagicMock)AssetGetAssetResponseListAssetsResponseUpdateAssetResponse)metadata_dict_to_pb)AssetConfig)AssetService)SiftChannelc                   R    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d Zy)TestAssetServicez
    Tests for the AssetService class.

    Note: Most of these tests are useful purely for exercising code paths but importantly do not simulate the backend service so the returns are just the expected values.
    c                     t        t              | _        t        | j                        | _        | j                  j
                  | _        y )N)spec)r   r   channelr   service_asset_service_stubasset_service_stub)selfs    `/home/www/backend.miabetepe.com/venv/lib/python3.12/site-packages/sift_py/asset/_service_test.pysetUpzTestAssetService.setUp   s0     k2#DLL1"&,,"B"B    c                    d}t        j                  t        j                        }t	        |dddd||ddg      }t        |      | j                  j                  _        | j                  j                  |      }| j                  |t               | j                  |t        j                  |             | j                  j                  j                          y )	Ntest-asset-id
Test Assettest-orgztest-user-idtag1tag2)asset_idnameorganization_idcreated_by_user_idmodified_by_user_idcreated_datemodified_datetagsasset)r   nowr   utcr   r   r   GetAssetreturn_valuer   	get_assetassertIsInstancer   assertEqual
from_assetassert_called_once)r   r!   	timestampexpected_assetresults        r   test_get_asset_successz'TestAssetService.test_get_asset_success   s    "LL.	&- ."#&!	
 9I~8^((5 ''1 	fk2!7!7!GH((;;=r   c                     d}t        d      | j                  j                  _        | j                  j                  |      }| j                  |       | j                  j                  j                          y )Nznon-existent-assetz	Not found)	Exceptionr   r-   side_effectr   r/   assertIsNoner3   )r   r!   r6   s      r   test_get_asset_not_foundz)TestAssetService.test_get_asset_not_found6   s^    '7@7M((4 ''1 	&!((;;=r   c                     d}| j                   j                  |       | j                  j                  j	                          y )Nr   )r   delete_assetr   DeleteAssetr3   )r   r!   s     r   test_delete_assetz"TestAssetService.test_delete_assetB   s5    " 	!!(+ 	++>>@r   c                 f   ddg}t        j                  t        j                        }t	        |      D cg c]  \  }}t        d| |d||d| g       }}}t        |      | j                  j                  _	        | j                  j                  |      }| j                  t        |      d	       t	        |      D ]C  \  }}| j                  |t               | j                  |t        j                   ||                E | j                  j                  j#                          y c c}}w )
NzAsset 1zAsset 2zasset-r   tag)r!   r"   r#   r&   r'   r(   assets)names   r   r+   r   r,   	enumerater   r	   r   
ListAssetsr.   r   list_assetsr1   lenr0   r   r2   r3   )r   rE   r4   ir"   expected_assetsr6   configs           r   test_list_assets_by_namesz*TestAssetService.test_list_assets_by_namesL   s"   I&LL.	 %U+

 4 !! *&'A3i[

 

 ;MTc:d**7 )))6 	Va("6* 	QIAv!!&+6V[%;%;OA<N%OP	Q 	**==?+

   "D-c                 f   ddg}t        j                  t        j                        }t	        |      D cg c]  \  }}t        |d| ||dd| g       }}}t        |      | j                  j                  _	        | j                  j                  |      }| j                  t        |      d	       t	        |      D ]C  \  }}| j                  |t               | j                  |t        j                   ||                E | j                  j                  j#                          y c c}}w )
Nzasset-1zasset-2zAsset r   rB   )r!   r"   r&   r'   r#   r(   rC   )idsrF   rG   )r   rR   r4   rL   idrM   r6   rN   s           r   test_list_assets_by_idsz(TestAssetService.test_list_assets_by_idsg   s!   )$LL.	 #3

 2 aS\&' *A3i[

 

 ;MTc:d**7 ))c)2 	Va("6* 	QIAv!!&+6V[%;%;OA<N%OP	Q 	**==?+

rP   c                     | j                   j                         }| j                  |g        | j                  j                  j                          y )N)r   rJ   r1   r   rI   assert_not_called)r   r6   s     r   test_list_assets_emptyz'TestAssetService.test_list_assets_empty   s>    ))+ 	$**<<>r   c                    t        j                  t        j                        }t	        ddd|d|dddgdd	d
d	      }t        |j                  |j                  |j                  ||j                  ||j                  |j                  t        |j                        	      }t        |      | j                  j                   _        | j$                  j'                  |      }| j)                  |t               | j+                  |t	        j,                  |             | j                  j                   j/                          y )N
test-assetr   r   creator-123modifier-456r   r    value1*   T)key1key2key3	r!   r"   r#   r&   r$   r'   r%   r(   metadatar)   r   r+   r   r,   r   r   r!   r"   r#   r$   r%   r(   r   rb   r
   r   UpdateAssetr.   r   update_assetr0   r1   r2   r3   r   r4   r*   r5   r6   s        r   test_update_asset_fullz'TestAssetService.test_update_asset_full   s   LL.	!&",# .&!&DA

 ^^!11"$77# % 9 9(8

 <OUc;d++8 **51 	fk2!7!7!GH++>>@r   c                    t        j                  t        j                        }t	        ddd|d|dddgdd	i
	      }t        |j                  |j                  |j                  ||j                  ||j                  |j                  t        |j                        
	      }t        |      | j                  j                   _        | j$                  j'                  |dd      }| j)                  |t               | j+                  |t	        j,                  |             | j                  j                   j/                          y )NrY   r   r   rZ   r[   r   r    r^   r\   ra   r)   TFupdate_tagsupdate_metadatarc   rf   s        r   test_update_asset_with_tagsz,TestAssetService.test_update_asset_with_tags   s   LL.	!&",# .&!h'

 ^^!11"$77# % 9 9(8

 <OUc;d++8 **5dTY*Z 	fk2!7!7!GH++>>@r   c                 <   t        j                  t        j                        }t	        ddd|d|dg i 	      }t        |j                  |j                  |j                  ||j                  ||j                  g g 	      }t        |      | j                  j                  _        | j                  j!                  |      }| j#                  |t               | j%                  |t	        j&                  |             | j                  j                  j)                          y )NrY   r   r   rZ   r[   ra   r)   )r   r+   r   r,   r   r   r!   r"   r#   r$   r%   r
   r   rd   r.   r   re   r0   r1   r2   r3   rf   s        r   test_update_asset_tags_onlyz,TestAssetService.test_update_asset_tags_only   s    LL.	!&",# .

 ^^!11"$77# % 9 9

 <OUc;d++8 **51 	fk2!7!7!GH++>>@r   c                 r   t        j                  t        j                        }t	        ddd|d|ddddd	d
dd      }t        |j                  |j                  |j                  ||j                  ||j                  t        |j                              }t        |      | j                  j                  _        | j"                  j%                  |dd	      }| j'                  |t               | j)                  |t	        j*                  |             | j                  j                  j-                          y )NrY   r   r   rZ   r[   testr]   gQ	@Tr    )string_valuenumber_valuefloat_value
bool_value
zero_valueempty_string)r!   r"   r#   r&   r$   r'   r%   rb   r)   Fri   )r   r+   r   r,   r   r   r!   r"   r#   r$   r%   r   rb   r
   r   rd   r.   r   re   r0   r1   r2   r3   rf   s        r   test_update_asset_metadata_onlyz0TestAssetService.test_update_asset_metadata_only   s   LL.	!&",# . & "#" "
$ ^^!11"$77# % 9 9(8	
 <OUc;d++8 **5eUY*Z 	fk2!7!7!GH++>>@r   N)__name__
__module____qualname____doc__r   r7   r<   r@   rO   rT   rW   rg   rl   rn   rx    r   r   r   r      sI    C
>0
>A@6@6?"AH"AH"AH'Ar   r   N)r   r   unittestr   unittest.mockr   sift.assets.v1.assets_pb2r   r   r	   r
   sift_py._internal.metadatar   sift_py.asset.configr   sift_py.asset.servicer   sift_py.grpc.transportr   r   r}   r   r   <module>r      s6    '  #  ; , . .KAx KAr   