a
    YÒOc;i  ã                   @   s–  d dl Z d dlZd dlmZ d dlmZ d dlZd dl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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 d dl m!Z! d dl"m#Z#m$Z$ d dl%m&Z&m'Z'm(Z(m)Z) e*dœdd„Z+G dd„ deƒZ,G dd„ deƒZ-G dd„ deƒZ.dd„ Z/dd„ Z0G dd„ deƒZ1G d d!„ d!eƒZ2G d"d#„ d#eƒZ3G d$d%„ d%eƒZ4G d&d'„ d'eƒZ5dS )(é    N)Úmock)Ú
skipUnless)ÚchecksÚ
validators)Úcall_command)Úmodels)ÚSelect)Úmodelform_factory)ÚTestCaseÚoverride_settings)Útranslation)Ú	force_str)Ú	countriesÚdataÚfields)Úsettings)ÚCountryField)Úcustom_countriesÚforms)Ú	AllowNullÚMultiCountryÚPersonÚWithProp)Úreturnc                  C   s*   t jdd… \} }| dkp(| dko(|dkS )Nr   é   é   )ÚdjangoÚVERSION)ÚmajorÚminor© r    úY/var/www/html/gsl.tools/lib/python3.9/site-packages/django_countries/tests/test_fields.pyÚhas_db_collation   s    r"   c                   @   s<  e Zd Zeeƒ 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d„ Zdd„ Zdd„ Zd d!„ Zed"gd#�d$d%„ ƒZd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ Z d:d;„ Z!d<d=„ Z"d>d?„ Z#d@dA„ Z$dBdC„ Z%dDdE„ Z&dFdG„ Z'dHdI„ Z(dJS )KÚTestCountryFieldzDjango version < 3.2c                 C   s   t  ¡ }|  t|dƒ¡ d S )NZdb_collation)r   r   Ú
assertTrueÚhasattr©ÚselfÚcountryr    r    r!   Útest_db_collation   s    z"TestCountryField.test_db_collationc                 C   sJ   t ddd�}|  |jd¡ |  |jd¡ |  |j¡ d|_|  |j¡ d S )NúChris BeavenÚNZ©Únamer(   ZZZÚ )r   ÚassertEqualr(   ÚassertNotEqualr$   ÚassertFalse©r'   Zpersonr    r    r!   Ú
test_logic%   s    zTestCountryField.test_logicc                 C   s   |   tjtj¡ d S ©N)ÚassertIsInstancer   r(   r   ZCountryDescriptor©r'   r    r    r!   Útest_get_property_from_class/   s    z-TestCountryField.test_get_property_from_classc                 C   s,   t j d¡}|  | ¡ ddg ddif¡ d S )Nr(   ú$django_countries.fields.CountryFieldÚ
max_lengthr   )r   Ú_metaÚ	get_fieldr/   Údeconstruct©r'   Úfieldr    r    r!   Útest_deconstruct2   s
    þz!TestCountryField.test_deconstructc                 C   s"   t ddd�}|  t|jƒd¡ d S )Nr*   r+   r,   )r   r/   r   r(   r2   r    r    r!   Ú	test_text9   s    zTestCountryField.test_textc                 C   s    t ddd�}|  |jjd¡ d S )Nr*   r+   r,   úNew Zealand)r   r/   r(   r-   r2   r    r    r!   Ú	test_name=   s    zTestCountryField.test_namec                 C   sL   t ddd�}| jdd��  |  |jjd¡ W d   ƒ n1 s>0    Y  d S )Nr*   r+   r,   ú/static-assets/)Ú
