3
œ(ƒh^1  ã               @   s<   d dl Z d dlmZ ddlmZmZmZ G dd„ deƒZdS )é    N)ÚBaseNestedAdminTestCaseé   )ÚGFKRootÚGFKAÚGFKBc               @   sp   e Zd Ze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 )ÚTestGenericInlineAdminc             C   sp   | j jjdd}| j|ƒ | jdd | jƒ  |jjƒ }| jt	|ƒdƒ | j|d j
dƒ | j|d jdƒ d S )NÚtest)Úslugr   r   )Ú
root_modelÚobjectsÚcreateÚ
load_adminÚ
add_inlineÚ	save_formÚa_setÚallÚassertEqualÚlenr	   Úposition)ÚselfÚrootr   © r   úM/tmp/pip-install-q3hcpn_q/django-nested-admin/nested_admin/tests/gfk/tests.pyÚtest_add_to_empty_one_deep   s    

z1TestGenericInlineAdmin.test_add_to_empty_one_deepc             C   s†   | j jjdd}tjjd|dd}| j|ƒ | jdgdd | jƒ  |jjƒ }| j	t
|ƒdƒ | j	|d jdƒ | j	|d jdƒ d S )Nr   )r	   r   )r	   Úcontent_objectr   ZTest)Únamer   )r
   r   r   r   r   r   r   Úb_setr   r   r   r   r   )r   r   Úar   r   r   r   Útest_add_to_empty_two_deep   s    

z1TestGenericInlineAdmin.test_add_to_empty_two_deepc             C   s@  | j jjdd}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jjd|dd	 tjjd|dd	 tjjd|dd	 tjjd|dd	 | j|ƒ | jddgddgdd | jƒ  tjjdd}| j	|j
|dƒ | j	|jddƒ | j	dd„ |jjƒ D ƒddddgƒ | j	dd„ |jjƒ D ƒddgƒ d S )Nr   )r	   Úxr   )r	   r   r   Úyr   zX 0)r   r   r   zX 1zX 2é   zY 0zY 1zY 2T)Úfrom_indexesÚ
to_indexesÚscreenshot_hack)r   z(item was not moved to the correct parentz*item was not moved to the correct positionc             S   s   g | ]}d | ‘qS )z%sr   )Ú.0Úir   r   r   ú
<listcomp>=   s    zBTestGenericInlineAdmin.test_drag_existing_objs.<locals>.<listcomp>zroot/x[0]/X 0[0]zroot/x[0]/Y 2[1]zroot/x[0]/X 1[2]zroot/x[0]/X 2[3]c             S   s   g | ]}d | ‘qS )z%sr   )r%   r&   r   r   r   r'   C   s    zroot/y[1]/Y 0[0]zroot/y[1]/Y 1[1])r
   r   r   r   r   r   Údrag_and_drop_itemr   Úgetr   r   r   r   r   )r   r   r   r    Úy_2r   r   r   Útest_drag_existing_objs'   s0    
z.TestGenericInlineAdmin.test_drag_existing_objsc             C   sR  | j jjdd}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jjd|dd	 tjjd|dd	 tjjd|dd	 tjjd|dd	 | j|ƒ | jdgdd | jddgddgdd | jƒ  tjj	dd}| j
|j|dƒ | j
|jddƒ | j
dd„ |jjƒ D ƒdddddgƒ | j
dd„ |jjƒ D ƒdd gƒ d S )!Nr   )r	   r   r   )r	   r   r   r    r   zX 0)r   r   r   zX 1zX 2r!   zY 0zY 1zY 2zX 3)Úindexesr   T)r"   r#   r$   )r   z&Y1 was not moved to the correct parentz(Y1 was not moved to the correct positionc             S   s   g | ]}d | ‘qS )z%sr   )r%   r&   r   r   r   r'   ^   s    z=TestGenericInlineAdmin.test_drag_add_drag.<locals>.<listcomp>zroot/x[0]/X 0[0]zroot/x[0]/Y 1[1]zroot/x[0]/X 1[2]zroot/x[0]/X 2[3]zroot/x[0]/X 3[4]c             S   s   g | ]}d | ‘qS )z%sr   )r%   r&   r   r   r   r'   e   s    zroot/y[1]/Y 0[0]zroot/y[1]/Y 2[1])r
   r   r   r   r   r   r   r(   r   r)   r   r   r   r   r   )r   r   r   r    Zy_1r   r   r   Útest_drag_add_dragG   s4    
