
    &<ip                     Z   d Z ddlZddlZddlZddlmZ ddlZ ee      j                  j                  Z	e	dz  Z
e	dz  Z ej                  d      d        Zd	ed
ej                  fdZd
efdZ G d d      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Zy)u   todo-manager.py CLI 테스트    N)Pathz	todo.jsonztodo-manager.pyT)autousec               #      K   d} t         j                         rt         j                  d      } d | t         j                  | d       yt         j                         rt         j	                          yyw)u(   테스트 전후 todo.json 백업/복원Nutf-8encoding)	TODO_FILEexists	read_text
write_textunlink)backups    O/home/jay/workspace/.worktrees/task-2057-dev2/memory/tests/test_todo_manager.pybackup_todor      se      F$$g$6	Vg6				 
s   A5A7argsreturnc                  r    t        j                  t        j                  t	        t
              g| ddd      S )NT
   )capture_outputtexttimeout)
subprocessrunsys
executablestrMANAGER)r   s    r   run_clir      s1    >>	W--	     c                  T    t        j                  t        j                  d            S )Nr   r   )jsonloadsr	   r    r   r   	load_todor$   &   s    ::i))7);<<r   c                       e Zd Zd Zd Zy)TestAddc           	      *   t        ddddddd      }|j                  dk(  sJ d	|j                  v sJ t               }|d
   D cg c]  }|d   dk(  s| }}t	        |      dk(  sJ |d   d   dk(  sJ |d   d   dk(  sJ |d   d   dk(  sJ y c c}w )Nadd	--projectTestProject--titleu   테스트 안건
--priorityhighr   u   추가 완료issuestitle   projectprioritystatuspending)r   
returncodestdoutr$   lenselfresultdataiaddeds        r   test_add_basiczTestAdd.test_add_basic+   s    ]IGY[giop  A%%%&--///{ NOqaj<N.NOO5zQQx	"m333Qx
#v---Qx!Y...	 Ps   BBc                 :   t        ddddddddd	dd
      }|j                  dk(  sJ t               }|d   D cg c]  }|d   dk(  s| }}t        |      dk(  sJ t        |d   d         dk(  sJ |d   d   d   d   d	k(  sJ |d   d   d   d   du sJ y c c}w )Nr(   r)   r*   r+   u   서브 테스트r,   medium--subu   항목Au   항목Br   r.   r/   r0   	sub_items   doneF)r   r5   r$   r7   r8   s        r   test_add_with_sub_itemszTestAdd.test_add_with_sub_items6   s    
   A%%%{ NOqaj<N.NOO5zQ58K()Q...Qx$Q'0I===Qx$Q'/5888	 Ps   BBN)__name__
