
    ,Qjn                     t    d Z ddlZddlmc mZ ddlZddlZddl	m
Z
 d Zd Zd Zd Zd Zd	 Zd
 Zd Zd Zy)zPhase-2 phone-power server-side tools: places, contacts, SMS watch, routines.
Memory HTTP is a fake in-memory store; no network. Numbers must never leak.    N)FakeMemc                 \    t               }| j                  t        d|j                         |S )N_mem_request)r   setattrphone_storerequest)monkeypatchfakes     L/Users/ahmed/devFolder/Ultron/claude-voice/gateway/tests/test_phone_tools.py_wirer   	   s$    9D^T\\BK    c                 6  K   t        |        t        j                  dddd       d {   }d}|j                  } |       }||v }|st	        j
                  d|fd||f      t	        j                  |      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}x}}t        j                  dddi       d {   }g }	d}||v }|}|rd}
|
|v }|}|sXt	        j
                  d|fd||f      t	        j                  |      dt        j                         v st	        j                  |      rt	        j                  |      nddz  }dd|iz  }|	j                  |       |rt	        j
                  dfd
|f      t	        j                  |
      dt        j                         v st	        j                  |      rt	        j                  |      nddz  }dd|iz  }|	j                  |       t	        j                  |	d      i z  }dd|iz  }t        t	        j                  |            d x}x}	x}x}x}
}t        j                  t        j                          d {   }g }	|d   d   }d}||k(  }|}|r|d   d   }d}||k(  }|}|st	        j
                  d|fd ||f      t	        j                  |      t	        j                  |      d!z  }d"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}x}x}x}}y 7 7 7 Bw)*N
save_placegymz26.30,50.20labeladdress_or_coordsinzD%(py1)s in %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.lower
}()
}outpy1py3py5py7assert %(py9)spy9	get_placer   z26.3z50.2z%(py3)s in %(py5)sgotr   r   %(py7)sr   z%(py10)s in %(py12)spy10py12%(py14)spy14r   assert %(py17)spy17latgL:@lnggI@==)z%(py3)s == %(py6)s)r   py6z%(py8)spy8)z%(py11)s == %(py14)s)py11r)   z%(py16)spy16zassert %(py19)spy19)r   toolsexecutelower
@pytest_ar_call_reprcompare	_saferepr@py_builtinslocals_should_repr_global_nameAssertionError_format_explanationappend_format_boolopr   
list_items
KIND_PLACE)r	   r   @py_assert0@py_assert4@py_assert6@py_assert2@py_format8@py_format10r!   @py_assert1@py_assert9@py_assert11@py_format6@py_format13@py_format15@py_format16@py_format18items@py_assert5@py_assert10@py_assert13@py_assert12@py_format7@py_format9@py_format17@py_format20s                             r   test_save_place_coords_then_getr[      sd    	+l(-MRT TCCIIIK5K5K5CCIKkGU+;<
<C*6*6S=*V*Vs]****6S***6******S***S*******Vs***V******s***s**************(()?)?@@E@58E?@e@?e#@a@5@5(@@@@?e@@@?@@@e@@@@@@@5@@@@@@5@@@@@@@@@@@@@@T =@s6   (PPDP.P/F%PPD<PPPc                 2  K   t        |        t        j                  dddd       d {    t        j                  dddi       d {   }d}||v }|st        j                  d|fd||f      t        j
                  |      d	t        j                         v st        j                  |      rt        j
                  |      nd	d
z  }dd|iz  }t        t        j                  |            d x}}d}t        j                  dddi       d {   }||v }|slt        j                  d|fd||f      t        j
                  |      t        j
                  |      dz  }dd|iz  }t        t        j                  |            d x}x}}y 7 e7 H7 w)Nr   homez
12 Palm Str   r   r   r   z%(py1)s in %(py3)sr!   r   r   assert %(py5)sr   zNo placenowherez%(py1)s in %(py4)sr   py4assert %(py6)sr0   )r   r5   r6   r8   r9   r:   r;   r<   r=   r>   r?   )	r	   r!   rD   rG   @py_format4rM   @py_assert3@py_format5rW   s	            r   test_save_place_addressri      s    	+
--"(|LN N NkGV+<=
=C<3<3<33Ou}}[7I:NOOO:OOOOO:OOOO:OOOOOOOOOOO	N
=Os5   (FFF
FCFFA>FFFc                   K   t        |        d}t        j                  di        d {   }||v }|slt        j                  d|fd||f      t        j
                  |      t        j
                  |      dz  }dd|iz  }t        t        j                  |            d x}x}}t        j                  dd	d
