U
    {®Þh’	 ã                   @   sÜ  d dl Z d dlmZmZ d dlmZ d dlmZ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mZ d d
lmZmZmZmZ d dlmZ G dd„ deeƒZG dd„ deeƒZG dd„ deeƒZG dd„ deeƒZG dd„ deeƒZ G dd„ deeƒZ!e	ddG dd„ de!ƒƒZ"e	ddG dd„ de!ƒƒZ#e	dd d!G d"d#„ d#e#ƒƒZ$e	dd$d!G d%d&„ d&e#ƒƒZ%G d'd(„ d(eeƒZ&G d)d*„ d*eeƒZ'G d+d,„ d,eeƒZ(G d-d.„ d.eeƒZ)e	dd/G d0d1„ d1eeƒƒZ*dS )2é    N)Úparse_qsÚurlsplit)Úget_user_model)ÚTestCaseÚTransactionTestCaseÚoverride_settings©Úreverse)Úescape)Ú	urlencode)Úcan_choose_page)ÚLocaleÚPage)Ú
EventIndexÚ	EventPageÚ
SimplePageÚSingleEventPage)ÚWagtailTestUtilsc                   @   sT   e Zd Zdd„ Zi fdd„Zdd„ Zdd„ Zed	d
dd„ ƒZedd
dd„ ƒZ	dS )ÚTestChooserBrowsec                 C   s:   t jjdd| _tddd| _| jj| jd |  ¡  d S ©Né   ©ÚidÚ	foobarbazÚhello©ÚtitleÚcontent©Úinstance©r   ÚobjectsÚgetÚ	root_pager   Ú
child_pageÚ	add_childÚlogin©Úself© r)   úm/var/www/dating/data/www/fatepal.com/env/lib/python3.8/site-packages/wagtail/admin/tests/test_page_chooser.pyÚsetUp   s    zTestChooserBrowse.setUpc                 C   s   | j  tdƒ|¡S ©NÚwagtailadmin_choose_page©Úclientr"   r	   ©r(   Úparamsr)   r)   r*   r"      s    zTestChooserBrowse.getc                 C   s&   |   ¡ }|  |jd¡ |  |d¡ d S ©NéÈ   ú wagtailadmin/chooser/browse.html©r"   ÚassertEqualÚstatus_codeÚassertTemplateUsed©r(   Úresponser)   r)   r*   Útest_simple"   s    zTestChooserBrowse.test_simplec              	      sš   t ddd‰ t ¡ jˆ d t ddd}t ¡ j|d ‡ fdd„}|  d|¡ |  ¡ }W 5 Q R X |  t|jd	 j	ƒd
¡ |  |jd	 j	d j
ˆ ¡ d S )Nú
Test shownr   r   r   úTest not shownc                    s   | j ˆ jdS ©Nr   ©Úfilterr   ©ÚpagesÚrequest©Úpager)   r*   Úfilter_pages.   s    zDTestChooserBrowse.test_construct_queryset_hook.<locals>.filter_pagesÚconstruct_page_chooser_querysetÚtabler   é   )r   r   Zget_first_root_noder%   Úregister_hookr"   r6   ÚlenÚcontextÚdataÚspecific©r(   Zpage_not_shownrF   r:   r)   rD   r*   Útest_construct_queryset_hook'   s    z.TestChooserBrowse.test_construct_queryset_hookT)ZUSE_THOUSAND_SEPARATORc                 C   s†   t jjdd| _tdddd| _| jj| jd |  dd	i¡}t| jjƒ}|j	 
¡ }|  d
|› d|¡ |  |jd¡ |  |d¡ d S )NrI   r   Útest_child_pageútest contenti&'  ©r   r   Úpkr   ÚmultipleÚ1úvalue=\"ú\"r3   r4   ©r   r!   r"   rE   r   r$   r%   Ústrr   r   ÚdecodeÚassertInr6   r7   r8   ©r(   r:   Zcheckbox_valueZdecoded_contentr)   r)   r*   Útest_multiple_chooser_view7   s      ÿ
z,TestChooserBrowse.test_multiple_chooser_viewFc                 C   s†   t jjdd| _tdddd| _| jj| jd |  dd	i¡}t| jjƒ}|j	 
¡ }|  d
|› d|¡ |  |jd¡ |  |d¡ d S )NrI   r   rQ   rR   iB'  rS   r   rU   rV   rW   rX   r3   r4   rY   r]   r)   r)   r*   Ú5test_multiple_chooser_view_without_thousand_separatorJ   s      ÿ
zGTestChooserBrowse.test_multiple_chooser_view_without_thousand_separatorN)
Ú__name__Ú
__module__Ú__qualname__r+   r"   r;   rP   r   r^   r_   r)   r)   r)   r*   r      s   	
r   c                   @   s0   e Zd Zdd„ Zi fdd„Zdd„ Zdd„ Zd	S )
ÚTestCanChooseRootFlagc                 C   s   |   ¡  d S ©N©r&   r'   r)   r)   r*   r+   _   s    zTestCanChooseRootFlag.setUpc                 C   s   | j  tdƒ|¡S r,   r.   r0   r)   r)   r*   r"   b   s    zTestCanChooseRootFlag.getc                 C   s   |   ¡ }|  |d¡ d S )Nú/admin/pages/1/edit/)r"   ZassertNotContainsr9   r)   r)   r*   Ú"test_cannot_choose_root_by_defaulte   s    z8TestCanChooseRootFlag.test_cannot_choose_root_by_defaultc                 C   s   |   ddi¡}|  |d¡ d S )NÚcan_choose_rootÚtruerf   )r"   ÚassertContainsr9   r)   r)   r*   Útest_can_choose_rooti   s    z*TestCanChooseRootFlag.test_can_choose_rootN)r`   ra   rb   r+   r"   rg   rk   r)   r)   r)   r*   rc   ^   s   rc   c                   @   s´   e Zd Zdd„ Zi fdd„Zi 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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 )*ÚTestChooserBrowseChildc                 C   s:   t jjdd| _tddd| _| jj| jd |  ¡  d S r   r    r'   r)   r)   r*   r+   o   s    zTestChooserBrowseChild.setUpc                 C   s   | j  td| jjfd|¡S ©NÚwagtailadmin_choose_page_child©Úargs)r/   r"   r	   r#   r   r0   r)   r)   r*   r"   x   s     ÿzTestChooserBrowseChild.getc                 C   s   | j  tddd|¡S )Nrn   )i–˜ ro   r.   r0   r)   r)   r*   Úget_invalid}   s    
 ÿz"TestChooserBrowseChild.get_invalidc                 C   s&   |   ¡ }|  |jd¡ |  |d¡ d S r2   r5   r9   r)   r)   r*   r;   ‚   s    z"TestChooserBrowseChild.test_simplec                 C   s   |   |  ¡ jd¡ d S )Né”  )r6   rq   r7   r'   r)   r)   r*   Útest_get_invalid‡   s    z'TestChooserBrowseChild.test_get_invalidc                 C   s  t dddddd}| jj|d tdd	}| jj|d |jt d
