
    j2                         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mZmZmZmZ d Zd Zd Zd Zd	 Zd
 Zd Zd ZdS )    N)VideoCandidate)ScriptQualityScore)DEFAULT_CONTENT_SERIESContentSeriesfind_seriesvalidate_candidate_series_fit validate_content_series_registryc                      ddddddddd	d
dt          dddddd          ddd}|                    |            t          di |S )Nzdelivery-sms-trap-35stext_delivery_scamszDelivery SMS Trap)youtubetiktok	instagram#   z1This delivery text is designed to make you panic.z\Show a fake delivery text, reveal the pressure, and tell viewers to open the app themselves.zYPhone SMS screen with tiny fee, short deadline, suspicious link, and SAVE THIS checklist.z!If it makes you hurry, slow down.z)Follow for one red flag before you click.)z#ScamAwarenessz#CyberSafetyz#DigitalRedFlags	         low)zseries:one_screen_one_red_flagzIOne visible red flag and one safer move can earn saves and family shares.)candidate_idpillartitle	platformsduration_secondshookscript_outlinevisual_conceptcaptionctahashtagsquality_scorepolicy_notes
hypothesis )r   updater   )	overridesvaluess     S/home/agent/jarvis_runtime/autoshortsbot/AutoShortsBot/tests/test_content_series.py
_candidater'      sr    /'$7Cxu6:J+Aq!Q5AA;a F  MM)##F###    c                     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}}d t          D             }h d	}|j        } ||          }	|	sd
t          j        |          t          j        |          dt          j                    v st          j        |          rt          j        |          ndt          j        |	          dz  }
t          t          j
        |
                    d x}x}}	h d}|j        } ||          }	|	sd
