o
    ËÉhR"  ã                   @   sj   d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ G dd	„ d	eeƒZd
S )é    )Ú
Permission)ÚHttpRequest)ÚTestCase)Úreverse)Ú	urlencode)Úblocks)ÚWagtailTestUtilsc                   @   sl   e Z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dd„ Zdd„ Zdd„ ZdS )ÚTestStreamFieldBlockPreviewViewc                 C   s   | j  tdƒd|ji¡S )NÚwagtailadmin_block_previewÚid)ÚclientÚgetr   Údefinition_prefix)ÚselfÚblock© r   úf/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/admin/tests/test_block_preview.pyr      s   þz#TestStreamFieldBlockPreviewView.getc                 C   s   |   ¡ | _d S ©N)ÚloginÚuser©r   r   r   r   ÚsetUp   s   z%TestStreamFieldBlockPreviewView.setUpc           	      C   sú   t jdddd}| d¡ |  |¡}|  |jd¡ |  |j¡}| d¡}|  	|¡ |  |d d	¡ |  |d
 d¡ | d¡}|  	|¡ |  |d d¡ | d¡}|  	|¡ |  |j
 ¡ d¡ | d¡}|  	|¡ |  |j
 ¡ d¡ | d¡}|  	|¡ d S )NzSingle-line textzA single line of textúHello, world!)ÚlabelÚdescriptionÚpreview_valueÚsingle_line_textéÈ   ÚhtmlÚlangÚenÚdirÚltrzmeta[name=robots]ÚcontentÚnoindexÚtitlez(Preview for Single-line text (CharBlock)Úmainzdiv.block-single_line_text)r   Ú	CharBlockÚset_namer   ÚassertEqualÚstatus_codeÚget_soupr#   Ú
select_oneÚassertIsNotNoneÚtextÚstrip)	r   r   ÚresponseÚsoupr   Úrobotsr%   r&   Úwrapperr   r   r   Útest_simple   s0   ý










z+TestStreamFieldBlockPreviewView.test_simplec                 C   sF   | j  tdƒ¡}|  |jd¡ | j  tdƒddi¡}|  |jd¡ d S )Nr
   i”  r   Únonexisting)r   r   r   r)   r*   )r   r0   r   r   r   Útest_nonexisting_block4   s   þz6TestStreamFieldBlockPreviewView.test_nonexisting_blockc                 C   sN   d| j _| j  ¡  t ¡ }|  |¡}|  |tdƒd td|j	 
¡ iƒ ¡ d S )NFÚwagtailadmin_loginú?Únext)r   Úis_superuserÚsaver   r'   r   ÚassertRedirectsr   r   Úwsgi_requestÚget_full_path©r   r   r0   r   r   r   Útest_no_admin_permission>   s   

ÿþþz8TestStreamFieldBlockPreviewView.test_no_admin_permissionc                 C   sT   d| j _| j j tjjddd¡ | j  ¡  tj	dd}|  |¡}|  
|jd¡ d S )NFÚwagtailadminÚaccess_admin)Úcontent_type__app_labelÚcodenamer   ©r   r   )r   r:   Úuser_permissionsÚaddr   Úobjectsr   r;   r   r'   r)   r*   r?   r   r   r   Útest_minimal_permissionK   s   þÿ

z7TestStreamFieldBlockPreviewView.test_minimal_permissionc                 C   sV   t  ¡ }|  |¡}|  |jd¡ |  |j¡}| d¡}|  |¡ |  |j	 
¡ d¡ d S )Nr   r&   ÚNone)r   ÚBlockr   r)   r*   r+   r#   r,   r-   r.   r/   ©r   r   r0   r1   r&   r   r   r   Ú test_no_preview_value_no_defaultY   s   


z@TestStreamFieldBlockPreviewView.test_no_preview_value_no_defaultc                 C   sZ   t jdd}|  |¡}|  |jd¡ |  |j¡}| d¡}|  |¡ |  |j	 
¡ d¡ d S )Né*   )Údefaultr   r&   Ú42)r   ÚIntegerBlockr   r)   r*   r+   r#   r,   r-   r.   r/   rL   r   r   r   Ú(test_preview_value_falls_back_to_defaultb   s   