d       d {    d	}t        j                  di        d {   }||v }|slt        j                  d|fd||f      t        j
                  |      t        j
                  |      dz  }dd|iz  }t        t        j                  |            d x}x}}y 7 77 7 w)Nz	No placeslist_placesr   rb   rc   re   r0   r   officezTower 1r   r   r5   r6   r8   r9   r:   r>   r?   r	   rD   rg   rG   rh   rW   s         r   test_list_placesro   $   s     	+@mR @@@;@@@@@;@@@@;@@@@@@@@@@@
--"*KM M M=U]]="===8=====8====8=========== AM=s5   'E'E BE'E#E'"E%#A>E'#E'%E'c                 $  K   t        |        d}t        j                  dd|dd       d {   }d}|j                  } |       }||v }|st	        j
                  d|fd||f      t	        j                  |      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}x}}||v}	|	st	        j
                  d|	fd||f      dt        j                         v st	        j                  |      rt	        j                  |      nddt        j                         v st	        j                  |      rt	        j                  |      nddz  }
dd|
iz  }t        t	        j                  |            d }	t        j                  dddi       d {   }||v}	|	st	        j
                  d|	fd||f      dt        j                         v st	        j                  |      rt	        j                  |      nddt        j                         v st	        j                  |      rt	        j                  |      nddz  }
dd|
iz  }t        t	        j                  |            d }	t        j                  }	 |	|      }||v }|s7t	        j
                  d|fd||f      dt        j                         v st	        j                  t              rt	        j                  t              ndt	        j                  |	      dt        j                         v st	        j                  |      rt	        j                  |      ndt	        j                  |      dt        j                         v st	        j                  |      rt	        j                  |      nddz  }d
d|iz  }t        t	        j                  |            d x}	x}}t        j                  di        d {   }g }	||v}|}|rd}|j                  } |       }||v }|}|st	        j
                  d|fd||f      dt        j                         v st	        j                  |      rt	        j                  |      nddt        j                         v st	        j                  |      rt	        j                  |      nddz  }dd|iz  }|	j                  |       |rt	        j
                  dfdf      t	        j                  |      dt        j                         v st	        j                  |      rt	        j                  |      nd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}x}x}}t        j                   t        j"                  d       d {   }|d%   }||k(  }|st	        j
                  d&|fd'||f      t	        j                  |      dt        j                         v st	        j                  |      rt	        j                  |      ndd(z  }d)d*|iz  }t        t	        j                  |            d x}}y 7 7 	7 7 w)+N