dddddd |  ddi¡}|  |jd¡ |  |d¡ |  |jd d¡ dd„ |jd j	D ƒ}|  
| jj|¡ |  || jj j¡ |  || jj j¡ |  |j|¡ |  
|j|¡ |  ||j j¡ |  ||j j¡ d S )NÚeventúthe moonÚpublicÚfreeú
2001-01-01©r   ÚlocationZaudienceZcostZ	date_fromr   Úevents©r   zother eventÚ	page_typeútests.simplepager3   r4   Úpage_type_stringc                 S   s   i | ]}|j |“qS r)   r   ©Ú.0rE   r)   r)   r*   Ú
<dictcomp>ª   s      z>TestChooserBrowseChild.test_with_page_type.<locals>.<dictcomp>rH   )r   r#   r%   r   r"   r6   r7   r8   rL   rM   r\   r$   r   Ú
assertTrueÚ
can_chooseÚassertFalseZcan_descendÚassertNotIn)r(   Ú
event_pageZevent_index_pager:   rB   r)   r)   r*   Útest_with_page_typeŠ   sB    ûÿûÿz*TestChooserBrowseChild.test_with_page_typec                 C   sh   t dddddd}| jj|d |  ¡ }|  |jd¡ |  |d	¡ d
d„ |jd jD ƒ}|  	d|¡ d S )NÚfooru   rv   rw   rx   ry   r   r3   r4   c                 S   s   g | ]
}|j ‘qS r)   )Úurlr€   r)   r)   r*   Ú
<listcomp>Ì   s     zKTestChooserBrowseChild.test_with_url_extended_page_type.<locals>.<listcomp>rH   z/foo/pointless-suffix/)
r   r#   r%   r"   r6   r7   r8   rL   rM   r\   )r(   Úsingle_event_pager:   Z	page_urlsr)   r)   r*   Ú test_with_url_extended_page_type¼   s    ûz7TestChooserBrowseChild.test_with_url_extended_page_typec                 C   s,   |   ddi¡}|  |jd¡ |  |d¡ d S )Nr}   Ú r3   r4   r5   r9   r)   r)   r*   Útest_with_blank_page_typeÐ   s    z0TestChooserBrowseChild.test_with_blank_page_typec                 C   sº   t dddddd}| jj|d |  dd	i¡}|  |jd
¡ |  |d¡ |  |jd d	¡ dd„ |jd jD ƒ}|  	| j
j|¡ |  || j
j j¡ |  	|j|¡ |  || j
j j¡ d S )Nrt   ru   rv   rw   rx   ry   r   r}   ú tests.simplepage,tests.eventpager3   r4   r   c                 S   s   i | ]}|j |“qS r)   r   r€   r)   r)   r*   r‚   ê   s      zHTestChooserBrowseChild.test_with_multiple_page_types.<locals>.<dictcomp>rH   )r   r#   r%   r"   r6   r7   r8   rL   rM   r\   r$   r   rƒ   r„   ©r(   r‡   r:   rB   r)   r)   r*   Útest_with_multiple_page_types×   s(    û ÿz4TestChooserBrowseChild.test_with_multiple_page_typesc                 C   s    |   ddi¡}|  |jd¡ d S ©Nr}   zfoo.barrr   ©r"   r6   r7   r9   r)   r)   r*   Útest_with_unknown_page_typeô   s    z2TestChooserBrowseChild.test_with_unknown_page_typec                 C   s    |   ddi¡}|  |jd¡ d S ©Nr}   zwagtailcore.siterr   r”   r9   r)   r)   r*   Útest_with_bad_page_typeø   s    z.TestChooserBrowseChild.test_with_bad_page_typec                 C   s    |   ddi¡}|  |jd¡ d S ©Nr}   r‰   rr   r”   r9   r)   r)   r*   Útest_with_invalid_page_typeü   s    z2TestChooserBrowseChild.test_with_invalid_page_typec                 C   sR   |   ddi¡}|  |jd¡ |  |d¡ | ¡   d¡}|  d|¡ |  d|¡ d S )Nr}   úwagtailcore.Pager3   r4   Úhtmlúfoobarbaz (simple page)zdata-title="foobarbaz")r"   r6   r7   r8   ÚjsonÚassertInHTMLr\   ©r(   r:   r›   r)   r)   r*   Útest_with_admin_display_title   s    z4TestChooserBrowseChild.test_with_admin_display_titlec                 C   s†   t ddd}| jj|d | jjtd| jjfdddid	}|  |jd
¡ |  	|d¡ |  
d| ¡  d¡¡ |  
d| ¡  d¡¡ d S )NÚquuxÚgoodbyer   r   rn   ro   r}   rš   ©r1   r3   r4   rœ   r›   zquux (simple page))r   r$   r%   r/   r"   r	   r   r6   r7   r8   rž   r   )r(   Ú	leaf_pager:   r)   r)   r*   Ú$test_parent_with_admin_display_title  s    þz;TestChooserBrowseChild.test_parent_with_admin_display_titlec                 C   sx   t ddd}| jj|d | j td|jfd¡}|  |jd¡ |  	|d¡ d	j
| jjd
d}|  || ¡  d¡¡ d S )Nr¡   r¢   r   r   rn   ro   r3   r4   aÃ  
            <li class="w-h-full w-flex w-items-center w-overflow-hidden w-transition w-duration-300 w-whitespace-nowrap w-flex-shrink-0 w-font-bold " data-w-breadcrumbs-target="content">
                <a class="w-flex w-items-center w-text-text-label w-pr-0.5 w-text-14 w-no-underline w-outline-offset-inside w-border-b w-border-b-2 w-border-transparent w-box-content hover:w-border-current hover:w-text-text-label" href="/admin/choose-page/{page_id}/?">
                    {page_title}
                </a>
                <svg class="icon icon-arrow-right w-w-4 w-h-4 w-ml-3" aria-hidden="true">
                   <use href="#icon-arrow-right"></use>
                </svg>
            </li>
        rœ   )Zpage_idZ
page_titler›   )r   r$   r%   r/   r"   r	   r   r6   r7   r8   ÚformatZassertTagInHTMLr   )r(   r¤   r:   Úexpectedr)   r)   r*   Ú#test_admin_display_title_breadcrumb  s    ÿ
õz:TestChooserBrowseChild.test_admin_display_title_breadcrumbc                 C   s2   t dƒD ]$}tdd| dd}| jj|d qd S )Néd   r   zfoobarbaz-%dr   )r   Zslugr   r   )Úranger   r#   r%   )r(   ÚiZnew_pager)   r)   r*   Úsetup_pagination_test_data:  s    ýz1TestChooserBrowseChild.setup_pagination_test_datac                 C   s>   |   ¡  |  ¡ }|  |jd jjd¡ |  |jd jd¡ d S )NÚpagination_pageé   rI   )r¬   r"   r6   rL   Z	paginatorZ	num_pagesÚnumberr9   r)   r)   r*   Útest_pagination_basicD  s    z,TestChooserBrowseChild.test_pagination_basicc                 C   s.   |   ¡  |  ddi¡}|  |jd jd¡ d S )NÚpr   r­   )r¬   r"   r6   rL   r¯   r9   r)   r)   r*   Útest_pagination_another_pageK  s    z3TestChooserBrowseChild.test_pagination_another_pagec                 C   s(   |   ¡  |  ddi¡}|  |jd¡ d S )Nr±   r‰   rr   ©r¬   r"   r6   r7   r9   r)   r)   r*   Útest_pagination_invalid_pageQ  s    z3TestChooserBrowseChild.test_pagination_invalid_pagec                 C   s(   |   ¡  |  ddi¡}|  |jd¡ d S )Nr±   r©   rr   r³   r9   r)   r)   r*   Ú!test_pagination_out_of_range_pageW  s    z8TestChooserBrowseChild.test_pagination_out_of_range_pageN)r`   ra   rb   r+   r"   rq   r;   rs   rˆ   r   r   r’   r•   r—   r™   r    r¥   r¨   r¬   r°   r²   r´   rµ   r)   r)   r)   r*   rl   n   s(   	2
rl   c                   @   s|   e Zd ZdgZdd„ Zd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 )ÚTestChooserSearchztest_empty.jsonc                 C   s:   t jjdd| _tddd| _| jj| jd |  ¡  d S r   r    r'   r)   r)   r*   r+   a  s    zTestChooserSearch.setUpNc                 C   s   | j  tdƒ|pi ¡S )NZwagtailadmin_choose_page_searchr.   r0   r)   r)   r*   r"   j  s    zTestChooserSearch.getc                 C   sD   |   ddi¡}|  |jd¡ |  |d¡ |  |d¡ |  |d¡ d S )NÚqr   r3   ú)wagtailadmin/chooser/_search_results.htmlúThere is 1 match©r"   r6   r7   r8   rj   r9   r)   r)   r*   r;   m  s
    zTestChooserSearch.test_simplec                 C   sD   |   ddi¡}|  |jd¡ |  |d¡ |  |d¡ |  |d¡ d S )Nr·   Zfoobar3   r¸   r¹   r   rº   r9   r)   r)   r*   Útest_partial_matcht  s
    z$TestChooserSearch.test_partial_matchc                 C   sX   t dddddd}| jj|d |  dd	i¡}|  |jd