z)TestGenericInlineAdmin.test_drag_add_dragc             C   sH  | j jjdd}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jjd|dd	 tjjd|dd	 tjjd|dd	 | j|ƒ | jdgdd tjdƒ | j	ddgddgdd | j
ƒ  tjjdd}| j|j|dƒ | j|jddƒ | jdd„ |jjƒ D ƒddddgƒ | jdd„ |jjƒ D ƒddgƒ d S ) Nr   )r	   r   r   )r	   r   r   r    r   zX 0)r   r   r   zX 1zX 2r!   zY 0zY 1zY 2)r,   r   g{®Gáz„?T)r"   r#   r$   )r   z&Y2 was not moved to the correct parentz(Y2 was not moved to the correct positionc             S   s   g | ]}d | ‘qS )z%sr   )r%   r&   r   r   r   r'   ‚   s    z=TestGenericInlineAdmin.test_drag_new_item.<locals>.<listcomp>zroot/x[0]/X 0[0]zroot/x[0]/Y 2[1]zroot/x[0]/X 1[2]zroot/x[0]/X 2[3]c             S   s   g | ]}d | ‘qS )z%sr   )r%   r&   r   r   r   r'   ˆ   s    zroot/y[1]/Y 0[0]zroot/y[1]/Y 1[1])r
   r   r   r   r   r   r   ÚtimeÚsleepr(   r   r)   r   r   r   r   r   )r   r   r   r    r*   r   r   r   Útest_drag_new_itemi   s2    

z)TestGenericInlineAdmin.test_drag_new_itemc             C   s  | j jjdd}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jjd|dd	 tjjd|dd	 tjjd|dd	 tjjd|dd	 | j|ƒ | jddgd | jƒ  | jdd„ |j	j
ƒ D ƒdddgƒ | jdd„ |j	j
ƒ D ƒddgƒ d S )Nr   )r	   r   r   )r	   r   r   r    r   zX 0)r   r   r   zX 1zX 2r!   zY 0zY 1zY 2)r,   c             S   s   g | ]}d | ‘qS )z%sr   )r%   r&   r   r   r   r'      s    z?TestGenericInlineAdmin.test_delete_two_deep.<locals>.<listcomp>zroot/x[0]/X 0[0]zroot/x[0]/X 1[1]zroot/x[0]/X 2[2]c             S   s   g | ]}d | ‘qS )z%sr   )r%   r&   r   r   r   r'   ¢   s    zroot/y[1]/Y 0[0]zroot/y[1]/Y 2[1])r
   r   r   r   r   r   Údelete_inliner   r   r   r   )r   r   r   r    r   r   r   Útest_delete_two_deepŒ   s&    
z+TestGenericInlineAdmin.test_delete_two_deepc             C   s  | j jjdd}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jjd|dd	 tjjd|dd	 tjjd|dd	 tjjd|dd	 | j|ƒ | jdgd | jƒ  | jt	tjj
ddƒddƒ tjjdd}| jdd„ |jjƒ D ƒdddgƒ d S )Nr   )r	   r   r   )r	   r   r   r    r   zX 0)r   r   r   zX 1zX 2r!   zY 0zY 1zY 2)r,   zGFKA instance was not deletedc             S   s   g | ]}d | ‘qS )z%sr   )r%   r&   r   r   r   r'   ¼   s    z?TestGenericInlineAdmin.test_delete_one_deep.<locals>.<listcomp>zroot/y[0]/Y 0[0]zroot/y[0]/Y 1[1]zroot/y[0]/Y 2[2])r
   r   r   r   r   r   r1   r   r   r   Úfilterr)   r   r   )r   r   r   r    r   r   r   Útest_delete_one_deep¦   s&    
z+TestGenericInlineAdmin.test_delete_one_deepc             C   s@  | j jjdd}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jjd|dd	 tjjd|dd	 tjjd|dd	 tjjd|dd	 | j|ƒ | jddgd | jdgd | jdgd | jƒ  | j	t
tjjddƒddƒ | j	dd„ |jjƒ D ƒddgƒ | j	dd„ |jjƒ D ƒdddgƒ dS )z–
        Test that, if an item is deleted, then the parent is deleted, and
        then the parent is undeleted, that the item stays deleted.
        r   )r	   r   r   )r	   r   r   r    r   zX 0)r   r   r   zX 1zX 2r!   zY 0zY 1zY 2)r,   z#GFKA instance should not be deletedc             S   s   g | ]}d | ‘qS )z%sr   )r%   r&   r   r   r   r'   Û   s    zQTestGenericInlineAdmin.test_delete_two_deep_undelete_one_deep.<locals>.<listcomp>zroot/x[0]/X 0[0]zroot/x[0]/X 2[1]c             S   s   g | ]}d | ‘qS )z%sr   )r%   r&   r   r   r   r'   ß   s    zroot/y[1]/Y 0[0]zroot/y[1]/Y 1[1]zroot/y[1]/Y 2[2]N)r
   r   r   r   r   r   r1   Zundelete_inliner   r   r   r3   r   r   )r   r   r   r    r   r   r   Ú&test_delete_two_deep_undelete_one_deepÁ   s.    
