
    h                         S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	J
r
Jr   " S S\5      r " S S	\5      r " S
 S\5      rg)    )call_command)settings)
connection)TestCase)get_tenant_modelget_tenant_domain_modelget_public_schema_namec                       \ rS rSrSrSr\S 5       r\S 5       r\S 5       r	\S 5       r
\S 5       r\S 5       r\S	 5       r\S
 5       r\S 5       r\S 5       rSrg)TenantTestCase   Nc                     g)z
Add any additional setting to the tenant before it get saved. This is required if you have
required fields.
:param tenant:
:return:
N )clstenants     K/var/www/html/env/lib/python3.13/site-packages/django_tenants/test/cases.pysetup_tenantTenantTestCase.setup_tenant        	    c                     g)z
Add any additional setting to the domain before it get saved. This is required if you have
required fields.
:param domain:
:return:
Nr   )r   domains     r   setup_domainTenantTestCase.setup_domain   r   r   c                    U R                  5         U R                  5         [        5       " U R                  5       S9U l        U R                  U R                  5        U R                  R                  U R                  5       S9  U R                  5       n[        5       " U R                  US9U l
        U R                  U R                  5        U R                  R                  5         [        R                  " U R                  5        g Nschema_name)	verbosity)r   r   )sync_sharedadd_allowed_test_domainr   get_test_schema_namer   r   saveget_verbosityget_test_tenant_domainr   r   r   r   
set_tenantr   tenant_domains     r   
setUpClassTenantTestCase.setUpClass    s    ##%%'C4L4L4NO
$

#"3"3"56 224,.cjjW
$

cjj)r   c                     [         R                  " 5         U R                  R                  5         U R                  R                  SS9  U R                  5         g )NT)
force_drop)r   set_schema_to_publicr   deleter   remove_allowed_test_domainr   s    r   tearDownClassTenantTestCase.tearDownClass0   s?    '')



T*&&(r   c                     g)Nr   r   r/   s    r   r#   TenantTestCase.get_verbosity7   s    r   c                     U R                  5       nU[        R                  ;  a  [        =R                  U/-  sl        g g N)r$   r   ALLOWED_HOSTSr&   s     r   r    &TenantTestCase.add_allowed_test_domain;   s8    224  6 66""}o5" 7r   c                     U R                  5       nU[        R                  ;   a   [        R                  R                  U5        g g r5   )r$   r   r6   remover&   s     r   r.   )TenantTestCase.remove_allowed_test_domainC   s7    224H222""))-8 3r   c                 ,    [        S[        5       SSS9  g )Nmigrate_schemasFr   )r   interactiver   )r   r	   r/   s    r   r   TenantTestCase.sync_sharedJ   s    &!7!9!& 	"r   c                     g)Nztenant.test.comr   r/   s    r   r$   %TenantTestCase.get_test_tenant_domainQ   s     r   c                     g)Ntestr   r/   s    r   r!   #TenantTestCase.get_test_schema_nameU   s    r   r   )__name__
__module____qualname____firstlineno__r   r   classmethodr   r   r(   r0   r#   r    r.   r   r$   r!   __static_attributes__r   r   r   r   r      s    FF    * * ) )   6 6 9 9 " " ! !  r   r   c                      ^  \ rS rSrSr\S 5       r\S 5       r\S 5       r\S 5       r	\S 5       r
\S 5       r\S	 5       r\S
 5       rU 4S jrSrU =r$ )FastTenantTestCaseZ   an  
A faster variant of `TenantTestCase`: the test schema and its migrations will only be created and ran once.

WARNING: although this does produce significant improvements in speed it also means that these type of tests
         are not fully encapsulated and that some state will be shared between tests.

See: https://github.com/tomturner/django-tenants/issues/100
c                     g)zI
Do you want to flush the data out of the tenant database.
:return: bool
Tr   r/   s    r   
flush_dataFastTenantTestCase.flush_datad   s     r   c                     g)z;
Gets called if a existing tenant is found in the database
Nr   r/   s    r   use_existing_tenant&FastTenantTestCase.use_existing_tenantl       
 	r   c                     g)z8
Gets called if a new tenant is created in the database
Nr   r/   s    r   use_new_tenant!FastTenantTestCase.use_new_tenants   rS   r   c                     g)Nztenant.fast-test.comr   r/   s    r   r$   )FastTenantTestCase.get_test_tenant_domainz   s    %r   c                     g)N	fast_testr   r/   s    r   r!   'FastTenantTestCase.get_test_schema_name~   s    r   c                    [        5       " U R                  5       S9U l        U R                  U R                  5        U R                  R	                  U R                  5       S9  U R                  5       n[        5       " U R                  US9U l        U R                  U R                  5        U R                  R	                  5         U R                  5         g r   )r   r!   r   r   r"   r#   r$   r   r   r   rU   r&   s     r   setup_test_tenant_and_domain/FastTenantTestCase.setup_test_tenant_and_domain   s    %'C4L4L4NO
$

#"3"3"56 224,.cjjW
$

r   c                    U R                  5         [        5       nU R                  5       nUR                  R	                  US9R                  5       (       a=  UR                  R	                  US9R                  5       U l        U R                  5         OU R                  5         [        R                  " U R                  5        g Nr   )r    r   r!   objectsfilterexistsfirstr   rQ   r]   r   r%   )r   tenant_modeltest_schema_names      r   r(   FastTenantTestCase.setUpClass   s    ##%')335&&3C&DKKMM%--44AQ4RXXZCJ##%,,.cjj)r   c                 .    [         R                  " 5         g r5   )r   r,   r/   s    r   r0    FastTenantTestCase.tearDownClass   s    '')r   c                 N   > U R                  5       (       a  [        TU ]	  5         g g r5   )rN   super_fixture_teardown)self	__class__s    r   rl   $FastTenantTestCase._fixture_teardown   s     ??G%' r   r   )rD   rE   rF   rG   __doc__rH   rN   rQ   rU   r$   r!   r]   r(   r0   rl   rI   __classcell__rn   s   @r   rK   rK   Z   s           & &   
 
 * * * *( (r   rK   c                   L   ^  \ rS rSrSr\U 4S j5       r\U 4S j5       rSrU =r	$ )SubfolderTenantTestCase   zLAdds a public tenant to support tests against TenantSubfolderMiddleware
    c                    > [        5       " [        5       S9U l        U R                  R                  5         [        TU ]  5         g r`   )r   r	   public_tenantr"   rk   r(   r   rn   s    r   r(   "SubfolderTenantTestCase.setUpClass   s6     -.;Q;ST r   c                 V   > [         TU ]  5         U R                  R                  5         g r5   )rk   r0   rw   r-   rx   s    r   r0   %SubfolderTenantTestCase.tearDownClass   s       "r   r   )
rD   rE   rF   rG   rp   rH   r(   r0   rI   rq   rr   s   @r   rt   rt      s0       # #r   rt   N)django.core.managementr   django.confr   	django.dbr   django.testr   django_tenants.utilsr   r   r	   r   rK   rt   r   r   r   <module>r      sA    /       b bOX OdI( I(X#n #r   