
    h                        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dlZddlZddlmZ ddlmZ ddlmZ ej(                  d        Zej(                  d        Zd	 Zd
 Zd Zd Zd Zedk(  r ej:                  edg       yy)u   
Phase 1 简化测试
    N)Path)calculate_file_sha1)ExcelReader)ImportServicec               #   x   K   t        j                         } t        |        t        j                  |        yw)u   创建临时目录N)tempfilemkdtempr   shutilrmtree)temp_dirs    a   /Users/jinjunqian/PycharmProjects/订单处理新版/ordersys/backend/tests/test_phase1_simple.pytemp_directoryr      s,      !H
x.
MM(s   8:c           
          g dg dg dg dg dg dg dg dg d	d
	}t        j                  |      }| dz  }|j                  |d       |S )u   创建示例Excel文件)ORDER001r   ORDER002)   测试店铺r   r   )   交易成功r   u   交易关闭)2025-01-15 10:30:00r   z2025-01-16 14:20:00)u   Nike 运动鞋u	   Nike T恤u   Adidas 外套)u   颜色:黑色;尺码:42u   颜色:白色;尺码:Lu   颜色:蓝色;尺码:XL)NK001NK002AD001)      r   )     @g     h@g     @)	   原始订单编号   网店名称u   交易状态u   付款时间u   线上宝贝名称u   线上销售属性u   线上商家编码   数量   订单单价test_orders.xlsxF)index)pd	DataFrameto_excel)r   datadf
excel_paths       r   sample_excel_filer'      sX     CHH]Nn9-
D 
d	B"44JKK
%K(    c                    t        |       }t        |       }||k(  }|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        |      }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)u   测试文件哈希计算==)z%(py0)s == %(py2)shash1hash2)py0py2zassert %(py4)spy4N(   z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)slenr.   py1py3py6assert %(py8)spy8)
r   
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationr3   )r'   r,   r-   @py_assert1@py_format3@py_format5@py_assert2@py_assert5@py_assert4@py_format7@py_format9s              r   test_file_hash_calculationrJ   .   s    12E 12E E>5E55EEu:::33uu:r(   c                    t               }|j                  |       }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
}|j                  }||v }|st        j                  d|fd||f      t        j                  |      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}x}}|j                  |      }d |j                  D        }t        |      }|sddt        j                         v st        j                  t              rt        j                  t              ndt        j                  |      t        j                  |      dz  }t        t        j                  |            d	x}}|j                  |      }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	)u    测试Excel读取器基本功能   r*   r2   r3   r%   r4   r8   r9   Nr   in)z/%(py1)s in %(py5)s
{%(py5)s = %(py3)s.columns
})r5   r6   py5zassert %(py7)spy7c              3   <   K   | ]  }t        |t                y w)N)
isinstancestr).0cols     r   	<genexpr>z*test_excel_reader_basic.<locals>.<genexpr>C   s     E/Dz#s#/Ds   z,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}all)r.   r/   r0   
df_cleaned)r   
read_excelr3   r:   r;   r<   r=   r>   r?   r@   rA   columnsnormalize_column_namesrW   
clean_data)r'   readerr%   rE   rF   rG   rH   rI   @py_assert0@py_format6@py_format8df_normalizedrB   @py_assert3rD   rX   s                   r   test_excel_reader_basicrc   8   s,   ]F 
		,	-Br7a7a<7a33rr7a-2::-:----:---------2---2---:------- 11"5ME}/D/DEE3EEEEEEEEE3EEE3EEEEEEEEEEEEEE ""=1Jz?a?a?a33zz?ar(   c                 	   t               }|j                  |       }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}}