¡ |  |d¡ |  |d¡ d S )NzLunar eventru   rv   rw   rx   ry   r   r·   Zlunarr3   r¸   zLunar event (single event))r   r#   r%   r"   r6   r7   r8   rj   )r(   rŒ   r:   r)   r)   r*   Ú+test_result_uses_custom_admin_display_title{  s    ûz=TestChooserSearch.test_result_uses_custom_admin_display_titlec                 C   s,   |   ddi¡}|  |jd¡ |  |d¡ d S )Nr·   r¡   r3   zThere are 0 matches©r"   r6   r7   rj   r9   r)   r)   r*   Útest_search_no_resultsŠ  s    z(TestChooserSearch.test_search_no_resultsc                 C   s’   t dddddd}| jj|d |  dd	d
œ¡}|  |jd¡ |  |d¡ |  |jd d	¡ dd„ |jd D ƒ}|  | j	j
|¡ |  |j
|¡ d S )Núfoobarbaz againru   rv   rw   rx   ry   r   r   r~   ©r·   r}   r3   r¸   r   c                 S   s   i | ]}|j |“qS r)   r   r€   r)   r)   r*   r‚      s      z9TestChooserSearch.test_with_page_type.<locals>.<dictcomp>rB   )r   r#   r%   r"   r6   r7   r8   rL   r\   r$   r   r†   r‘   r)   r)   r*   rˆ     s    ûz%TestChooserSearch.test_with_page_typec                 C   sF   |   dddœ¡}|  |jd¡ |  |d¡ |  |d¡ |  |d¡ d S )Nr   rŽ   rÀ   r3   r¸   r¹   rº   r9   r)   r)   r*   r   §  s
    z+TestChooserSearch.test_with_blank_page_typec                 C   s’   t dddddd}| jj|d |  dd	d
œ¡}|  |jd¡ |  |d¡ |  |jd d	¡ dd„ |jd D ƒ}|  | j	j
|¡ |  |j
|¡ d S )Nr¿   ru   rv   rw   rx   ry   r   r   r   rÀ   r3   r¸   r   c                 S   s   i | ]}|j |“qS r)   r   r€   r)   r)   r*   r‚   Å  s      zCTestChooserSearch.test_with_multiple_page_types.<locals>.<dictcomp>rB   )r   r#   r%   r"   r6   r7   r8   rL   r\   r$   r   r‘   r)   r)   r*   r’   °  s(    ûÿ ÿz/TestChooserSearch.test_with_multiple_page_typesc                 C   s    |   ddi¡}|  |jd¡ d S r“   r”   r9   r)   r)   r*   r•   Í  s    z-TestChooserSearch.test_with_unknown_page_typec                 C   s    |   ddi¡}|  |jd¡ d S r–   r”   r9   r)   r)   r*   r—   Ñ  s    z)TestChooserSearch.test_with_bad_page_typec                 C   s    |   ddi¡}|  |jd¡ d S r˜   r”   r9   r)   r)   r*   r™   Õ  s    z-TestChooserSearch.test_with_invalid_page_typec              	      s˜   t ddd‰ | jjˆ d t ddd}| jj|d ‡ fdd„}|  d|¡ |  d	d
i¡}W 5 Q R X |  t|jd ƒd¡ |  |jd d jˆ ¡ d S )Nr<   r   r   r   r=   c                    s   | j ˆ jdS r>   r?   rA   rD   r)   r*   rF   à  s    zDTestChooserSearch.test_construct_queryset_hook.<locals>.filter_pagesrG   r·   ZTestrB   rI   r   )	r   r#   r%   rJ   r"   r6   rK   rL   rN   rO   r)   rD   r*   rP   Ù  s    z.TestChooserSearch.test_construct_queryset_hook)N)r`   ra   rb   Úfixturesr+   r"   r;   r»   r¼   r¾   rˆ   r   r’   r•   r—   r™   rP   r)   r)   r)   r*   r¶   ^  s   	
	r¶   c                   @   sX   e Zd Zdd„ Zdd„ Zi fdd„Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ ZdS )ÚTestAutomaticRootPageDetectionc                 C   s€   t jjdd| _t jjdd| _| jjtdddd| _| jjtdd	dd| _| jjtd
ddd| _	|  
d¡| _|  ¡  d S )NrI   r   r   ÚAboutú	About Foor   r   ZContactzContent FooZPeoplezThe people of FooZEvents)r   r!   r"   Ú	tree_rootÚ	home_pager%   r   Z
about_pageZcontact_pageZpeople_pageÚmake_event_sectionÚevent_indexr&   r'   r)   r)   r*   r+   ê  s    
ÿ
ÿ
ÿz$TestAutomaticRootPageDetection.setUpc                 C   sL   | j jt|dd}|jtddddddd |jtd	d
ddddd |S )Nr|   r   zFirst EventZBarrv   rw   rx   ry   zSecond EventZBaz)rÆ   r%   r   r   )r(   ÚnamerÈ   r)   r)   r*   rÇ   ü  s(    ûÿ	ûÿ	z1TestAutomaticRootPageDetection.make_event_sectionc                 C   s   | j  tdƒ|¡}|jd jS )Nr-   Zparent_page)r/   r"   r	   rL   rN   )r(   r1   r:   r)   r)   r*   Úget_best_root  s    z,TestAutomaticRootPageDetection.get_best_rootc                 C   s   |   |  ¡ | j¡ d S rd   ©r6   rÊ   rÅ   r'   r)   r)   r*   Útest_no_type_filter  s    z2TestAutomaticRootPageDetection.test_no_type_filterc                 C   s   |   |  ddi¡| j¡ d S )Nr}   rš   rË   r'   r)   r)   r*   Útest_type_page  s     ÿz-TestAutomaticRootPageDetection.test_type_pagec                 C   s   |   |  ddi¡| j¡ dS )zc
        The chooser should start at the EventIndex that holds all the
        EventPages.
        r}   útests.EventPageN)r6   rÊ   rÈ   r'   r)   r)   r*   Útest_type_eventpage  s     ÿz2TestAutomaticRootPageDetection.test_type_eventpagec                 C   s&   |   d¡ |  |  ddi¡| j¡ dS )zs
        The chooser should start at the home page, as there are two
        EventIndexes with EventPages.
        zOther eventsr}   rÎ   N)rÇ   r6   rÊ   rÆ   r'   r)   r)   r*   Útest_type_eventpage_two_indexes'  s
    
 ÿz>TestAutomaticRootPageDetection.test_type_eventpage_two_indexesc                 C   s   |   |  ddi¡| j¡ dS )zm
        The chooser should start at the home page, as all SimplePages are
        directly under it
        r}   útests.BusinessIndexNrË   r'   r)   r)   r*   Útest_type_simple_page1  s     ÿz4TestAutomaticRootPageDetection.test_type_simple_pagec                 C   s   |   |  ddi¡| j¡ dS )zW
        The chooser should start at the root, as there are no BusinessIndexes
        r}   rÑ   NrË   r'   r)   r)   r*   Útest_type_missing:  s     ÿz0TestAutomaticRootPageDetection.test_type_missingN)r`   ra   rb   r+   rÇ   rÊ   rÌ   rÍ   rÏ   rÐ   rÒ   rÓ   r)   r)   r)   r*   rÂ   é  s   	
	rÂ   c                   @   s´   e Zd Zdd„ Zi fdd„Zi i 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dd„ Zdd„ Zedddd„ ƒZeddd d!„ ƒZed"dd#d$„ ƒZd%S )&ÚTestChooserExternalLinkc                 C   s2   |   ¡  tddd| _tjjddj| jd d S )NrÃ   rÄ   r   r   )rT   r   )r&   r   Úinternal_pager   r!   r"   r%   r'   r)   r)   r*   r+   D  s    zTestChooserExternalLink.setUpc                 C   s   | j  tdƒ|¡S )NÚ&wagtailadmin_choose_page_external_linkr.   r0   r)   r)   r*   r"   I  s     ÿzTestChooserExternalLink.getc                 C   s*   t dƒ}|r|dt|ƒ 7 }| j ||¡S )NrÖ   ú?©r	   r   r/   Úpost©r(   Z	post_dataZ
