U
    }HaF1                     @   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m	Z	 d dl
mZmZmZmZmZmZ d dlmZ dd	lm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'd0d1 Z(d2d3 Z)d4d5 Z*d6d7 Z+ed8d9 Z,dS ):    N)forms)AppendedText)DynamicError)
FormHelperFormHelpersException)HTMLDivFieldFieldsetLayout
MultiField)
SampleForm   )only_uni_formc                  C   s   t  } tddd}|| _|  jtdd |jD ]$}t|tsBt|j	d dks0tq0|d d dksjt|d d dks~t|d	 d dkstd S )
Nemail	password1	password2
test-classZ	css_classclassr   r      )
r   r   layoutallwrapr	   fields
isinstanceAssertionErrorattrs)helperr   field r    G/tmp/pip-unpacked-wheel-rp2i33ek/crispy_forms/tests/test_dynamic_api.pytest_wrap_all_fields   s    
r"   c                  C   s   t  } tddd}|| _| dd jtdd t|jd trBtt|jd tsVtt|jd	 tsjt| d jtd
dd t|d tst|d j	d
kst|d d dkstd S Nr   r   r   r      r   r   r   r   legend)
r   r   r   r   r	   r   r   r   r
   r%   r   r   r    r    r!   test_wrap_selected_fields   s    r'   c                  C   s  t  } tddd}|| _| dd jtdd |jd dks@tt|jd tsTt|jd d dksjt|jd d dkstttddd}|| _| dd jtdd t|jd tstt|jd d tst|jd d d dkst|jd d dks
t|jd d	 dks"ttddd}|| _| d jtdd t|jd ts\t|jd dkspt|jd	 dksttddd}|| _| d jt	d
dd t|jd t	st|jd j
d
kst|jd dkst|jd	 dkstd S r#   )r   r   r   wrap_togetherr	   r   r   r   r   r
   r%   r&   r    r    r!   test_wrap_together_with_slices-   sB    r)   c                  C   s  t  } tddd}|| _| d d jtdd t|jd tsBt|jd dksTt|jd d dksjt|jd d dkstt  } tddd}|| _| dd  jtdd |jd dkstt|jd tst|jd d dkst|jd d dkstd S )	Nr   r   r   r   r   r   r   r   )r   r   r   r(   r	   r   r   r   r&   r    r    r!   !test_wrap_together_partial_slicesT   s     r*   c                  C   s@   t  } tdtdd| _| d jdd d| jd jks<td S )Nr   r   r   Treadonlyr,   r   )r   r   r	   r   update_attributesr   r   r   r    r    r!   test_update_attributesj   s    r/   c                  C   s  t  } tdtdd}|| _| tjdd t|d ts@t|d jddiksVttdt	tdd}|| _| jtdd	jdd t|d d
 tst|d d
 jddiksttdt	tdd}|| _| jt
ddt | jtddjdd t|d
 tstt|d d
 ts&tt|d d
 d
 t
sBtt|d tsVt|d d
 jddiksrt|d
 jddikst|d jddikstd S )Nr   r   r   Tr+   r   r,   r   Z	max_levelr   )Zgreedy)r   r   r	   r   filterr-   r   r   r   r   strZ	wrap_oncer&   r    r    r!   $test_update_attributes_and_wrap_onceq   s<    

r3   c                  C   s  t t } | tdgdggks$tt tttdtdd}|tdgdggksZt|jtdddgdgddgdgddgdggkst|jtdddgdgddgdgdddgdgddgdggkstt dtdd}|jtdddgdgddgdgdgdggkstt ttd	d
tdd}|tdgdgdgdggksJt|jtdddgdgddgdgdgdggks|td S )Nr   divr   r   r   r   r0   r   
field_namefield_name2passwordextra_field)r   r   Zget_layout_objectsr   r2   )layout_1layout_2layout_3layout_4r    r    r!   test_get_layout_objects   s6    
2


2$r=   c                  C   s   t  } tdtdd}|| _| tjtdd t|j	d tsDt
t|j	d tsXt
t|j	d tslt
|d d dkst
| tjtdd t|j	d tst
t|j	d j	d tst
|d d d dkst
d S )	Nr   r   r   r   r   r   r   r   )r   r   r   r   r1   r2   r   r	   r   r   r   r&   r    r    r!   test_filter_and_wrap   s     r>   c               	   C   sP   t  } ttdtd}|| _tt | jtddjtdd W 5 Q R X d S )Nr8   r   r   r0   r   r   )	r   r   r   r   pytestraisesr   r1   r   r&   r    r    r!   !test_filter_and_wrap_side_effects   s    rA   c                  C   s
  t d} |  dgdggks tt t d}| ddgdggksFtt t dd}| ddgdgdgdggksvtt t t ddt dd}| dddgdgddgdgddgdgdgdggkstt t ddd}| ddgdgddgdgdgdggkstd S )Nr5   r   r7   r   r6   r8   r   )r   get_field_namesr   )r9   r:   r;   r<   Zlayout_5r    r    r!   test_get_field_names   s@    "




