U
    |®Þh*  ã                   @   sl   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
 d dlmZmZmZmZ G dd„ deƒZdS )	é    N)ÚContentType)ÚTestCase)Úfreeze_time)ÚPageÚRevisionÚget_default_page_content_type)ÚFullFeaturedSnippetÚRevisableGrandChildModelÚRevisableModelÚ
SimplePagec                   @   s„   e Zd Zedd„ ƒZedd„ ƒZdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zedƒdd„ ƒZdd„ ZdS )ÚTestRevisableModelc                 C   s"   t jjdd| _tj t ¡| _d S )NÚfoo©Útext)r
   ÚobjectsÚcreateÚinstancer   Úget_for_modelÚcontent_type)Úcls© r   úi/var/www/dating/data/www/fatepal.com/env/lib/python3.8/site-packages/wagtail/tests/test_revision_model.pyÚsetUpTestData   s    z TestRevisableModel.setUpTestDatac                 C   s,   t jjdd}tdddd}|j|d |S )Nz/home/)Zurl_pathzHello worldzhello-worldÚhello)ÚtitleZslugÚcontent©r   )r   r   Úgetr   Z	add_child)r   ZhomepageÚ
hello_pager   r   r   Úcreate_page   s      ÿzTestRevisableModel.create_pagec                 C   sj   d| j _| j  ¡ }| j j ¡ }| j  ¡  |  ||¡ |  | j j|¡ |  |jd d¡ |  | j jd¡ d S )NÚupdatedr   r   )	r   r   Úsave_revisionÚ	revisionsÚfirstÚrefresh_from_dbÚassertEqualZlatest_revisionr   ©ÚselfÚrevisionÚrevision_from_dbr   r   r   Útest_can_save_revision   s    

z)TestRevisableModel.test_can_save_revisionc              	   C   sp   d| j _| j  ¡  d| j _| j  ¡ }| j  ¡  |  d¡ | j  ¡ }W 5 Q R X |  ||¡ |  |jd d¡ d S )Nr    zupdated twiceé   r   )r   r   r!   r$   ZassertNumQueriesZget_latest_revisionr%   r   r&   r   r   r   Útest_get_latest_revision_exists-   s    


z2TestRevisableModel.test_get_latest_revision_existsc                 C   sh   d| j _| j  ¡ }tjj| j| j| j jd ¡ }|  	||¡ |  	| j  
¡ | j¡ |  	| j  ¡ | j¡ d S )Nr    ©Úbase_content_typer   Ú	object_id)r   r   r!   r   r   Úfilterr   Úpkr#   r%   Úget_base_content_typeÚget_content_typer&   r   r   r   Ú%test_content_type_without_inheritance;   s    
ý
z8TestRevisableModel.test_content_type_without_inheritancec                 C   sv   t jjdd}d|_| ¡ }| j}tj t ¡}tjj	|||j
d ¡ }|  ||¡ |  | ¡ |¡ |  | ¡ |¡ d S )NÚtestr   ztest updatedr-   )r	   r   r   r   r!   r   r   r   r   r0   r1   r#   r%   r2   r3   )r'   r   r(   r.   r   r)   r   r   r   Ú"test_content_type_with_inheritanceI   s    ý
z5TestRevisableModel.test_content_type_with_inheritancec                 C   sp   |   ¡ }d|_| ¡ }tƒ }tj t¡}tjj	|||j
d ¡ }|  ||¡ |  | ¡ |¡ |  | ¡ |¡ d S )NzUpdated worldr-   )r   r   r!   r   r   r   r   r   r   r0   r1   r#   r%   r2   r3   )r'   r   r(   r.   r   r)   r   r   r   Ú test_content_type_for_page_modelZ   s    ý
z3TestRevisableModel.test_content_type_for_page_modelc                 C   s^   d| j _| j  ¡  | j  ¡  | j j ¡ }| ¡ }|  |t¡ |  	|jd¡ |  	| j jd¡ d S )Nr    r   )
r   r   r!   r$   r"   r#   Ú	as_objectÚassertIsInstancer
   r%   )r'   r(   r   r   r   r   Útest_as_objectk   s    

z!TestRevisableModel.test_as_objectc                 C   s\   |   ¡ }d|_| ¡  | ¡  |j ¡ }| ¡ }|  |t¡ |  	|jd¡ |  	|jd¡ d S )Nr    r   )
r   r   r!   r$   r"   r#   r8   r9   r   r%   )r'   r   r(   r   r   r   r   Útest_as_object_with_pagex   s    
z+TestRevisableModel.test_as_object_with_pagec                 C   sb   | j  ¡ }|  | ¡ ¡ | j  ¡ }|  | ¡ ¡ |  | ¡ ¡ |  |j|j¡ |  |j|j¡ d S ©N)r   r!   Ú
assertTrueÚis_latest_revisionÚassertFalseÚ
assertLessÚ
created_atÚid©r'   r#   Úsecondr   r   r   Ú2test_is_latest_revision_newer_creation_date_and_id…   s    

zETestRevisableModel.test_is_latest_revision_newer_creation_date_and_idc                 C   s~   | j  ¡ }|  | ¡ ¡ | j  ¡ }|jtjdd |_| ¡  |  | ¡ ¡ |  | ¡ ¡ |  	|j|j¡ |  
|j|j¡ d S )Né	   )Údays)r   r!   r=   r>   rA   ÚdatetimeÚ	timedeltaÚsaver?   ZassertGreaterr@   rB   rC   r   r   r   Ú4test_is_latest_revision_newer_creation_date_older_id‘   s    

zGTestRevisableModel.test_is_latest_revision_newer_creation_date_older_idz
2023-01-19c                 C   sb   | j  ¡ }|  | ¡ ¡ | j  ¡ }|  | ¡ ¡ |  | ¡ ¡ |  |j|j¡ |  |j|j¡ d S r<   )	r   r!   r=   r>   r?   r%   rA   r@   rB   rC   r   r   r   Ú+test_is_latest_revision_same_creation_dates    s    

z>TestRevisableModel.test_is_latest_revision_same_creation_datesc              
   C   s²   |   ¡ }tjjdd}|df|df| jdfg}|D ]z\}}| j|d` | ¡ }| ¡ t|j	ƒdœ}|  
tjjf |Ž ¡ |¡ | ¡  |  tjjf |Ž ¡ | ¡ W 5 Q R X q2d S )Nr   r   TFr   )r.   r/   )r   r   r   r   r   ZsubTestr!   r2   Ústrr1   r%   r   r0   r#   ÚdeleteZassertIsÚexists)r'   ÚpageZfull_featured_snippetZcasesr   Zcascadesr(   Úqueryr   r   r   Ú&test_revision_cascade_on_object_delete­   s    úþz9TestRevisableModel.test_revision_cascade_on_object_deleteN)Ú__name__Ú
__module__Ú__qualname__Úclassmethodr   r   r*   r,   r4   r6   r7   r:   r;   rE   rK   r   rL   rR   r   r   r   r   r      s    


r   )rH   Z"django.contrib.contenttypes.modelsr   Zdjango.testr   Z	freezegunr   Zwagtail.modelsr   r   r   Zwagtail.test.testapp.modelsr   r	   r
   r   r   r   r   r   r   Ú<module>   s   