url_paramsrŠ   r)   r)   r*   rÙ   N  s    zTestChooserExternalLink.postc                 C   s&   |   ¡ }|  |jd¡ |  |d¡ d S )Nr3   z'wagtailadmin/chooser/external_link.htmlr5   r9   r)   r)   r*   r;   T  s    z#TestChooserExternalLink.test_simplec                 C   s:   |   dddœ¡}|  |jd¡ |  |d¡ |  |d¡ d S )NZTorchboxzhttps://torchbox.com/©Ú	link_textÚlink_urlr3   r½   r9   r)   r)   r*   Útest_prepopulated_formY  s    ÿz.TestChooserExternalLink.test_prepopulated_formc                 C   s~   |   dddœ¡}|  |jd¡ t |j ¡ ¡}|  |d d¡ |  |d d d¡ |  |d d	 d¡ |  |d d
 d¡ d S )Núhttp://www.example.com/Úexample©úexternal-link-chooser-urlzexternal-link-chooser-link_textr3   ÚstepÚexternal_link_chosenÚresultrŠ   r   Úprefer_this_title_as_link_textT©rÙ   r6   r7   r   Úloadsr   r[   ÚassertIs©r(   r:   Úresponse_jsonr)   r)   r*   Útest_create_linka  s    þÿ
 ÿz(TestChooserExternalLink.test_create_linkc                 C   s|   |   ddi¡}|  |jd¡ t |j ¡ ¡}|  |d d¡ |  |d d d¡ |  |d d d¡ |  |d d	 d
¡ d S )Nrâ   rß   r3   rã   rä   rå   rŠ   r   ræ   Frç   rê   r)   r)   r*   Útest_create_link_without_textq  s    
 ÿz5TestChooserExternalLink.test_create_link_without_textc                 C   s¼   |   dddœdddœ¡}t |j ¡ ¡d }|  |d d¡ |  |d d¡ |  |d	 d
¡ |   dddœdddœ¡}t |j ¡ ¡d }|  |d d¡ |  |d d¡ |  |d	 d¡ d S )Nrß   rà   rá   zhttp://old.example.com/©rÝ   rÜ   rå   rŠ   r   ræ   Fúnew exampleT©rÙ   r   rè   r   r[   r6   ré   ©r(   r:   rå   r)   r)   r*   Ú test_notice_changes_to_link_text|  s0    þþû
þþû
z8TestChooserExternalLink.test_notice_changes_to_link_textc                 C   sN   |   dddœ¡}|  |jd¡ t |j ¡ ¡}|  |d d¡ |  |d¡ d S )Nzntp://www.example.comrà   rá   r3   rã   Zexternal_linkzEnter a valid URL.)rÙ   r6   r7   r   rè   r   r[   rj   rê   r)   r)   r*   Útest_invalid_url  s    þÿ ÿz(TestChooserExternalLink.test_invalid_urlc                 C   sj   |   dddœ¡}|  |jd¡ t |j ¡ ¡}|  |d d¡ |  |d d d¡ |  |d d	 d¡ d S )
Nz/admin/Zadminrá   r3   rã   rä   rå   rŠ   r   )rÙ   r6   r7   r   rè   r   r[   rê   r)   r)   r*   Útest_allow_local_url«  s    þÿ ÿz,TestChooserExternalLink.test_allow_local_urlc                 C   sn   |   dddœ¡}|  |jd¡ t |j ¡ ¡}|  |d d¡ |  |d d d	¡ |  |d d
 | jj¡ d S )Núhttp://localhost/about/Úaboutrá   r3   rã   rä   rå   rŠ   ú/about/r   ©	rÙ   r6   r7   r   rè   r   r[   rÕ   rT   rê   r)   r)   r*   Ú&test_convert_external_to_internal_linkº  s    þÿz>TestChooserExternalLink.test_convert_external_to_internal_linkc                 C   s‚   |   dddœ¡}|  |jd¡ t |j ¡ ¡}|  |d d¡ |  |d d d¡ |  |d	 d d
¡ |  |d	 d | jj¡ d S )Núhttp://localhost/about?test=1rö   rá   r3   rã   Úconfirm_external_to_internalÚexternalrŠ   Úinternalr÷   r   rø   rê   r)   r)   r*   ÚAtest_convert_external_link_with_query_parameters_to_internal_linkÇ  s    þÿ
 ÿzYTestChooserExternalLink.test_convert_external_link_with_query_parameters_to_internal_linkc                 C   sn   |   dddœ¡}|  |jd¡ t |j ¡ ¡}|  |d d¡ |  |d d d¡ |  |d d	 | jj¡ d S )
