U
    {h                     @   sX   d dl mZmZ d dlmZ d dlmZ ddlmZ eddgdG d	d
 d
eeZ	dS )    )TestCaseoverride_settings)Site)ImportantPagesGenericSetting   )GenericSettingsTestMixin	localhostother)ZALLOWED_HOSTSc                   @   s^   e Zd Zdd Zdd Zdd Zdd Zdd
dZdd Zdd Z	dd Z
dd Zdd ZdS )GenericSettingModelTestCasec                 C   s   t jj| jj| jj| jjdS )N)sign_up_pagegeneral_terms_pageprivacy_policy_page)r   objectscreatedefault_siteZ	root_page
other_siteself r   y/var/www/dating/data/www/fatepal.com/env/lib/python3.8/site-packages/wagtail/contrib/settings/tests/generic/test_model.py+_create_importantpagesgenericsetting_object   s
    zGGenericSettingModelTestCase._create_importantpagesgenericsetting_objectc              
   C   sT   | j | jf| j| jffD ]6\}}| j|d | | jj|d| W 5 Q R X qd S )NsiteZrequest_or_site)r   default_settingsr   subTestassertEqualload)r   r   expected_settingsr   r   r   8test_request_or_site_with_site_returns_expected_settings   s    

zTGenericSettingModelTestCase.test_request_or_site_with_site_returns_expected_settingsc              
   C   sf   |   }| j | jd}|| jf|| jffD ]6\}}| j|d | | jj|d| W 5 Q R X q*d S )Nr   )requestr   )get_requestr   r   r   r   r   )r   Zdefault_site_requestZother_site_requestr    r   r   r   r   ;test_request_or_site_with_request_returns_expected_settings   s    zWGenericSettingModelTestCase.test_request_or_site_with_request_returns_expected_settingsc                 C   sx   t |  |  gdD ]\\}}| j|dB t| | d" tdD ]}| jj|d qJW 5 Q R X W 5 Q R X qd S )Nr   )attempt   r   )		enumerater!   r   r   Zfind_for_requestassertNumQueriesranger   r   )r   ir    r   r   r   0test_request_or_site_with_request_result_caching+   s    
zLGenericSettingModelTestCase.test_request_or_site_with_request_result_cachingr$   c              	   C   s<   |    | |  t }|j |j |j W 5 Q R X dS )zThe `select_related` attribute on setting models is `None` by default, so fetching foreign keys values requires additional queriesN)r   r&   r   r   r   r   r   )r   expected_queriessettingsr   r   r   test_select_related8   s    z/GenericSettingModelTestCase.test_select_relatedc                 C   s*   zdddgt _| jdd W 5 dt _X dS )z^But, `select_related` can be used to reduce the number of queries needed to fetch foreign keysNr   r   r   r   )r*   )r   Zselect_relatedr,   r   r   r   r   -test_select_related_use_reduces_total_queriesC   s    zIGenericSettingModelTestCase.test_select_related_use_reduces_total_queriesc              
   C   s`   |    t }dD ]F\}}| j|d, | ||| | t|j|| W 5 Q R X qd S )N))r   http://localhost/)r   r.   )r   zhttp://other/)page_fk_field)r   r   r   r   r   get_page_urlgetattrpage_url)r   r+   r/   Zexpected_resultr   r   r   #test_get_page_url_returns_page_urlsQ   s    
 z?GenericSettingModelTestCase.test_get_page_url_returns_page_urlsc              	   C   sJ   |   }| t |d W 5 Q R X | t |jj W 5 Q R X d S )Nnot_an_attribute)r   ZassertRaisesAttributeErrorr0   r2   r4   )r   r+   r   r   r   Atest_get_page_url_raises_attributeerror_if_attribute_name_invalidb   s
    z]GenericSettingModelTestCase.test_get_page_url_raises_attributeerror_if_attribute_name_invalidc              
   C   s\   |   }d | jfD ]D}| j|d. ||_| |dd | |jjd W 5 Q R X qd S )N)Zattribute_valuetest_attribute )r   r   r   r7   r   r0   r2   )r   r+   valuer   r   r   Dtest_get_page_url_returns_empty_string_if_attribute_value_not_a_pagek   s    z`GenericSettingModelTestCase.test_get_page_url_returns_empty_string_if_attribute_value_not_a_pagec                 C   s    |    | tt d d S )NzImportant pages settings)r   r   strr   r   r   r   r   r   test_display_as_stringu   s
    
z2GenericSettingModelTestCase.test_display_as_stringN)r$   )__name__
__module____qualname__r   r   r"   r)   r,   r-   r3   r6   r:   r<   r   r   r   r   r
   	   s   
	
r
   N)
Zdjango.testr   r   Zwagtail.modelsr   Zwagtail.test.testapp.modelsr   baser   r
   r   r   r   r   <module>   s
   