o
    h!                     @   s   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mZ d dlmZmZmZmZ d d	lmZ G d
d de	ZG dd de	ZG dd dee	ZdS )    )StringIO)quote)
Permission)
management)TestCase)reverse)PageReferenceIndex)AdvertDraftStateModel	EventPageGenericSnippetPage)WagtailTestUtilsc                       .   e Zd ZdgZe fddZdd Z  ZS )TestUsageCount	test.jsonc                    "   t    t }tjd|d d S Nrebuild_references_index)stdoutsupersetUpTestDatar   r   call_commandclsoutput	__class__ a/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/snippets/tests/test_usage.pyr         
zTestUsageCount.setUpTestDatac                 C   s(   t jjdd}| t| d d S )N   pk   )r
   objectsgetassertEqualr	   get_grouped_references_tocount)selfadvertr   r   r    test_snippet_usage_count   s   z'TestUsageCount.test_snippet_usage_count)__name__
__module____qualname__fixturesclassmethodr   r-   __classcell__r   r   r   r    r      
    r   c                       r   )
TestUsedByr   c                    r   r   r   r   r   r   r    r   $   r!   zTestUsedBy.setUpTestDatac                 C   sl   t jjdd}t|}| |d t | |d d t | |d d t | |d d d t d S )Nr"   r#   r   )	r
   r&   r'   r	   r)   assertIsInstancetupler   list)r+   r,   usager   r   r    test_snippet_used_by*   s   
zTestUsedBy.test_snippet_used_by)r.   r/   r0   r1   r2   r   r:   r3   r   r   r   r    r5   !   r4   r5   c                   @   sR   e Zd Zdg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 )TestSnippetUsageViewr   c                 C   s   |   | _d S )N)loginuser)r+   r   r   r    setUp7   s   zTestSnippetUsageView.setUpc                 C   sr   t jjdd}|   d|_|  | jtdt	|j
gd}| |j}|d}| |jddd d S )	NzDraft-enabled Foo, Published)textzDraft-enabled Bar, In Draftz+wagtailsnippets_tests_draftstatemodel:usageargsz.w-breadcrumbs__sublabelT)strip)r   r&   createsave_revisionpublishr?   clientr'   r   r   r$   get_soupcontent
select_oner(   get_text)r+   snippetresponsesoupsublabelr   r   r    test_use_latest_draft_as_title:   s   

z3TestSnippetUsageView.test_use_latest_draft_as_titlec                 C   s   | j dd$ tjjdd}|  tdtjjddd}|j|d W d    n1 s-w   Y  | jt	d	d
gd}| 
|d | 
|d | j
|ddd | 
|d | j
|ddd | j|ddd | 
|d | 
|t	d|jgdd  d S )NTexecuter%   r#   Foobar Titler"   titlesnippet_content_objectinstance"wagtailsnippets_tests_advert:usage1r@   !Welcome to the Wagtail test site!<td>Generic snippet page</td>htmlSnippet content object<th>Field</th> <th>If you confirm deletion</th>zwagtailadmin_pages:editz&#:w:contentpath=snippet_content_object)captureOnCommitCallbacksr   r&   r'   saver   r
   	add_childrF   r   assertContainsassertNotContainsid)r+   pagegfk_pagerL   r   r   r    
test_usageL   s8   zTestSnippetUsageView.test_usagec                 C   sr   | j dddd}tjjddd}|j| | jddd | jtd	d
gd}| 	|j
d | |td d S )N
basicadminbasicadmin@example.compasswordusernameemailrl   wagtailadminaccess_admincontent_type__app_labelcodenamern   rl   rX   rY   r@   i.  wagtailadmin_home)create_userr   r&   r'   user_permissionsaddr<   rF   r   r(   status_codeassertRedirects)r+   r=   admin_permissionrL   r   r   r    -test_usage_without_edit_permission_on_snippetk   s    zBTestSnippetUsageView.test_usage_without_edit_permission_on_snippetc                 C   s  | j dd tjjdd}|  W d    n1 sw   Y  | jdddd}tjjd	d
d}tjjddd}|j| |j| | j	ddd | j
tddgd}| |jd | |d | |d | j|ddd | j|ddd | j|ddd | j|ddd d S )NTrP   r%   r#   rj   rk   rl   rm   rp   rq   rr   testschange_advertru   rX   rY   r@      rZ   z(Private page)<td>Page</td>r\   r_   r`   z<li>Advert</li>)ra   r   r&   r'   rb   rw   r   rx   ry   r<   rF   r   r(   rz   re   rd   )r+   rg   r=   r|   advert_permissionrL   r   r   r    *test_usage_without_edit_permission_on_page   s:   
z?TestSnippetUsageView.test_usage_without_edit_permission_on_pagec                 C   s   | j dd tjjdd}|  W d    n1 sw   Y  | jtddgdd }| |d	 | j|d
dd | j|ddd | j|ddd | |d | |d d S )NTrP   r%   r#   rX   rY   r@   ?describe_on_delete=1rZ   r   r\   r_   r`   r
   z+: the advert placement will also be deleted)	ra   r   r&   r'   rb   rF   r   rd   re   r+   rg   rL   r   r   r    *test_usage_with_describe_on_delete_cascade   s   
z?TestSnippetUsageView.test_usage_with_describe_on_delete_cascadec                 C   s   | j dd tj }|  W d    n1 sw   Y  | |j  d | j	
td|jjgdd }| ||j | j|ddd | j|d	dd | j|d
dd | |d | |d d S )NTrP   r"   zwagtailimages:image_usager@   r   z<td>Event page</td>r\   r_   r`   z
Feed image: will unset the reference)ra   r   r&   firstrb   r(   
feed_image	get_usager*   rF   r'   r   rf   rd   rT   re   r   r   r   r    +test_usage_with_describe_on_delete_set_null   s    

z@TestSnippetUsageView.test_usage_with_describe_on_delete_set_nullc                 C   s   | j dd  tjjdd}td|d}tjjddj|d W d    n1 s)w   Y  | t	|
 d | jtdd	gd
d }| |d | |d | j|ddd | j|ddd | j|ddd | |d | |d d S )NTrP   r"   r#   rR   rS   rV   rX   rY   r@   r   rZ   r[   r\   r_   r`   r^   r   )ra   r
   r&   r'   r   r   rc   r(   r	   r)   r*   rF   r   re   rd   )r+   r,   rh   rL   r   r   r    &test_usage_with_describe_on_delete_gfk   s*   	z;TestSnippetUsageView.test_usage_with_describe_on_delete_gfkN)r.   r/   r0   r1   r>   rO   ri   r}   r   r   r   r   r   r   r   r    r;   4   s    "r;   N)ior   django.contrib.admin.utilsr   django.contrib.auth.modelsr   django.corer   django.testr   django.urlsr   wagtail.modelsr   r	   wagtail.test.testapp.modelsr
   r   r   r   wagtail.test.utilsr   r   r5   r;   r   r   r   r    <module>   s    