
    `$j                         d dl Zd dlmc mZ d dl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mZ d dlmZ d dlmZmZmZmZmZmZmZ d	 Zd
edeeef         fdZdd
ededz  defdZ d Z!d Z"d Z#d Z$d Z%dS )    N)datetime	timedeltatimezone)
TestClient)Session)get_settings)init_dbreset_db_for_tests)app)AnalyticsImportBatchAnalyticsPostSnapshotExternalPost	PostDraftProvider
VideoAssetVideoStatusc                     t                      }d|_        | dz  |_        t          |          }t	          |           |t          t                    fS )Nz	sqlite://storage)r   database_urlstorage_rootr	   r
   r   r   )tmp_pathsettingsengines      Q/home/agent/projects/AutoShorts_Dashboard/backend/tests/test_analytics_sprint5.pysetup_test_dbr      sL    ~~H'H$y0HXFv:c??""    sessionreturnc           
         t          dddddddt          j                  }|                     |           |                                  |                     |           t          |j        t          j	        d	d
d          }|                     |           |                                  |                     |           ||fS )Nsprint5_videopackage_sprint5prepared_packagez/tmp/video.mp4   zsprint5-checksum0   Login Prompt You Didn’t Start? Don’t Approve)candidate_id
package_idsource	file_path	file_sizechecksumworking_titlestatus	Old titlezOld descriptionprivate)video_asset_idprovidertitledescriptionprivacy_status)
r   r   ready_for_reviewaddcommitrefreshr   idr   youtube)r   videodrafts      r   create_video_with_draftr<      s    $$!"#H+	 	 	E KKNNOOEUX8HP[iz  LU  V  V  VEKKNNOOE%<r   yt123r:   external_idc                 X   t          t          j        t          dddt          j                  d          }t          t          j        t          dddt          j                  d          }|                     |           |                     |           |                                  t          t          j        |d|r|j	        nd           }|                     |           |                                  | 
                    |           |d	f|d
ffD ]|\  }}|                     t          |j	        t          j        ||r|j	        nd |j        d||d
k    rdnd dddt          dddt          j                  |d
k    rdnd                     }|                                  |S )Ni        )tzinfoimported)r0   snapshot_atr,   r$   )r0   external_post_idr1   r/   P   x   (   g	@g333333'@   r#   risingnew)batch_idr0   rE   r/   rD   r1   viewsviews_deltaimpression_ctr_pctretention_proxy_pctsubscribers_deltapublished_attrend)r   r   r9   r   r   utcr5   r6   r   r8   r7   r   rD   )r   r:   r>   batch1batch2postbatchrM   s           r   add_snapshotsrY   2   s   !8+;RVXY[\emeqIrIrIr  |F  G  G  GF!8+;RVXY[\emeqIrIrIr  |F  G  G  GFKKKKNN!1K  XJ  gl  [v  [`  [c  [c  rv  w  w  wDKKNNOOD "}5  u)X%(',6588$)D#sll" $!$1X\BBB#sll((
 
 
 	 	 	 	 NNKr   c                    t          |           \  }}t          |          5 }t          |          \  }}|j        }|j        }d d d            n# 1 swxY w Y   |                    d| dd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}}
