
    \j                         d dl Zd dlmc mZ d dlZd dlmZ d dl	m
Z
 d dlmZmZmZ d dlmZmZmZ d dlmZ d Zd Zd	 Zd
 Zd Zd ZdS )    N)create_content_brief)create_script_draft)RenderManifestRenderSettingsbuild_render_manifest)RenderPreviewbuild_html_previewvalidate_render_preview)create_shot_planc                  ~    t          dddd          } t          |           }t          t          |                    S )Nai_life_systems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   )briefscripts     S/home/agent/jarvis_runtime/autoshortsbot/AutoShortsBot/tests/test_render_preview.py	_manifestr   
   sH     #(OO	  E !''F !1&!9!9:::    c                  |   t                      } 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        }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}}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}|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 )Nz5assert %(py4)s
{%(py4)s = %(py0)s(%(py1)s, %(py2)s)
}
isinstancepreviewr   )py0py1py2py4z(ai_life_systems-ai-weekly-review-routine==)z1%(py2)s
{%(py2)s = %(py0)s.script_id
} == %(py5)sr   r   py5assert %(py7)spy7html_timeline)z4%(py2)s
{%(py2)s = %(py0)s.preview_type
} == %(py5)s )z4%(py2)s
{%(py2)s = %(py0)s.side_effects
} == %(py5)s)z6%(py2)s
{%(py2)s = %(py0)s.external_calls
} == %(py5)sz<htmlinz,%(py1)s in %(py5)s
{%(py5)s = %(py3)s.html
}r   py3r"   r   	1080x192030fpsfirst_frame_hooku   0–3szMplaceholders/ai_life_systems-ai-weekly-review-routine/01-first_frame_hook.pngz4If AI runs your week, you have already lost control.)r   r	   r   r   @py_builtinslocals
@pytest_ar_should_repr_global_name	_safereprAssertionError_format_explanation	script_id_call_reprcomparepreview_typeside_effectsexternal_callshtml)
manifestr   @py_assert3@py_format5@py_assert1@py_assert4@py_format6@py_format8@py_assert0@py_assert2s
             r   Atest_build_html_preview_creates_side_effect_free_timeline_previewrE      s   {{H **Gg}---------------:-----:-------------g-----g-------------}-----}------------------------J JJ JJJJJJJJJJJ JJJJJJJJJJJJJ7JJJJJ7JJJJJJJJJJ JJJJJJJJJJJJJJJJJJJJJJJJJJJJ2?2?2222222222?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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%%%%%%%%%%2%%%%%%%%%%%%7%%%%%7%%%%%%%%%%2%%%%%%%%%%%%%%%%%%%%%%%%%%%!'R'!R''''''''''!R''''''''''''7'''''7''''''!''''R'''''''''''''''''''''''''''"gl"7l""""""""""7l"""""7"""""""""""g"""""g""""""l"""""""""""""""""""""""""""%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55555555555&',&;,&&&&&&&&&&;,&&&&&;&&&&&&&&&&&'&&&&&'&&&&&&,&&&&&&&&&&&&&&&&&&&&&&&&&&&"gl"7l""""""""""7l"""""7"""""""""""g"""""g""""""l"""""""""""""""""""""""""""------------------------------------------------------------------#w|#8|##########8|#####8###########w#####w######|###########################Zj^e^jjZ^jjjjjjjjjjjZ^jjjjjjZjjjjjjjjjjj^ejjjjj^ejjjjjj^jjjjjjjjjjjjjjjjjjjjjjjjjjjjAQW\QA\QQQQQQQQQQA\QQQQQAQQQQQQQQQQQWQQQQQW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Qr   c                  V   t          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 )NTisz0%(py2)s
{%(py2)s = %(py0)s.is_valid
} is %(py5)sresultr!   r#   r$   r&   r   )z.%(py2)s
{%(py2)s = %(py0)s.errors
} == %(py5)s)r
   r	   r   is_validr1   r7   r/   r0   r2   r3   r4   r5   errors)rJ   r?   r@   r=   rA   rB   s         r   4test_validate_render_preview_accepts_default_previewrM   )   s   $%7	%D%DEEF?"d"?d""""""""""?d""""""""""""6"""""6""""""?""""d"""""""""""""""""""""""""""=B=B=B66=Br   c                  
   t                      } t          | j        | j        t	          dd          | j                  }t          j        t          d          5  t          |           d d d            d S # 1 swxY w Y   d S )Ni  i8  )widthheightr6   titlesettingstimelinez&render size must be vertical 1080x1920)match)
