a
    Dgq                     @   s\  d dl 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 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mZ d dlmZmZmZmZ d dlm Z m!Z! d dl"m#Z# d dl$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Z+G dd deZ,G dd deZ-G dd deZ.G dd deZ/dS )     N)template)cache)make_template_fragment_key)HttpRequest)TemplateSyntaxErrorVariableDoesNotExist)TestCase)override_settings)NoReverseMatch)
SafeString)gettext_lazy)get_dummy_request"make_wagtail_template_fragment_keyresolve_model_string)LocalePageSiteSiteRootPath)SITE_ROOT_PATHS_CACHE_KEYSITE_ROOT_PATHS_CACHE_VERSION)WagtailPageCacheNode)richtextslugurl)
SimplePagec                       s   e Zd ZdgZ f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g dddd Zdd Zdd Zeg dddd Zeg dddd  Zd!d" Zeg ddd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Z  ZS )/TestPageUrlTags	test.jsonc                    s   t    t  d S N)supersetUpr   clearself	__class__ R/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/tests/tests.pyr       s    
zTestPageUrlTags.setUpc                 C   s*   | j d}| |jd | |d d S )N/events/   z*<a href="/events/christmas/">Christmas</a>clientgetassertEqualstatus_codeZassertContainsr!   responser$   r$   r%   test_pageurl_tag&   s    z TestPageUrlTags.test_pageurl_tagc                 C   sX   t d}| d$ |t dd i}W d    n1 s>0    Y  | d| d S )NzX{% load wagtailcore_tags %}<a href="{% pageurl page fallback='fallback' %}">Fallback</a>r   page!<a href="/fallback/">Fallback</a>r   TemplateassertNumQueriesrenderContextassertInr!   tplresultr$   r$   r%   $test_pageurl_with_named_url_fallback+   s    2z4TestPageUrlTags.test_pageurl_with_named_url_fallbackc                 C   s@   G dd d}t d}|t d | d}| d| d S )Nc                   @   s   e Zd Zdd ZdS )z_TestPageUrlTags.test_pageurl_with_get_absolute_url_object_fallback.<locals>.ObjectWithURLMethodc                 S   s   dS )Nz/object-specific-url/r$   r    r$   r$   r%   get_absolute_url5   s    zpTestPageUrlTags.test_pageurl_with_get_absolute_url_object_fallback.<locals>.ObjectWithURLMethod.get_absolute_urlN)__name__
__module____qualname__r<   r$   r$   r$   r%   ObjectWithURLMethod4   s   r@   zd{% load wagtailcore_tags %}<a href="{% pageurl page fallback=object_with_url_method %}">Fallback</a>)r0   Zobject_with_url_methodz,<a href="/object-specific-url/">Fallback</a>r   r3   r5   r6   r7   )r!   r@   r9   r:   r$   r$   r%   2test_pageurl_with_get_absolute_url_object_fallback3   s    
zBTestPageUrlTags.test_pageurl_with_get_absolute_url_object_fallbackc                 C   sF   t d}|t ddi}| d| | d| | d| dS )zc
        `django.shortcuts.resolve_url` accepts strings containing '.' or '/' as they are.
        a  
            {% load wagtailcore_tags %}
            <a href="{% pageurl page fallback='.' %}">Same page fallback</a>
            <a href="{% pageurl page fallback='/' %}">Homepage fallback</a>
            <a href="{% pageurl page fallback='../' %}">Up one step fallback</a>
            r0   Nz"<a href=".">Same page fallback</a>z!<a href="/">Homepage fallback</a>z&<a href="../">Up one step fallback</a>rA   r8   r$   r$   r%   +test_pageurl_with_valid_url_string_fallbackB   s    z;TestPageUrlTags.test_pageurl_with_valid_url_string_fallbackc                 C   sL   t d}| t$ |t ddi W d   n1 s>0    Y  dS )z]
        Strings not containing '.' or '/', and not matching a named URL will error.
        ze{% load wagtailcore_tags %}<a href="{% pageurl page fallback='not-existing-endpoint' %}">Fallback</a>r0   N)r   r3   assertRaisesr
   r5   r6   r!   r9   r$   r$   r%   -test_pageurl_with_invalid_url_string_fallbackS   s
    z=TestPageUrlTags.test_pageurl_with_invalid_url_string_fallbackc                 C   s*   | j d}| |jd | |d d S )Nz/events/christmas/r'   z+<a href="/events/">Back to events index</a>r(   r-   r$   r$   r%   test_slugurl_tag]   s    z TestPageUrlTags.test_slugurl_tagc                 C   s   t jjdd}td}| d$ |td|i}W d    n1 sL0    Y  | d| |t|t	 d}| d| d S )N/home/events/Zurl_pathL{% load wagtailcore_tags %}<a href="{% pageurl page %}">{{ page.title }}</a>   r0   <a href="/events/">Events</a>r0   request)
