
    \j                     v    d dl mZ d dlmZ d dl d dlmZ d dlZ G d d      Z G d d	      Z	 G d
 d      Z
y)    )FeatureStore)FEATURES)*)abstractmethodNc                   "    e Zd Zedefd       Zy)FeatureStoreTesterreturnc                      y N selfs    I/root/env/lib/python3.12/site-packages/testing/feature_store_test_base.pycreate_feature_storez'FeatureStoreTester.create_feature_store           N)__name__
__module____qualname__r   r   r   r   r   r   r   r      s    l  r   r   c                   :    e Zd ZdefdZedefd       Zd Zd Zy)StoreTestScopestorec                     || _         y r   _StoreTestScope__store)r   r   s     r   __init__zStoreTestScope.__init__   s	    r   r	   c                     | j                   S r   r   r   s    r   r   zStoreTestScope.store   s    ||r   c                     | j                   S r   r   r   s    r   	__enter__zStoreTestScope.__enter__   s    ||r   c                 f    t        | j                  d      r| j                  j                          y y )Nstop)hasattrr   r   r!   )r   typevalue	tracebacks       r   __exit__zStoreTestScope.__exit__!   s%    4::v&LL 'r   N)	r   r   r   r   r   propertyr   r   r&   r   r   r   r   r      s3    l  |   r   r   c                       e Zd Zed        Zd Zd Ze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)FeatureStoreTestBasec                      y r   r   r   s    r   all_testersz FeatureStoreTestBase.all_testers.   r   r   c                 4    t        |j                               S r   )r   r   )r   testers     r   r   zFeatureStoreTestBase.store2   s    f99;<<r   c                     t        |j                               }|j                  j                  t        | j                  dd      j                         | j                  dd      j                         di       |S )Nfoo
   bar)r/   r1   )r   r   r   initr   make_featureto_json_dict)r   r-   scopes      r   inited_storez!FeatureStoreTestBase.inited_store5   sm    v::<=((3@@B((3@@B
 	 r   c                     t        |       j                  |      j                  d      j                  dd      j	                  d      j                         S )NTFabc)FlagBuilderversionon
variationssaltbuild)keyvers     r   r3   z!FeatureStoreTestBase.make_feature?   sE    3'',//5@@uMRRSXY__aar   c                 r    | j                  |      5 }|j                  du sJ 	 d d d        y # 1 sw Y   y xY w)NF)r   initializedr   r-   r   s      r    test_not_initialized_before_initz5FeatureStoreTestBase.test_not_initialized_before_initC   s9    ZZ 	.5$$---	. 	. 	.   -6c                 r    | j                  |      5 }|j                  du sJ 	 d d d        y # 1 sw Y   y xY w)NT)r6   rB   rC   s      r   test_initializedz%FeatureStoreTestBase.test_initializedG   s;    v& 	-%$$,,,	- 	- 	-rE   c                     | j                  |      5 }| j                  dd      }|j                  t        dd       }||k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr/   r0   c                     | S r   r   xs    r   <lambda>z@FeatureStoreTestBase.test_get_existing_feature.<locals>.<lambda>N        r   )r6   r3   getr   )r   r-   r   expectedflags        r   test_get_existing_featurez.FeatureStoreTestBase.test_get_existing_featureK   sY    v& 	$%((3H99Xuk:D8###	$ 	$ 	$   2AAc                     | j                  |      5 }|j                  t        dd       J 	 d d d        y # 1 sw Y   y xY w)Nbizc                     | S r   r   rJ   s    r   rL   zCFeatureStoreTestBase.test_get_nonexisting_feature.<locals>.<lambda>S   rM   r   )r6   rN   r   rC   s      r   test_get_nonexisting_featurez1FeatureStoreTestBase.test_get_nonexisting_featureQ   sD    v& 	C%99Xuk:BBB	C 	C 	Cs	   7A c                 8   | j                  |      5 }|j                  t        d       }t        |      dk(  sJ |j	                  d      | j                  dd      k(  sJ |j	                  d      | j                  dd      k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nc                     | S r   r   rJ   s    r   rL   z<FeatureStoreTestBase.test_get_all_versions.<locals>.<lambda>W   s    1 r      r/   r0   r1   )r6   allr   lenrN   r3   )r   r-   r   results       r   test_get_all_versionsz*FeatureStoreTestBase.test_get_all_versionsU   s    v& 	E%YYx5Fv;!###::e$(9(9%(DDDD::e$(9(9%(DDDD		E 	E 	Es   A4BBc                     | j                  |      5 }| j                  dd      }|j                  t        |       |j	                  t        dd       |k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr/      c                     | S r   r   rJ   s    r   rL   zEFeatureStoreTestBase.test_upsert_with_newer_version.<locals>.<lambda>`   rM   r   r6   r3   upsertr   rN   r   r-   r   new_vers       r   test_upsert_with_newer_versionz3FeatureStoreTestBase.test_upsert_with_newer_version\   sf    v& 	F%''r2GLL7+99Xuk:gEEE	F 	F 	F   AA""A+c                     | j                  |      5 }| j                  dd      }| j                  dd      }|j                  t        |       |j	                  t        dd       |k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr/   	   r0   c                     | S r   r   rJ   s    r   rL   zEFeatureStoreTestBase.test_upsert_with_older_version.<locals>.<lambda>g   rM   r   ra   )r   r-   r   rd   rO   s        r   test_upsert_with_older_versionz3FeatureStoreTestBase.test_upsert_with_older_versionb   sx    v& 	G%''q1G((3HLL7+99Xuk:hFFF		G 	G 	Gs   AA44A=c                     | j                  |      5 }| j                  dd      }|j                  t        |       |j	                  t        dd       |k(  sJ 	 d d d        y # 1 sw Y   y xY w)NrT      c                     | S r   r   rJ   s    r   rL   zCFeatureStoreTestBase.test_upsert_with_new_feature.<locals>.<lambda>m   rM   r   ra   rc   s       r   test_upsert_with_new_featurez1FeatureStoreTestBase.test_upsert_with_new_featurei   sf    v& 	F%''q1GLL7+99Xuk:gEEE	F 	F 	Frf   c                     | j                  |      5 }|j                  t        dd       |j                  t        dd       J 	 d d d        y # 1 sw Y   y xY w)Nr/   r_   c                     | S r   r   rJ   s    r   rL   zEFeatureStoreTestBase.test_delete_with_newer_version.<locals>.<lambda>r   rM   r   r6   deleter   rN   rC   s      r   test_delete_with_newer_versionz3FeatureStoreTestBase.test_delete_with_newer_versiono   T    v& 	C%LL5"-99Xuk:BBB	C 	C 	CrR   c                     | j                  |      5 }|j                  t        dd       |j                  t        dd       J 	 d d d        y # 1 sw Y   y xY w)NrT   r_   c                     | S r   r   rJ   s    r   rL   zBFeatureStoreTestBase.test_delete_unknown_feature.<locals>.<lambda>w   rM   r   rq   rC   s      r   test_delete_unknown_featurez0FeatureStoreTestBase.test_delete_unknown_featuret   rt   rR   c                     | j                  |      5 }|j                  t        dd       | j                  dd      }|j	                  t        dd       |k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr/   rh   r0   c                     | S r   r   rJ   s    r   rL   zEFeatureStoreTestBase.test_delete_with_older_version.<locals>.<lambda>}   rM   r   )r6   rr   r   r3   rN   )r   r-   r   rO   s       r   test_delete_with_older_versionz3FeatureStoreTestBase.test_delete_with_older_versiony   sh    v& 	G%LL5!,((3H99Xuk:hFFF	G 	G 	Gs   AA##A,c                    | j                  |      5 }|j                  t        dd       | j                  dd      }|j	                  t        |       |j                  t        dd       J 	 d d d        y # 1 sw Y   y xY w)Nr/   r_   rh   c                     | S r   r   rJ   s    r   rL   zMFeatureStoreTestBase.test_upsert_older_version_after_delete.<locals>.<lambda>   rM   r   )r6   rr   r   r3   rb   rN   )r   r-   r   old_vers       r   &test_upsert_older_version_after_deletez;FeatureStoreTestBase.test_upsert_older_version_after_delete   st    v& 	C%LL5"-''q1GLL7+99Xuk:BBB		C 	C 	Cs   AA66A?N)r   r   r   r   r+   r   r6   staticmethodr3   rD   rG   rQ   rV   r]   re   rj   rn   rs   rw   rz   r~   r   r   r   r)   r)   -   sy     = b b.-$CEFGFC
C
GCr   r)   )ldclient.interfacesr   ldclient.versioned_data_kindr   testing.buildersr8   r   pytestr   r   r)   r   r   r   <module>r      s6    , 1       0WC WCr   