
    j                         d dl Zd dlmc mZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZmZ  G d d          Zd	 Zd
 Zd Zd ZdS )    N)date)Path)
TestClient)
create_app)DashboardServiceresolve_periodc                   6    e Zd Zd Zd Zd Zd Zd	dZd	dZdS )
FakeRepositoryc                     dS )N
2026-05-31 selfs    {   /Users/bot1/Volumes/root_for_ai/AI工作区/良渚_电商数据看板_前后端分离_20260602_0257/tests/test_dashboard.pylatest_datezFakeRepository.latest_date   s    |    c                 
    g dS )N)z
2026-05-29
2026-05-30r   r   r   s    r   available_dateszFakeRepository.available_dates   s    9999r   c                 2    dddddddddd		d
ddddddddd		gS )Ntaobao_tmall   良渚文化旗舰店d   i,  i  iL  
      )	source_platform
store_namevisitor_countpage_view_countpayment_amountrefund_amountnet_payment_amountpayment_buyer_countpayment_item_countjdu   良渚京东店2   x   iX  r      r   r   
start_dateend_dates      r   store_summaryzFakeRepository.store_summary   sZ     $25!$#&"&!$&*')&(
 
 $(/!##&"%!"&)'(&'
 

 	
r   c                     ddddddddgS )Nr   P   i  )	stat_dater   r"   r        r   r)   s      r   trendzFakeRepository.trend+   s(    &SVWW&TXYY
 	
r      c                     ddddddgS )Nr      玉鸟咕咕i        )r   product_namer"   r$   product_visitor_countr   r   r*   r+   limits       r   product_rankzFakeRepository.product_rank1   s.    2Njm  FG  bd  e  e
 	
r   c                     dddddgS )Nr      搜索F   i   )r   source_namer   r    r   r:   s       r   traffic_rankzFakeRepository.traffic_rank6   s    28^`twxx
 	
r   N)r3   )	__name__
__module____qualname__r   r   r,   r2   r<   rA   r   r   r   r
   r
   
   sx          : : :
 
 
4
 
 

 
 
 


 
 
 
 
 
r   r
   c                  
   d} d}d}d}t          |||          }t          | |          }t          ddd          t          ddd          df}||k    }|s[t          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        t                     rt          j        t                     nd	t          j        |          t          j        |          t          j        |          t          j        |          t          j        |          t          j        |          d
	z  }dd|iz  }	t          t          j	        |	                    d x} x}x}x}x}x}x}}d} d}d}d}t          |||          }t          | |          }t          ddd          t          ddd          df}||k    }|s[t          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        t                     rt          j        t                     nd	t          j        |          t          j        |          t          j        |          t          j        |          t          j        |          t          j        |          d
	z  }dd|iz  }	t          t          j	        |	                    d x} x}x}x}x}x}x}}d} d}d}d}t          |||          }t          | |          }t          ddd          t          ddd          df}||k    }|s[t          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        t                     rt          j        t                     nd	t          j        |          t          j        |          t          j        |          t          j        |          t          j        |          t          j        |          d
	z  }dd|iz  }	t          t          j	        |	                    d x} x}x}x}x}x}x}}d S )Ndayi  r6      r   ==)zn%(py13)s
{%(py13)s = %(py0)s(%(py2)s, %(py11)s
{%(py11)s = %(py3)s(%(py5)s, %(py7)s, %(py9)s)
})
} == %(py16)sr   r   )	py0py2py3py5py7py9py11py13py16zassert %(py18)spy18week   u   2026-05-25 至 2026-05-31month   z2026-05)
r   r   
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanation)
@py_assert1@py_assert4@py_assert6@py_assert8@py_assert10@py_assert12@py_assert15@py_assert14@py_format17@py_format19s
             r   +test_resolve_period_supports_day_week_monthrj   <   s   kdkAkrkdAr!2!2k>%!233kT1b8I8I4PTVWY[K\K\^j7kk37kkkkkkkkkkk37kkkkkkkkkkkkk>kkkkk>kkkkkk%kkkkkkkkkkkkkkkkkkkkkkdkkkkAkkkkrkkkk!2kkkk3kkkk7kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk {t{Q{{$tQ"3"3{>&"344{dAr9J9JDQUWXZ\L]L]_z8{{48{{{{{{{{{{{48{{{{{{{{{{{{{>{{{{{>{{{{{{&{{{{{{{{{{{${{{{{${{{{{{t{{{{Q{{{{{{{{"3{{{{4{{{{8{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{!iiaii4a#4#4i>'#455i$tQ:J:JDQUWXZ\L]L]_h9ii59iiiiiiiiiii59iiiiiiiiiiiii>iiiii>iiiiii'iiiiiiiiiii4iiiii4iiiiiiiiiiaiiiiiiii#4iiii5iiii9iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiir   c                  >   t          t          t                                          } t          |           }|                    d          }|j        }d}||k    }|st          j        d|fd||f          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}|	|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}|	|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}|	|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}|	|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         }	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         }	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!         }	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&         }	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servicez)/api/dashboard?grain=week&date=2026-05-31   rH   )z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)sresp)rJ   rK   rM   zassert %(py7)srN   grainrT   z%(py1)s == %(py4)spy1py4assert %(py6)spy6periodstartz
2026-05-25kpisr"   r1   r   r0   sectionsstoresr   r   r   productsr8   r5   trafficr@   r>   chartsr2   rW   r/   r   )r   r   r
   r   getstatus_coderX   rY   rZ   r[   r\   r]   r^   r_   json)appclientro   r`   ra   @py_assert3@py_format6@py_format8data@py_assert0@py_assert2@py_format5@py_format7s                r   0test_dashboard_api_returns_visualization_payloadr   B   s   