|                    d|                                           }d |d         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}	}d |d         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}	}|                    d|                                           }d |d         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}	}d S )N/api/post-drafts/	New titleMade warning clearerr1   change_notejson   ==z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)sresponsepy0py2py5assert %(py7)spy7c              3   ^   K   | ](}|d          dk    o|d         dk    o|d         dk    V  )dS )change_typer1   before_textr-   
after_textr\   N .0changes     r   	<genexpr>zJtest_metadata_save_creates_creative_change_and_activity.<locals>.<genexpr>[   sx        b  b  FLvm$/  AF=4I[4X  A]cdp]q  vA  ^A  b  b  b  b  b  br   changes,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}anyrh   ri   py4c              3   .   K   | ]}|d          dk    V  dS 
event_typemetadata_savedNrq   rs   events     r   ru   zJtest_metadata_save_creates_creative_change_and_activity.<locals>.<genexpr>\   s-      WW5u\"&66WWWWWWr   activity/api/videos/c              3   .   K   | ]}|d          dk    V  dS r|   rq   r   s     r   ru   zJtest_metadata_save_creates_creative_change_and_activity.<locals>.<genexpr>^   s-      ]]5u\"&66]]]]]]r   )r   r   r<   r8   patchstatus_code
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationgetra   rx   )r   r   clientr   r:   r;   draft_idvideo_idrf   @py_assert1@py_assert4@py_assert3@py_format6@py_format8detail@py_format5video_details                    r   7test_metadata_save_creates_creative_change_and_activityr   P   s   "8,,NFF	 G.w77u88              
 ||:::;g}A~A~|H&3&3&&&&&&&&&&3&&&&&&&&&&&&8&&&&&8&&&&&&&&&&3&&&&&&&&&&&&&&&&&&&&&&&&&&&ZZ6H6677<<>>F b  b  PV  W`  Pa  b  b  b  b3  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b3  b  b  b  b  b3  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  bWWF:DVWWWW3WWWWWWWWWWWWWWWW3WWWWW3WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW::7X7788==??L]]LQ[D\]]]]3]]]]]]]]]]]]]]]]3]]]]]3]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]   !AAAc                    t          |           \  }}t          |          5 }t          |          \  }}t          ||           d d d            n# 1 swxY w Y   |                    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}	}|                                d
         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}	||	u }|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}}	d S )Nr:   z/api/analytics/video-resultsrb   rc   re   rf   rg   rk   rl   itemsr   rM   rG   z%(py1)s == %(py4)spy1rz   assert %(py6)spy6linkedT)is)z%(py1)s is %(py4)sviews_delta_labelz+40 since last import)r   r   r<   rY   r   r   r   r   r   r   r   r   r   r   ra   )r   r   r   r   r:   _rf   r   r   r   r   r   item@py_assert0@py_assert2r   @py_format7s                    r   9test_video_results_endpoint_returns_views_and_link_statusr   a   s   "8,,NFF	 ,G*733qgU++++, , , , , , , , , , , , , , , zz899H&3&3&&&&&&&&&&3&&&&&&&&&&&&8&&&&&8&&&&&&&&&&3&&&&&&&&&&&&&&&&&&&&&&&&&&&==??7#A&D=C=C=C=C>!T!>T!!!!!!!!!!>T!!!!!>!!!!T!!!!!!!!!!!!!!!!!!!!!!!!!!!#$?(??$(???????????$(??????$????(??????????????????????????????s   $AAAc                    t          |           \  }}t          |          5 }t          |          \  }}t          ||           |j        }d d d            n# 1 swxY w Y   |                    d| ddd           |                    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}
}	|                                d         }|sedddt          j                    v st          j        |          rt          j        |          ndiz  }t          t          j        |                    |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         }ddh}
||
v }|slt          j	        d|fd||
f          t          j        |          t          j        |
          dz  }dd|iz  }t          t          j        |                    d x}x}}
d S )Nr   r[   r\   r]   r^   r`   z/api/analytics/improvementsrb   rc   re   rf   rg   rk   rl   r   zassert %(py0)srh   r   rn   r1   r   r   r   r   r,   measuredneeds_more_snapshots)in)z%(py1)s in %(py4)s)r   r   r<   rY   r8   r   r   r   r   r   r   r   r   r   r   r   ra   )r   r   r   r   r:   r;   r   rf   r   r   r   r   r   r   @py_format1r   r   r   r   s                      r   9test_improvements_endpoint_compares_before_after_snapshotr   p   s}   "8,,NFF	 G.w77ugU++++8              
 LL/X//\r6s6sLtttzz788H&3&3&&&&&&&&&&3&&&&&&&&&&&&8&&&&&8&&&&&&&&&&3&&&&&&&&&&&&&&&&&&&&&&&&&&&MMOOG$ELLLLLLLLLLLL5LLLLL5LLLLLLLLLLLLLLLL8M"-g-"g----------"g-----"----g---------------------------8HE*.D!EE!EEEEEEEEEEE!EEEEEEEEEE!EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEs   +AA Ac                    t          |           \  }}t          |          5 }t          |d d           d d d            n# 1 swxY w Y   |                    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}}|                                d         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 S )N	unlinked1)r:   r>   z/api/analytics/unlinked-postsrb   rc   re   rf   rg   rk   rl   r   r   rE   r   r   r   r   )r   r   rY   r   r   r   r   r   r   r   r   r   r   ra   )r   r   r   r   rf   r   r   r   r   r   r   r   r   r   s                 r   1test_unlinked_posts_endpoint_lists_unmapped_postsr      sM   "8,,NFF	 DGgT{CCCCD D D D D D D D D D D D D D D zz9::H&3&3&&&&&&&&&&3&&&&&&&&&&&&8&&&&&8&&&&&&&&&&3&&&&&&&&&&&&&&&&&&&&&&&&&&&==??7#A&'9:IkI:kIIIIIIIIII:kIIIII:IIIIkIIIIIIIIIIIIIIIIIIIIIIIIIIIIIs   AAAc                    t          |           \  }}t          |          5 }t          |          \  }}|j        }|j        }d d d            n# 1 swxY w Y   |                    d||dd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}}
|                    d|                                           }d |d         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}	}d |d         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}	}d S )Nz/api/analytics/changeshookzShortened first sentence)r/   post_draft_idrn   r_   r`   rb   rc   re   rf   rg   rk   rl   r   c              3   .   K   | ]}|d          dk    V  dS )rn   r   Nrq   rr   s     r   ru   z?test_manual_change_endpoint_creates_activity.<locals>.<genexpr>   s,      OO6vm$.OOOOOOr   rv   rw   rx   ry   c              3   .   K   | ]}|d          dk    V  dS )r}   creative_changeNrq   r   s     r   ru   z?test_manual_change_endpoint_creates_activity.<locals>.<genexpr>   s-      XXEu\"&77XXXXXXr   r   )r   r   r<   r8   rW   r   r   r   r   r   r   r   r   r   r   ra   rx   )r   r   r   r   r:   r;   r   r   rf   r   r   r   r   r   r   r   s                   r   ,test_manual_change_endpoint_creates_activityr      sN   "8,,NFF	 G.w77u88              
 {{3Xhp  BH  Ys  ;t  ;t{  u  uH&3&3&&&&&&&&&&3&&&&&&&&&&&&8&&&&&8&&&&&&&&&&3&&&&&&&&&&&&&&&&&&&&&&&&&&&ZZ1x11227799FOOVI=NOOOO3OOOOOOOOOOOOOOOO3OOOOO3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XXVJEWXXXX3XXXXXXXXXXXXXXXX3XXXXX3XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXr   )Nr=   )&builtinsr   _pytest.assertion.rewrite	assertionrewriter   r   r   r   fastapi.testclientr   sqlmodelr   app.core.configr   app.db.sessionr	   r
   app.mainr   app.models.corer   r   r   r   r   r   r   r   tupler<   strrY   r   r   r   r   r   rq   r   r   <module>r      s                 2 2 2 2 2 2 2 2 2 2 ) ) ) ) ) )       ( ( ( ( ( ( 6 6 6 6 6 6 6 6                       # # #W z97L1M    * 7 :+< RU    <^ ^ ^"@ @ @F F F"J J JY Y Y Y Yr   