STATIC_URLz/static-assets/flags/nz.gif©r   r   r/   r(   Úflagr2   r    r    r!   Ú	test_flagA   s    zTestCountryField.test_flagc                 C   s"   t dddd�}|  |jjd¡ d S )Nr*   r+   ÚUS©r-   r(   Úother_countryz//flags.example.com/us.gif)r   r/   rJ   rF   r2   r    r    r!   Útest_custom_field_flag_urlF   s    z+TestCountryField.test_custom_field_flag_urlc                 C   s$   t dddd�}|  t|jƒd¡ d S )NzQuentin CoumesÚFRÚES)r-   r(   Ústr_attr_countryZSpain)r   r/   ÚstrrN   r2   r    r    r!   Útest_custom_field_str_attrJ   s    z+TestCountryField.test_custom_field_str_attrc                 C   s2   t dddd�}|  |jjd¡ |  |jjd¡ d S )NúMatthew SchinckelÚAUZDErI   u   ðŸ‡¦ðŸ‡ºu   ðŸ‡©ðŸ‡ª)r   r/   r(   Úunicode_flagrJ   r2   r    r    r!   Útest_unicode_flagsN   s    z#TestCountryField.test_unicode_flagsc                 C   s   t dd�}|  |jjd¡ d S )NrQ   ©r-   r.   )r   r/   r(   rS   r2   r    r    r!   Útest_unicode_flag_blankS   s    
z(TestCountryField.test_unicode_flag_blankc                 C   sŠ   t ddd�}| jddd��  |  |jjd¡ W d   ƒ n1 s@0    Y  | jdd	��  |  |jjd
¡ W d   ƒ n1 s|0    Y  d S )Nr*   r+   r,   zimg/flag-{code_upper}.pngrC   )ÚCOUNTRIES_FLAG_URLrD   z/static-assets/img/flag-NZ.pngz*https://flags.example.com/{code_upper}.PNG)rW   z https://flags.example.com/NZ.PNGrE   r2   r    r    r!   Útest_COUNTRIES_FLAG_URL_settingW   s    ÿ.ÿz0TestCountryField.test_COUNTRIES_FLAG_URL_settingc                 C   s    t ddd�}|  |jjd¡ d S )Nr*   r+   r,   zflag-sprite flag-n flag-_z©r   r/   r(   Zflag_cssr2   r    r    r!   Útest_flag_cssd   s    zTestCountryField.test_flag_cssc                 C   s   t dd�}|  |jjd¡ d S )Nr*   rU   r.   rY   r2   r    r    r!   Útest_flag_css_blankh   s    
z$TestCountryField.test_flag_css_blankc                 C   sB   t jjdd�}|  |jjd¡ t jj|jd�}|  |jjd¡ d S )NúThe OutsiderrU   r.   ©Úpk)r   ÚobjectsÚcreater/   r(   ÚcodeÚgetr^   r2   r    r    r!   Ú
test_blankl   s    zTestCountryField.test_blankc                 C   s>   t jjd d�}|  |jj¡ t jj|jd�}|  |jj¡ d S )N©r(   r]   )r   r_   r`   ÚassertIsNoner(   ra   rb   r^   r2   r    r    r!   Ú	test_nulls   s    zTestCountryField.test_nullúdjango_countries.E100)ZSILENCED_SYSTEM_CHECKSc              	   C   sö   zÀG dd„ dt jƒ}G dd„ dt jƒ}t ¡ }|  dd„ |D ƒdgd ¡ d	d
„ |D ƒ}|  d||j d¡ jv ¡ |  	d||j d¡ jv ¡ W ddl
m} | d¡}|j  d¡ |j  d¡ n0ddl
m} | d¡}|j  d¡ |j  d¡ 0 d S )Nc                   @   s   e Zd Zejdddd�ZdS )zBTestCountryField.test_multi_null_country.<locals>.MultiNullCountryT)ÚmultipleÚnullÚblankN©Ú__name__Ú
__module__Ú__qualname__r   r   r   r    r    r    r!   ÚMultiNullCountry~   s   ro   c                   @   s   e Zd Zejddd�ZdS )zITestCountryField.test_multi_null_country.<locals>.MultiNullCountryNoBlankT)rh   ri   Nrk   r    r    r    r!   ÚMultiNullCountryNoBlank�   s   rp   c                 S   s   g | ]
}|j ‘qS r    )Úid©Ú.0Úer    r    r!   Ú
<listcomp>…   ó    z<TestCountryField.test_multi_null_country.<locals>.<listcomp>rg   r   c                 S   s   i | ]}|j |“qS r    )Úobjrr   r    r    r!   Ú
<dictcomp>†   rv   z<TestCountryField.test_multi_null_country.<locals>.<dictcomp>z
blank=Truer   r   )ÚappsÚdjango_countries_testsZmultinullcountryZmultinullcountrynoblank)r   ZModelr   Z
run_checksr/   r1   r:   r;   Úhintr$   Zdjango.appsry   Zget_app_configÚpop)r'   ro   rp   ÚerrorsZerrors_dictry   Ztest_configr    r    r!   Útest_multi_null_countryz   s4    ÿÿ
ÿÿÿ
ü
z(TestCountryField.test_multi_null_countryc                 C   s8   t jjddd� t j d¡jdd�}|  |jjd¡ d S )Nr   r+   r,   r(   rU   )r   r_   r`   Údeferrb   r/   r(   ra   r2   r    r    r!   Útest_deferred˜   s    zTestCountryField.test_deferredc                 C   s4   t jjddd� t j d¡ ¡ }|  |jjd¡ d S )Nr   r+   r,   r-   )r   r_   r`   Úonlyrb   r/   r(   ra   r2   r    r    r!   Ú	test_only�   s    zTestCountryField.test_onlyc                 C   s0   t jjd d� t j d¡ ¡ }|  |jj¡ d S )Nrd   r(   )r   r_   r`   r   rb   re   r(   ra   r2   r    r    r!   Útest_nullable_deferred¢   s    z'TestCountryField.test_nullable_deferredc                 C   s@   t ddd�}|  t|jƒd¡ t dd d�}|  t|jƒd¡ d S )Nr*   r+   r,   r   r\   r   )r   r/   Úlenr(   r2   r    r    r!   Útest_len§   s    zTestCountryField.test_lenc                 C   sj   t jjddd� t jjddd� t jjddd� t jjdd�}| d¡jdd	d
�}|  t|ƒddg¡ d S )Nr*   r+   r,   ÚPavlovaúKiller everythingrR   rd   r-   T©Zflat)r   r_   r`   ÚfilterZorder_byÚvalues_listr/   Úlist)r'   ÚlookupÚnamesr    r    r!   Útest_lookup_text®   s    z!TestCountryField.test_lookup_textc                 C   sp   t jjddd� t jjddd� t jjddd� tjddd�}t jj|d	�}|jd
dd�}|  t|ƒdg¡ d S )Nr*   r+   r,   r†   r‡   rR   r.   ©ra   Úflag_urlrd   r-   Trˆ   )	r   r_   r`   r   ÚCountryr‰   rŠ   r/   r‹   )r'   ZozrŒ   r�   r    r    r!   Útest_lookup_country·   s    z$TestCountryField.test_lookup_countryc                 C   s,   t jjdd� t j ¡ }|  |jjd¡ d S )Nr\   rU   r.   )r   r_   r`   rb   r/   r(   ra   r2   r    r    r!   Útest_save_empty_countryÁ   s    
z(TestCountryField.test_save_empty_countryc                 C   s0   t tdgd�}|ƒ jd }|  t|jtƒ¡ d S ©Nr(   )r   )r	   r   r   r$   Ú
isinstanceÚwidgetr   )r'   ÚFormZ
form_fieldr    r    r!   Útest_create_modelformÆ   s    z&TestCountryField.test_create_modelformc                 C   s   t tdgd�}|ƒ  ¡  d S r”   )r	   r   Zas_p)r'   r—   r    r    r!   Útest_render_formË   s    z!TestCountryField.test_render_formc                 C   s.   t ddd�}|  |jjd¡ |  |jd¡ d S )NrL   Útest)r(   Úpublic_field)r   r/   r(   ra   r›   )r'   Z	with_propr    r    r!   Útest_model_with_propÏ   s    z%TestCountryField.test_model_with_propc                 C   sp   t jjddd� t jjddd� t jjddd� t jjddd� |  tt jjddgd	�jd
dd�ƒg d¢¡ d S )NÚAr+   r,   ÚBrR   ÚCrL   ÚD)Zcountry__inr-   Trˆ   )r�   rž   r    )r   r_   r`   r/   r‹   r‰   rŠ   r6   r    r    r!   Útest_inÕ   s    ÿÿúzTestCountryField.test_inc                 C   sd   t jjddd�}|  tt jjdd�ƒ|g¡ |  tt jjdd�ƒg ¡ |  tt jjdd�ƒg ¡ d S )Nr�   r+   r,   )Zcountry__exactÚnzrA   ©r   r_   r`   r/   r‹   r‰   ©r'   Úpr    r    r!   Ú
test_exactä   s    zTestCountryField.test_exactc                 C   s0   t jjddd�}|  tt jjdd�ƒ|g¡ d S )Nr�   r+   r,   r¢   )Zcountry__iexactr£   r¤   r    r    r!   Útest_iexactê   s    zTestCountryField.test_iexactc                 C   s€   t jjddd�}|  tt jjdd�ƒ|g¡ |  tt jjdd�ƒg ¡ |  tt jjdd�ƒ|g¡ |  tt jjdd�ƒg ¡ d S )	Nr�   r+   r,   rA   )Zcountry__nameznew zealand)Zcountry__inameznew zr£   r¤   r    r    r!   Útest_by_country_nameî   s
    z%TestCountryField.test_by_country_namec                 C   s®   t jjddd�}t jjddd�}|  tt jjdd�ƒ||g¡ |  tt jjdd�ƒg ¡ |  tt jjdd�ƒ||g¡ |  tt jjdd�ƒg ¡ |  tt jjd	d�ƒg ¡ d S )