zHTestStreamFieldBlockPreviewView.test_preview_value_falls_back_to_defaultc              	   C   s4  G dd„ dt jƒ}G dd„ dt jƒ}d|ƒ fd|ƒ fdt jdd	fg}|D ]r\}}| j|d
` |  |¡}|  |jd¡ |  |d¡ |  |¡}|  |jd¡ |  |d¡ |  |j¡}| 	d¡}|  
|¡ | 	d¡}	|  
|	¡ |  |	d d¡ | 	d¡}
|  
|
¡ |  |
d d¡ W d   ƒ n1 s’w   Y  q%d S )Nc                   @   ó   e Zd ZG dd„ dƒZdS )zUTestStreamFieldBlockPreviewView.test_preview_template.<locals>.PreviewTemplateViaMetac                   @   ó   e Zd ZdZdS )zZTestStreamFieldBlockPreviewView.test_preview_template.<locals>.PreviewTemplateViaMeta.Metaútests/custom_block_preview.htmlN©Ú__name__Ú
__module__Ú__qualname__Úpreview_templater   r   r   r   ÚMetam   ó    r[   N©rW   rX   rY   r[   r   r   r   r   ÚPreviewTemplateViaMetal   ó    r^   c                   @   s   e Zd Zddd„ZdS )zWTestStreamFieldBlockPreviewView.test_preview_template.<locals>.PreviewTemplateViaMethodNc                 S   ó   dS )NrU   r   )r   ÚvalueÚcontextr   r   r   Úget_preview_templateq   ó   zlTestStreamFieldBlockPreviewView.test_preview_template.<locals>.PreviewTemplateViaMethod.get_preview_template)NN)rW   rX   rY   rc   r   r   r   r   ÚPreviewTemplateViaMethodp   s    re   ÚmetaÚmethodÚkwargrU   )rZ   ©Úviar   zmain .my-preview-wrapperzlink[rel=stylesheet]Úhrefz/static/css/custom.csszscript[src]Úsrcz/static/js/custom.js)r   rK   ÚsubTestr   r)   r*   ÚassertTemplateUsedr+   r#   r,   r-   )r   r^   re   Úcasesrj   r   r0   r1   Úcustom_wrapperÚ
custom_cssÚ	custom_jsr   r   r   Útest_preview_templatek   s4   ý







í€ÿz5TestStreamFieldBlockPreviewView.test_preview_templatec           	   	   C   sÎ   G dd„ dt jƒ}G dd„ dt jƒ}d|ƒ fd|ƒ fdt jdd	fg}|D ]?\}}| j|d
- |  |¡}|  |jd¡ |  |j¡}| d¡}|  	|¡ |  |j
 ¡ d¡ W d   ƒ n1 s_w   Y  q%d S )Nc                   @   rS   )zOTestStreamFieldBlockPreviewView.test_preview_value.<locals>.PreviewValueViaMetac                   @   rT   )zTTestStreamFieldBlockPreviewView.test_preview_value.<locals>.PreviewValueViaMeta.Metar   N)rW   rX   rY   r   r   r   r   r   r[   ’   r\   r[   Nr]   r   r   r   r   ÚPreviewValueViaMeta‘   r_   rt   c                   @   s   e Zd Zdd„ ZdS )zQTestStreamFieldBlockPreviewView.test_preview_value.<locals>.PreviewValueViaMethodc                 S   r`   )Nr   r   r   r   r   r   Úget_preview_value–   rd   zcTestStreamFieldBlockPreviewView.test_preview_value.<locals>.PreviewValueViaMethod.get_preview_valueN)rW   rX   rY   ru   r   r   r   r   ÚPreviewValueViaMethod•   s    rv   rf   rg   rh   r   rE   ri   r   r&   )r   rK   rm   r   r)   r*   r+   r#   r,   r-   r.   r/   )	r   rt   rv   ro   rj   r   r0   r1   r&   r   r   r   Útest_preview_value   s"   ý


