55 lines
1.7 KiB
Python
55 lines
1.7 KiB
Python
from unittest import mock
|
|
import pytest
|
|
|
|
|
|
@pytest.fixture
|
|
def get_related_assert():
|
|
def fn(model_obj, related, resource_name, related_resource_name):
|
|
assert related_resource_name in related
|
|
assert related[related_resource_name] == '/api/v2/%s/%d/%s/' % (resource_name, model_obj.pk, related_resource_name)
|
|
return fn
|
|
|
|
|
|
@pytest.fixture
|
|
def get_related_mock_and_run():
|
|
def fn(serializer_class, model_obj):
|
|
serializer = serializer_class()
|
|
related = serializer.get_related(model_obj)
|
|
return related
|
|
return fn
|
|
|
|
|
|
@pytest.fixture
|
|
def test_get_related(get_related_assert, get_related_mock_and_run):
|
|
def fn(serializer_class, model_obj, resource_name, related_resource_name):
|
|
related = get_related_mock_and_run(serializer_class, model_obj)
|
|
get_related_assert(model_obj, related, resource_name, related_resource_name)
|
|
return related
|
|
return fn
|
|
|
|
|
|
@pytest.fixture
|
|
def get_summary_fields_assert():
|
|
def fn(summary, summary_field_name):
|
|
assert summary_field_name in summary
|
|
return fn
|
|
|
|
|
|
@pytest.fixture
|
|
def get_summary_fields_mock_and_run():
|
|
def fn(serializer_class, model_obj):
|
|
serializer = serializer_class()
|
|
serializer.show_capabilities = []
|
|
serializer.context['view'] = mock.Mock(kwargs={})
|
|
return serializer.get_summary_fields(model_obj)
|
|
return fn
|
|
|
|
|
|
@pytest.fixture
|
|
def test_get_summary_fields(get_summary_fields_mock_and_run, get_summary_fields_assert):
|
|
def fn(serializer_class, model_obj, summary_field_name):
|
|
summary = get_summary_fields_mock_and_run(serializer_class, model_obj)
|
|
get_summary_fields_assert(summary, summary_field_name)
|
|
return summary
|
|
return fn
|