|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}}
g }|d   }d}||k(  }|}	|s|d   }d}||k(  }|}	|	st        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }|j                  |       |s_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}}|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&}	|	|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}	}y	)-u   测试Excel文件处理流程rL   r*   r2   r3   recordsr4   r8   r9   Nr   r   r   )z%(py1)s == %(py4)s)r5   r0   zassert %(py6)sr7   r   r   r   r   1)z%(py3)s == %(py6)s)r6   r7   z%(py8)s)z%(py11)s == %(py14)s)py11py14z%(py16)spy16zassert %(py19)spy19r   r   )z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)sfloat)r.   r/   r0   rP   zassert %(py9)spy9row_idxrM   )z%(py1)s in %(py3)sfirst_record)r5   r6   zassert %(py5)srO   )r   process_excel_filer3   r:   r;   r<   r=   r>   r?   r@   rA   append_format_booloprk   )r'   r]   re   rE   rF   rG   rH   rI   rn   r^   rb   rD   rB   @py_assert10@py_assert13@py_assert12@py_format15@py_format17@py_format18@py_format20@py_assert6r`   @py_format10@py_format4r_   s                            r   test_excel_reader_process_filer|   J   s   ]F''(9:Gw<1<1<133ww<1 1:L,-;;-;;;;-;;;-;;;;;;;;;;'9>9'>9999'>999'999>9999999G<!GQG!Q&G,x*@GCG*@C*GGGG!QGGG!GGGQGGGGGGG*@CGGG*@GGGCGGGGGGGGGGGGGGn-75-.7%7.%7777.%77777757775777-777.777%7777777$9$$$$9$$$9$$$$$$$$$$$$$$$$r(   c                      t               } | j                  }d} ||      }d}||k(  }|st        j                  d|fd||f      dt	        j
                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d	x}x}x}x}}| j                  }d
} ||      }d}||k(  }|st        j                  d|fd||f      dt	        j
                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d	x}x}x}x}}| j                  }d} ||      }d}||k(  }|st        j                  d|fd||f      dt	        j
                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d	x}x}x}x}}| j                  }d} ||      }d}||k(  }|st        j                  d|fd||f      dt	        j
                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d	x}x}x}x}}| j                  }d} ||      }d}||k(  }|st        j                  d|fd||f      dt	        j
                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d	x}x}x}x}}| j                  }d} ||      }d}||k(  }|st        j                  d|fd||f      dt	        j
                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d	x}x}x}x}}y	)u   测试敏感信息脱敏13812345678z138****5678r*   )zQ%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s._mask_phone
}(%(py4)s)
} == %(py9)simport_service)r.   r/   r0   r7   rl   zassert %(py11)srg   N1234567z123****4567123110101199001011234z1101****1234)zS%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s._mask_id_card
}(%(py4)s)
} == %(py9)s12345678z1234****56781234)r   _mask_phoner:   r;   r<   r=   r>   r?   r@   rA   _mask_id_card)r   rB   rb   rF   @py_assert8@py_assert7rz   @py_format12s           r   test_sensitive_data_maskingr   Z   s   "_N %%EmE%m4EE4EEEE4EEEEEE>EEE>EEE%EEEmEEE4EEEEEEEEEE%%AiA%i0AMA0MAAAA0MAAAAAA>AAA>AAA%AAAiAAA0AAAMAAAAAAA%%5e5%e,55,5555,555555>555>555%555e555,5555555555 ''O(<O'(<=OO=OOOO=OOOOOO>OOO>OOO'OOO(<OOO=OOOOOOOOOO''E
E'
3E~E3~EEEE3~EEEEEE>EEE>EEE'EEE
EEE3EEE~EEEEEEE''99'/969/69999/6999999>999>999'999999/999699999999r(   c                    t               }ddlm} |j                  }t	        |       |_        	 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   }|j                   }d}||k(  }|st        j                  d|fd||f      t        j                  |      t        j                  |      t        j                  |      dz  }	d
d|	iz  }
t        t        j                  |
            dx}x}x}}||_        y# ||_        w xY w)u   测试文件扫描功能r   )settingsz*.xlsxr   r*   r2   r3   filesr4   r8   r9   Nr   )z,%(py3)s
{%(py3)s = %(py1)s.name
} == %(py6)s)r5   r6   r7   )r   app.core.configr   SHARED_INBOX_DIRrS   listglobr3   r:   r;   r<   r=   r>   r?   r@   rA   name)r   r'   r   r   original_pathr   rE   rF   rG   rH   rI   r^   s               r   test_import_service_scan_filesr   i   sD    #_N )--M #N 3H2^((235zQzQzQss55zQQx2x}}2 22} 22222} 2222x222}222 22222222$1!M!s   GH 	H__main__z-v)__doc__builtinsr<   _pytest.assertion.rewrite	assertionrewriter:   r   r
   pathlibr   pandasr!   pytestapp.utils.file_hashr   app.utils.excel_readerr   app.services.import_servicer   fixturer   r'   rJ   rc   r|   r   r   __name__main__file__ r(   r   <module>r      s          3 . 5    * $% :2& zFKK4 ! r(   