rC   c                  C   s   t tdd} |  ddgdgdgdggks0tt tddtdd}| ddgdgdgdgddgdggksrtt tttdtd	d
}| ddddgdgdddgd	gddgd
ggkstd S )Nr5   r7   r   r   r%   r8   r   r   r   r   )r   r   rB   r   r
   )r9   r:   r;   r    r    r!   test_layout_get_field_names  s"    





rD   c                 C   sN   t  }t||_| |j_|jtjjddddgdgdddgdggksJtd S )Nr   r   r      r   )	r   r   r   r   filter_by_widgetr   PasswordInputslicer   Zadvanced_layoutformr    r    r!   test_filter_by_widget  s    
rK   c                 C   sV   t  }t||_| |j_|jtjjddddgdgdddgdgdgdggksRtd S )Nr   r   r$   Z
first_namer   	last_name)	r   r   r   r   exclude_by_widgetr   rG   rH   r   rI   r    r    r!   test_exclude_by_widget!  s    
rN   c                 C   s   t  }t||_| |j_|jtjjtdd t	|jjd d d d tsRt
t	|jjd d d tspt
t	|jjd tst
t	|jjd d d tst
t	|jjd d d d tst
t	|jjd d d tst
d S )Nheror   r   r$   r   rE   )r   r   r   r   rM   r   rG   r   r	   r   r   r   r2   rI   r    r    r!   test_exclude_by_widget_and_wrap,  s    
""rP   c               	   C   s8   t  } t | _tt | j t W 5 Q R X d S N)	r   r   r   r?   r@   r   r   r   r   )rJ   r    r    r!   test_all_without_layout;  s    rR   c              	   C   s>   t  }t |_| |j_tt |jtj	 W 5 Q R X d S rQ   )
r   r   r   r   r?   r@   r   rF   r   rG   rI   r    r    r!   "test_filter_by_widget_without_formB  s
    rS   c                  C   s   t  } ttdd}|| _| d jtdd t|d d tsBt|d d d dksZtt  } td| _| d td t| jd tst| jd d dkst| jd j	dkstd S )Nr   r   rO   r   r   extra)
r   r   r   r   r   r	   r   r   r   textr&   r    r    r!   test_formhelper__getitem__J  s    
rV   c                  C   s6   t  } tdtd}|| _d| d< |d dks2td S )Nfirst_fieldr   Zreplacedr   )r   r   r   r   r   r&   r    r    r!   test_formhelper__setitem__]  s
    rX   c                  C   s4   t  } tdtd}|| _| d= t| dks0td S NrW   r   r   r   )r   r   r   r   lenr   r&   r    r    r!   $test_formhelper__delitem__and__len__e  s
    r[   c                  C   s(   t dtd} | d= t| dks$td S rY   )r   r   rZ   r   r   r    r    r!   &test__delitem__and__len__layout_objectm  s    r]   c                  C   s   t tttdtdd} t| d ts.tt| d d tsDtt| d d d ts^tt| d d tsttt| d d d tstt| d d tstd S )Nr   r   r   r   r   r   )r   r   r   r   r2   r\   r    r    r!   test__getitem__layout_objects  s    r^   c                  C   sT   t td} | d t| d ts(tt| d d ts>tt| d tsPtd S )Nr   r   r   r   )r   r   appendr   r   r2   r\   r    r    r!   #test__getattr__append_layout_object}  s
    
r`   c                  C   sB   t td} d| d d< t| d ts*t| d d dks>td S )Nr   r   r   )r   r   r   r   r\   r    r    r!   test__setitem__layout_object  s    ra   c                  C   s   t  } tttddtdd| _| ttjdgdgdgdggksHt| jttddjdgdgddgd	gdgdggks|t| jtddjddgd	ggkstd S )
Nr5   r6   r7   r8   r   r4   r   r0   Z
multifield)r   r   r   r   r   r1   rH   r   r.   r    r    r!   test_filter  s    &4rb   )-r?   Zdjangor   Zcrispy_forms.bootstrapr   Zcrispy_forms.exceptionsr   Zcrispy_forms.helperr   r   Zcrispy_forms.layoutr   r   r	   r
   r   r   Zcrispy_forms.tests.formsr   Zconftestr   r"   r'   r)   r*   r/   r3   r=   r>   rA   rC   rD   rK   rN   rP   rR   rS   rV   rX   r[   r]   r^   r`   ra   rb   r    r    r    r!   <module>   s@    '%!'