ú€ÿz2TestStreamFieldBlockPreviewView.test_preview_valuec                    s²   d‰d}G ‡ ‡‡fdd„dt jƒ‰ ˆ |ˆd}ˆ |¡}ˆ |jd¡ ˆ |j¡}| d¡}ˆ |¡ ˆ |j	 
¡ ˆ¡ ˆ |jd d	¡ ˆ |jd
 d¡ ˆ |jd |¡ d S )NzWith a custom contextzFancy blockc                       s   e Zd Zd‡ ‡‡fdd„	ZdS )z^TestStreamFieldBlockPreviewView.test_custom_preview_context.<locals>.CustomPreviewContextBlockNc                    s„   ˆ  |ˆ¡ ˆ |¡ ˆ | d¡t¡ ˆ | d¡| ¡ ˆ | d¡ˆ ¡ ˆ | d¡tj¡ ˆ  | d¡d¡ i |¥ddd	œ¥S )
NÚrequestÚ	block_defÚblock_classÚbound_blockÚ
page_titlez3Preview for Fancy block (CustomPreviewContextBlock)úAdded by get_preview_contextúCustom title)Úextrar|   )r)   r-   ÚassertIsInstancer   r   ÚassertIsr   Ú
BoundBlock)r   ra   Úparent_context©ÚCustomPreviewContextBlockr   r   r   r   Úget_preview_context­   s,   
þþþÿýzrTestStreamFieldBlockPreviewView.test_custom_preview_context.<locals>.CustomPreviewContextBlock.get_preview_contextr   )rW   rX   rY   r†   r   r„   r   r   r…   ¬   s    r…   )r   r   r   r&   r   r}   r|   r~   ry   )r   rK   r   r)   r*   r+   r#   r,   r-   r.   r/   rb   r   )r   r   r   r0   r1   r&   r   r„   r   Útest_custom_preview_context¨   s   


z;TestStreamFieldBlockPreviewView.test_custom_preview_contextc                 C   s€   G dd„ dt jƒ}|ƒ }|  |¡}|  |jd¡ |  |d¡ |  |j¡}| d¡}|  	|¡ |  |d d¡ |  |d d	¡ d S )
Nc                   @   s$   e Zd Zddd„ZG dd„ dƒZdS )zZTestStreamFieldBlockPreviewView.test_static_image_preview.<locals>.StaticImagePreviewBlockNc                 S   s
   dddœS )Nzblock_previews/preview.jpgúA preview of the block)Ú
image_pathÚimage_descriptionr   )r   ra   rƒ   r   r   r   r†   Ó   s   þznTestStreamFieldBlockPreviewView.test_static_image_preview.<locals>.StaticImagePreviewBlock.get_preview_contextc                   @   rT   )z_TestStreamFieldBlockPreviewView.test_static_image_preview.<locals>.StaticImagePreviewBlock.Metaútests/static_block_preview.htmlNrV   r   r   r   r   r[   Ù   r\   r[   r   )rW   rX   rY   r†   r[   r   r   r   r   ÚStaticImagePreviewBlockÒ   s    
rŒ   r   r‹   zhtml body main imgrl   z"/static/block_previews/preview.jpgÚaltrˆ   )
r   rK   r   r)   r*   rn   r+   r#   r,   r-   )r   rŒ   r   r0   r1   Úimgr   r   r   Útest_static_image_previewÑ   s   



z9TestStreamFieldBlockPreviewView.test_static_image_previewN)rW   rX   rY   r   r   r4   r6   r@   rI   rM   rR   rs   rw   r‡   r   r   r   r   r   r	      s    
		%)r	   N)Údjango.contrib.auth.modelsr   Údjango.httpr   Údjango.testr   Údjango.urlsr   Údjango.utils.httpr   Úwagtailr   Úwagtail.test.utilsr   r	   r   r   r   r   Ú<module>   s    