
    Bh=                         d dl mZ d dlmZ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  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)    )import_module)Mockpatch)	AppConfigapps)ImproperlyConfigured)override_settings)app_registration)	CMSConfig)CMSTestCase)setupc                       e Zd Z edg      d        Z edg      d        Z edg      d        Z edg      d	        Z ed
g      d        Z edg      d        Z	 edg      d        Z
y)AutodiscoverTestCase*cms.test_utils.project.app_with_cms_configINSTALLED_APPSc                 n   t        j                          t        j                  d      }| j	                  t        |d             | j                  |j                  j                  j                  d       | j                  |j                  j                  |       | j                  t        |d             y )Napp_with_cms_config
cms_configCMSConfigConfigcms_extension)r
   autodiscover_cms_configsr   get_app_config
assertTruehasattrassertEqualr   	__class____name__
app_configassertFalseselfapps     O/home/dcms/DCMS/lib/python3.12/site-packages/cms/tests/test_app_registration.py1test_adds_only_cms_config_attr_to_config_only_appzFAutodiscoverTestCase.test_adds_only_cms_config_attr_to_config_only_app   s     	113!!"78\23NN$$--/@	B22C8o67    6cms.test_utils.project.app_with_cms_feature_and_configc                    t        j                          t        j                  d      }| j	                  t        |d             | j                  |j                  j                  j                  d       | j                  |j                  j                  |       | j	                  t        |d             | j                  |j                  j                  j                  d       y )Napp_with_cms_feature_and_configr   r   r   CMSExtension)r
   r   r   r   r   r   r   r   r   r   r   r   r!   s     r$   0test_adds_both_cms_config_and_cms_extension_attrzEAutodiscoverTestCase.test_adds_both_cms_config_and_cms_extension_attr   s     	113!!"CD\23NN$$--{	<22C8_56''00.	Br&   +cms.test_utils.project.app_without_cms_filec                     t        j                          t        j                  d      }| j	                  t        |d             | j	                  t        |d             y )Napp_without_cms_filer   r   )r
   r   r   r   r    r   r!   s     r$   /test_doesnt_add_attrs_to_app_without_cms_configzDAutodiscoverTestCase.test_doesnt_add_attrs_to_app_without_cms_config0   sK     	113!!"89l34o67r&   z,cms.test_utils.project.app_with_bad_cms_filec                     | j                  t              5  t        j                          d d d        y # 1 sw Y   y xY wN)assertRaisesRuntimeErrorr
   r   r"   s    r$   'test_exception_propagates_from_cms_filez<AutodiscoverTestCase.test_exception_propagates_from_cms_file<   s3     |, 	8557	8 	8 	8   4=z0cms.test_utils.project.app_without_cms_app_classc                     | j                  t              5  t        j                          d d d        y # 1 sw Y   y xY wr1   r2   r   r
   r   r4   s    r$   =test_raises_exception_when_no_cms_app_class_found_in_cms_filezRAutodiscoverTestCase.test_raises_exception_when_no_cms_app_class_found_in_cms_fileF   4    
 34 	8557	8 	8 	8r6   z6cms.test_utils.project.app_with_two_cms_config_classesc                     | j                  t              5  t        j                          d d d        y # 1 sw Y   y xY wr1   r8   r4   s    r$   Ktest_raises_exception_when_more_than_one_cms_config_class_found_in_cms_filez`AutodiscoverTestCase.test_raises_exception_when_more_than_one_cms_config_class_found_in_cms_fileN   r:   r6   z7cms.test_utils.project.app_with_two_cms_feature_classesc                     | j                  t              5  t        j                          d d d        y # 1 sw Y   y xY wr1   r8   r4   s    r$   Ntest_raises_exception_when_more_than_one_cms_extension_class_found_in_cms_filezcAutodiscoverTestCase.test_raises_exception_when_more_than_one_cms_extension_class_found_in_cms_fileV   r:   r6   N)r   
