mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-02-16 19:41:06 +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