mirror of
				https://github.com/encode/django-rest-framework.git
				synced 2025-11-04 09:57:55 +03:00 
			
		
		
		
	Add couple of tests for compat module (#4845)
This commit is contained in:
		
							parent
							
								
									ab0c57718a
								
							
						
					
					
						commit
						9c8adb4812
					
				
							
								
								
									
										69
									
								
								tests/test_compat.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								tests/test_compat.py
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,69 @@
 | 
			
		|||
from django.test import TestCase
 | 
			
		||||
 | 
			
		||||
from rest_framework import compat
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class CompatTests(TestCase):
 | 
			
		||||
 | 
			
		||||
    def test_total_seconds(self):
 | 
			
		||||
        class MockTimedelta(object):
 | 
			
		||||
            days = 1
 | 
			
		||||
            seconds = 1
 | 
			
		||||
            microseconds = 100
 | 
			
		||||
        timedelta = MockTimedelta()
 | 
			
		||||
        expected = (timedelta.days * 86400.0) + float(timedelta.seconds) + (timedelta.microseconds / 1000000.0)
 | 
			
		||||
        assert compat.total_seconds(timedelta) == expected
 | 
			
		||||
 | 
			
		||||
    def test_get_remote_field_with_old_django_version(self):
 | 
			
		||||
        class MockField(object):
 | 
			
		||||
            rel = 'example_rel'
 | 
			
		||||
        original_django_version = compat.django.VERSION
 | 
			
		||||
        compat.django.VERSION = (1, 8)
 | 
			
		||||
        assert compat.get_remote_field(MockField(), default='default_value') == 'example_rel'
 | 
			
		||||
        assert compat.get_remote_field(object(), default='default_value') == 'default_value'
 | 
			
		||||
        compat.django.VERSION = original_django_version
 | 
			
		||||
 | 
			
		||||
    def test_get_remote_field_with_new_django_version(self):
 | 
			
		||||
        class MockField(object):
 | 
			
		||||
            remote_field = 'example_remote_field'
 | 
			
		||||
        original_django_version = compat.django.VERSION
 | 
			
		||||
        compat.django.VERSION = (1, 10)
 | 
			
		||||
        assert compat.get_remote_field(MockField(), default='default_value') == 'example_remote_field'
 | 
			
		||||
        assert compat.get_remote_field(object(), default='default_value') == 'default_value'
 | 
			
		||||
        compat.django.VERSION = original_django_version
 | 
			
		||||
 | 
			
		||||
    def test_patch_in_http_method_names(self):
 | 
			
		||||
        assert 'patch' in compat.View.http_method_names
 | 
			
		||||
 | 
			
		||||
    def test_set_rollback_for_transaction_in_managed_mode(self):
 | 
			
		||||
        class MockTransaction(object):
 | 
			
		||||
            called_rollback = False
 | 
			
		||||
            called_leave_transaction_management = False
 | 
			
		||||
 | 
			
		||||
            def is_managed(self):
 | 
			
		||||
                return True
 | 
			
		||||
 | 
			
		||||
            def is_dirty(self):
 | 
			
		||||
                return True
 | 
			
		||||
 | 
			
		||||
            def rollback(self):
 | 
			
		||||
                self.called_rollback = True
 | 
			
		||||
 | 
			
		||||
            def leave_transaction_management(self):
 | 
			
		||||
                self.called_leave_transaction_management = True
 | 
			
		||||
 | 
			
		||||
        original_transaction = compat.transaction
 | 
			
		||||
        dirty_mock_transaction = MockTransaction()
 | 
			
		||||
        compat.transaction = dirty_mock_transaction
 | 
			
		||||
        compat.set_rollback()
 | 
			
		||||
        assert dirty_mock_transaction.called_rollback is True
 | 
			
		||||
        assert dirty_mock_transaction.called_leave_transaction_management is True
 | 
			
		||||
 | 
			
		||||
        clean_mock_transaction = MockTransaction()
 | 
			
		||||
        clean_mock_transaction.is_dirty = lambda: False
 | 
			
		||||
        compat.transaction = clean_mock_transaction
 | 
			
		||||
        compat.set_rollback()
 | 
			
		||||
        assert clean_mock_transaction.called_rollback is False
 | 
			
		||||
        assert clean_mock_transaction.called_leave_transaction_management is True
 | 
			
		||||
 | 
			
		||||
        compat.transaction = original_transaction
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user