__module____qualname__r	   r%   r+   r/   r5   r9   r<   r>    r&   r$   r   r      s    4' 
8
8 @' BB 5' 88 6' 88 :' 88
 @' 88
 A' 88r&   r   c                   D    e Zd Zd Z ej
                  ed      d        Zy)GetCmsExtensionAppsTestCasec                 @    t         j                  j                          y r1   )r
   get_cms_extension_appscache_clearr4   s    r$   setUpz!GetCmsExtensionAppsTestCase.setUpa   s    
 	//;;=r&   get_app_configsc                    t        dt               g       }t        dt               g       }t        dt               t               g       }t        dg       f}||||g|_        t        j                         }| j	                  |||g       y 	Na)labelr   specb)rL   r   rM   c)rL   r   r   rM   d)rL   rM   )r   return_valuer
   rE   assertListEqualr"   mocked_appsapp_with_extensionapp_with_configapp_with_bothnon_cms_appcms_appss          r$   )test_returns_only_cms_apps_with_extensionzEGetCmsExtensionAppsTestCase.test_returns_only_cms_apps_with_extensionh   s    !46KSTV"E$&RI2./	$
  $::< 	)=9	;r&   N)r   r?   r@   rG   r   objectr   rZ   rA   r&   r$   rC   rC   _   s)    > U\\$)*; +;r&   rC   c                   D    e Zd Zd Z ej
                  ed      d        Zy)GetCmsConfigAppsTestCasec                 @    t         j                  j                          y r1   r
   get_cms_config_appsrF   r4   s    r$   rG   zGetCmsConfigAppsTestCase.setUp       
 	,,88:r&   rH   c                    t        dt               g       }t        dt               g       }t        dt               t               g       }t        dg       f}||||g|_        t        j                         }| j	                  |||g       y rJ   )r   rQ   r
   r`   rR   rS   s          r$   &test_returns_only_cms_apps_with_configz?GetCmsConfigAppsTestCase.test_returns_only_cms_apps_with_config   s    !46KSTV"E$&RI2./	$
  $779 	6	8r&   N)r   r?   r@   rG   r   r[   r   rc   rA   r&   r$   r]   r]   }   s)    ; U\\$)*8 +8r&   r]   c                      e Zd Zd Z ej
                  ed      d        Z ej
                  ed      d        Z ej
                  ed      d        Z	 ej
                  ed      d        Z
 ej
                  ed      d        Zy)	ConfigureCmsAppsTestCasec                 @    t         j                  j                          y r1   r_   r4   s    r$   rG   zConfigureCmsAppsTestCase.setUp   ra   r&   rH   c                 X   t        t              }d|_        t        dg      |_        t        t              }t        dg      |_        d|j                  _        ||g|_        t        j                  |g       |j                  j                  j                  |j                         y )NrM   djangocms_feature_xconfigure_appdjangocms_feature_x_enabledT)r   r   rL   r   r   rk   rQ   r
   configure_cms_appsrj   assert_called_once_with)r"   rT   feature_app
config_apps       r$   :test_runs_configure_app_method_for_app_with_enabled_configzSConfigureCmsAppsTestCase.test_runs_configure_app_method_for_app_with_enabled_config   s     	*1$(.?$@!y)
 $/0!2
<@
9 $%  	++[M: 	!!//GG!!	#r&   c                    t        t              }d|_        t        dg      |_        t        t              }t        g       |_        t        t              }t        dg      |_        d|j                  _        |||g|_        t        j                  |g       | j                  |j                  j                  j                         y )Nrh   ri   rj   rk   F)r   r   rL   r   r   rk   rQ   r
   rl   r    rj   called)r"   rT   rn   config_app_disabled1config_app_disabled2s        r$   5test_doesnt_run_configure_app_method_for_disabled_appzNConfigureCmsAppsTestCase.test_doesnt_run_configure_app_method_for_disabled_app   s     	*1$(.?$@!  $3*.B-'#3*./0+2'FK''C -/C$E  	++[M: 	22@@GGHr&   c                     t        t              }d|_        t        dg      |_        t        t              }||g|_        	 t        j                  |g       y # t        $ r | j                  d       Y y w xY w)Nrh   ri   rj   z0Exception raised when cms app config not defined)	r   r   rL   r   rQ   r
   rl   AttributeErrorfail)r"   rT   rn   rX   s       r$   *test_doesnt_raise_exception_if_not_cms_appzCConfigureCmsAppsTestCase.test_doesnt_raise_exception_if_not_cms_app   sq     	*1$(.?$@!	*$/#= 	J//> 	JIIHI	Js   A A87A8c                 >   t        t              }d|_        t        dg      |_        t        t              }d|_        t        dg      |_        t        t              }t        dg      |_        d|j                  _        t        t              }t        dg      |_        d|j                  _        t        t              }t        ddg      |_        d|j                  _        d|j                  _        t        t              }||||||g|_        t        j                  ||g       | j                  |j                  j                  j                  d       | j                  |j                  j                  j                  d	   d	   d	   |j                         | j                  |j                  j                  j                  d
   d	   d	   |j                         | j                  |j                  j                  j                  d       | j                  |j                  j                  j                  d	   d	   d	   |j                         | j                  |j                  j                  j                  d
   d	   d	   |j                         y )Nrh   ri   rj   djangocms_feature_yrk   Tdjangocms_feature_y_enabled   r      )r   r   rL   r   r   rk   r|   rQ   r
   rl   r   rj   
call_countcall_args_list)r"   rT   feature_app_xfeature_app_yconfig_app_xconfig_app_yconfig_app_xyrX   s           r$   Btest_runs_configure_app_method_for_correct_apps_when_multiple_appsz[ConfigureCmsAppsTestCase.test_runs_configure_app_method_for_correct_apps_when_multiple_apps   s\    ),3&*0A&B#),3&*0A&B#+"&/0#2>B;+"&/0#2>B;),#'//1$
  @D  <?C  <	* ;|-$)  	++M*	, 	''55@@!	E''55DDQGJ1M$$	& 	''55DDQGJ1M##	% 	''55@@!	E''55DDQGJ1M$$	& 	''55DDQGJ1M##	%r&   c                     t        t              }d|_        t        dg      |_        |g|_        t        j                  |g       |j                  j                  j                          y )Nrh   ri   ready)	r   r   rL   r   rQ   r
   ready_cms_appsr   rm   )r"   rT   rn   s      r$   "test_runs_ready_for_all_extensionsz;ConfigureCmsAppsTestCase.test_runs_ready_for_all_extensions  sU    	*1$(wi$8!$/= ''6!!''??Ar&   N)r   r?   r@   rG   r   r[   r   rp   ru   ry   r   r   rA   r&   r$   re   re      s    ; U\\$)*# +#* U\\$)*I +I0 U\\$)*J +J" U\\$)*6% +6%p U\\$)*	B +	Br&   re   c                   f    e Zd Zd Z ej
                  ed      d        Z eg d      d        Z	y)SetupCmsAppsTestCasec                 |    t         j                  j                          t         j                  j                          y r1   )r
   rE   rF   r`   r4   s    r$   rG   zSetupCmsAppsTestCase.setUp-  s(    
 	//;;=,,88:r&   setup_cms_appsc                 n    t        d      }t        d|      j                          |j                          y )Ncmsapp_name)r   r   r   assert_called_once)r"   mocked_setup
cms_modules      r$   +test_setup_cms_apps_function_run_on_startupz@SetupCmsAppsTestCase.test_setup_cms_apps_function_run_on_startup5  s+    "5)
*j)//1'')r&   )z+cms.test_utils.project.app_with_cms_featurer'   r,   r   r   c                    t        j                          t        j                  d      }t        j                  d      }t        j                  d      }t        j                  d      }| j	                  t        |d             | j	                  t        |d             | j                  t        |d             | j                  t        |d             | j	                  t        |d             | j                  t        |d             | j	                  t        |d             | j                  t        |d             | j                  |j                  j                  d       | j                  |j                  j                  dg       y )Napp_with_cms_featurer   r)   r.   r   r   r~   )r   r   r   r   r    r   r   r   r   num_configured_appsrR   configured_apps)r"   rn   ro   feature_and_config_apprX   s        r$   ,test_cms_apps_setup_after_setup_function_runzASetupCmsAppsTestCase.test_cms_apps_setup_after_setup_function_run=  s@    	 ))*@A(()>?
!%!4!4-"/))*@A 	l;<l;<
L9: 6EF 	o>?_=>_=> 6HI 	22FFJ%%55"#	%r&   N)
r   r?   r@   rG   r   r[   r   r   r	   r   rA   r&   r$   r   r   +  sG    ; U\\%)** +*  '  % %r&   r   N)	importlibr   unittest.mockr   r   django.appsr   r   django.core.exceptionsr   django.testr	   r   r
   cms.appsr   cms.test_utils.testcasesr   	cms.utilsr   r   rC   r]   re   r   rA   r&   r$   <module>r      sd    # % ' 7 )    0 N8; N8b;+ ;<8{ 8<MB{ MB`8%; 8%r&   