Nr�   r+   r,   ZNCÚew©Zcountry__containsZEW)Zcountry__icontainsr¢   r£   ©r'   r¥   Úppr    r    r!   Útest_by_country_name_containsõ   s    z.TestCountryField.test_by_country_name_containsc                 C   sÈ   t jjddd�}t jjddd�}|  tt jjdd�ƒ||h¡ |  tt jjdd�ƒ|g¡ |  tt jjdd�ƒg ¡ |  tt jjdd	�ƒ|g¡ |  tt jjdd�ƒg ¡ |  tt jjd
d	�ƒg ¡ d S )Nr�   ZZAr,   ZTFZSouthrª   )Zcountry__startswithZsouth)Zcountry__istartswithZza©r   r_   r`   r/   Úsetr‰   r‹   r«   r    r    r!   Útest_by_country_name_startswithÿ   s    ÿz0TestCountryField.test_by_country_name_startswithc                 C   sÈ   t jjddd�}t jjddd�}|  tt jjdd�ƒ||h¡ |  tt jjdd�ƒ|g¡ |  tt jjdd�ƒg ¡ |  tt jjdd	�ƒ|g¡ |  tt jjdd�ƒg ¡ |  tt jjd
d	�ƒg ¡ d S )Nr�   ZASr,   rH   ZAmericarª   )Zcountry__endswithZamerica)Zcountry__iendswithÚusr®   r«   r    r    r!   Útest_by_country_name_endswith  s    ÿÿz.TestCountryField.test_by_country_name_endswithc                 C   sÈ   t jjddd�}t jjddd�}|  tt jjdd�ƒ||h¡ |  tt jjdd�ƒ|g¡ |  tt jjd	d�ƒg ¡ |  tt jjd	d
�ƒ|g¡ |  tt jjdd�ƒg ¡ |  tt jjdd
�ƒg ¡ d S )Nr�   ZMKr,   ZMPZNorthrª   zNorth\b)Zcountry__regexznorth\b)Zcountry__iregexÚmpr®   r«   r    r    r!   Útest_by_country_name_regex  s    z+TestCountryField.test_by_country_name_regexN))rl   rm   rn   r   r"   r)   r3   r7   r?   r@   rB   rG   rK   rP   rT   rV   rX   rZ   r[   rc   rf   r   r~   r€   r‚   rƒ   r…   rŽ   r’   r“   r˜   r™   rœ   r¡   r¦   r§   r¨   r­   r°   r²   r´   r    r    r    r!   r#      sJ   




	

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 )ÚTestValidationc                 C   s   t ddd�}| ¡  d S )NÚChrisr+   r,   ©r   Ú
full_cleanr2   r    r    r!   Útest_validate(  s    zTestValidation.test_validatec                 C   s   t ddd�}| ¡  d S )Nr¶   ÚNZLr,   r·   r2   r    r    r!   Útest_validate_alpha3,  s    z#TestValidation.test_validate_alpha3c                 C   s   t dd�}|  tj|j¡ d S )Nr¶   rU   ©r   ÚassertRaisesr   ÚValidationErrorr¸   r2   r    r    r!   Útest_validate_empty0  s    
z"TestValidation.test_validate_emptyc                 C   s    t ddd�}|  tj|j¡ d S )Nr¶   ú:(r,   r¼   r2   r    r    r!   Útest_validate_invalid4  s    z$TestValidation.test_validate_invalidc                 C   s   t ddgd�}| ¡  d S )Nr+   rR   ©r   ©r   r¸   r2   r    r    r!   Útest_validate_multiple8  s    z%TestValidation.test_validate_multiplec                 C   s   t ƒ }|  tj|j¡ d S r4   ©r   r½   r   r¾   r¸   r2   r    r    r!   Útest_validate_multiple_empty<  s    z+TestValidation.test_validate_multiple_emptyc                 C   s"   t ddgd�}|  tj|j¡ d S )NrÀ   rR   rÂ   rÅ   r2   r    r    r!   Útest_validate_multiple_invalid@  s    z-TestValidation.test_validate_multiple_invalidc                 C   s   t ddd�}| ¡  d S )Nr+   Úxx)r   Zuneditable_countriesrÃ   r2   r    r    r!   Ú!test_validate_multiple_uneditableD  s    z0TestValidation.test_validate_multiple_uneditablec                 C   s&   t ddd�}| d¡}|  |d¡ d S )NT©rh   rj   r.   ©r   Zget_prep_valuer/   ©r'   Zcountry_field_instanceZ
prep_valuer    r    r!   Ú test_get_prep_value_empty_stringH  s    
z/TestValidation.test_get_prep_value_empty_stringc                 C   s&   t ddd�}| d¡}|  |d¡ dS )z–
        Note: django migrations will call get_prep_value() with None
        see: https://github.com/SmileyChris/django-countries/issues/215
        TrÊ   Nr.   rË   rÌ   r    r    r!   Útest_get_prep_value_noneM  s    
z'TestValidation.test_get_prep_value_nonec                 C   s&   t ddd�}| d¡}|  |d¡ d S )NTrÊ   r   Ú0rË   rÌ   r    r    r!   Ú test_get_prep_value_invalid_typeV  s    
z/TestValidation.test_get_prep_value_invalid_typeN)rl   rm   rn   r¹   r»   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dd„ Zdd„ ZdS )ÚTestCountryCustomc                 C   s    t ddd�}|  |jjd¡ d S )Nr*   ÚNV©r-   Úfantasy_countryÚ	Neverland)r   r/   rÔ   r-   r2   r    r    r!   rB   ]  s    zTestCountryCustom.test_namec                 C   s"   |   ttj d¡jƒddg¡ d S )NrÔ   )rÒ   rÕ   )r+   rA   )r/   r‹   r   r:   r;   Úchoicesr6   r    r    r!   Ú
test_fielda  s    þzTestCountryCustom.test_fieldc              
   C   s2   t j d¡}|  | ¡ ddg tjdddœf¡ d S )NrÔ   r8   Tr   )r   rj   r9   )r   r:   r;   r/   r<   r   ÚFantasyCountriesr=   r    r    r!   r?   g  s    ýüþz"TestCountryCustom.test_deconstructN)rl   rm   rn   rB   r×   r?   r    r    r    r!   rÑ   \  s   rÑ   c                  C   s0   t tjd�} |  ¡ d dg tjddœfks,J ‚d S )NrÂ   r8   é   )r   r9   )r   r   ÚGBRegionCountriesr<   )r>   r    r    r!   Ú'test_longer_country_code_deconstructionx  s    
ürÛ   c                  C   sX   t tjdd�} t| jƒd tdd„ | jjD ƒƒ }|  ¡ d dg tj|ddœfksTJ ‚d S )NT)r   rh   é   c                 s   s   | ]}t |ƒV  qd S r4   )r„   )rs   ra   r    r    r!   Ú	<genexpr>ˆ  rv   zCtest_longer_country_code_multiple_deconstruction.<locals>.<genexpr>r8   )r   r9   rh   )r   r   rÚ   r„   r   Úsumr<   )r>   Úexpected_max_lengthr    r    r!   Ú0test_longer_country_code_multiple_deconstruction‚  s    þþýürà   c                   @   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 )ÚTestCountryMultiplec                 C   s   t ƒ }|  |jg ¡ d S r4   )r   r/   r   ©r'   rw   r    r    r!   Ú
test_empty—  s    zTestCountryMultiple.test_emptyc                 C   s   t j ¡  d S r4   )r   r_   r`   r6   r    r    r!   Útest_empty_save›  s    z#TestCountryMultiple.test_empty_savec                 C   sJ   t dd�}|  t|jƒd¡ |  t|jd tjƒ¡ |  |jd d¡ d S )Nr+   rÂ   rÜ   r   ©r   r/   r„   r   r$   r•   r   r‘   râ   r    r    r!   Útest_singlež  s    
zTestCountryMultiple.test_singlec                 C   sb   t dd�}|  t|jƒd¡ |jD ]}|  t|tjƒ¡ q"|  |jd d¡ |  |jd d¡ d S )NzAU,NZrÂ   r   r   rR   rÜ   r+   rå   ©r'   rw   r(   r    r    r!   Útest_multiple¤  s    

