o
    i|                     @   s   d dl Zd dlm  mZ d dl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d ejd ee
e jd  d dlmZ G d	d
 d
ZG dd dZdd Zdd Zdd ZdS )    N)Path)SimpleNamespace)	MagicMockDATABASE_URLzsqlite:///./test.db   )phase2_documentsc                   @      e Zd Zdd Zdd ZdS )_DummySessionCtxc                 C      t  S N)objectself r   S/lsinfo/ai/hellotax_ai/data_center/backend/tests/test_import_kb_phase2_documents.py	__enter__   s   z_DummySessionCtx.__enter__c                 C   s   dS )NFr   )r   exc_typeexctbr   r   r   __exit__   s   z_DummySessionCtx.__exit__N)__name__
__module____qualname__r   r   r   r   r   r   r	          r	   c                   @   r   )_DummyClientc                 C   s
   d | _ d S r   last_payloadr   r   r   r   __init__      
z_DummyClient.__init__c                    s   || _ dddS )NTd   )successdocument_idr   )r   kwargsr   r   r   create_document   s   
z_DummyClient.create_documentN)r   r   r   r   r#   r   r   r   r   r      r   r   c                  K   s<   ddddddd d d d d d d g dd}| |  tdi |S )	Nr   u   测试文档zMARKDOWN-CONTENTzPLAINTEXT-CONTENTzhttps://example.com/docabc123)idtitlecontent_markdowncontent_textcategory_id
source_url
doc_numberissuing_authority
issue_dateeffective_date
doc_statussuperseded_by_doc_numbersuperseded_by_titleattachmentscontent_hashr   )updater   )	overridesbaser   r   r   
_build_doc"   s$   
r7   c                  C   s(  t ddd} t }ttj|| ddd |jd }d}||v }|sRtd|fd	||ft	|d
t
 v s;t|r@t	|nd
d }dd|i }tt|d  }}d}||v}|std|fd||ft	|d
t
 v swt|r|t	|nd
d }dd|i }tt|d  }}d S )NzONLY-MARKDOWNzONLY-PLAINTEXTr'   r(   r   
   )kb_idr)   content)in)z%(py1)s in %(py3)spayload_content)py1py3assert %(py5)spy5)not in)z%(py1)s not in %(py3)s)r7   r   asynciorunp2_import_oner   
@pytest_ar_call_reprcompare	_saferepr@py_builtinslocals_should_repr_global_nameAssertionError_format_explanation)docclientr=   @py_assert0@py_assert2@py_format4@py_format6r   r   r   5test_import_one_uses_content_text_instead_of_markdown8   s   
x|rU   c           	         s>  t ddd}t }d|j_d|j_ddi|j_d|j_|gg g g  fdd	}fd
d}| tddd  | td| | td| | tddd  | tj	ddd  tj
|ddd dg}|k}|std|fd|fdt v s~trtndt|d }dd|i }tt|d  }}d S )N u   有效纯文本r8   Fr   r9   r   c                    s
     dS )Nr   )pop)dbafter_id
batch_size)batchesr   r   fake_fetch_batchN   r   zdtest_run_phase2_does_not_skip_when_markdown_empty_but_content_text_present.<locals>.fake_fetch_batchc                    s     |j dddS )NTi+  )r    knowledge_doc_id)appendr%   )rP   one_docr:   r)   )imported_doc_idsr   r   fake_import_oneQ   s   
zctest_run_phase2_does_not_skip_when_markdown_empty_but_content_text_present.<locals>.fake_import_oneSessionLocalc                   S   r
   r   )r	   r   r   r   r   <lambda>U   s    z\test_run_phase2_does_not_skip_when_markdown_empty_but_content_text_present.<locals>.<lambda>_fetch_batchrF   
_writebackc                 S      d S r   r   )rX   
tax_doc_idr]   r   r   r   rc   X       sleepc                 S   rf   r   r   )_r   r   r   rc   Y   rh   zhttp://localhost:8000zdummy-token)base_urltoken)==)z%(py0)s == %(py3)sr`   )py0r?   r@   rA   )r7   r   is_phase_donereturn_value	get_kb_idget_category_mapget_phase2_cursorsetattrrE   time
run_phase2rG   rH   rJ   rK   rL   rI   rM   rN   )	monkeypatchrO   stater\   ra   rR   @py_assert1rS   rT   r   )r[   r`   r   Jtest_run_phase2_does_not_skip_when_markdown_empty_but_content_text_presentC   s"   
~rz   )builtinsrJ   _pytest.assertion.rewrite	assertionrewriterG   rC   ossyspathlibr   typesr   unittest.mockr   environ
setdefaultpathinsertstr__file__resolveparentsapp.services.import_kbr   rE   r	   r   r7   rU   rz   r   r   r   r   <module>   s   "  	