-n.>.>??
@
@
@C__F::ABBD"s"s""""""""""s""""""""""""4"""""4""""""""""s"""""""""""""""""""""""""""99;;D="F"=F""""""""""=F"""""=""""F""""""""""""""""""""""""""">'"2l2"l2222222222"l22222"2222l222222222222222222222222222<,-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5555555555555555<(/C/(C//////////(C/////(////C///////////////////////////
H%a(6Q:QQ6:QQQQQQQQQQQ6:QQQQQQ6QQQQ:QQQQQQQQQQQQQQQQQQQQQQQQQQQQ
J'*>:LnL:nLLLLLLLLLL:nLLLLL:LLLLnLLLLLLLLLLLLLLLLLLLLLLLLLLL
I&q)-8DHD8HDDDDDDDDDD8HDDDDD8DDDDHDDDDDDDDDDDDDDDDDDDDDDDDDDD>'"1%k2BlB2lBBBBBBBBBB2lBBBBB2BBBBl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          t          t                                          } t          |           }|                    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
         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         }g 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 )Nrl   z	/api/metar   r   rH   rq   rr   ru   rv   r   grains)rF   rT   rV   )r   r   r
   r   r   r   rX   rY   r]   r^   r_   )r   r   r   r   r   r   r   r   s           r   4test_meta_api_exposes_available_dates_and_dimensionsr   T   sV   
-n.>.>??
@
@
@C__F::k""''))D.,.,..........,.........,...........................!"2&6,6&,6666666666&,66666&6666,666666666666666666666666666>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555555555555555555555555r   c                     t          t                                                    j        d                             dd                              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}|| 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}|| 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}|| 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}|| 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 S )NrW   staticz
index.htmlzutf-8)encodingztype="date")in)z%(py1)s in %(py3)shtml)rs   rL   zassert %(py5)srM   zdata-grain="day"zdata-grain="week"zdata-grain="month"zid="trendChart")r   __file__resolveparentsjoinpath	read_textrX   rY   r]   rZ   r[   r\   r^   r_   )r   r   r   @py_format4r   s        r   1test_frontend_contains_date_picker_and_grain_tabsr   ]   s   >>!!##+A.77,OOYYcjYkkD =D          =D     =           D     D                           %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&$&&&&&&&&&&$&&&&&&&&&&&&&&&&$&&&&&$&&&&&&&&&&&&&&&&&&&&&&&&&&&'4''''''''''4''''''''''''''''4'''''4'''''''''''''''''''''''''''$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$r   )builtinsrZ   _pytest.assertion.rewrite	assertionrewriterX   datetimer   pathlibr   fastapi.testclientr   app.mainr   app.servicer   r   r
   rj   r   r   r   r   r   r   <module>r      s                              ) ) ) ) ) )       8 8 8 8 8 8 8 8/
 /
 /
 /
 /
 /
 /
 /
dj j jC C C$6 6 6% % % % %r   