
    j                     h    d dl Zd dlmc mZ d dlZd dlZd dlZd Z	d Z
d Zd Zd Zd Zd Zd	 ZdS )
    Nc                      ddd}|                     |            |                    dt          j        |                     |S )Nchicho
2026-05-19)subject
local_datefingerprint)update
setdefaultservercanonical_fingerprint)kwargsbases     )/home/ubuntu/health-bridge/test_server.pyrecr      sE    |<<DKKOOM6#?#E#EFFFK    c            	         t          ddddddd          } t          dd	d
ddd          }t          j        |           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}}t          j        |          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}}d S )Nexercisecom.hevy70Min-Maxu   abtypesourceexercise_typetitleminutesstartendcom.google.android.apps.fitness79)   cdr   r   r   r   r    r!   classexplicit_workout==z%(py1)s == %(py4)spy1py4assert %(py6)spy6auto_activity)r   r   classify_record
@pytest_ar_call_reprcompare	_safereprAssertionError_format_explanation)hevyfit@py_assert0@py_assert3@py_assert2@py_format5@py_format7s          r   +test_classifies_hevy_vs_google_fit_exerciser@      s   JzY`ckntwxxxD
:&GW[egorx{
|
|
|C!$''0F4FF04FFFFFFFFFFF04FFFFFF0FFFF4FFFFFFFFFFFFFFFFFFFFFFFFFFFF!#&&w/B?B/?BBBBBBBBBB/?BBBBB/BBBB?BBBBBBBBBBBBBBBBBBBBBBBBBBBBBr   c            
         t          dddddd          t          dd	d
dddd          t          dddddd          g} t          j        |           \  }}|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}}|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}}|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}}|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}}|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}}|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}}d}|d#         }||v }|slt          j        d$|fd%||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}d}|d#         }||v }|slt          j        d$|fd%||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}d S )&Ndaily_aggregatehealth_connecti-  ir+  r   i  )r   r   steps
distance_mactive_kcal
total_kcalr   r   r   r   r   z2026-05-19T18:23:32Zz2026-05-19T20:20:51Zr   r"   r#   r$   z2026-05-19T15:24:07Zz2026-05-19T16:06:00Zr'   rD   r*   r,   r-   r0   r1   workout_minutesauto_activity_minutesexercise_minutes   workout_count   auto_activity_count	by_metric)in)z%(py1)s in %(py4)sr   r   compute_daily_summaryr4   r5   r6   r7   r8   recordssummary
provenancer;   r<   r=   r>   r?   s           r   5test_summary_splits_workout_and_auto_activity_minutesrW      s   "+;5UZhivz{{{Jd)]`h~  E[  	\  	\  	\$EUYce  nD  J`  	a  	a  	aG
 !6w??GZ7$u$u$$$$$$$$$$u$$$$$$$$$u$$$$$$$$$$$$$$$$$$$$$$$$$$$$%,,%,,,,,,,,,,%,,,,,%,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*+1r1+r1111111111+r11111+1111r111111111111111111111111111%&-#-&#----------&#-----&----#---------------------------?#(q(#q((((((((((#q(((((#((((q(((((((((((((((((((((((((((().Q.)Q..........)Q.....)....Q...........................7
; 77 77777777777 7777777777 7777777777777777777777777777"=j&=="&==========="&======"====&==============================r   c                     t          dddddd          } t          dddddd          }t          j        |          }|| d	<   ||d	<   t          j        | |g          \  }}|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}}|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}}|d         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}}d S )Nr   rC   r#      z2026-05-19T12:00:00Zz2026-05-19T12:20:00Zr'   r"   r   rI   r*   r,   r-   r0   r1   ignoredrM   )z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)slen)py0py2r/   py7zassert %(py9)spy9r   r   )r   r   r   rR   r4   r5   r6   r7   r8   r[   @py_builtinslocals_should_repr_global_name)legacygooglefprU   rV   r;   r<   r=   r>   r?   @py_assert1@py_assert6@py_assert5@py_format8@py_format10s                  r   :test_dedup_prefers_named_source_over_legacy_health_connectrk   &   s   j)9WYaw  ~T  U  U  UFj)JZ^hj  sI  Oe  f  f  fF		%f	-	-BF=F= 67GHHGZ*+1r1+r1111111111+r11111+1111r111111111111111111111111111)$*3$%%**%**********%************3*****3******$****%*********************************i #H-A1AA-1AAAAAAAAAAA-1AAAAAA-AAAA1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAr   c                     t          ddddd          t          ddd	d
dddd          g} t          j        |           \  }}|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}}|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}}|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}}|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}}d S )NrB   rC   iq  r   i  )r   r   rG   rF   rD   	nutritionzcom.myfitnesspal.androidiX  -   F   rY   z2026-05-19T13:00:00Zz2026-05-19T13:10:00Z)r   r   energy_kcal	protein_gcarbs_gfat_gr    r!   caloriesr*   r,   r-   r0   r1   rG   nutrition_kcalrq   rQ   )rT   rU   _r;   r<   r=   r>   r?   s           r   7test_nutrition_intake_does_not_mix_with_burned_caloriesrw   3   s   "+;Z[cghhh%?S\^hjrt  }S  Yo  	p  	p  	pG -g66JGQ:&$&$&&&&&&&&&&$&&&&&&&&&$&&&&&&&&&&&&&&&&&&&&&&&&&&&< (D( D(((((((((( D((((( ((((D(((((((((((((((((((((((((((#$++$++++++++++$+++++$+++++++++++++++++++++++++++++++;%2%2%%%%%%%%%%2%%%%%%%%%2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%r   c            	         t          dddddd          t          ddd	d
dd          g} t          j        |           \  }}|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}}|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}}|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}}|d         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}}d S )N
aggregatedrC   is i4  z2026-05-11T22:44:38Zz2026-05-18T22:44:38Z)r   r   rD   rG   period_start
period_endr   r#      z2026-05-11T23:34:38Zz2026-05-12T00:02:12Zr'   rD   r   r*   r,   r-   r0   r1   rG   rI   rZ   reasonstale_wide_aggregaterQ   rS   s           r   %test_legacy_wide_aggregate_is_ignoredr   ?   s+   &6ePUdz  H^  	_  	_  	_$4DRT\r  yO  	P  	P  	PG !6w??GZ7 q q          q         q                           < %A% A%%%%%%%%%% A%%%%% %%%%A%%%%%%%%%%%%%%%%%%%%%%%%%%%*+1r1+r1111111111+r11111+1111r111111111111111111111111111i #H-G1GG-1GGGGGGGGGGG-1GGGGGG-GGGG1GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGr   c                 L   t          j        | dz            }|                    d           |                    t          dt          | dz                       |                                 t	          j                    }t          dddd          t          d	d
ddddd          g}|D ]}t	          j	        |t          j
        d          }|                    d|d         |d         |d         |d         |d         t          d                              |d                   f           |                                 t	          j        |d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}}d S )#N	health.dbzPRAGMA journal_mode=WALDB_PATHrB   rC   
   rY   )r   r   rD   rE   r   r   r   Lift   z2026-05-19T10:00:00Zz2026-05-19T10:30:00Zr   r   znINSERT INTO raw_data (subject, data_type, record_key, local_date, source, data_json) VALUES (?, ?, ?, ?, ?, ?)r   	data_type
record_keyr   r   jsonrecordr   zSELECT steps, workout_minutes, auto_activity_minutes, exercise_minutes, workout_count FROM daily_summary WHERE subject='chicho' AND date='2026-05-19')r   r   r   r   rM   r*   )z%(py0)s == %(py3)srow)r\   py3zassert %(py5)spy5)sqlite3connectexecutesetattrr   strcloseinit_dbr   _normalize_recordDEFAULT_TIMEZONE
__import__dumpscommit_rebuild_daily_summaryfetchoner4   r5   r`   ra   rb   r6   r7   r8   )tmp_pathmonkeypatchdbrT   rnr   r=   rf   @py_format4@py_format6s              r   'test_rebuild_summary_writes_new_columnsr   K   s^   	K/	0	0BJJ()))	3x+/E+F+FGGGHHJJJ			B"+;2RTUUUJd&Z\dz  AW  	X  	X  	XG  
 
