
    BhL.                     h   d dl 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 d dlmZ d dlmZ d d	lmZmZmZ  G d
 dej(                        Zd Z G d dej.                        Z G d dej.                        Z G d dej.                        Z G d de      Z G d dej8                        Z G d dej<                        Zej                  jA                  eedd      Z! G d de      Z" G d de"      Z# G d  d!e"      Z$ G d" d#e"      Z% G d$ d%e      Z& G d& d'e      Z' G d( d)e      Z(y)*    N)import_module)formshttp)settings)User)models)TemplateResponse)TestCase)CookieWizardViewSessionWizardView
WizardViewc                         e Zd Zd fd	Z xZS )DummyRequestc                     t         |           |rdnd| _        || j                  j	                  |       i | _        d| _        y )NPOSTGETT)super__init__methodr   updatesession_dont_enforce_csrf_checks)selfr   	__class__s     G/home/dcms/DCMS/lib/python3.12/site-packages/tests/wizard/test_forms.pyr   zDummyRequest.__init__   s@     $f%IIT")-&    N__name__
__module____qualname__r   __classcell__r   s   @r   r   r      s    . .r   r   c                  z    t        | i |}t        t        j                        }|j	                  d       |_        |S r   )r   r   r   SESSION_ENGINESessionStorer   )argskwargsrequestengines       r   get_requestr+      s8    D+F+G8223F))$/GONr   c                   .    e Zd Z ej                         Zy)Step1Nr   r    r!   r   	CharFieldname r   r   r-   r-   !       5??Dr   r-   c                   .    e Zd Z ej                         Zy)Step2Nr.   r1   r   r   r4   r4   %   r2   r   r4   c                   .    e Zd Z ej                         Zy)Step3N)r   r    r!   r   r/   datar1   r   r   r6   r6   )   r2   r   r6   c                         e Zd Zd fd	Z xZS )CustomKwargsStep1c                 2    || _         t        |   |i | y r   )testr   r   )r   r;   r'   r(   r   s       r   r   zCustomKwargsStep1.__init__/   s    	$)&)r   r   r   r#   s   @r   r9   r9   -   s    * *r   r9   c                   F    e Zd Z ej                  d      Z G d d      Zy)	TestModeld   )
max_lengthc                       e Zd ZdZy)TestModel.Meta	formtoolsN)r   r    r!   	app_labelr1   r   r   MetarA   7   s    	r   rD   N)r   r    r!   r   r/   r0   rD   r1   r   r   r=   r=   4   s    6s+D   r   r=   c                        e Zd Z G d d      Zy)TestModelFormc                       e Zd ZeZdZy)TestModelForm.Meta__all__N)r   r    r!   r=   modelfieldsr1   r   r   rD   rH   <   s    r   rD   N)r   r    r!   rD   r1   r   r   rF   rF   ;   s     r   rF      rI   )formextrarK   c                   ,     e Zd ZdZ fdZ fdZ xZS )
TestWizardz/formtools.wizard.storage.session.SessionStoragec                 2    t        |   |g|i |}|| fS r   )r   dispatch)r   r)   r'   r(   responser   s        r   rR   zTestWizard.dispatchG   s&    7#G=d=f=~r   c                 B    t        |   |g|i |}|dk(  rd|d<   |S )Nkwargs_testTr;   )r   get_form_kwargs)r   stepr'   r(   r   s       r   rV   zTestWizard.get_form_kwargsK   s2    (???= !F6Nr   )r   r    r!   storage_namerR   rV   r"   r#   s   @r   rP   rP   D   s    DL r   rP   c                   :    e Zd ZeegZddiZdddiiZd e       iZ	y)TestWizardWithInitAttrsstep2Tstartr0   value1N)
r   r    r!   r-   r4   	form_listcondition_dictinitial_dictr   instance_dictr1   r   r   rZ   rZ   R   s/    It_Nfh/0Ldf%Mr   rZ   c                       e Zd Zd Zy)TestWizardWithTypeCheckc                 t    t        |t              sJ dt        |       d       t        j                  d      S )Nz`form_list` was z, should be a listzAll good)
isinstancelisttyper   HttpResponse)r   r^   r(   s      r   donezTestWizardWithTypeCheck.doneZ   s8    )T*b.>tI>OOa,bb*  ,,r   N)r   r    r!   ri   r1   r   r   rc   rc   Y   s    -r   rc   c                       e Zd ZegZd Zy)TestWizardWithCustomGetFormListc                     t         t        dS )Nr\   r[   )r-   r4   )r   s    r   get_form_listz-TestWizardWithCustomGetFormList.get_form_listc   s    //r   N)r   r    r!   r-   r^   rn   r1   r   r   rk   rk   _   s    I0r   rk   c                   r    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zy)	FormTestsc                    t         j                  t        t        g      }| j	                  |d   t        t        d       t         j                  dt        fdt        fg      }| j	                  |d   t        t        d       t         j                  t        t        dt
        fg      }| j	                  |d   t        t        t
        d       t        j                         }| j	                  |d   t        t        d       y )Nr^   )01r\   r[   rm   finish)rr   rs   rt   )rP   get_initkwargsr-   r4   assertEqualr6   rZ   )r   testforms     r   test_form_initzFormTests.test_form_inith   s    ,,eU^<+.e%0HI,,w.>%@P-QR+.%%0PQ,,eUXu<M-NO+.e%SX0YZ*99;+.e%0HIr   c                 `   t               }t        j                  t        t        g      } ||      \  }}| j                  |j                  j                  d       t        j                  dt        fdt        fg      } ||      \  }}| j                  |j                  j                  d       y )Nrr   r\   r[   )r+   rP   as_viewr-   r4   rv   stepscurrentr   r)   rw   rS   instances        r   test_first_stepzFormTests.test_first_stepu   s    -%%uen5%g.(//5%%'7'59I&JK%g.(//9r   c                    t         j                  dt        fdt        fg      }t	        ddd      } ||      \  }}| j                  |j                  j                  d       d|j                  _	        t         j                  dt        fdt        fg      }ddi|_
         ||      \  }}| j                  |j                  j                  d       y )Nr\   r[   data1)test_wizard-current_stepr0   r   )rP   rz   r-   r4   r+   rv   r{   r|   storagecurrent_stepr   )r   rw   r)   rS   r~   	testform2s         r   test_persistencezFormTests.test_persistence   s    %%'7'59I&JK7GTU%g.(//9(/%&&%(87E:J'KL	2G<&w/(//9r   c                 &   t               }t        j                  dt        fdt        fdt
        fgddi      } ||      \  }}| j                  |j                         d       t        j                  dt        fdt        fdt
        fgddi      } ||      \  }}| j                  |j                         d       t        j                  dt        fdt        fdt
        fg      } ||      \  }}| j                  |j                         d       y )Nr\   r[   step3Tr_   F)	r+   rP   rz   r-   r4   r6   rv   get_next_steprZ   r}   s        r   test_form_conditionzFormTests.test_form_condition   s   -%%u/'51AB#T? & 
 &g.(//17;%%u/'51AB#U+ & 
 &g.(//17;*22u/'51AB
 &g.(//17;r   c                    d }t         j                  dt        fdt        fdt        fgd|i      }t               }t        j                         }t        j                  d       	  ||      \  }}| j                  |j                         d       t        j                  |       y # t        $ r | j                  d       Y 2w xY w# t        j                  |       w xY w)Nc                 N    | j                  d      xs i }|j                  d      S )Nr   foo)get_cleaned_data_for_stepget)wizardr7   s     r   subsequent_step_checkzLFormTests.test_form_condition_avoid_recursion.<locals>.subsequent_step_check   s%    33G<BD88E?"r   r\   r[   r   r   P   z+RecursionError happened during wizard test.)rP   rz   r-   r4   r6   r+   sysgetrecursionlimitsetrecursionlimitrv   r   RecursionErrorfail)r   r   rw   r)   	old_limitrS   r~   s          r   #test_form_condition_avoid_recursionz-FormTests.test_form_condition_avoid_recursion   s    	# %%u/'51AB#%:; & 
 -))+	b!	-!)'!2HhX335w? !!),  	EIICD	E !!),s$   &+B' 'CC CC Cc                    t               }t        j                  dt        fdt        fdt
        fgddi      } ||      \  }}| j                  |j                  d      d       | j                  |j                  d      d       d|j                  d<   | j                  |j                  d      d        | j                  |j                  d      d       y )Nr\   r[   r   Tr      F)
r+   rP   rz   r-   r4   r6   rv   get_step_indexr   r_   r}   s        r   test_form_condition_unstablez&FormTests.test_form_condition_unstable   s    -%%u/'51AB#T? & 
 &g.(0091=//8'B+0(0094@//8'Br   c                 R   t               }t        j                  dt        fdt        fg      } ||      \  }}| j                  |j                  d      i        | j                  |j                  d      ddi       | j                  |j                  d      j                  d       y )Nr\   rU   r;   T)	r+   rP   rz   r-   r9   rv   rV   get_formr;   r}   s        r   test_form_kwargszFormTests.test_form_kwargs   s    -%%e-.'
  &g.(11':B?11-@64.Q**=9>>Er   c                     t               }t        j                  dt        fdt        fg      } ||      \  }}| j                  |j                         d       | j                  |j                  d      d       y )Nr\   r[   another)r+   rP   rz   r-   r4   rv   get_form_prefixr}   s        r   test_form_prefixzFormTests.test_form_prefix   sk    -%%'7'59I&JK%g.(113W=11)<iHr   c                    t               }t        j                  dt        fdt        fgdddii      } ||      \  }}| j                  |j                  d      ddi       | j                  |j                  d      i        t        j                  dt        fdt        fg      } ||      \  }}| j                  |j                  d      ddi       | j                  |j                  d      i        y )Nr\   r[   r0   r]   )r`   )r+   rP   rz   r-   r4   rv   get_form_initialrZ   r}   s        r   test_form_initialzFormTests.test_form_initial   s    -%%u/0!FH#56 & 
 &g.(227;fh=OP227;R@*22u/0
 &g.(227;fh=OP227;R@r   c                    t               }t               }t        j                  dt        fdt
        fgd|i      } ||      \  }}| j                  |j                  d      |       | j                  |j                  d             t        j                  dt        fdt
        fg      } ||      \  }}| j                  |j                  d      t        j                  d          y )Nr\   r[   ra   non_exist_instance)r+   r=   rP   rz   rF   r4   rv   get_form_instanceassertIsNonerZ   ra   )r   r)   the_instancerw   rS   r~   s         r   test_form_instancezFormTests.test_form_instance   s    - {%%}%'78"L1 & 
 &g.(33G<lK(445IJK*22Wm4LwX]N^3_`%g.(&&w/#11':	
r   c                 8   t               }t        j                  j                  d      \  }}t        j                  j                  d      \  }}t        j                  dt        fdt        fgdt        j                  j                  d      i      } ||      \  }}| j                  t        |j                  d            |g       | j                  |j                  d      d        | j                  |j                         j                         d       y )	Nztest object 1)r0   ztest object 2r\   r[   r   r   r   )r+   r=   objectsget_or_createrP   rz   TestModelFormSetr4   filterrv   rf   r   r   initial_form_count)r   r)   the_instance1createdthe_instance2rw   rS   r~   s           r   test_formset_instancezFormTests.test_formset_instance   s    -!*!2!2!@!@o!@!Vw!*!2!2!@!@o!@!Vw%%'(7E*:;"I$5$5$<$</$<$RS & 
 &g.(h88AB]OT334HI4P**,??A1Er   c                     t               }t        j                  dt        fdt        fg      } ||      \  }}| j                  t        |j                  d        y Nr\   r[   )r+   rP   rz   r-   r4   assertRaisesNotImplementedErrorri   r}   s        r   	test_donezFormTests.test_done  sN    -%%'7'59I&JK%g.(-x}}dCr   c                     t               }t        j                  dt        fdt        fg      } ||      \  }}|j                  dd      }| j                  d|j                  j                                y)zGAny extra kwarg given to render_goto_step is added to response context.r\   r[   Foo)context_varr   N)	r+   rP   rz   r-   r4   render_goto_stepassertIncontext_datakeys)r   r)   rw   _r~   rS   s         r   test_goto_step_kwargszFormTests.test_goto_step_kwargs  sh    -%%'7'59I&JKw'8,,W%,HmX%:%:%?%?%ABr   c                     t               }t        j                  dt        fdt        fg      } ||      \  }}|j                  d        | j                  |j                  j                  d       y r   )	r+   rP   rz   r-   r4   render_donerv   r   r   r}   s        r   test_revalidationzFormTests.test_revalidation  sa    -%%'7'59I&JK%g.(T"))66@r   c                     t        ddd      }t        j                  dt        fg      } ||      \  }}| j	                  |j
                  d       y )Nr\   r   )z(test_wizard_with_type_check-current_stepz
start-name   )r+   rc   rz   r-   rv   status_coder}   s        r   test_form_list_typezFormTests.test_form_list_type  sO    7bijk*22We4D3EF%g.(--s3r   c                 ,   t               }t        j                  dt        fg      } ||      \  }}|j	                         }| j                  |dt        i       | j                  t              5  |j                  d       d d d        y # 1 sw Y   y xY wr   )	r+   rP   rz   r-   rn   rv   r   KeyErrorr   r   r)   rw   rS   r~   r^   s         r   test_get_form_list_defaultz$FormTests.test_get_form_list_default!  s    -%%'7&89%g.(**,	We$45x( 	'g&	' 	' 	's   /B

Bc                 
   t               }t        j                  dt        fg      } ||      \  }}|j	                         }| j                  |t        t        d       | j                  |j                  d      t               y )Nr\   rm   r[   )	r+   rk   rz   r-   rn   rv   r4   assertIsInstancer   r   s         r   test_get_form_list_customz#FormTests.test_get_form_list_custom+  sn    -2::We<L;MN%g.(**,	ee$DEh//8%@r   N)r   r    r!   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r1   r   r   rp   rp   g   sa    J::<,-(C	FIA$
$FDCA4'Ar   rp   c                       e Zd Zd Zy)SessionFormTestsc                     t               }t        j                  dt        fg      }| j	                   ||      t
               y Nr\   )r+   r   rz   r-   r   r	   r   r)   rw   s      r   	test_initzSessionFormTests.test_init6  s7    -$,,w.>-?@hw/1ABr   Nr   r    r!   r   r1   r   r   r   r   5      Cr   r   c                       e Zd Zd Zy)CookieFormTestsc                     t               }t        j                  dt        fg      }| j	                   ||      t
               y r   )r+   r   rz   r-   r   r	   r   s      r   r   zCookieFormTests.test_init=  s7    -#++gu-=,>?hw/1ABr   Nr   r1   r   r   r   r   <  r   r   r   ))r   	importlibr   djangor   r   django.confr   django.contrib.auth.modelsr   	django.dbr   django.template.responser	   django.testr
   formtools.wizard.viewsr   r   r   HttpRequestr   r+   Formr-   r4   r6   r9   Modelr=   	ModelFormrF   modelformset_factoryr   rP   rZ   rc   rk   rp   r   r   r1   r   r   <module>r      s   
 #    +  5   
.4## .EJJ EJJ EJJ * *   EOO  <<44Y]Z[dm4n  &j &-j -0j 0KA KA\Cx CCh Cr   