
     j                         d dl Zd dlmc mZ d dlmZ d dlZd dl	m
Z
 d dlmZ d dlmZ d dlmZmZmZ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 d Zd Zd Z d Z!d Z"d Z#dS )    N)Path)create_content_brief)create_script_draft)!convert_script_draft_to_candidate)ContentPreviewApprovalPackage&build_content_preview_approval_package$render_content_preview_approval_text)validate_content_preview_approval_package)build_html_preview)create_shot_plan)build_render_manifest)build_social_media_draft) render_social_media_draft_reviewc                      t          dddd          } t          |           }t          | |          }t          t	          |                    }t          |          }t          ||          }|t          |          fS )Nai_life_systemszAI weekly review routinez4I use AI tools but still lose control of priorities.z>a 10-minute Sunday review that keeps AI as assistant, not boss)	pillar_idtopicaudience_problempayoff)r   r   r   r   r   r   r   r   )briefscript	candidatemanifestpreviewdrafts         \/home/agent/jarvis_runtime/autoshortsbot/AutoShortsBot/tests/test_content_preview_package.py_draft_and_reviewr      s     #(OO	  E !''F1%@@I$%5f%=%=>>H **G$Y88E259999    c                    t                      \  }}| dz  }|                    d           t          |||          }t          |t                    }|sd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dt          j                    v st          j        t                    rt          j	        t                    ndt          j	        |          dz  }t          t          j        |                    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}}|j        }t          |          }||k    }|s0t          j        d
|fd||f          dt          j                    v st          j        |          rt          j	        |          ndt          j	        |          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	        |          dz  }
dd|
iz  }t          t          j        |                    d x}x}}|j        }||k    }|st          j        d
|fd||f          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}}|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}}|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}}|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}}|j        }d }||u }|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}}|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}}|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 S )&Npreview.mp4   fake mp4r   preview_video_pathsocial_review_textz5assert %(py4)s
{%(py4)s = %(py0)s(%(py1)s, %(py2)s)
}
isinstancepackager   )py0py1py2py4z,ai_life_systems-ai-weekly-review-routine-35s==)z4%(py2)s
{%(py2)s = %(py0)s.candidate_id
} == %(py5)sr'   r)   py5assert %(py7)spy7)zX%(py2)s
{%(py2)s = %(py0)s.preview_video_path
} == %(py7)s
{%(py7)s = %(py4)s(%(py5)s)
}str
video_path)r'   r)   r*   r.   r0   assert %(py9)spy9)z:%(py2)s
{%(py2)s = %(py0)s.social_review_text
} == %(py4)sreview_text)r'   r)   r*   zassert %(py6)spy6de)z9%(py2)s
{%(py2)s = %(py0)s.approval_language
} == %(py5)sen)z<%(py2)s
{%(py2)s = %(py0)s.final_video_language
} == %(py5)s)zFreigabe YouTubezFreigabe TikTokzFreigabe InstagramFreigabe alleAblehnenu   Ändern: <requested change>)z9%(py2)s
{%(py2)s = %(py0)s.approval_commands
} == %(py5)sTis)z?%(py2)s
{%(py2)s = %(py0)s.requires_human_approval
} is %(py5)s )z4%(py2)s
{%(py2)s = %(py0)s.side_effects
} == %(py5)s)z6%(py2)s
{%(py2)s = %(py0)s.external_calls
} == %(py5)s)r   write_bytesr   r%   r   @py_builtinslocals
@pytest_ar_should_repr_global_name	_safereprAssertionError_format_explanationcandidate_id_call_reprcomparer#   r1   r$   approval_languagefinal_video_languageapproval_commandsrequires_human_approvalside_effectsexternal_calls)tmp_pathr   r5   r2   r&   @py_assert3@py_format5@py_assert1@py_assert4@py_format6@py_format8@py_assert6@py_format10@py_format7s                 r   Ltest_build_content_preview_approval_package_combines_video_and_social_reviewrX   $   sh
   *,,E;M)J;'''4%&  G g<===============:=====:=============g=====g=============<=====<========================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Q7QQQQQ7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QQQQQQ%8Z8%8888888888%8888888888887888887888888%88888888888888888888888888888Z88888Z888888888888888888888888888888888%4%4444444444%4444444444447444447444444%4444444444444444444444444444444444444444444$,,$,,,,,,,,,,$,,,,,,,,,,,,7,,,,,7,,,,,,$,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,'/4/'4//////////'4////////////7/////7//////'////4///////////////////////////$  ) $ )        $ )                     %   )                          *2d2*d2222222222*d2222222222227222227222222*2222d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%2%2%%%%%%%%%%2%%%%%%%%%%%%7%%%%%7%%%%%%%%%%2%%%%%%%%%%%%%%%%%%%%%%%%%%%!'R'!R''''''''''!R''''''''''''7'''''7''''''!''''R'''''''''''''''''''''''''''''r   c                    t                      \  }}| dz  }|                    d           t          t          |||                    }|j        }d}||u }|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}}|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 S )Nr    r!   r"   Tr;   z0%(py2)s
{%(py2)s = %(py0)s.is_valid
} is %(py5)sresultr-   r/   r0   r=   r+   )z.%(py2)s
{%(py2)s = %(py0)s.errors
} == %(py5)s)r   r>   r
   r   is_validrA   rG   r?   r@   rB   rC   rD   rE   errors)
