
    @,Qjc                     n    d Z ddlZddlmc mZ ddlZ G d d      Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zy)ud   phone_store: typed-memory CRUD + SMS matching. Memory HTTP is a fake
in-memory store — no network.    Nc                       e Zd ZdZd ZddZy)FakeMemzGMinimal stand-in for the memory service: /remember, /memories, /forget.c                      g | _         d| _        y )Nr   )rows_n)selfs    L/Users/ahmed/devFolder/Ultron/claude-voice/gateway/tests/test_phone_store.py__init__zFakeMem.__init__	   s    	    Nc                 (  K   |dk(  ri| xj                   dz  c_         d| j                    }| j                  j                  ||d   |j                  d      |j                  d      d       d|iS |d	k(  rZ|j                  d      }|j                  d      }t	        | j                        D 	cg c]  }	|	d   |k(  r||	d   |k(  r|	 }
}	d
|
iS |dk(  r1|d   }| j                  D 	cg c]  }	|	d   |k7  s|	 c}	| _        ddiS i S c c}	w c c}	w w)Nz	/remember   mtextkindgroup)idfactr   r   r   z	/memoriesmemoriesz/forgetokT)r   r   appendgetreversed)r   methodpathparamsbodytimeoutmidgrpr   routbids               r	   requestzFakeMem.request   s/    ;GGqLGdggY-CIICf&*hhv&6'+xx'8: ; #;;**W%C::f%D&tyy1 <1jC'&	T(9 1C < $$9t*C$(II@Iq4CI@DI$<	< As$   B-D/D
D(D6D:D)NNg      4@)__name__
__module____qualname____doc__r
   r#    r   r	   r   r      s    Qr   r   c                 \    t               }| j                  t        d|j                         |S )N_mem_request)r   setattrphone_storer#   )monkeypatchfakes     r	   _wirer/   #   s$    9D^T\\BKr   c                 6   | j                  dd       | j                  dd       t        j                  } |       }d}||k(  }|st	        j
                  d|fd||f      d	t        j                         v st	        j                  t              rt	        j                  t              nd	t	        j                  |      t	        j                  |      t	        j                  |      d
z  }dd|iz  }t        t	        j                  |            d x}x}x}}| j                  dd       t        j                  } |       }d}||k(  }|st	        j
                  d|fd||f      d	t        j                         v st	        j                  t              rt	        j                  t              nd	t	        j                  |      t	        j                  |      t	        j                  |      d