z!TestCountryMultiple.test_multiplec                 C   sV   t dd�}|jD ]}|  t|tjƒ¡ q|  |jddg¡ t dd�}|  |jg ¡ d S )NzAU,NZ,AUrÂ   rR   r+   r.   )r   r   r$   r•   r   r‘   r/   rç   r    r    r!   Útest_multiple_with_duplicates¬  s    


z1TestCountryMultiple.test_multiple_with_duplicatesc                 C   s"   t ƒ }d|_|  |jddg¡ d S )NzNZ,AUrR   r+   ©r   r   r/   râ   r    r    r!   Útest_set_textµ  s    z!TestCountryMultiple.test_set_textc                 C   s&   t ƒ }ddg|_|  |jddg¡ d S ©Nr+   rR   rê   râ   r    r    r!   Útest_set_listº  s    
z!TestCountryMultiple.test_set_listc                 C   s&   t ƒ }t d¡|_|  |jdg¡ d S )Nr+   ©r   r   r‘   r   r/   râ   r    r    r!   Útest_set_country¿  s    z$TestCountryMultiple.test_set_countryc                 C   s2   t ƒ }t d¡t d¡g|_|  |jddg¡ d S rì   rî   râ   r    r    r!   Útest_set_countriesÄ  s    z&TestCountryMultiple.test_set_countriesc                 C   s<   t dd„ tD ƒƒ}tjj|d� tj ¡ }|  |j|¡ d S )Nc                 s   s   | ]}|d  V  qdS )r   Nr    )rs   Úcr    r    r!   rÝ   Ê  rv   z9TestCountryMultiple.test_all_countries.<locals>.<genexpr>rÂ   )Úsortedr   r   r_   r`   rb   r/   )r'   Z	all_codesrw   r    r    r!   Útest_all_countriesÉ  s    
z&TestCountryMultiple.test_all_countriesc              	   C   s@   t j d¡}ttjƒd d }|  | ¡ ddg |ddœf¡ d S )Nr   r   rÜ   r8   T)r9   rh   )r   r:   r;   r„   r   Z	COUNTRIESr/   r<   )r'   r>   rß   r    r    r!   r?   Ï  s    üþz$TestCountryMultiple.test_deconstructc                 C   s6   t jjddgd�}t jjdd�}|  t|ƒ|g¡ d S )Nr+   rR   rÂ   )Zcountries__contains)r   r_   r`   r‰   r/   r‹   )r'   rw   Úqsr    r    r!   Útest_containsÜ  s    z!TestCountryMultiple.test_containsN)rl   rm   rn   rã   rä   ræ   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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'd(„ Zd)d*„ Zd+S ),ÚTestCountryObjectc                 C   s&   t jddd�}|  t|ƒtdƒ¡ d S ©NÚXXr.   r�   )r   r‘   r/   Úhashr&   r    r    r!   Ú	test_hashã  s    zTestCountryObject.test_hashc                 C   s€   t jdd�}t jddd�}t jddd�}|  t|ƒdd›d�¡ |  t|ƒdd›d	d›d�¡ |  t|ƒdd›d
d›d�¡ d S )Nrø   ©ra   r.   r�   r-   ©ra   Zstr_attrzCountry(code=ú)z, flag_url=z, str_attr=)r   r‘   r/   Úrepr)r'   Zcountry1Zcountry2Zcountry3r    r    r!   Ú	test_reprç  s    þþzTestCountryObject.test_reprc                 C   s    t jdd�}|  t|ƒd¡ d S )Nr+   rû   ©r   r‘   r/   rO   r&   r    r    r!   Útest_strõ  s    zTestCountryObject.test_strc                 C   s"   t jddd�}|  t|ƒd¡ d S )Nr+   r-   rü   rA   r   r&   r    r    r!   Útest_str_attrù  s    zTestCountryObject.test_str_attrc                 C   s    t jddd�}|  |jd¡ d S )Nr.   r�   ©r   r‘   r/   rF   r&   r    r    r!   Útest_flag_on_empty_codeý  s    z)TestCountryObject.test_flag_on_empty_codec                 C   s    t jddd�}|  |jd¡ d S )NÚNLr.   r�   ÚNED)r   r‘   r/   Zioc_coder&   r    r    r!   Útest_ioc_code  s    zTestCountryObject.test_ioc_codec                 C   s&   t j d¡}|  |t jddd�¡ d S )Nr  r  r.   )r�   )r   r‘   Úcountry_from_iocr/   r&   r    r    r!   Útest_country_from_ioc_code  s    z,TestCountryObject.test_country_from_ioc_codec                 C   s   t j d¡}|  |¡ d S )Nr.   ©r   r‘   r  re   r&   r    r    r!   Ú test_country_from_blank_ioc_code	  s    z2TestCountryObject.test_country_from_blank_ioc_codec                 C   s   t j d¡}|  |¡ d S )NÚXXXr
  r&   r    r    r!   Ú'test_country_from_nonexistence_ioc_code  s    z9TestCountryObject.test_country_from_nonexistence_ioc_codec                 C   s   t jdd�}|  |jd¡ d S )NÚBNrû   ZBRN©r   r‘   r/   Zalpha3r&   r    r    r!   Útest_alpha3  s    zTestCountryObject.test_alpha3c                 C   s   t jdd�}|  |jd¡ d S )Nrø   rû   r.   r  r&   r    r    r!   Útest_alpha3_invalid  s    z%TestCountryObject.test_alpha3_invalidc                 C   s   t jdd�}|  |jd¡ d S )Nr  rû   é`   ©r   r‘   r/   Únumericr&   r    r    r!   Útest_numeric  s    zTestCountryObject.test_numericc                 C   sR   t jdd�}|  |jd¡ t jdd�}|  |jd¡ t jdd�}|  |jd¡ d S )NÚALrû   Z008r  Z096r+   Z554©r   r‘   r/   Znumeric_paddedr&   r    r    r!   Útest_numeric_padded  s    z%TestCountryObject.test_numeric_paddedc                 C   s   t jdd�}|  |jd ¡ d S ©Nrø   rû   r  r&   r    r    r!   Útest_numeric_invalid%  s    z&TestCountryObject.test_numeric_invalidc                 C   s   t jdd�}|  |jd ¡ d S r  r  r&   r    r    r!   Útest_numeric_padded_invalid)  s    z-TestCountryObject.test_numeric_padded_invalidc                 C   s    t jddd�}|  |jd¡ d S r÷   r  r&   r    r    r!   Útest_empty_flag_url-  s    z%TestCountryObject.test_empty_flag_urlc                 C   s   t jdd�}|  |jd¡ d S )Nrº   rû   r+   ©r   r‘   r/   ra   r&   r    r    r!   Útest_alpha2_code1  s    z"TestCountryObject.test_alpha2_codec                 C   s   t jdd�}|  |jd¡ d S )NZNZXrû   r  r&   r    r    r!   Útest_alpha2_code_invalid5  s    z*TestCountryObject.test_alpha2_code_invalidc                 C   s   t jdd�}|  |jd¡ d S )Ni*  rû   r+   r  r&   r    r    r!   Útest_numeric_code9  s    z#TestCountryObject.test_numeric_codec                 C   s   t jdd�}|  |jd¡ d S )Niç  rû   r  r&   r    r    r!   Útest_numeric_code_invalid=  s    z+TestCountryObject.test_numeric_code_invalidc                 C   sV   t j tdddd„ i¡�* tjdd�}|  |jd¡ W d   ƒ n1 sH0    Y  d S )NZ