__module____qualname__r>   rE   r#   r   r   r&   r&   *   s    	/9r   r&   c                       e Zd Zd Zd Zd Zy)TestDonec                 x   t        ddddddddd	       t               }|d	   D cg c]  }|d
   dk(  s| c}d   d   }t        dd|dd      }|j                  dk(  sJ t               }|d	   D cg c]  }|d   |k(  s| c}d   }|d   d   d   du sJ |d   d   d   du sJ |d   dk7  sJ y c c}w c c}w )Nr(   r)   Tr+   u   Done테스트rA   ABr.   r/   r   idrD   --issuerB   Tr0   Fr3   	completedr   r$   r5   r9   r;   r<   issue_idr:   issues         r   test_done_sub_itemzTestDone.test_done_sub_itemN   s    {COWcSZ\_`{#H~O!71NAOPQRSWXHgsC  A%%%{ NBqag.AB1E[!!$V,444[!!$V,555X+--- P
 Cs   B2B21B7?B7c           	      $   t        ddddddd       t               }|d   D cg c]  }|d	   dk(  s| c}d
   d   }t        dd|dd       t               }|d   D cg c]  }|d   |k(  s| c}d
   }|d   dk(  sJ |d   J y c c}w c c}w )Nr(   r)   rL   r+   u   자동완료rA   Xr.   r/   r   rO   rD   rP   r3   rQ   completed_at)r   r$   )r9   r;   r<   rT   rU   s        r   test_auto_completezTestDone.test_auto_complete[   s    {CNGSQ{#H~N!7~1MANqQRVW	8Wc:{ NBqag.AB1EX+---^$000 O Cs   BBB,Bc                 D    t        ddddd      }|j                  dk7  sJ y )NrD   rP   	issue-999rA   u   없는항목r   r   r5   r9   r:   s     r   test_done_invalid_issuez TestDone.test_done_invalid_issuef   s(    K.Q  A%%%r   N)rF   rG   rH   rV   rZ   r_   r#   r   r   rJ   rJ   M   s    .	1&r   rJ   c                       e Zd Zd Zy)TestLinkc                 2   t        ddddd       t               }|d   D cg c]  }|d   dk(  s| c}d   d	   }t        d
d|dd      }|j                  dk(  sJ t               }|d   D cg c]  }|d	   |k(  s| c}d   }d|d   v sJ y c c}w c c}w )Nr(   r)   rL   r+   u   링크테스트r.   r/   r   rO   linkrP   z--taskz
task-999.1linked_tasksrR   rS   s         r   test_link_taskzTestLink.test_link_taskl   s    {C4EF{#H~Q!7?P1PAQRSTUYZHhM  A%%%{ NBqag.AB1Eu^4444 R
 Cs   BB-B;BN)rF   rG   rH   re   r#   r   r   ra   ra   k   s    	5r   ra   c                       e Zd Zd Zd Zy)TestListc                 <    t        d      }|j                  dk(  sJ y )Nlistr   r]   r^   s     r   test_list_allzTestList.test_list_ally   s      A%%%r   c                 D    t        ddddd      }|j                  dk(  sJ y )Nri   r)   InsuRoz--statusin_progressr   r]   r^   s     r   test_list_with_filterszTestList.test_list_with_filters}   s(    h
MR  A%%%r   N)rF   rG   rH   rj   rn   r#   r   r   rg   rg   x   s    &&r   rg   c                       e Zd Zd Zy)TestCompletec                 0   t        ddddd       t               }|d   D cg c]  }|d   dk(  s| c}d   d	   }t        d
d|      }|j                  dk(  sJ t               }|d   D cg c]  }|d	   |k(  s| c}d   }|d   dk(  sJ y c c}w c c}w )Nr(   r)   rL   r+   u   수동완료r.   r/   r   rO   completerP   r3   rQ   rR   rS   s         r   test_manual_completez!TestComplete.test_manual_complete   s    {CNC{#H~N!7~1MANqQRVWY9  A%%%{ NBqag.AB1EX+--- O
 Cs   BB+B9BN)rF   rG   rH   rs   r#   r   r   rp   rp      s    	.r   rp   c                       e Zd Zd Zd Zy)
TestDeletec                 4   t        ddddd       t               }|d   D cg c]  }|d   dk(  s| c}d   d	   }t        d
d|      }|j                  dk(  sJ t               }|d   D cg c]  }|d	   |k(  s| }}t        |      dk(  sJ y c c}w c c}w )Nr(   r)   rL   r+   u   삭제대상r.   r/   r   rO   deleterP   )r   r$   r5   r7   )r9   r;   r<   rT   r:   	remainings         r   test_deletezTestDelete.test_delete   s    {CNC{#H~N!7~1MANqQRVW9h7  A%%%{ $XF1!D'X2EQF	F9~""" O
 Gs   BB+B9Bc                 @    t        ddd      }|j                  dk7  sJ y )Nrw   rP   r\   r   r]   r^   s     r   test_delete_invalidzTestDelete.test_delete_invalid   s$    9k:  A%%%r   N)rF   rG   rH   ry   r{   r#   r   r   ru   ru      s    	#&r   ru   )__doc__r!   r   r   pathlibr   pytest__file__parent	WORKSPACEr	   r   fixturer   r   CompletedProcessr   dictr$   r&   rJ   ra   rg   rp   ru   r#   r   r   <module>r      s    #   
  N!!((	#	
'
' 	 	3 :66 =4 = 9  9F& &<
5 
5& &
. 
.& &r   