r   r   r6   rR   r   rT   pytestraises
ValueErrorr	   )r<   invalids     r   0test_build_html_preview_rejects_invalid_manifestrZ   0   s    {{H$nd4888"	  G 
z)Q	R	R	R $ $7###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s   A88A<?A<c                  &   t          t                                } t          | j        | j        | j        | j        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 S )N)
write_file)comfyui)r6   rR   r8   r;   r9   r:   FrG   rI   rJ   r!   r#   r$   z"preview must not have side effectsr'   )z.%(py1)s in %(py5)s
{%(py5)s = %(py3)s.errors
}r*   z(preview must not call external renderers)r	   r   r   r6   rR   r8   r;   r
   rK   r1   r7   r/   r0   r2   r3   r4   r5   rL   )
r   unsaferJ   r?   r@   r=   rA   rB   rC   rD   s
             r   Dtest_validate_render_preview_rejects_side_effects_and_external_callsr_   =   s    --G#m)\$#  F %V,,F?#e#?e##########?e############6#####6######?####e###########################/@6=@/=@@@@@@@@@@/=@@@@@/@@@@@@@@@@@6@@@@@6@@@@@@=@@@@@@@@@@@@@@@@@@@@@@@@@@@5FF5FFFFFFFFFF5FFFFF5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FFFFFFFFFFFFFFFFFFFFFFFFr   c                     t                      } | j        d         } t          |          |j        |j        |j        |j        d|j         t          |j                  dd          |j	                  }t          | j        | j        | j        |f| j        dd          z             }t          |          }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   z Move <script>alert('x')</script>zHuman < approvalT)textrenderer_owned)scene_purposestart_secondsend_seconds
asset_modemotion_instructionplaceholder_asset_pathcaption_layerlabel_layer   rQ   z<script>)not in)z0%(py1)s not in %(py5)s
{%(py5)s = %(py3)s.html
}r   r*   r#   r$   z&lt;script&gt;r'   r)   zHuman &lt; approval)r   rT   typerc   rd   re   rf   rh   ri   rj   r   r6   rR   rS   r	   r;   r1   r7   r3   r/   r0   r2   r4   r5   )
r<   firstdangerous_item	dangerousr   rC   r@   rD   rA   rB   s
             r   -test_build_html_preview_escapes_timeline_textrq   O   sj   {{Ha E T%[[))%#=$;/d5.//5GX\]]]%	 	 	N $n" "X%6qrr%::	  I !++G)W\):\)))))))))):\))))):)))))))))))W)))))W))))))\)))))))))))))))))))))))))))+w|+|++++++++++|++++++++++++++++w+++++w++++++|+++++++++++++++++++++++++++ 0GL0 L0000000000 L00000 00000000000G00000G000000L00000000000000000000000000000r   )builtinsr/   _pytest.assertion.rewrite	assertionrewriter1   rV   autoshorts.content.briefr   autoshorts.content.script_draftr   autoshorts.rendering.manifestr   r   r   autoshorts.rendering.previewr   r	   r
   autoshorts.rendering.shot_planr   r   rE   rM   rZ   r_   rq   r&   r   r   <module>r{      s                 9 9 9 9 9 9 ? ? ? ? ? ? _ _ _ _ _ _ _ _ _ _ c c c c c c c c c c ; ; ; ; ; ;; ; ;R R R(  
$ 
$ 
$G G G$1 1 1 1 1r   