Nr÷   rö   rá   r3   rã   rä   rå   rŠ   r   rø   rê   r)   r)   r*   Ú4test_convert_relative_external_link_to_internal_linkÚ  s    þÿzLTestChooserExternalLink.test_convert_relative_external_link_to_internal_linkrŽ   ©Z%WAGTAILADMIN_EXTERNAL_LINK_CONVERSIONc                 C   s‚   d}d}|   ||dœ¡}|  |jd¡ t |j ¡ ¡}|  |d d¡ |  |d d |¡ |  |d d	 |¡ |  d
|d ¡ d S )Nrõ   rö   rá   r3   rã   rä   rå   rŠ   r   r   ©rÙ   r6   r7   r   rè   r   r[   r†   ©r(   rŠ   r   r:   rë   r)   r)   r*   Ú:test_no_conversion_external_to_internal_link_when_disabledç  s    ÿzRTestChooserExternalLink.test_no_conversion_external_to_internal_link_when_disabledÚexactc                 C   s‚   d}d}|   ||dœ¡}|  |jd¡ t |j ¡ ¡}|  |d d¡ |  |d d |¡ |  |d d	 |¡ |  d
|d ¡ d S )Nrú   rö   rá   r3   rã   rä   rå   rŠ   r   r   r  r  r)   r)   r*   Ú4test_no_confirm_external_to_internal_link_when_exactö  s    ÿzLTestChooserExternalLink.test_no_confirm_external_to_internal_link_when_exactÚconfirmc                 C   s†   d}|   |ddœ¡}|  |jd¡ t |j ¡ ¡}|  |d d¡ |  |d d |¡ |  |d	 d d
¡ |  |d	 d | jj¡ d S )Nrõ   rö   rá   r3   rã   rû   rü   rŠ   rý   r÷   r   rø   ©r(   rŠ   r:   rë   r)   r)   r*   Ú@test_convert_external_link_to_internal_link_with_confirm_setting  s    þÿzXTestChooserExternalLink.test_convert_external_link_to_internal_link_with_confirm_settingN)r`   ra   rb   r+   r"   rÙ   r;   rÞ   rì   rí   rò   ró   rô   rù   rþ   rÿ   r   r  r  r  r)   r)   r)   r*   rÔ   C  s&   !

rÔ   zwagtail.test.headless_urls)ÚROOT_URLCONFc                   @   s6   e Zd Zdd„ Zdd„ Zdd„ Zeddd	d
„ ƒZdS )Ú&TestChooserExternalLinkWithNoServePathc                 C   s€   |   dddœ¡}|  |jd¡ t |j ¡ ¡}|  |d d¡ |  |d d d¡ |  |d	 d ¡ |  |d	 d
 | jj	¡ d S ©Nrõ   rö   rá   r3   rã   rû   rü   rŠ   rý   r   ©
rÙ   r6   r7   r   rè   r   r[   ZassertIsNonerÕ   rT   rê   r)   r)   r*   rù     s    þÿzMTestChooserExternalLinkWithNoServePath.test_convert_external_to_internal_linkc                 C   s€   |   dddœ¡}|  |jd¡ t |j ¡ ¡}|  |d d¡ |  |d d d¡ |  |d	 d ¡ |  |d	 d
 | jj	¡ d S )Nrú   rö   rá   r3   rã   rû   rü   rŠ   rý   r   r  rê   r)   r)   r*   rþ   0  s    þÿ
 ÿzhTestChooserExternalLinkWithNoServePath.test_convert_external_link_with_query_parameters_to_internal_linkc                 C   s€   |   dddœ¡}|  |jd¡ t |j ¡ ¡}|  |d d¡ |  |d d d¡ |  |d	 d ¡ |  |d	 d
 | jj	¡ d S )Nr÷   rö   rá   r3   rã   rû   rü   rŠ   rý   r   r  rê   r)   r)   r*   rÿ   D  s    þÿz[TestChooserExternalLinkWithNoServePath.test_convert_relative_external_link_to_internal_linkr  r   c                 C   s„   d}|   |ddœ¡}|  |jd¡ t |j ¡ ¡}|  |d d¡ |  |d d |¡ |  |d	 d ¡ |  |d	 d
 | jj	¡ d S r  r  r  r)   r)   r*   r  V  s    þÿzgTestChooserExternalLinkWithNoServePath.test_convert_external_link_to_internal_link_with_confirm_settingN)r`   ra   rb   rù   rþ   rÿ   r   r  r)   r)   r)   r*   r
    s
   r
  zwagtail.test.non_root_urlsc                   @   sv   e Zd Z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e
dddd„ ƒZe
dddd„ ƒZdS )Ú+TestChooserExternalLinkWithNonRootServePathzsite/c                 C   sŒ   |   dddœ¡}|  |jd¡ t |j ¡ ¡}|  |d d¡ |  |d d d¡ |  |d	 d d
| j› d¡ |  |d	 d | jj	¡ d S )Nrõ   rö   rá   r3   rã   rû   rü   rŠ   rý   ú/úabout/r   ©
rÙ   r6   r7   r   rè   r   r[   ÚprefixrÕ   rT   rê   r)   r)   r*   rù   p  s    þÿzRTestChooserExternalLinkWithNonRootServePath.test_convert_external_to_internal_linkc              	   C   s²   |   d| j› dddœ¡}|  d¡  |   d| j› dddœ¡}W 5 Q R X |  |jd¡ t |j ¡ ¡}|  |d d¡ |  |d	 d
 d| j› d¡ |  |d	 d | j	j
¡ d S )Núhttp://localhost/r  rö   rá   é   r3   rã   rä   rå   rŠ   r  r   )rÙ   r  ZassertNumQueriesr6   r7   r   rè   r   r[   rÕ   rT   rê   r)   r)   r*   Ú6test_convert_external_to_internal_link_with_serve_pathƒ  s     
þÿþÿzbTestChooserExternalLinkWithNonRootServePath.test_convert_external_to_internal_link_with_serve_pathc                 C   sŒ   |   dddœ¡}|  |jd¡ t |j ¡ ¡}|  |d d¡ |  |d d d¡ |  |d	 d d
| j› d¡ |  |d	 d | jj	¡ d S )Nrú   rö   rá   r3   rã   rû   rü   rŠ   rý   r  r  r   r  rê   r)   r)   r*   rþ      s    þÿ
 ÿzmTestChooserExternalLinkWithNonRootServePath.test_convert_external_link_with_query_parameters_to_internal_linkc                 C   s    |   d| j› dddœ¡}|  |jd¡ t |j ¡ ¡}|  |d d¡ |  |d d	 d| j› d¡ |  |d
 d	 d| j› d¡ |  |d
 d | jj	¡ d S )Nr  úabout?test=1rö   rá   r3   rã   rû   rü   rŠ   rý   r  r  r   ©
rÙ   r  r6   r7   r   rè   r   r[   rÕ   rT   rê   r)   r)   r*   ÚQtest_convert_external_link_with_query_parameters_to_internal_link_with_serve_path¸  s    þÿ
þz}TestChooserExternalLinkWithNonRootServePath.test_convert_external_link_with_query_parameters_to_internal_link_with_serve_pathc                 C   sŒ   |   dddœ¡}|  |jd¡ t |j ¡ ¡}|  |d d¡ |  |d d d¡ |  |d	 d d
| j› d¡ |  |d	 d | jj	¡ d S )Nr÷   rö   rá   r3   rã   rû   rü   rŠ   rý   r  r  r   r  rê   r)   r)   r*   rÿ   Ö  s    þÿz`TestChooserExternalLinkWithNonRootServePath.test_convert_relative_external_link_to_internal_linkc                 C   s‚   |   d| j› dddœ¡}|  |jd¡ t |j ¡ ¡}|  |d d¡ |  |d d	 d| j› d¡ |  |d d
 | jj	¡ d S )Nr  r  rö   rá   r3   rã   rä   rå   rŠ   r   r  rê   r)   r)   r*   ÚDtest_convert_relative_external_link_to_internal_link_with_serve_pathé  s    þÿzpTestChooserExternalLinkWithNonRootServePath.test_convert_relative_external_link_to_internal_link_with_serve_pathrŽ   r   c                 C   sŒ   d| j › d}d}|  ||dœ¡}|  |jd¡ t |j ¡ ¡}|  |d d¡ |  |d d	 |¡ |  |d d
 |¡ |  d|d ¡ d S )Nr  r  rö   rá   r3   rã   rä   rå   rŠ   r   r   ©	r  rÙ   r6   r7   r   rè   r   r[   r†   r  r)   r)   r*   ÚJtest_no_conversion_external_to_internal_link_when_disabled_with_serve_pathý  s    ÿzvTestChooserExternalLinkWithNonRootServePath.test_no_conversion_external_to_internal_link_when_disabled_with_serve_pathr  c                 C   sŒ   d| j › d}d}|  ||dœ¡}|  |jd¡ t |j ¡ ¡}|  |d d¡ |  |d d	 |¡ |  |d d
 |¡ |  d|d ¡ d S )Nr  r  rö   rá   r3   rã   rä   rå   rŠ   r   r   r  r  r)   r)   r*   ÚDtest_no_confirm_external_to_internal_link_when_exact_with_serve_path  s    ÿzpTestChooserExternalLinkWithNonRootServePath.test_no_confirm_external_to_internal_link_when_exact_with_serve_pathr  c                 C   sš   d| j › d}|  |ddœ¡}|  |jd¡ t |j ¡ ¡}|  |d d¡ |  |d d	 |¡ |  |d
 d	 d| j › d¡ |  |d
 d | jj	¡ d S )Nr  r  rö   rá   r3   rã   rû   rü   rŠ   rý   r  r   )
r  rÙ   r6   r7   r   rè   r   r[   rÕ   rT   r  r)   r)   r*   r    s    þÿzlTestChooserExternalLinkWithNonRootServePath.test_convert_external_link_to_internal_link_with_confirm_settingN)r`   ra   rb   r  rù   r  rþ   r  rÿ   r  r   r  r  r  r)   r)   r)   r*   r  l  s   