0501234567save_contactfatherfamily)namenumberrelationr   r   r   r   r   r   not in)z%(py0)s not in %(py2)snum)py0py2zassert %(py4)srd   get_contactru   r!   )zQ%(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.mask_number
}(%(py3)s)
} in %(py7)sr5   )r{   r|   r   r   r   list_contacts)z%(py2)s not in %(py4)slst)r|   rd   z%(py6)sr0   )zI%(py9)s in %(py15)s
{%(py15)s = %(py13)s
{%(py13)s = %(py11)s.lower
}()
})r   r2   py13py15z%(py17)sr+   r   zassert %(py20)spy20rv   r.   )z%(py1)s == %(py3)sr_   r`   r   )r   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   mask_numberr@   rA   r   get_itemKIND_CONTACT)r	   rz   r   rD   rE   rF   rG   rH   rI   rJ   @py_format3rh   r!   r   rg   @py_assert8rV   @py_assert14rT   rW   rP   rQ   @py_format19@py_format21crf   rM   s                              r   %test_save_contact_never_echoes_numberr   -   s    	+
Cn'/3+356 6C "syy"y{"8{""""8{"""8""""""s"""s"""y"""{"""""""c>3c33ccmfh-?@
@Cc>3c33cc(S!(!S((((!S((((((5(((5(((((((((S(((S(((!((((((S(((S(((((((or2
2C53c>5h5#))5)+5h+555553c55555535553555555c555c5555555h+555h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"";#;#;XFFAX;;#;#;##6
 A 3 	GsI   +\\G\?\ I\\H\\B/\\\\c                 Z  K   t        |        d}t        j                  dddi       d {   }||v }|slt        j                  d|fd||f      t        j
                  |      t        j
                  |      dz  }dd	|iz  }t        t        j                  |            d x}x}}y 7 }w)
Nz
No contactr}   ru   ghostr   rb   rc   re   r0   rm   rn   s         r   test_get_contact_missingr   ?   sq     	+P}vw>O!PPP<PPPPP<PPPP<PPPPPPPPPPPPs   )B+B)A>B+c                   K   t        |        t        j                  dddi       d {    t        j                  dddi       d {    t        j                  di        d {   }g }d}||v }|}|rd}||v }|}|sXt        j                  d|fd||f      t        j
                  |      dt        j                         v st        j                  |      rt        j
                  |      ndd	z  }d
d|iz  }	|j                  |	       |rt        j                  dfd|f      t        j
                  |      dt        j                         v st        j                  |      rt        j
                  |      nddz  }
dd|
iz  }|j                  |       t        j                  |d      i z  }dd|iz  }t        t        j                  |            d x}x}x}x}x}}t        j                  dddi       d {   }d}||v }|st        j                  d|fd||f      t        j
                  |      dt        j                         v st        j                  |      rt        j
                  |      nddz  }dd|iz  }t        t        j                  |            d x}}d}t        j                  di        d {   }||v}|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 7 L7 w)Nsms_watch_addsenderz
SNB-AlAhli*sms_watch_listr   r    r   r"   r#   r   r$   r%   r(   r)   r   r*   r+   sms_watch_removeStoppedr^   rmr_   r`   r   rx   )z%(py1)s not in %(py4)src   re   r0   )r   r5   r6   r8   r9   r:   r;   r<   r=   r@   rA   r>   r?   )r	   r   rJ   rG   rE   rD   rK   rL   rM   rH   rN   rO   rP   rQ   r   rf   rg   rh   rW   s                      r   test_sms_watch_add_list_remover   E   s    	+
--(L)A
BBB
--(C
999.3
3C-<-<3-3-3#:----<3---<------3---3-------3#---3------#---#--------------}}/(L1IJ	JB9?99HU]]3CR%HHH<HHHHH<HHHH<HHHHHHHHHHH C9
3	JHsZ   'MMM	M
M'M(FMMCMMA>MMMMMc                   K   t        |        t        j                  ddddidddd       d {   }d	}|j                  } |       }||v }|st	        j
                  d
|fd||f      t	        j                  |      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}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 w)Nroutine_creatextypetimespeak_brieftasksr   briefru   triggeractionfailedr   r   badr   r   r   r.   )z%(py1)s == %(py4)src   re   r0   )r   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r   rB   KIND_ROUTINE)r	   r   rD   rE   rF   rG   rH   rI   rg   rh   rW   s              r   test_routine_create_validatesr   Q   s)    	+. 0(7;1= > >C "syy"y{"8{""""8{"""8""""""s"""s"""y"""{"""""""''(@(@AAGRGARGGGGARGGGAGGGRGGGGGGG	> Bs#   .GG DG?G BGGc                 	  K   t        |        g fd}t        j                  |       	 t        j                  dddddgddd	d
d       d {   }d}|j                  } |       }||v }|st        j                  d|fd||f      t        j                  |      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}x}}t        j                  di        d {   }	g }
d}||	v }|}|rd}||	v }|}|sXt        j                  d|fd||	f      t        j                  |      dt        j                         v st        j                  |	      rt        j                  |	      nddz  }dd|iz  }|
j                  |       |rt        j                  dfd|	f      t        j                  |      dt        j                         v st        j                  |	      rt        j                  |	      nddz  }dd|iz  }|
j                  |       t        j                  |
d      i z  }dd|iz  }t        t        j                  |            d x}x}
x}x}x}}t        j                  d d!di       d {   }d"}||v }|st        j                  d|fd#||f      t        j                  |      d$t        j                         v st        j                  |      rt        j                  |      nd$d%z  }d&d'|iz  }t        t        j                  |            d x}}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}}t        j                  d        y 7 m7 n7 # t        j                  d        w xY ww)0Nc                  0   K    j                  d       y w)N   )r@   )hitss   r   hookz8test_routine_create_list_cancel_fires_hook.<locals>.hook^   s     As   r   zmorning briefr   z07:00daily)r   atdaysr   r   r   r   setr   r   okr   r   r   routine_listr    r   r"   r#   r   r$   r%   r(   r)   r   r*   r+   routine_cancelru   	Cancelledr^   cancelr_   r`   r      r.   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)slenr   )r{   r   r   r0   zassert %(py8)sr1   )r   r5   set_routine_hookr6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   r   )r	   r   r   rD   rE   rF   rG   rH   rI   r   rJ   rK   rL   rM   rN   rO   rP   rQ   r   rf   rS   rW   rX   r   s                          @r   *test_routine_create_list_cancel_fires_hookr   Z   s    	+D	4 %==!1# &gyI,w?4A B B ""
"u
""""u
"""u"""""""""""""""
"""""""MM."5588#%8'8'S.8888#888888888#888#8888888'S888'888888S888S88888888888888}}%57PQQ${f$$$${f$$${$$$$$$f$$$f$$$$$$$4yAyA~yAss44yAt$B
 6Q 	t$sU   (S!%S R>DS SFS .S/F9S (S!>S S S SS!)__doc__builtinsr;   _pytest.assertion.rewrite	assertionrewriter8   r   r5   test_phone_storer   r   r[   ri   ro   r   r   r   r   r    r   r   <module>r      sK   O      $AP>$QIH%r   