$Q(?JJ


|y\1[>1\?AlOQx[ZdekZlZlZrZrstu}s~ZZ  A	
 	
 	
 	
 IIKKK
!"h===
**  m  n  n  w  w  y  yC$$3$$$$$$$$$$$3$$$$$$$$$$$$$3$$$$$3$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$r   c                    |                     t          dt          | dz                       t          j                    }|                    dd           |                    dd                    t          j                   d                                          }t          j        |          }|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}}|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}}|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}}|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}}d S )Nr   r   zINSERT INTO daily_summary (subject, date, steps, total_kcal, workout_minutes, auto_activity_minutes, exercise_minutes, workout_count, auto_activity_count) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?))	r   r   r        @@r   (   ro   rM      zSELECT z, z* FROM daily_summary WHERE subject='chicho'rD   r   r*   r,   r-   r0   r1   rG   r   rH   r   rI   r   )r   r   r   r   r   joinSUMMARY_COLUMNSr   _summary_dictr4   r5   r6   r7   r8   )
r   r   r   r   r&   r;   r<   r=   r>   r?   s
             r   @test_summary_dict_uses_explicit_column_order_for_migrated_schemar   a   sA   	3x+/E+F+FGGG			BJJ 	H>   **ltyy)?@@lll
m
m
v
v
x
xCS!!AW::::\?$f$?f$$$$$$$$$$?f$$$$$?$$$$f$$$$$$$$$$$$$$$$$$$$$$$$$$$%2%2%%%%%%%%%%2%%%%%%%%%2%%%%%%%%%%%%%%%%%%%%%%%%%%%$%++%++++++++++%+++++%+++++++++++++++++++++++++++++++++r   )builtinsr`   _pytest.assertion.rewrite	assertionrewriter4   osr   r   r   r@   rW   rk   rw   r   r   r    r   r   <module>r      s                 				    C C C> > >"
B 
B 
B	& 	& 	&	H 	H 	H% % %,, , , , ,r   