r   objectsr*   r   r3   r4   r5   r6   r7   r   )r!   r0   r9   r:   r$   r$   r%   'test_pageurl_without_request_in_contextb   s    2z7TestPageUrlTags.test_pageurl_without_request_in_contextc                 C   s   t jjdd}td}t }| d& |t||d}W d    n1 sT0    Y  | 	d| | d& |t||d}W d    n1 s0    Y  | 	d| d S )NrH   rI   rJ      rM   rL   r   )
r   rO   r*   r   r3   r   r4   r5   r6   r7   r!   r0   r9   rN   r:   r$   r$   r%   test_pageurl_cachess   s    44z#TestPageUrlTags.test_pageurl_caches)
testserver	localhostunknown.example.com)ZALLOWED_HOSTSc                 C   sx   t jjdd}td}t }d|jd< | d& |t	||d}W d    n1 s^0    Y  | 
d| d S )	NrH   rI   rJ   rV   	HTTP_HOSTrQ   rM   rL   )r   rO   r*   r   r3   r   METAr4   r5   r6   r7   rR   r$   r$   r%   test_pageurl_with_unknown_site   s    
4z.TestPageUrlTags.test_pageurl_with_unknown_sitec                 C   sN   t d}| td$ |t dd i W d    n1 s@0    Y  d S )NrJ   z,pageurl tag expected a Page object, got Noner0   )r   r3   assertRaisesRegex
ValueErrorr5   r6   rE   r$   r$   r%   test_bad_pageurl   s    z TestPageUrlTags.test_bad_pageurlc                 C   s@   t ti d}| | t tdt idd}| | d S )Nzbad-slug-doesnt-existrN   contextslug)r   r   r6   assertIsNoner   r!   r:   r$   r$   r%   test_bad_slugurl   s    
z TestPageUrlTags.test_bad_slugurl)rT   rU   site2.example.comc                 C   sx   t jjdd}|jdddd}tjjd|d}t d	d
d}|j|d t|d}tt	
d|id
d}| |d d S )N/home/rI   New home pagenew-hometitler_   Zupdate_attrsrc   hostname	root_pageZ	Christmas	christmasinstancesiterN   r]   z/christmas/)r   rO   r*   copyr   create	add_childr   r   r   r6   r+   )r!   	home_pagenew_home_pagesecond_siteZnew_christmas_pagerN   urlr$   r$   r%   -test_slugurl_tag_returns_url_for_current_site   s    
z=TestPageUrlTags.test_slugurl_tag_returns_url_for_current_sitec                 C   s`   t jjdd}|jdddd}tjjd|d}t|d	}td
t	d|id}| 
|d d S )Nrd   rI   re   rf   rg   ri   rc   rj   rp   rm   rN   )r_   r^   z"http://localhost/events/christmas/)r   rO   r*   rr   r   rs   r   r   r   r6   r+   )r!   ru   rv   rw   rN   rx   r$   r$   r%   +test_slugurl_tag_returns_url_for_other_site   s    
z;TestPageUrlTags.test_slugurl_tag_returns_url_for_other_sitec                 C   sl   t ti d}| |d | d& t tdt id}W d    n1 sR0    Y  | |d d S )Neventsr&      rN   )r   r   r6   r+   r4   r   ra   r$   r$   r%   'test_slugurl_without_request_in_context   s    "z7TestPageUrlTags.test_slugurl_without_request_in_contextc                 C   s4   t  }d|jd< ttd|id}| |d d S )NrV   rW   rN   r{   r&   )r   rX   r   r   r6   r+   )r!   rN   r:   r$   r$   r%   &test_slugurl_with_null_site_in_request   s    
z6TestPageUrlTags.test_slugurl_with_null_site_in_requestc                 C   sf   t d}tjjdd}| d$ |t d|i}W d    n1 sL0    Y  | d| d S )NF{% load wagtailcore_tags %}<a href="{% fullpageurl page %}">Events</a>rH   rI   rK   r0   z-<a href="http://localhost/events/">Events</a>)	r   r3   r   rO   r*   r4   r5   r6   r7   )r!   r9   r0   r:   r$   r$   r%   test_fullpageurl   s    2z TestPageUrlTags.test_fullpageurlc                 C   sX   t d}| d$ |t dd i}W d    n1 s>0    Y  | d| d S )N\{% load wagtailcore_tags %}<a href="{% fullpageurl page fallback='fallback' %}">Fallback</a>r   r0   r1   r2   r8   r$   r$   r%   (test_fullpageurl_with_named_url_fallback   s    2z8TestPageUrlTags.test_fullpageurl_with_named_url_fallbackc                 C   s\   t d}| d( |t d t d}W d    n1 sB0    Y  | d| d S )Nr   r   rM   z1<a href="http://localhost/fallback/">Fallback</a>)r   r3   r4   r5   r6   r   r7   r8   r$   r$   r%   'test_fullpageurl_with_absolute_fallback   s    "z7TestPageUrlTags.test_fullpageurl_with_absolute_fallbackc                 C   sL   t d}| t$ |t ddi W d    n1 s>0    Y  d S )Nr   r0   {   r   r3   rD   r[   r5   r6   rE   r$   r$   r%   "test_fullpageurl_with_invalid_page   s
    z2TestPageUrlTags.test_fullpageurl_with_invalid_pagec                 C   sL   t d}| t$ |t ddi W d    n1 s>0    Y  d S )NzB{% load wagtailcore_tags %}<a href="{% pageurl page %}">Events</a>r0   r   r   rE   r$   r$   r%   test_pageurl_with_invalid_page   s
    z.TestPageUrlTags.test_pageurl_with_invalid_page)r=   r>   r?   fixturesr   r/   r;   rB   rC   rF   rG   rP   rS   r	   rY   r\   rb   ry   rz   r}   r~   r   r   r   r   r   __classcell__r$   r$   r"   r%   r      s4   





	
r   c                   @   s"   e Zd ZdgZdd Zdd ZdS )TestWagtailSiteTagr   c                 C   s>   t tj d}td}|td|i}| d| d S )Nrp   X{% load wagtailcore_tags %}{% wagtail_site as current_site %}{{ current_site.hostname }}rN   rU   )	r   r   rO   firstr   r3   r5   r6   r+   )r!   rN   r9   r:   r$   r$   r%   test_wagtail_site_tag  s    z(TestWagtailSiteTag.test_wagtail_site_tagc                 C   s*   t d}|t i }| d| d S )Nr    )r   r3   r5   r6   r+   r8   r$   r$   r%   2test_wagtail_site_tag_with_missing_request_context  s
    zETestWagtailSiteTag.test_wagtail_site_tag_with_missing_request_contextN)r=   r>   r?   r   r   r   r$   r$   r$   r%   r     s   	r   c                   @   s\   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
edddd ZdS )TestSiteRootPathsCacher   c                 C   s   t jttdS )Nversion)r   r*   r   r   r    r$   r$   r%   get_cached_site_root_paths  s    z1TestSiteRootPathsCache.get_cached_site_root_pathsc              	   C   s6   t jjdd}|j}| |  tdddddg dS )zK
        This tests that the cache is populated when building URLs
        rd   rI      http://localhostenZsite_id	root_pathZroot_urllanguage_codeN)r   rO   r*   rx   r+   r   r   r!   homepage_r$   r$   r%   
test_cache"  s    z!TestSiteRootPathsCache.test_cachec              	   C   sZ   t  }| |tdddddg tjttt	|t
d t  }| |d t dS )	z
        This tests that, even if the cache backend uses JSON serialization,
        get_site_root_paths() returns a list of SiteRootPath objects.
        r   rd   r   r   r   r   r   N)r   Zget_site_root_pathsr+   r   r   setr   jsonloadsdumpsr   assertIsInstancera   r$   r$   r%   *test_cache_backend_uses_json_serialization9  s$    zATestSiteRootPathsCache.test_cache_backend_uses_json_serializationc              	   C   sV   t jjdd}|j}| |  tdddddg tjjdd  | 	|   d	S )
zO
        This tests that the cache is cleared whenever a site is saved
        rd   rI   r   r   r   r   TZis_default_siteN)
r   rO   r*   rx   r+   r   r   r   saver`   r   r$   r$   r%   !test_cache_clears_when_site_savedW  s    z8TestSiteRootPathsCache.test_cache_clears_when_site_savedc              	   C   sV   t jjdd}|j}| |  tdddddg tjjdd  | 	|   d	S )
zQ
        This tests that the cache is cleared whenever a site is deleted
        rd   rI   r   r   r   r   Tr   N)
