o
    ÌÉ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   úa/var/www/html/ndineBlogger/venv/lib/python3.10/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/)Úurl_pathzHello worldzhello-worldÚhello)ÚtitleÚslugÚcontent©r   )r   r   Úgetr   Ú	add_child)r   Ú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ÚassertEqualÚlatest_revisionr   ©ÚselfÚrevisionÚrevision_from_dbr   r   r   Útest_can_save_revision   s   

z)TestRevisableModel.test_can_save_revisionc                 C   s„   d| j _| j  ¡  d| j _| j  ¡ }| j  ¡  |  d¡ | j  ¡ }W d   ƒ n1 s,w   Y  |  ||¡ |  |jd d¡ d S )Nr$   zupdated twiceé   r   )r   r   r%   r(   ÚassertNumQueriesÚget_latest_revisionr)   r   r+   r   r   r   Útest_get_latest_revision_exists-   s   


þz2TestRevisableModel.test_get_latest_revision_existsc                 C   s‚   d| j _| j  ¡ }tjj| j| j| j jd ¡ }|  	||¡ |  	| j  
¡ | j¡ |  	| j  ¡ | j¡ |  	tj | j ¡ ¡ |¡ d S )Nr$   ©Úbase_content_typer   Ú	object_id)r   r   r%   r   r   Úfilterr   Úpkr'   r)   Úget_base_content_typeÚget_content_typeÚfor_instancer+   r   r   r   Ú%test_content_type_without_inheritance;   s   
ýüz8TestRevisableModel.test_content_type_without_inheritancec                 C   sæ   t jjdd}d|_| ¡ }| j}tj t ¡}tjj	|||j
d ¡ }|  ||¡ |  | ¡ |¡ |  | ¡ |¡ |  |t¡ |  |t ¡ |  tj |¡ ¡ |¡ tjj|j
d}|  |t¡ |  |t ¡ |  tj |¡ ¡ |¡ d S )NÚtestr   ztest updatedr4   ©r8   )r	   r   r   r   r%   r   r   r   r   r7   r8   r'   r)   r9   r:   ÚassertIsInstancer
   r;   r   ÚassertNotIsInstance)r,   r   r-   r5   r   r.   Úbase_instancer   r   r   Ú"test_content_type_with_inheritanceL   s,   ýüz5TestRevisableModel.test_content_type_with_inheritancec                 C   sà   |   ¡ }d|_| ¡ }tƒ }tj t¡}tjj	|||j
d ¡ }|  ||¡ |  | ¡ |¡ |  | ¡ |¡ |  |t¡ |  |t¡ |  tj |¡ ¡ |¡ tjj|j
d}|  |t¡ |  |t¡ |  tj |¡ ¡ |¡ d S )NzUpdated worldr4   r>   )r#   r   r%   r   r   r   r   r   r   r7   r8   r'   r)   r9   r:   r?   r   r;   r   r@   )r,   r"   r-   r5   r   r.   rA   r   r   r   Ú test_content_type_for_page_modeli   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_objectr?   r
   r)   )r,   r-   r   r   r   r   Útest_as_object†   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'   rD   r?   r   r)   )r,   r"   r-   r   r   r   r   Útest_as_object_with_page“   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%   rH   rI   rL   ÚdatetimeÚ	timedeltaÚsaverJ   ÚassertGreaterrK   rM   rN   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 rG   )	r   r%   rH   rI   rJ   r)   rL   rK   rM   rN   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 ]K\}}| j|d9 | ¡ }| ¡ t|j	ƒdœ}|  
tjjdi |¤Ž ¡ |¡ | ¡  |  tjjdi |¤Ž ¡ | ¡ W d   ƒ n1 s_w   Y  qd S )Nr   r   TFr   )r5   r6   r   )r#   r   r   r   r   ÚsubTestr%   r9   Ústrr8   r)   r   r7   r'   ÚdeleteÚassertIsÚexists)r,   ÚpageÚfull_featured_snippetÚcasesr   Úcascadesr-   Úqueryr   r   r   Ú&test_revision_cascade_on_object_deleteÈ   s$   úþ"ø€ÿz9TestRevisableModel.test_revision_cascade_on_object_deleteN)Ú__name__Ú
__module__Ú__qualname__Úclassmethodr   r#   r/   r3   r<   rB   rC   rE   rF   rP   rW   r   rX   rc   r   r   r   r   r      s"    


r   )rS   Ú"django.contrib.contenttypes.modelsr   Údjango.testr   Ú	freezegunr   Úwagtail.modelsr   r   r   Úwagtail.test.testapp.modelsr   r	   r
   r   r   r   r   r   r   Ú<module>   s    