r  Tzwagtail.test.urls_multilang)ÚWAGTAIL_I18N_ENABLEDr	  c                   @   s   e Zd ZdZdS )ÚTestChooserExternalLinkWithI18nzen/N©r`   ra   rb   r  r)   r)   r)   r*   r  3  s   r  z$wagtail.test.urls_multilang_non_rootc                   @   s   e Zd ZdZdS )Ú&TestChooserExternalLinkWithI18nNonRootzen/site/Nr  r)   r)   r)   r*   r  ;  s   r  c                   @   sV   e Zd Zdd„ Zi fdd„Zi i fdd„Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )ÚTestChooserAnchorLinkc                 C   s   |   ¡  d S rd   re   r'   r)   r)   r*   r+   F  s    zTestChooserAnchorLink.setUpc                 C   s   | j  tdƒ|¡S )NÚ$wagtailadmin_choose_page_anchor_linkr.   r0   r)   r)   r*   r"   I  s    zTestChooserAnchorLink.getc                 C   s*   t dƒ}|r|dt|ƒ 7 }| j ||¡S )Nr!  r×   rØ   rÚ   r)   r)   r*   rÙ   L  s    zTestChooserAnchorLink.postc                 C   s&   |   ¡ }|  |jd¡ |  |d¡ d S )Nr3   z%wagtailadmin/chooser/anchor_link.htmlr5   r9   r)   r)   r*   r;   R  s    z!TestChooserAnchorLink.test_simplec                 C   s:   |   dddœ¡}|  |jd¡ |  |d¡ |  |d¡ d S )NúExample Anchor TextÚexampleanchorrÛ   r3   r½   r9   r)   r)   r*   rÞ   W  s    ÿz,TestChooserAnchorLink.test_prepopulated_formc                 C   sX   |   dddœ¡}t |j ¡ ¡d }|  |d d¡ |  |d d¡ |  |d d	¡ d S )
Nr#  r"  ©úanchor-link-chooser-urlzanchor-link-chooser-link_textrå   rŠ   ú#exampleanchorr   ræ   Trð   rñ   r)   r)   r*   rì   _  s    þÿ ÿz&TestChooserAnchorLink.test_create_linkc                 C   sV   |   ddi¡}t |j ¡ ¡d }|  |d d¡ |  |d d¡ |  |d d¡ d S )	Nr%  r#  rå   rŠ   r&  r   ræ   Frð   rñ   r)   r)   r*   rí   m  s     ÿz3TestChooserAnchorLink.test_create_link_without_textc                 C   s¼   |   dddœdddœ¡}t |j ¡ ¡d }|  |d d¡ |  |d d¡ |  |d	 d
¡ |   dddœdddœ¡}t |j ¡ ¡d }|  |d d¡ |  |d d¡ |  |d	 d
¡ d S )NZexampleanchor2zExample Text)r%  úemail-link-chooser-link_textrî   rå   rŠ   z#exampleanchor2r   ræ   TzExample Anchor Test 2.1r$  r#  r"  rð   rñ   r)   r)   r*   rò   v  s0    þþû
þþû
z6TestChooserAnchorLink.test_notice_changes_to_link_textN)r`   ra   rb   r+   r"   rÙ   r;   rÞ   rì   rí   rò   r)   r)   r)   r*   r   E  s   	r   c                   @   sn   e Zd Zdd„ Zi fdd„Zi i 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dS )ÚTestChooserEmailLinkc                 C   s   |   ¡  d S rd   re   r'   r)   r)   r*   r+   ™  s    zTestChooserEmailLink.setUpc                 C   s   | j  tdƒ|¡S )NÚ#wagtailadmin_choose_page_email_linkr.   r0   r)   r)   r*   r"   œ  s    zTestChooserEmailLink.getc                 C   s*   t dƒ}|r|dt|ƒ 7 }| j ||¡S )Nr)  r×   rØ   rÚ   r)   r)   r*   rÙ   Ÿ  s    zTestChooserEmailLink.postc                 C   s&   |   ¡ }|  |jd¡ |  |d¡ d S )Nr3   z$wagtailadmin/chooser/email_link.htmlr5   r9   r)   r)   r*   r;   ¥  s    z TestChooserEmailLink.test_simplec                 C   s:   |   dddœ¡}|  |jd¡ |  |d¡ |  |d¡ d S )NÚExampleúexample@example.comrÛ   r3   r½   r9   r)   r)   r*   rÞ   ª  s    z+TestChooserEmailLink.test_prepopulated_formc                 C   sX   |   dddœ¡}t |j ¡ ¡d }|  |d d¡ |  |d d¡ |  |d d	¡ d S )
Nr+  Úcontact©ú email-link-chooser-email_addressr'  rå   rŠ   úmailto:example@example.comr   ræ   Trð   rñ   r)   r)   r*   rì   °  s    þÿ ÿz%TestChooserEmailLink.test_create_linkc                 C   s¶   |   dddddœ¡}|  |jd¡ t |j ¡ ¡d }|d }|  |d	¡ |  |d
 d¡ |  |d d¡ t|ƒ}t	|j
ƒ}|  |jd¡ |  |d d d¡ |  |d d d¡ d S )Nr+  r,  úAwesome SubjectúAn example body)r.  r'  úemail-link-chooser-subjectúemail-link-chooser-bodyr3   rå   rŠ   zMmailto:example@example.com?subject=Awesome%20Subject&body=An%20example%20bodyr   ræ   TÚsubjectr   Úbody)rÙ   r6   r7   r   rè   r   r[   ré   r   r   ÚqueryÚpath©r(   r:   rå   rŠ   Z
mail_partsr6  r)   r)   r*   Ú&test_create_link_with_subject_and_body¾  s0    üÿþ ÿ
z;TestChooserEmailLink.test_create_link_with_subject_and_bodyc                 C   s®   |   ddddœ¡}|  |jd¡ t |j ¡ ¡d }|d }|  |d¡ |  |d	 d¡ |  |d
 d¡ t|ƒ}t	|j