rN   r   r5   r2   r[   rQ   rR   rO   rS   rT   s
             r   Dtest_validate_content_preview_approval_package_accepts_valid_packager^   B   s   *,,E;M)J;'''6.)*	
 	
 	
 F ?"d"?d""""""""""?d""""""""""""6"""""6""""""?""""d"""""""""""""""""""""""""""=B=B=B66=Br   c                     t                      \  }}t          j        t          d          5  t	          || dz  |           d d d            d S # 1 swxY w Y   d S )Nzpreview video path must exist)matchzmissing.mp4r"   )r   pytestraises
ValueErrorr   )rN   r   r5   s      r   Atest_build_content_preview_approval_package_rejects_missing_videord   S   s    *,,E;	z)H	I	I	I 
 
.'-7*	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   AAAc                 v   t                      \  }}| dz  }|                    d           t          |||          }t          |j        |j        d|j        |j        |j        ddd	  	        }t          |          }|j
        }d}||u }	|	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}|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}}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}}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}}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}}d S )Nr    r!   r"   zPost this nowF)send_telegram)telegram)	rF   r#   r$   rJ   rH   rI   rK   rL   rM   r;   rZ   r[   r-   r/   r0   zhuman approval is requiredin)z.%(py1)s in %(py5)s
{%(py5)s = %(py3)s.errors
})r(   py3r.   z3content preview packages must not have side effectsz5content preview packages must not call external toolsz@social_review_text must not contain publish/post action language)r   r>   r   r   rF   r#   rJ   rH   rI   r
   r\   rA   rG   r?   r@   rB   rC   rD   rE   r]   )rN   r   r5   r2   r&   unsafer[   rQ   rR   rO   rS   rT   @py_assert0@py_assert2s                 r   Wtest_validate_content_preview_approval_package_rejects_side_effects_and_action_languagern   ^   s   *,,E;M)J;'''4%&  G
 +)"5*!3!3$9 %'$
 
 
F 7v>>F?#e#?e##########?e############6#####6######?####e###########################'86=8'=8888888888'=88888'888888888886888886888888=888888888888888888888888888@QFMQ@MQQQQQQQQQQ@MQQQQQ@QQQQQQQQQQQFQQQQQFQQQQQQM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BSfmSBmSSSSSSSSSSBmSSSSSBSSSSSSSSSSSfSSSSSfSSSSSSmSSSSSSSSSSSSSSSSSSSSSSSSSSSM^QWQ^^MQ^^^^^^^^^^^MQ^^^^^^M^^^^^^^^^^^QW^^^^^QW^^^^^^Q^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^r   c                    t                      \  }}| dz  }|                    d           t          |||          }t          |          }|j        }d} ||          }|sddt          j                    v st          j        |          rt          j	        |          ndt          j	        |          t          j	        |          t          j	        |          dz  }	t          t          j        |	                    d 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}
}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}
|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}}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          |          }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 S ) Nr    r!   r"   z## Content Preview ReviewzLassert %(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.startswith
}(%(py4)s)
}text)r'   r)   r*   r6   zVideo preview: rh   )z%(py1)s in %(py3)s)r(   rj   zassert %(py5)sr.   zApproval preview language: dezFinal video language: enr9   z## Social Media Draft Reviewpublish)not in)zK%(py1)s not in %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.casefold
}()
})r(   rj   r.   r0   r3   r4   posti   )<)z/%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} < %(py6)slen)r'   r(   rj   r6   zassert %(py8)spy8)r   r>   r   r	   
startswithr?   r@   rA   rB   rC   rD   rE   rG   casefoldru   )rN   r   r5   r2   r&   rp   rQ   rO   @py_assert5rW   rl   rm   @py_format4rS   rR   rU   rT   rV   @py_format9s                      r   Otest_render_content_preview_approval_text_is_telegram_safe_and_references_videor|   |   s   *,,E;M)J;'''4%&  G 088D?767??67777777777777774777774777777?77776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)Z))1)T1111111111)T11111)11111111111T11111T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*2*d2222222222*d22222*22222222222d22222d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%-%----------%-----%-------------------------------------------"?d""""""""""?d"""""?"""""""""""d"""""d""""""""""""""""""""""""""")1)T1111111111)T11111)11111111111T11111T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+DM+MMOO+9O++++++++++9O+++++9+++++++++++D+++++D++++++M++++O+++++++++++++++++++++++++++++(((6((((((((((6(((((6(((((((((((((((((((((((((((((((((((((((((((((((((((((((t99t9t9t33tt9tr   )$builtinsr?   _pytest.assertion.rewrite	assertionrewriterA   pathlibr   ra   autoshorts.content.briefr   autoshorts.content.script_draftr   autoshorts.content.to_candidater   autoshorts.preview.packager   r   r	   r
   autoshorts.rendering.previewr   autoshorts.rendering.shot_planr   autoshorts.rendering.manifestr   autoshorts.social.draftr   autoshorts.social.reviewr   r   rX   r^   rd   rn   r|   r=   r   r   <module>r      sp                        9 9 9 9 9 9 ? ? ? ? ? ? M M M M M M            < ; ; ; ; ; ; ; ; ; ; ; ? ? ? ? ? ? < < < < < < E E E E E E: : :( ( (<  "
 
 
_ _ _<    r   