
    ϴh                         S r SSKrSSKJs  Jr  SSKrSSKJ	r	  SSK
Jr  SSKJr  SSKJrJr  \" 5       r " S S\\5      r " S	 S
\	5      r " S S\	5      r " S S\	5      rg)z2
Unit tests for core app models and base classes.
    N)TestCase)get_user_model)timezone)TimestampedModel	UUIDModelc                   ,    \ rS rSrSr " S S5      rSrg)	TestModel   z0Test model for testing base model functionality.c                       \ rS rSrSrSrg)TestModel.Meta   core N)__name__
__module____qualname____firstlineno__	app_label__static_attributes__r       GC:\Users\brahi\OneDrive\Desktop\Code\src\apps\core\tests\test_models.pyMetar      s    	r   r   r   N)r   r   r   r   __doc__r   r   r   r   r   r	   r	      s    : r   r	   c                   *    \ rS rSrSrS rS rS rSrg)TimestampedModelTest   z4Test cases for TimestampedModel abstract base class.c                     [         R                  R                  5       nU R                  UR                  5        U R                  UR
                  5        U R                  UR                  UR
                  5        g)z/Test that timestamps are automatically created.N)r	   objectscreateassertIsNotNone
created_at
updated_atassertEqualselfinstances     r   test_timestamps_auto_created1TimestampedModelTest.test_timestamps_auto_created   sZ    $$++-X001X001,,h.A.ABr   c                    [         R                  R                  5       nUR                  nSSKnUR                  S5        UR                  5         U R                  UR                  U5        U R                  UR                  U5        g)z1Test that updated_at changes when model is saved.r   N{Gz?)	r	   r   r   r"   timesleepsaveassertNotEqualassertGreater)r%   r&   original_updated_atr+   s       r   test_updated_at_changes_on_save4TimestampedModelTest.test_updated_at_changes_on_save!   sj    $$++-&11 	

4H//1DE8..0CDr   c                     [         R                  R                  5       nUR                  nSSKnUR                  S5        UR                  5         U R                  UR                  U5        g)z/Test that created_at doesn't change on updates.r   Nr*   )r	   r   r   r!   r+   r,   r-   r#   )r%   r&   original_created_atr+   s       r   #test_created_at_unchanged_on_update8TimestampedModelTest.test_created_at_unchanged_on_update/   sS    $$++-&11 	

4,,.ABr   r   N)	r   r   r   r   r   r'   r1   r5   r   r   r   r   r   r      s    >CECr   r   c                   0    \ rS rSrSrS rS rS rS rSr	g)	UUIDModelTest=   z-Test cases for UUIDModel abstract base class.c                     [         R                  R                  5       nU R                  UR                  5        U R                  UR                  [        R                  5        g)z*Test that UUID is automatically generated.N)r	   r   r   r    idassertIsInstanceuuidUUIDr$   s     r   test_uuid_auto_generated&UUIDModelTest.test_uuid_auto_generated@   s@    $$++-X[[)hkk4995r   c                     [         R                  R                  5       n[         R                  R                  5       nU R                  UR                  UR                  5        g)zTest that UUIDs are unique.N)r	   r   r   r.   r;   )r%   	instance1	instance2s      r   test_uuid_is_unique!UUIDModelTest.test_uuid_is_uniqueG   sB    %%,,.	%%,,.	ILL),,7r   c                     [         R                  R                  5       n[         R                  R                  UR                  S9nU R                  X!5        g)z%Test that UUID serves as primary key.r;   N)r	   r   r   getr;   r#   r%   r&   	retrieveds      r   test_uuid_is_primary_key&UUIDModelTest.test_uuid_is_primary_keyN   sC    $$++- %%))X[[)9	-r   c                     [         R                  R                  5       n[        UR                  5      nU R                  U[        5        U R                  [        U5      S5        U R                  SU5        g)z Test UUID string representation.$   -N)	r	   r   r   strr;   r<   r#   lenassertIn)r%   r&   uuid_strs      r   test_uuid_string_representation-UUIDModelTest.test_uuid_string_representationV   sX    $$++- x{{#h,X+c8$r   r   N)
r   r   r   r   r   r?   rD   rK   rT   r   r   r   r   r8   r8   =   s    768.%r   r8   c                   $    \ rS rSrSrS rS rSrg)CombinedBaseModelsTesta   z8Test cases for models inheriting from both base classes.c                    [         R                  R                  5       nU R                  UR                  5        U R                  UR                  [        R                  5        U R                  UR                  5        U R                  UR                  5        [         R                  R                  UR                  S9nU R                  UR                  UR                  5        g)z>Test that both UUID and timestamp functionality work together.rG   N)r	   r   r   r    r;   r<   r=   r>   r!   r"   rH   r#   rI   s      r   test_combined_functionality2CombinedBaseModelsTest.test_combined_functionalityd   s    $$++- 	X[[)hkk4995 	X001X001 %%))X[[)9	--x/B/BCr   c                 @   [         R                  R                  5       nSSKnUR	                  S5        [         R                  R                  5       n[        [         R                  R                  5       5      nU R                  [        U5      S5        [        [         R                  S5      (       aJ  [         R                  R                  S/:X  a+  U R                  US   U5        U R                  US   U5        gU R                  X5        U R                  X45        g)z*Test default model ordering by created_at.r   Nr*      orderingz-created_at   )r	   r   r   r+   r,   listallr#   rQ   hasattr_metar^   rR   )r%   rB   r+   rC   	instancess        r   test_model_ordering*CombinedBaseModelsTest.test_model_orderingt   s     %%,,.	

4%%,,.	 **..01	 	Y+ 9??J//IOO4L4LQ^P_4_Yq\95Yq\95 MM)/MM)/r   r   N)r   r   r   r   r   rZ   re   r   r   r   r   rW   rW   a   s    BD 0r   rW   )r   builtins@py_builtins_pytest.assertion.rewrite	assertionrewrite
@pytest_arr=   django.testr   django.contrib.authr   django.utilsr   apps.core.modelsr   r   Userr	   r   r8   rW   r   r   r   <module>rr      s^        . ! 8 ) $C8 $CN!%H !%H*0X *0r   