ƒ}|  |jd¡ |  |d d d¡ |  d|k¡ d S )Nr+  r,  r0  )r.  r'  r2  r3   rå   rŠ   z4mailto:example@example.com?subject=Awesome%20Subjectr   ræ   Tr4  r   r5  ©rÙ   r6   r7   r   rè   r   r[   ré   r   r   r6  r7  rƒ   r8  r)   r)   r*   Ú"test_create_link_with_subject_onlyÙ  s(    ýÿ ÿ
z7TestChooserEmailLink.test_create_link_with_subject_onlyc                 C   s®   |   ddddœ¡}|  |jd¡ t |j ¡ ¡d }|d }|  |d¡ |  |d	 d¡ |  |d
 d¡ t|ƒ}t	|j
ƒ}|  |jd¡ |  |d d d¡ |  d|k¡ d S )Nr+  r,  r1  )r.  r'  r3  r3   rå   rŠ   z3mailto:example@example.com?body=An%20example%20bodyr   ræ   Tr5  r   r4  r:  r8  r)   r)   r*   Útest_create_link_with_body_onlyð  s(    ýÿ ÿ
z4TestChooserEmailLink.test_create_link_with_body_onlyc                 C   sV   |   ddi¡}t |j ¡ ¡d }|  |d d¡ |  |d d¡ |  |d d¡ d S )	Nr.  r+  rå   rŠ   r/  r   ræ   Frð   rñ   r)   r)   r*   rí     s    ÿ ÿz2TestChooserEmailLink.test_create_link_without_textc                 C   s¼   |   dddœdddœ¡}t |j ¡ ¡d }|  |d d¡ |  |d	 d¡ |  |d
 d¡ |   dddœdddœ¡}t |j ¡ ¡d }|  |d d¡ |  |d	 d¡ |  |d
 d¡ d S )Nzexample2@example.comrà   r-  r+  rî   rå   rŠ   zmailto:example2@example.comr   ræ   Frï   Trð   rñ   r)   r)   r*   rò     s0    þþû
þþû
z5TestChooserEmailLink.test_notice_changes_to_link_textN)r`   ra   rb   r+   r"   rÙ   r;   rÞ   rì   r9  r;  r<  rí   rò   r)   r)   r)   r*   r(  ˜  s   r(  c                   @   s^   e Zd Zdd„ Zi fdd„Zi i fdd„Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ ZdS )ÚTestChooserPhoneLinkc                 C   s   |   ¡  d S rd   re   r'   r)   r)   r*   r+   5  s    zTestChooserPhoneLink.setUpc                 C   s   | j  tdƒ|¡S )NÚ#wagtailadmin_choose_page_phone_linkr.   r0   r)   r)   r*   r"   8  s    zTestChooserPhoneLink.getc                 C   s*   t dƒ}|r|dt|ƒ 7 }| j ||¡S )Nr>  r×   rØ   rÚ   r)   r)   r*   rÙ   ;  s    zTestChooserPhoneLink.postc                 C   s&   |   ¡ }|  |jd¡ |  |d¡ d S )Nr3   z$wagtailadmin/chooser/phone_link.htmlr5   r9   r)   r)   r*   r;   A  s    z TestChooserPhoneLink.test_simplec                 C   s:   |   dddœ¡}|  |jd¡ |  |d¡ |  |d¡ d S )Nr*  ú
+123456789rÛ   r3   r½   r9   r)   r)   r*   rÞ   F  s    z+TestChooserPhoneLink.test_prepopulated_formc                 C   sX   |   dddœ¡}t |j ¡ ¡d }|  |d d¡ |  |d d¡ |  |d d	¡ d S )
Nr?  Úcall©úphone-link-chooser-phone_numberzphone-link-chooser-link_textrå   rŠ   útel:+123456789r   ræ   Trð   rñ   r)   r)   r*   rì   L  s    þÿz%TestChooserPhoneLink.test_create_linkc                 C   sV   |   ddi¡}t |j ¡ ¡d }|  |d d¡ |  |d d¡ |  |d d¡ d S )	NrB  r?  rå   rŠ   rC  r   ræ   Frð   rñ   r)   r)   r*   rí   X  s     ÿz2TestChooserPhoneLink.test_create_link_without_textc                 C   s¼   |   dddœdddœ¡}t |j ¡ ¡d }|  |d d¡ |  |d	 d¡ |  |d
 d¡ |   dddœdddœ¡}t |j ¡ ¡d }|  |d d¡ |  |d	 d¡ |  |d
 d¡ d S )Nz
+222222222rà   rA  z
+111111111rî   rå   rŠ   ztel:+222222222r   ræ   Frï   Trð   rñ   r)   r)   r*   rò   a  s0    þþû
þþû
z5TestChooserPhoneLink.test_notice_changes_to_link_textc                 C   sX   |   dddœ¡}t |j ¡ ¡d }|  |d d¡ |  |d d¡ |  |d d	¡ d S )
Nz+1 234 567 890r@  rA  rå   rŠ   ztel:+1234567890r   ræ   Trð   rñ   r)   r)   r*   Útest_phone_number_has_spaces‚  s    þÿz1TestChooserPhoneLink.test_phone_number_has_spacesN)r`   ra   rb   r+   r"   rÙ   r;   rÞ   rì   rí   rò   rD  r)   r)   r)   r*   r=  4  s   	!r=  c                   @   sj   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d„ Zdd„ Zdd„ ZdS )ÚTestCanChoosePageú	test.jsonc                 C   s   |   ¡ | _tf| _d S rd   )r&   Úuserr   Údesired_classesr'   r)   r)   r*   r+   ’  s    
zTestCanChoosePage.setUpc                 C   s,   t jjdd}t|| j| jƒ}|  |¡ d S )Nú/home/©Zurl_path©r   r!   r"   r   rG  rH  rƒ   ©r(   Úhomepagerå   r)   r)   r*   Útest_can_choose_page–  s    z&TestCanChoosePage.test_can_choose_pagec                 C   s>   t jjdd}tƒ jjdd}t||| jdd}|  |¡ d S )NrI  rJ  zeventeditor@example.com)ÚemailZcopy_to)Ú	user_perm)r   r!   r"   r   r   rH  r…   )r(   rM  Zevent_editorrå   r)   r)   r*   Útest_with_user_no_permission›  s       ÿz.TestCanChoosePage.test_with_user_no_permissionc                 C   s0   t jjdd}t|| j| jdd}|  |¡ d S )Nr  rJ  T©rh   rK  ©r(   Úrootrå   r)   r)   r*   Útest_with_can_choose_root¤  s       ÿz+TestCanChoosePage.test_with_can_choose_rootc                 C   s0   t jjdd}t|| j| jdd}|  |¡ d S )Nr  rJ  FrR  ©r   r!   r"   r   rG  rH  r…   rS  r)   r)   r*   Útest_with_can_not_choose_root«  s       ÿz/TestCanChoosePage.test_with_can_not_choose_rootc                 C   s4   t jjdd}t|| j| jd|gd}|  |¡ d S )NrI  rJ  Úmove_to©rP  Ztarget_pagesrV  rL  r)   r)   r*   Útest_move_to_same_page²  s    ûz(TestCanChoosePage.test_move_to_same_pagec                 C   sB   t jjdd}t jjdd}t|| j| jd|gd}|  |¡ d S )NrI  rJ  r  rX  rY  rK  )r(   rM  rT  rå   r)   r)   r*   Útest_move_to_root½  s    ûz#TestCanChoosePage.test_move_to_rootc                 C   sB   t jjdd}t jjdd}t|| j| jd|gd}|  |¡ d S )Nú-/home/events/businessy-events/board-meetings/rJ  rI  rX  rY  rV  )r(   Úboard_meetingsrM  rå   r)   r)   r*   Ú)test_move_to_page_with_wrong_parent_typesÉ  s    ÿûz;TestCanChoosePage.test_move_to_page_with_wrong_parent_typesc                 C   sD   t jjdd}t jjdd}t|| j| jd||gd}|  |¡ d S )NrI  rJ  ú/home/secret-plans/Úbulk_move_torY  rV  )r(   rM  Úsecret_plansrå   r)   r)   r*   Útest_move_to_same_page_bulk×  s    ûz-TestCanChoosePage.test_move_to_same_page_bulkc                 C   sR   t jjdd}t jjdd}t jjdd}t|| j| jd||gd}|  |¡ d S )NrI  rJ  r_  r  r`  rY  rK  )r(   rM  ra  rT  rå   r)   r)   r*   Útest_move_to_root_bulkã  s    ûz(TestCanChoosePage.test_move_to_root_bulkc                 C   sR   t jjdd}t jjdd}t jjdd}t|| j| jd||gd}|  |¡ d S )Nr\  rJ  z$/home/secret-plans/steal-underpants/rI  r`  rY  rK  )r(   r]  Zsteal_underpantsrM  rå   r)   r)   r*   Ú.test_move_to_page_with_wrong_parent_types_bulkð  s    ÿÿûz@TestCanChoosePage.test_move_to_page_with_wrong_parent_types_bulkN)r`   ra   rb   rÁ   r+   rN  rQ  rU  rW  rZ  r[  r^  rb  rc  rd  r)   r)   r)   r*   rE    s   	rE  ©r  c                   @   sr   e Zd ZdgZdZdd„ Zdd„ Zdd	d
„Zdd„ Zdd„ Z	dd„ Z
dd„ Zedddd„ ƒZdd„ Zdd„ ZdS )ÚTestPageChooserLocaleSelectorrF  zTdata-locale-selector[^<]+<button[^<]+<svg[^<]+<use[^<]+<\/use[^<]+<\/svg[^<]+Englishc                 C   s¤   t jjdd| _tddd| _| jj| jd tjjdd| _	| j 
| j	¡| _d	| j_| j ¡  | j 
| j	¡| _| j ¡  | j| jjd
}d|› d| _|  ¡  d S )Nr   r   r   r   r   r   Úfr)Zlanguage_codeZ	Bienvenue)Úparent_page_idú	<a href="ú" data-locale-selector-link>)r   r!   r"   r#   r   r$   r%   r   ÚcreateZ	fr_localeZcopy_for_translationÚroot_page_frr   ÚsaveÚchild_page_frÚget_choose_page_urlrT   ÚLOCALE_SELECTOR_HTML_FRr&   )r(   Úswitch_to_french_urlr)   r)   r*   r+     s    