z=TestGenericInlineAdmin.test_delete_two_deep_undelete_one_deepc             C   s  | j jjdd}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jjd|dd	 tjjd|dd	 tjjd|dd	 | j|ƒ | jdgdd | jddgd | jƒ  | j	dd„ |j
jƒ D ƒdddgƒ | j	dd„ |j
jƒ D ƒddgƒ d S )Nr   )r	   r   r   )r	   r   r   r    r   zX 0)r   r   r   zX 1zX 2r!   zY 0zY 1zY 2)r,   r   )r,   c             S   s   g | ]}d | ‘qS )z%sr   )r%   r&   r   r   r   r'   õ   s    z?TestGenericInlineAdmin.test_remove_two_deep.<locals>.<listcomp>zroot/x[0]/X 0[0]zroot/x[0]/X 1[1]zroot/x[0]/X 2[2]c             S   s   g | ]}d | ‘qS )z%sr   )r%   r&   r   r   r   r'   ú   s    zroot/y[1]/Y 0[0]zroot/y[1]/Y 1[1])r
   r   r   r   r   r   r   Zremove_inliner   r   r   r   )r   r   r   r    r   r   r   Útest_remove_two_deepä   s&    
z+TestGenericInlineAdmin.test_remove_two_deepc             C   s  | j jjdd}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jjd|dd	 | j|ƒ | jddgddgd | jƒ  tjjdd}| j	|j
|dƒ | j	|jddƒ | j	dd„ |jjƒ D ƒdgƒ | j	dd„ |jjƒ D ƒddgƒ d S )Nr   )r	   r   r   )r	   r   r   r    r   zY 0)r   r   r   zY 1zY 2r!   )r"   r#   )r   z&Y2 was not moved to the correct parentz(Y2 was not moved to the correct positionc             S   s   g | ]}d | ‘qS )z%sr   )r%   r&   r   r   r   r'     s    zITestGenericInlineAdmin.test_drag_item_to_empty_parent.<locals>.<listcomp>zroot/x[0]/Y 2[0]c             S   s   g | ]}d | ‘qS )z%sr   )r%   r&   r   r   r   r'     s    zroot/y[1]/Y 0[0]zroot/y[1]/Y 1[1])r
   r   r   r   r   r   r(   r   r)   r   r   r   r   r   )r   r   r   r    r*   r   r   r   Útest_drag_item_to_empty_parentþ   s"    
z5TestGenericInlineAdmin.test_drag_item_to_empty_parentc             C   s
  | j jjdd}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|ƒ | jdd | jddgd	dgd | jƒ  tjj	d
d}tjj	dd}| j
|j|dƒ | j
|jddƒ | j
dd„ |jjƒ D ƒddgƒ | j
dd„ |jjƒ D ƒdgƒ d S )Nr   )r	   r   r   )r	   r   r   zX 0)r   r   r   zX 1r   zX 2r!   r    )r"   r#   )r   z&X2 was not moved to the correct parentz(X2 was not moved to the correct positionc             S   s   g | ]}d | ‘qS )z%sr   )r%   r&   r   r   r   r'   *  s    zMTestGenericInlineAdmin.test_drag_item_to_new_empty_parent.<locals>.<listcomp>zroot/x[0]/X 0[0]zroot/x[0]/X 1[1]c             S   s   g | ]}d | ‘qS )z%sr   )r%   r&   r   r   r   r'   -  s    zroot/y[1]/X 2[0])r
   r   r   r   r   r   r   r(   r   r)   r   r   r   r   r   )r   r   r   Zx_2r    r   r   r   Ú"test_drag_item_to_new_empty_parent  s"    

z9TestGenericInlineAdmin.test_drag_item_to_new_empty_parentc             C   sÈ   | j jjdd}tjjd|dd}tjjd|dd | j|ƒ | jdd | jddgd	dgd
 | jd	dgddgd
 | jƒ  | j	t
tjjƒ ƒddƒ tjjdd}| j	|j|dƒ | j	|jddƒ d S )Nr   )r	   r   r   )r	   r   r   zX 0)r   r   r   r    r   )r"   r#   r!   zSave failed)r   zX0 is in the wrong parentzX0 has the wrong position)r
   r   r   r   r   r   r   r(   r   r   r   r   r)   r   r   )r   r   r   Zx_0r   r   r   Ú.test_drag_existing_gfkb_to_new_parent_and_back0  s    
zETestGenericInlineAdmin.test_drag_existing_gfkb_to_new_parent_and_backN)Ú__name__Ú
__module__Ú__qualname__r   r
   r   r   r+   r-   r0   r2   r4   r5   r6   r7   r8   r9   r   r   r   r   r      s    "##r   )r.   Znested_admin.tests.baser   Úmodelsr   r   r   r   r   r   r   r   Ú<module>   s   