t          j        |          t          j        |          dt          j                    v st          j        |          rt          j        |          nd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 S )NTisz0%(py2)s
{%(py2)s = %(py0)s.is_valid
} is %(py5)sresultpy0py2py5assert %(py7)spy7c                     h | ]	}|j         
S r"   )	series_id).0seriess     r&   	<setcomp>zbtest_default_series_registry_contains_public_safe_scam_self_defense_series_only.<locals>.<setcomp>%   s    HHHv&"HHHr(   >   account_trapbefore_you_clickmoney_move_red_flagsone_screen_one_red_flagsend_this_to_your_parentszJassert %(py6)s
{%(py6)s = %(py3)s
{%(py3)s = %(py1)s.issubset
}(%(py4)s)
}
series_ids)py1py3py4py6>   ai_hype_courtprompt_vs_systemai_system_autopsyone_rule_one_examplejarvis_build_log)not in)z%(py1)s not in %(py3)s)r?   r@   zassert %(py5)sr1   )r	   r   is_valid
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationissubset)r-   @py_assert1@py_assert4@py_assert3@py_format6@py_format8r>   @py_assert0@py_assert2@py_assert5@py_format7@py_format4s               r&   Otest_default_series_registry_contains_public_safe_scam_self_defense_series_onlyr]   !   s~   -.DEEF?"d"?d""""""""""?d""""""""""""6"""""6""""""?""""d"""""""""""""""""""""""""""HH1GHHHJ                             z    z                             
   
       
    
     
     
 z   
 z    
         
             /Z//////////Z////////////////Z/////Z/////////////////////////////r(   c                  P   t          ddddddddd	
	  	        } t          | | f          }|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 S )NrG   zThe JARVIS Build Logz5Publicly discuss JARVIS and the user's collaboration.zAI builders)	build_log)z'Mention JARVIS and the user's workflow.)zprivate build log)politicsz'Watch the private collaboration evolve.)	r5   namepromiseaudienceallowed_hook_typesformat_rulesvisual_grammarno_go_patternsfollow_reasonFr*   r,   r-   r.   r2   r3   z%duplicate series_id: jarvis_build_loginz.%(py1)s in %(py5)s
{%(py5)s = %(py3)s.errors
}r?   r@   r1   z;series jarvis_build_log uses forbidden public topic: jarviszBseries jarvis_build_log uses forbidden public topic: collaboration)r   r	   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   errors)	unsafer-   rS   rT   rU   rV   rW   rX   rY   s	            r&   Ftest_series_registry_rejects_duplicate_ids_and_forbidden_public_topicsro   6   s   $#G)A-$?
 
 
F .vv.>??F?#e#?e##########?e############6#####6######?####e###########################2CfmC2mCCCCCCCCCC2mCCCCC2CCCCCCCCCCCfCCCCCfCCCCCCmCCCCCCCCCCCCCCCCCCCCCCCCCCCHYFMYHMYYYYYYYYYYHMYYYYYHYYYYYYYYYYYFYYYYYFYYYYYYMYYYYYYYYYYYYYYYYYYYYYYYYYYYO`SYS``OS```````````OS``````O```````````SY`````SY``````S``````````````````````````````r(   c                     t                      } t          | d          }|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 S )	Nr<   Tr*   r,   r-   r.   r2   r3   r'   r   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   	candidater-   rS   rT   rU   rV   rW   s          r&   @test_candidate_series_fit_accepts_matching_public_safe_candidatert   K   s    I*96OPPF?"d"?d""""""""""?d""""""""""""6"""""6""""""?""""d"""""""""""""""""""""""""""""r(   c                     t          ddd          } t          | d          }|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 S )Nz-Before you tap the tracking link, check this.z8Show the SMS link and safer move: open the app yourself.z.Phone text screen with link and app icon path.)r   r   r   r:   Tr*   r,   r-   r.   r2   r3   rq   rr   s          r&   <test_candidate_series_fit_accepts_before_you_click_candidaterv   S   s   <QG  I +96HIIF?"d"?d""""""""""?d""""""""""""6"""""6""""""?""""d"""""""""""""""""""""""""""""r(   c                  H   t          dddddd          } t          | d          }|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 S )Nz.How JARVIS and my user built a content machinez6This is how our collaboration works behind the scenes.z@Explain JARVIS, the user, and private approval workflow details.z'Private chat screenshots and build log.z'Our JARVIS collaboration is the secret.z!Follow to watch us build it live.r   r   r   r   r   r   r<   Fr*   r,   r-   r.   r2   r3   z-candidate uses forbidden public topic: jarvisri   rk   rl   z4candidate uses forbidden public topic: collaborationz.candidate uses forbidden public topic: privater'   r   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rm   	rs   r-   rS   rT   rU   rV   rW   rX   rY   s	            r&   Stest_candidate_series_fit_rejects_public_content_about_jarvis_or_user_collaborationr{   _   s   >EY@9/  I +96OPPF?#e#?e##########?e############6#####6######?####e###########################:KfmK:mKKKKKKKKKK:mKKKKK:KKKKKKKKKKKfKKKKKfKKKKKKm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ARV]RA]RRRRRRRRRRA]RRRRRARRRRRRRRRRRVRRRRRVRRRRRR]RRRRRRRRRRRRRRRRRRRRRRRRRRR;Lv}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LvLLLLLv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LLLLLLLLr(   c                     t          dddddd          } t          | d          }|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 )NzPolitical scam systemz?This legal loophole lets you scrape private data for campaigns.z:Explain how to bypass platform rules and influence voters.z(Campaign dashboard and private data map.z&Use this loophole before it is banned.zTry this campaign hack.rx   r<   Fr*   r,   r-   r.   r2   r3   z/candidate uses forbidden public topic: politicsri   rk   rl   z5candidate uses forbidden public topic: legal loopholez3candidate uses forbidden public topic: private dataz-candidate uses forbidden public topic: bypassry   rz   s	            r&   Btest_candidate_series_fit_rejects_politics_and_legal_or_moral_riskr}   q   s   %NSA8%  I +96OPPF?#e#?e##########?e############6#####6######?####e###########################<MM<MMMMMMMMMM<MMMMM<MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM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@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:KfmK:mKKKKKKKKKK:mKKKKK:KKKKKKKKKKKfKKKKKfKKKKKKm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Kr(   c                  :   t          t                      d          } | 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 S )Nmissing_seriesFr*   r,   r-   r.   r2   r3   zunknown series: missing_seriesri   rk   rl   )r   r'   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rm   )r-   rS   rT   rU   rV   rW   rX   rY   s           r&   0test_candidate_series_fit_rejects_unknown_seriesr      s   *:<<9IJJF?#e#?e##########?e############6#####6######?####e###########################+<v}<+}<<<<<<<<<<+}<<<<<+<<<<<<<<<<<v<<<<<v<<<<<<}<<<<<<<<<<<<<<<<<<<<<<<<<<<<<r(   )builtinsrL   _pytest.assertion.rewrite	assertionrewriterJ   autoshorts.ideas.candidater   autoshorts.scripting.qualityr   autoshorts.strategy.seriesr   r   r   r   r	   r'   r]   ro   rt   rv   r{   r}   r   r"   r(   r&   <module>r      s                 5 5 5 5 5 5 ; ; ; ; ; ;             $ $ $*0 0 0*a a a*# # #	# 	# 	#M M M$L L L&= = = = =r(   