ÿ
ÿz#TestPageChooserLocaleSelector.setUpc                 C   s   | j  td|gd¡S rm   r.   )r(   rh  r)   r)   r*   r"     s    ÿz!TestPageChooserLocaleSelector.getNrŽ   c                 C   s.   |d k	rt d|gd}nt dƒ}|› d|› S )Nrn   ro   r-   r×   r   )r(   rh  r1   rŠ   r)   r)   r*   ro  $  s    z1TestPageChooserLocaleSelector.get_choose_page_urlc                 C   sT   | j  tdƒ¡}| ¡  d¡}|  || j¡ | jdd}d|› d}|  ||¡ d S )Nr-   r›   ú	locale=frr£   ri  rj  )r/   r"   r	   r   ÚassertRegexÚLOCALE_SELECTOR_HTMLro  r\   )r(   r:   r›   rq  Zfr_selectorr)   r)   r*   Ú)test_locale_selector_present_in_root_view+  s    zGTestPageChooserLocaleSelector.test_locale_selector_present_in_root_viewc                 C   s<   |   | jj¡}| ¡   d¡}|  || j¡ |  | j|¡ d S )Nr›   )r"   r$   rT   r   rs  rt  r\   rp  rŸ   r)   r)   r*   Útest_locale_selector5  s    z2TestPageChooserLocaleSelector.test_locale_selectorc                 C   s6   | j  ¡  |  | jj¡}| ¡  d¡}|  d|¡ d S ©Nr›   údata-locale-selector)rn  Údeleter"   r$   rT   r   r†   rŸ   r)   r)   r*   Ú(test_locale_selector_without_translation<  s    
zFTestPageChooserLocaleSelector.test_locale_selector_without_translationc                 C   sŒ   | j dd}| j |¡}| ¡  d¡}|  | j|¡ |  d| jj› d|¡ |  | j	j|¡ |  
|d¡ | j dd}|  d|› d	|¡ d S )
Nrr  r£   r›   zdata-title="ú"zSdata-locale-selector[^<]+<button[^<]+<svg[^<]+<use[^<]+<\/use[^<]+<\/svg[^<]+Frenchz	locale=enri  rj  )ro  r/   r"   r   r†   rp  r#   r   r\   rl  rs  )r(   rq  r:   r›   Zswitch_to_english_urlr)   r)   r*   Ú'test_locale_selector_with_active_localeC  s    þ
þzETestPageChooserLocaleSelector.test_locale_selector_with_active_localeFre  c                 C   s,   |   | jj¡}| ¡   d¡}|  d|¡ d S rw  )r"   r$   rT   r   r†   rŸ   r)   r)   r*   Ú3test_locale_selector_not_present_when_i18n_disabledU  s    zQTestPageChooserLocaleSelector.test_locale_selector_not_present_when_i18n_disabledc                 C   sn   t d| jjgd}d}| j |› d|› d¡}| ¡  d¡}|  d|¡ | j| jj|d}|  t	|ƒ|¡ d S )	Nrn   ro   ú<can_choose_root=false&user_perms=copy_to&match_subclass=truer×   ú&p=1r›   rx  )rh  r1   )
r	   r$   rT   r/   r"   r   r\   ro  rn  r
   ©r(   Z
choose_urlr1   r:   r›   rq  r)   r)   r*   Útest_query_params_preserved[  s     ÿ ÿz9TestPageChooserLocaleSelector.test_query_params_preservedc                 C   sb   t dƒ}d}| j |› d|› d¡}| ¡  d¡}|  d|¡ | j|d d}|  t|ƒ|¡ d S )	Nr-   r~  r×   r  r›   rx  z
&locale=frr£   )r	   r/   r"   r   r\   ro  r
   r€  r)   r)   r*   Ú(test_query_params_preserved_in_root_viewi  s    zFTestPageChooserLocaleSelector.test_query_params_preserved_in_root_view)NrŽ   )r`   ra   rb   rÁ   rt  r+   r"   ro  ru  rv  rz  r|  r   r}  r  r‚  r)   r)   r)   r*   rf    s   


rf  )+r   Úurllib.parser   r   Zdjango.contrib.authr   Zdjango.testr   r   r   Zdjango.urlsr	   Zdjango.utils.htmlr
   Zdjango.utils.httpr   Zwagtail.admin.views.chooserr   Zwagtail.modelsr   r   Zwagtail.test.testapp.modelsr   r   r   r   Zwagtail.test.utilsr   r   rc   rl   r¶   rÂ   rÔ   r
  r  r  r  r   r(  r=  rE  rf  r)   r)   r)   r*   Ú<module>   sV   I q Z YP Gþþ
ÿS [s