z  }dd|iz  }t        t	        j                  |            d x}x}x}}y )NMEMORY_GROUPahmedPHONE_STORE_GROUPF)raisingahmed_phone==)zJ%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.phone_group
}()
} == %(py7)sr,   py0py2py4py7assert %(py9)spy9	custom_ns)setenvdelenvr,   phone_group
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationr-   @py_assert1@py_assert3@py_assert6@py_assert5@py_format8@py_format10s          r	   %test_phone_group_default_and_overriderR   )   sE   ~w/*E:""5"$55$5555$555555;555;555"555$5555555555*K8""3"$33$3333$333333;333;333"333$3333333333r   c                   K   t        |        t        j                  t        j                  ddd       d {    t        j                  t        j                  d       d {   }g }|}|r|d   }d}||k(  }|}|sdddt        j                         v st        j                  |      rt        j                  |      ndiz  }|j                  |       |r_t        j                  d	fd
f      t        j                  |      t        j                  |      dz  }dd|iz  }	|j                  |	       t        j                  |d      i z  }
dd|
iz  }t        t        j                  |            d x}x}x}x}}|d   }|s8ddt        j                  |      iz  }t        t        j                  |            d }t        j                  t        j                         d {   }t!        |      }d}||k(  }|st        j                  d	|fd||f      dt        j                         v st        j                  t               rt        j                  t               nddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}}y 7 7 7 w)Nzwork officezKing Fahd RdlabeladdresszWORK OFFICErV   z%(py2)sr:   gotr6   )z%(py5)s == %(py8)s)py5py8z%(py10)spy10r   zassert %(py13)spy13_idzassert %(py1)spy1r   z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)slenitemsr9   r]   py3py6assert %(py8)srY   )r/   r,   put_item
KIND_PLACEget_itemrE   rF   rC   rG   rH   r   rD   _format_booloprI   rJ   
list_itemsr_   )r-   rW   rL   @py_assert0@py_assert4@py_assert7rN   @py_format3@py_format9@py_format11@py_format12@py_format14@py_format2r`   @py_assert2rO   @py_format7s                    r	   test_put_get_list_placeru   1   s    	+


{55)6>RT T T$$[%;%;]K
KC33333y>3^3>^33333333333333333333>^333>333^33333333333333u:::(()?)?@@Eu::?:33uu:T
K As5   6LK=+L$L %FL'L(DL LLc                 l  K   t        |        t        j                  t        j                  ddd       d {    t        j                  t        j                  ddd       d {    t        j                  t        j                         d {   }t        |      }d}||k(  }|st        j                  d|fd||f      d	t        j                         v st        j                  t
              rt        j                  t
              nd	d
t        j                         v st        j                  |      rt        j                  |      nd
t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}}|d   d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }	dd|	iz  }t        t        j                  |            d x}x}}y 7 7 7 w)Nfather
0500000001namenumberFather
0500000002r   r6   r^   r_   r`   ra   rd   rY   r   r{   z%(py1)s == %(py4)sr]   r;   assert %(py6)src   )r/   r,   re   KIND_CONTACTri   r_   rC   rD   rE   rF   rG   rH   rI   rJ   )
r-   r`   rs   rO   rk   rt   rn   rj   rM   @py_format5s
             r	   test_put_is_upsert_by_keyr   <   so    	+


{77(0LIK K K


{77(0LIK K K(()A)ABBEu::?:33uu:8H-------------------KKBs4   6H4H+.H4'H.(*H4H1FH4.H41H4c                 ~  K   t        |        t        j                  t        j                  ddi       d {    t        j                  t        j                  d       d {   }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x}}t        j                  t        j                         d {   }g }||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }	t        t        j                  |	            d x}x}}y 7 ~7 U7 w)NsenderBarqbarqr   r6   )z%(py0)s == %(py3)sn)r9   rb   zassert %(py5)srX   r~   r   r   rc   )r/   r,   re   KIND_SMS_WATCHdelete_itemrC   rD   rE   rF   rG   rH   rI   rJ   ri   )
r-   r   rs   rL   @py_format4@py_format6rj   rM   r   rt   s
             r	   test_delete_itemr   G   s     	+


{99Hf;M
NNN%%k&@&@&IIAM16MMM1MMMMMM1MMM1MMMMMMMMMM''(B(BCCIrICrIIIICrIIICIIIrIIIIIII OICs5   5F=F5+F=#F8$CF=4F;5BF=8F=;F=c                 4  K   t        |        t        j                  t        j                  ddd       d {    t        j                  t        j                  ddd       d {    t        j
                  t        j                         d {   }t        |      }d}||k(  }|st        j                  d|fd||f      d	t        j                         v st        j                  t              rt        j                  t              nd	t        j                  |      t        j                  |      t        j                  |      d
z  }dd|iz  }t        t        j                  |            d x}x}x}}t        j
                  t        j                         d {   }t        |      }d}||k(  }|st        j                  d|fd||f      d	t        j                         v st        j                  t              rt        j                  t              nd	t        j                  |      t        j                  |      t        j                  |      d
z  }dd|iz  }t        t        j                  |            d x}x}x}}y 7 U7 )7 7 w)NgymArT   
0501112222ry   r   r6   )z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)sr_   r8   r=   r>   )r/   r,   re   rf   r   ri   r_   rC   rD   rE   rF   rG   rH   rI   rJ   rK   s          r	   test_put_isolated_by_kindr   O   s    	+


{55).3?A A A


{77(-FH H H !++K,B,BCCI3CDIIDIIIIDIIIIII3III3IIICIIIDIIIIIIIIII ++K,D,DEEK3EFK!KF!KKKKF!KKKKKK3KKK3KKKEKKKFKKK!KKKKKKKAH DEsG   6JJ.J'J(*JJDJ"J#C+JJJJc                 J  K   t        |        	 t        j                  t        j                  ddi       d {    d}|sNt        j                  d      dz   dt        j                  |      iz  }t        t        j                  |            d }y 7 Y# t        $ r Y y w xY ww)NrV   xFz(put_item must reject a missing key fieldz
>assert %(py1)sr]   )
r/   r,   re   rf   
ValueErrorrC   _format_assertmsgrH   rI   rJ   )r-   rj   rr   s      r	   test_put_requires_key_fieldr   Z   s{     	+"";#9#9Is;KLLL <5<<<<<<5<<<<<< 	M s8   B#)B BB AB#B 	B B#B  B#c                  
   t         j                  } d}dg} | ||      }|sddt        j                         v st	        j
                  t               rt	        j                  t               ndt	        j                  |       t	        j                  |      t	        j                  |      t	        j                  |      dz  }t        t	        j                  |            d x} x}x}}t         j                  } d}dg} | ||      }|sddt        j                         v st	        j
                  t               rt	        j                  t               ndt	        j                  |       t	        j                  |      t	        j                  |      t	        j                  |      dz  }t        t	        j                  |            d x} x}x}}t         j                  } d}dg} | ||      }|sddt        j                         v st	        j
                  t               rt	        j                  t               ndt	        j                  |       t	        j                  |      t	        j                  |      t	        j                  |      dz  }t        t	        j                  |            d x} x}x}}t         j                  } d}d	d
g} | ||      }| }|sddt        j                         v st	        j
                  t               rt	        j                  t               ndt	        j                  |       t	        j                  |      t	        j                  |      t	        j                  |      dz  }t        t	        j                  |            d x} x}x}x}}t         j                  } d}dg} | ||      }| }|sddt        j                         v st	        j
                  t               rt	        j                  t               ndt	        j                  |       t	        j                  |      t	        j                  |      t	        j                  |      dz  }t        t	        j                  |            d x} x}x}x}}t         j                  } d}g } | ||      }| }|sddt        j                         v st	        j
                  t               rt	        j                  t               ndt	        j                  |       t	        j                  |      t	        j                  |      t	        j                  |      dz  }t        t	        j                  |            d x} x}x}x}}y )Nz
SNB-AlAhlizVassert %(py8)s
{%(py8)s = %(py2)s
{%(py2)s = %(py0)s.sms_matches
}(%(py4)s, %(py6)s)
}r,   )r9   r:   r;   rc   rY   snbanything*r   SNBAramexzZassert not %(py8)s
{%(py8)s = %(py2)s
{%(py2)s = %(py0)s.sms_matches
}(%(py4)s, %(py6)s)
} )	r,   sms_matchesrE   rF   rC   rG   rH   rI   rJ   )rL   rM   rO   rl   rn   @py_assert9rQ   s          r	   -test_sms_matches_exact_substring_and_wildcardr   c   sA   ""@<@,@"<@@@@@@@@;@@@;@@@"@@@<@@@@@@@@@@@@@""9<9%9"<99999999;999;999"999<9999999999999""5:5u5":u55555555;555;555"555:555u5555555555&&AvAx/@A&v/@AAAAAAAAAAA{AAA{AAA&AAAvAAA/@AAAAAAAAAAA&&1r1C51&r511111111111{111{111&111r111511111111111&&2v2r2&vr22222222222{222{222&222v222r22222222222r   )r'   builtinsrE   _pytest.assertion.rewrite	assertionrewriterC   r,   r   r/   rR   ru   r   r   r   r   r   r(   r   r	   <module>r      sF   #     :4.JL=3r   