From 52db4eadc204c3e5ec234729c24275c8ed803634 Mon Sep 17 00:00:00 2001 From: Dustin Farris Date: Wed, 8 Jan 2014 16:14:27 -0500 Subject: Testing nested serializers with models that have str foreign key references. --- rest_framework/runtests/settings.py | 3 +++ rest_framework/tests/accounts/__init__.py | 0 rest_framework/tests/accounts/models.py | 8 ++++++++ rest_framework/tests/accounts/serializers.py | 11 +++++++++++ rest_framework/tests/records/__init__.py | 0 rest_framework/tests/records/models.py | 6 ++++++ rest_framework/tests/test_serializer_nested.py | 5 +++++ rest_framework/tests/users/__init__.py | 0 rest_framework/tests/users/models.py | 6 ++++++ rest_framework/tests/users/serializers.py | 8 ++++++++ 10 files changed, 47 insertions(+) create mode 100644 rest_framework/tests/accounts/__init__.py create mode 100644 rest_framework/tests/accounts/models.py create mode 100644 rest_framework/tests/accounts/serializers.py create mode 100644 rest_framework/tests/records/__init__.py create mode 100644 rest_framework/tests/records/models.py create mode 100644 rest_framework/tests/users/__init__.py create mode 100644 rest_framework/tests/users/models.py create mode 100644 rest_framework/tests/users/serializers.py diff --git a/rest_framework/runtests/settings.py b/rest_framework/runtests/settings.py index be721658..3fc0eb2f 100644 --- a/rest_framework/runtests/settings.py +++ b/rest_framework/runtests/settings.py @@ -100,6 +100,9 @@ INSTALLED_APPS = ( 'rest_framework', 'rest_framework.authtoken', 'rest_framework.tests', + 'rest_framework.tests.accounts', + 'rest_framework.tests.records', + 'rest_framework.tests.users', ) # OAuth is optional and won't work if there is no oauth_provider & oauth2 diff --git a/rest_framework/tests/accounts/__init__.py b/rest_framework/tests/accounts/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/rest_framework/tests/accounts/models.py b/rest_framework/tests/accounts/models.py new file mode 100644 index 00000000..525e601b --- /dev/null +++ b/rest_framework/tests/accounts/models.py @@ -0,0 +1,8 @@ +from django.db import models + +from rest_framework.tests.users.models import User + + +class Account(models.Model): + owner = models.ForeignKey(User, related_name='accounts_owned') + admins = models.ManyToManyField(User, blank=True, null=True, related_name='accounts_administered') diff --git a/rest_framework/tests/accounts/serializers.py b/rest_framework/tests/accounts/serializers.py new file mode 100644 index 00000000..a27b9ca6 --- /dev/null +++ b/rest_framework/tests/accounts/serializers.py @@ -0,0 +1,11 @@ +from rest_framework import serializers + +from rest_framework.tests.accounts.models import Account +from rest_framework.tests.users.serializers import UserSerializer + + +class AccountSerializer(serializers.ModelSerializer): + admins = UserSerializer(many=True) + + class Meta: + model = Account diff --git a/rest_framework/tests/records/__init__.py b/rest_framework/tests/records/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/rest_framework/tests/records/models.py b/rest_framework/tests/records/models.py new file mode 100644 index 00000000..76954807 --- /dev/null +++ b/rest_framework/tests/records/models.py @@ -0,0 +1,6 @@ +from django.db import models + + +class Record(models.Model): + account = models.ForeignKey('accounts.Account', blank=True, null=True) + owner = models.ForeignKey('users.User', blank=True, null=True) diff --git a/rest_framework/tests/test_serializer_nested.py b/rest_framework/tests/test_serializer_nested.py index 7114a060..686a1f5f 100644 --- a/rest_framework/tests/test_serializer_nested.py +++ b/rest_framework/tests/test_serializer_nested.py @@ -346,3 +346,8 @@ class NestedModelSerializerUpdateTests(TestCase): result.save() self.assertEqual(result.id, john.id) + +class ImportingModelSerializerWithStrForeignKeys(TestCase): + def test_import_model_serializer(self): + from rest_framework.tests.accounts.serializers import AccountSerializer + self.assertIsInstance(AccountSerializer(), serializers.ModelSerializer) diff --git a/rest_framework/tests/users/__init__.py b/rest_framework/tests/users/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/rest_framework/tests/users/models.py b/rest_framework/tests/users/models.py new file mode 100644 index 00000000..128bac90 --- /dev/null +++ b/rest_framework/tests/users/models.py @@ -0,0 +1,6 @@ +from django.db import models + + +class User(models.Model): + account = models.ForeignKey('accounts.Account', blank=True, null=True, related_name='users') + active_record = models.ForeignKey('records.Record', blank=True, null=True) diff --git a/rest_framework/tests/users/serializers.py b/rest_framework/tests/users/serializers.py new file mode 100644 index 00000000..da496554 --- /dev/null +++ b/rest_framework/tests/users/serializers.py @@ -0,0 +1,8 @@ +from rest_framework import serializers + +from rest_framework.tests.users.models import User + + +class UserSerializer(serializers.ModelSerializer): + class Meta: + model = User -- cgit v1.2.3