EXTENSIONSÚcodex2c                 S   s
   | j d S )Nr   rû   )rñ   r    r    r!   Ú<lambda>B  rv   z3TestCountryObject.test_extensions.<locals>.<lambda>r+   rû   ZNZNZ)r   ÚpatchÚobjectr   r‘   r/   r"  r&   r    r    r!   Útest_extensionsA  s    z!TestCountryObject.test_extensionsN)rl   rm   rn   rú   rÿ   r  r  r  r  r	  r  r  r  r  r  r  r  r  r  r  r  r   r!  r&  r    r    r    r!   rö   â  s*   rö   c                   @   sH   e Zd Zejjej dd�dd„ ƒZdd„ Z	dd„ Z
d	d
„ Zdd„ ZdS )ÚTestModelFormzNo i18n)Úreasonc              	   C   sŒ   t  ¡ }t  d¡ t ¡ }z`|  ttƒd d d¡ |  |jd j	d d d¡ |  |jd j
j	d d d¡ W t  |¡ nt  |¡ 0 d S )NÚeor   rÜ   ZAfganior(   )r   Zget_languageÚactivater   Ú
PersonFormr/   r‹   r   r   rÖ   r–   )r'   ÚlangÚformr    r    r!   Útest_translated_choicesH  s    
 z%TestModelForm.test_translated_choicesc                 C   s”   d}t  ¡ }|  |jd jd |¡ t|d ƒ dd¡d }|  |d¡ t  ¡ }|  |jd jd |¡ t|d ƒ dd¡d }d}|  ||¡ d S )	N)r.   z	---------r(   r   ú>rÜ   z/<select name="country" required id="id_country"r   z<<select name="countries" required id="id_countries" multiple)	r   r+  r/   r   rÖ   rO   ÚsplitÚMultiCountryFormr0   )r'   rj   r-  ÚhtmlZ
multi_formÚexpectedr    r    r!   Útest_blank_choiceW  s    zTestModelForm.test_blank_choicec                 C   s$   t  ¡ }|  |jd jd d¡ d S )NZfavourite_countryr   )ZAFZAfghanistan)r   r+  r/   r   rÖ   ©r'   r-  r    r    r!   Útest_no_blank_choicee  s    ÿz"TestModelForm.test_no_blank_choicec                 C   sH   t  ¡ }|  |jd jd d¡ t|d ƒ dd¡d }|  |d¡ d S )Nr(   r   )r.   z(select country)r/  rÜ   z&<select name="country" id="id_country")r   ZAllowNullFormr/   r   rÖ   rO   r0  )r'   r-  r2  r    r    r!   Útest_blank_choice_labelk  s    z%TestModelForm.test_blank_choice_labelc                 C   s&   t jdddgid�}|  |ji ¡ d S )Nr   r+   rR   )r   )r   r1  r/   r}   r5  r    r    r!   Útest_validationq  s    zTestModelForm.test_validationN)rl   rm   rn   ÚpytestÚmarkZskipifr   ZUSE_I18Nr.  r4  r6  r7  r8  r    r    r    r!   r'  G  s   
r'  c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestPicklingc                 C   s~   t ddd�}tj|jdd�}|  t|ƒd¡ t |¡}|  |jd¡ |  |j	d¡ |  |j
d ¡ |  |jt¡ |  |j¡ d S )Nr*   r+   r,   r   ©ÚprotocoléÈ   rA   )r   ÚpickleÚdumpsr(   Ú
assertLessr„   Úloadsr/   ra   r-   r�   ZassertIsr   re   r   )r'   ÚchrisZnewly_pickled_zealandZ	unpickledr    r    r!   Útest_standard_country_picklingw  s    
z+TestPickling.test_standard_country_picklingc                 C   st   t ddd�}tj|jdd�}|  t|ƒd¡ t |¡}|  |jd¡ |  |j	d¡ |  |j
d ¡ |  |jtj¡ d S )Nr*   rÒ   rÓ   r   r<  i,  rÕ   )r   r?  r@  rÔ   rA  r„   rB  r/   ra   r-   r�   r5   r   r   rØ   )r'   rC  Zpickled_neverlandZ	neverlandr    r    r!   Útest_custom_country_picklingˆ  s    
z)TestPickling.test_custom_country_picklingN)rl   rm   rn   rD  rE  r    r    r    r!   r;  v  s   r;  c                   @   s   e Zd Zdd„ ZdS )ÚTestLoadDatac                 C   sÒ   t jjddd�}tjjddgd�}tjddd��P}td	d
|d� | ¡  | ¡  | ¡  | 	d¡ td|j
ddƒ W d   ƒ n1 s†0    Y  |  t j ¡ jd¡ tj ¡ j}dd„ |D ƒ}|  |ddg¡ d S )Nr*   r+   r,   rR   rÂ   z.jsonzw+)ÚsuffixÚmodeZdumpdatarz   )Ústdoutr   Zloaddataz-vrÏ   c                 S   s   g | ]
}|j ‘qS r    rû   )rs   r(   r    r    r!   ru   ¦  rv   z+TestLoadData.test_basic.<locals>.<listcomp>)r   r_   r`   r   ÚtempfileÚNamedTemporaryFiler   ÚdeleteÚflushÚseekr-   r/   rb   r(   r   )r'   ÚsingleÚmultiÚcapturer   r    r    r!   Ú
test_basicš  s    
.zTestLoadData.test_basicN)rl   rm   rn   rR  r    r    r    r!   rF  ™  s   rF  )6r?  rJ  Zunittestr   Zunittest.caser   r   r9  Zdjango.corer   r   Zdjango.core.managementr   Z	django.dbr   Zdjango.formsr   Zdjango.forms.modelsr	   Zdjango.testr
   r   Zdjango.utilsr   Zdjango.utils.encodingr   Zdjango_countriesr   r   r   Zdjango_countries.confr   Zdjango_countries.fieldsr   Zdjango_countries.testsr   r   Zdjango_countries.tests.modelsr   r   r   r   Úboolr"   r#   rµ   rÑ   rÛ   rà   rá   rö   r'  r;  rF  r    r    r    r!   Ú<module>   s>     5
Le/#