r   rO   r*   rx   r+   r   r   r   deleter`   r   r$   r$   r%   #test_cache_clears_when_site_deletedt  s    z:TestSiteRootPathsCache.test_cache_clears_when_site_deletedc                 C   s   t jjdd}t jjdd}tjjdd}tddd	d
}|j|d ||_|  |j}|j	|dd t jj|j
d}| |jd dS )a  
        This tests for an issue where if a site root page was moved, all
        the page urls in that site would change to None.

        The issue was caused by the 'wagtail_site_root_paths' cache
        variable not being cleared when a site root page was moved. Which
        left all the child pages thinking that they are no longer in the
        site and return None as their url.

        Fix: d6cce69a397d08d5ee81a8cbc1977ab2c9db2682
        Discussion: https://github.com/wagtail/wagtail/issues/7
        r   idrd   rI   Tr   zNew Homepageznew-homepageZhello)rh   r_   contentrn   z
last-child)pos/N)r   rO   r*   r   r   rt   rl   r   rx   mover   r+   )r!   rl   r   Zdefault_siteZnew_homepager   r$   r$   r%   &test_cache_clears_when_site_root_moves  s    z=TestSiteRootPathsCache.test_cache_clears_when_site_root_movesc                 C   sJ   t jjdd}|j}d|_d|_|  t jj|jd}| |jd dS )a  
        This tests for an issue where if a site root pages slug was
        changed, all the page urls in that site would change to None.

        The issue was caused by the 'wagtail_site_root_paths' cache
        variable not being cleared when a site root page was changed.
        Which left all the child pages thinking that they are no longer in
        the site and return None as their url.

        Fix: d6cce69a397d08d5ee81a8cbc1977ab2c9db2682
        Discussion: https://github.com/wagtail/wagtail/issues/157
        rd   rI   zNew homerf   r   r   N)	r   rO   r*   rx   rh   r_   r   r   r+   r   r$   r$   r%   -test_cache_clears_when_site_root_slug_changes  s    zDTestSiteRootPathsCache.test_cache_clears_when_site_root_slug_changesT)ZWAGTAIL_I18N_ENABLEDc                 C   s>   t jjdd}|j}|jtjjdddd}| |jd d S )Nrd   rI   fr)r   T)aliasr   )r   rO   r*   rx   Zcopy_for_translationr   rs   r+   )r!   r   r   Ztranslated_homepager$   r$   r%   7test_cache_clears_when_site_root_is_translated_as_alias  s    zNTestSiteRootPathsCache.test_cache_clears_when_site_root_is_translated_as_aliasN)r=   r>   r?   r   r   r   r   r   r   r   r   r	   r   r$   r$   r$   r%   r     s   (r   c                   @   sd   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S )TestResolveModelStringc                 C   s   t d}| |t d S )Nwagtailcore.Pager   r+   r   r!   modelr$   r$   r%   test_resolve_from_string  s    z/TestResolveModelString.test_resolve_from_stringc                 C   s   t ddd}| |t d S )Nr   ZwagtailcoreZdefault_appr   r   r$   r$   r%   )test_resolve_from_string_with_default_app  s    z@TestResolveModelString.test_resolve_from_string_with_default_appc                 C   s   t ddd}| |t d S )Nr   wagtailadminr   r   r   r$   r$   r%   3test_resolve_from_string_with_different_default_app  s    zJTestResolveModelString.test_resolve_from_string_with_different_default_appc                 C   s   t t}| |t d S r   )r   r   r+   r   r$   r$   r%   test_resolve_from_class  s    z.TestResolveModelString.test_resolve_from_classc                 C   s   |  ttd d S )Nzwagtail.core.PagerD   r[   r   r    r$   r$   r%    test_resolve_from_string_invalid  s    z7TestResolveModelString.test_resolve_from_string_invalidc                 C   s   | j ttddd d S )Nr   r   r   rD   LookupErrorr   r    r$   r$   r%   3test_resolve_from_string_with_incorrect_default_app   s    zJTestResolveModelString.test_resolve_from_string_with_incorrect_default_appc                 C   s   |  ttd d S )Nzwagtailadmin.Pager   r    r$   r$   r%   2test_resolve_from_string_with_unknown_model_string  s    zITestResolveModelString.test_resolve_from_string_with_unknown_model_stringc                 C   s   |  ttd d S )Nr   r   r    r$   r$   r%   ,test_resolve_from_string_with_no_default_app  s    zCTestResolveModelString.test_resolve_from_string_with_no_default_appc                 C   s   t t}| |t d S r   )r   objectr+   r   r$   r$   r%   )test_resolve_from_class_that_isnt_a_model  s    z@TestResolveModelString.test_resolve_from_class_that_isnt_a_modelc                 C   s   |  ttt d S r   r   r    r$   r$   r%   test_resolve_from_bad_type  s    z1TestResolveModelString.test_resolve_from_bad_typec                 C   s   |  ttd  d S r   r   r    r$   r$   r%   test_resolve_from_none  s    z-TestResolveModelString.test_resolve_from_noneN)r=   r>   r?   r   r   r   r   r   r   r   r   r   r   r   r$   r$   r$   r%   r     s   r   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestRichtextTagc                 C   s$   t d}| |d | |t d S )NzHello world!)r   r+   r   r   ra   r$   r$   r%   test_call_with_text  s    z#TestRichtextTag.test_call_with_textc                 C   s   t td}| |d d S )Ntest)r   r   r+   ra   r$   r$   r%   test_call_with_lazy  s    z#TestRichtextTag.test_call_with_lazyc                 C   s   t d }| |d d S )Nr   )r   r+   ra   r$   r$   r%   test_call_with_none   s    z#TestRichtextTag.test_call_with_nonec                 C   s8   |  td td W d    n1 s*0    Y  d S )N4'richtext' template filter received an invalid value*   rZ   	TypeErrorr   r    r$   r$   r%   test_call_with_invalid_value$  s    z,TestRichtextTag.test_call_with_invalid_valuec                 C   s8   |  td td W d    n1 s*0    Y  d S )Nr   s   Hello world!r   r    r$   r$   r%   test_call_with_bytes*  s    z$TestRichtextTag.test_call_with_bytesN)r=   r>   r?   r   r   r   r   r   r$   r$   r$   r%   r     s
   r   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestWagtailCacheTagc                 C   s   t   d S r   )r   r   r    r$   r$   r%   r   2  s    zTestWagtailCacheTag.setUpc                 C   sv   t  }td}|t|ddid}| |d |t|ddid}| |d | ttdd d S )NU{% load wagtail_cache %}{% wagtailcache 100 test %}{{ foo.bar }}{% endwagtailcache %}barfoobarrN   foobazr   	r   r   r3   r5   r6   r+   r   r*   r   r!   rN   r9   r:   result2r$   r$   r%   test_caches5  s    zTestWagtailCacheTag.test_cachesc                 C   s   t  }td}|t|ddid}| |d |t|ddid}| |d | ttdddigd | ttdddigd d S )NzY{% load wagtail_cache %}{% wagtailcache 100 test foo %}{{ foo.bar }}{% endwagtailcache %}r   r   r   r   r   r   r   r$   r$   r%   $test_caches_on_additional_parametersG  s$    z8TestWagtailCacheTag.test_caches_on_additional_parametersc                 C   sz   t  }d|_td}|t|ddid}| |d |t|ddid}| |d | t	t
d d S )NTr   r   r   r   r   r   )r   
is_previewr   r3   r5   r6   r+   r`   r   r*   r   r   r$   r$   r%   test_skips_cache_in_preview^  s    z/TestWagtailCacheTag.test_skips_cache_in_previewc                 C   sj   t d}|t dddii}| |d |t dddii}| |d | ttd d S )Nr   r   r   r   r   r   )	r   r3   r5   r6   r+   r`   r   r*   r   r!   r9   r:   r   r$   r$   r%   test_no_requestr  s    z#TestWagtailCacheTag.test_no_requestc                 C   sL   |  t}td W d    n1 s*0    Y  | |jjd d d S )NzP{% load wagtail_cache %}{% wagtailcache 100 %}{{ foo.bar }}{% endwagtailcache %}r   z1'wagtailcache' tag requires at least 2 arguments.rD   r   r   r3   r+   	exceptionargsr!   er$   r$   r%   test_invalid_usage  s    "z&TestWagtailCacheTag.test_invalid_usageN)	r=   r>   r?   r   r   r   r   r   r   r$   r$   r$   r%   r   1  s   r   c                   @   s^   e Zd Zdg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S )TestWagtailPageCacheTagr   c                 C   s2   t j | _t j d | _tjjddd| _d S )N   rU   P   )rk   port)	r   rO   r   page_1allZpage_2r   r*   rq   )clsr$   r$   r%   setUpTestData  s    z%TestWagtailPageCacheTag.setUpTestDatac                 C   s   t | jd}td}|t|ddi| jd}| |d |t|ddi| jd}| |d | t	t
d| j| jd d S )Nrp   ]{% load wagtail_cache %}{% wagtailpagecache 100 test %}{{ foo.bar }}{% endwagtailpagecache %}r   r   rN   r   r0   r   r   r   rq   r   r3   r5   r6   r   r+   r   r*   r   r   r$   r$   r%   r     s,    z#TestWagtailPageCacheTag.test_cachesc              
   C   s   t | jd}td}|t|ddi| jd}| |d |t|ddi| jd}| |d | t	t
d| j| jddigd | t	t
d| j| jddigd d S )Nrp   za{% load wagtail_cache %}{% wagtailpagecache 100 test foo %}{{ foo.bar }}{% endwagtailpagecache %}r   r   r   r   r   r   r   r$   r$   r%   !test_caches_additional_parameters  s@    z9TestWagtailPageCacheTag.test_caches_additional_parametersc                 C   sV   t | jd}td}t|ddi| jd}||}| |d | t	j
| d S )Nrp   r   r   r   r   )r   rq   r   r3   r6   r   r5   r+   ZassertNotInr   ZCACHE_SITE_TEMPLATE_VAR)r!   rN   r9   r^   r:   r$   r$   r%   test_doesnt_pollute_cache  s    
z1TestWagtailPageCacheTag.test_doesnt_pollute_cachec                 C   s   t | jd}d|_td}|t|ddi| jd}| |d |t|ddi| jd}| |d | 	t
td| j| j d S )	Nrp   Tr   r   r   r   r   r   )r   rq   r   r   r3   r5   r6   r   r+   r`   r   r*   r   r   r$   r$   r%   r     s,    z3TestWagtailPageCacheTag.test_skips_cache_in_previewc                 C   sz   t d}|t ddi| jd}| |d |t ddi| jd}| |d | tt	d| j| j
 d S )Nr   r   r   )r   r0   r   r   )r   r3   r5   r6   r   r+   r`   r   r*   r   rq   r   r$   r$   r%   r     s     z'TestWagtailPageCacheTag.test_no_requestc                 C   sl   t  }td}| t*}|t|ddid W d    n1 sJ0    Y  | |jj	d d d S )Nr   r   r   r   r   r0   )
r   r   r3   rD   r   r5   r6   r+   r   params)r!   rN   r9   r   r$   r$   r%   test_no_page  s    8z$TestWagtailPageCacheTag.test_no_pagec                 C   s0   |  td| j| jtd| jj| jjgd d S )Nr   )Zvary_on)r+   r   r   rq   r   	cache_keyr   r    r$   r$   r%   test_cache_key  s    z&TestWagtailPageCacheTag.test_cache_keyc                 C   sL   |  t}td W d    n1 s*0    Y  | |jjd d d S )NzX{% load wagtail_cache %}{% wagtailpagecache 100 %}{{ foo.bar }}{% endwagtailpagecache %}r   z5'wagtailpagecache' tag requires at least 2 arguments.r   r   r$   r$   r%   r   %  s    "z*TestWagtailPageCacheTag.test_invalid_usageN)r=   r>   r?   r   classmethodr   r   r   r   r   r   r   r   r   r$   r$   r$   r%   r     s   
%r   )0r   Zdjangor   Zdjango.core.cacher   Zdjango.core.cache.utilsr   Zdjango.httpr   Zdjango.templater   r   Zdjango.testr   Zdjango.test.utilsr	   Zdjango.urls.exceptionsr
   Zdjango.utils.safestringr   Zdjango.utils.translationr   Zwagtail.coreutilsr   r   r   Zwagtail.modelsr   r   r   r   Zwagtail.models.sitesr   r   Z"wagtail.templatetags.wagtail_cacher   Z%wagtail.templatetags.wagtailcore_tagsr   r   Zwagtail.test.testapp.modelsr   r   r   r   r   r   r   r   r$   r$   r$   r%   <module>   s2    i O.X