aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_genericrelations.py
diff options
context:
space:
mode:
authorTom Christie2014-10-08 11:22:10 +0100
committerTom Christie2014-10-08 11:22:10 +0100
commit6b09e5f2bba9167404ec329fa12c7f0215ca51ac (patch)
tree566a2fc1e395daf71a4c4f573834f531aae31cf9 /tests/test_genericrelations.py
parent093febb91299e332c810de6a6b6aba57c2b16a91 (diff)
downloaddjango-rest-framework-6b09e5f2bba9167404ec329fa12c7f0215ca51ac.tar.bz2
Tests for generic relationships
Diffstat (limited to 'tests/test_genericrelations.py')
-rw-r--r--tests/test_genericrelations.py255
1 files changed, 104 insertions, 151 deletions
diff --git a/tests/test_genericrelations.py b/tests/test_genericrelations.py
index a87ea3fd..380ad91d 100644
--- a/tests/test_genericrelations.py
+++ b/tests/test_genericrelations.py
@@ -1,151 +1,104 @@
-# from __future__ import unicode_literals
-# from django.contrib.contenttypes.models import ContentType
-# from django.contrib.contenttypes.generic import GenericRelation, GenericForeignKey
-# from django.db import models
-# from django.test import TestCase
-# from rest_framework import serializers
-# from rest_framework.compat import python_2_unicode_compatible
-
-
-# @python_2_unicode_compatible
-# class Tag(models.Model):
-# """
-# Tags have a descriptive slug, and are attached to an arbitrary object.
-# """
-# tag = models.SlugField()
-# content_type = models.ForeignKey(ContentType)
-# object_id = models.PositiveIntegerField()
-# tagged_item = GenericForeignKey('content_type', 'object_id')
-
-# def __str__(self):
-# return self.tag
-
-
-# @python_2_unicode_compatible
-# class Bookmark(models.Model):
-# """
-# A URL bookmark that may have multiple tags attached.
-# """
-# url = models.URLField()
-# tags = GenericRelation(Tag)
-
-# def __str__(self):
-# return 'Bookmark: %s' % self.url
-
-
-# @python_2_unicode_compatible
-# class Note(models.Model):
-# """
-# A textual note that may have multiple tags attached.
-# """
-# text = models.TextField()
-# tags = GenericRelation(Tag)
-
-# def __str__(self):
-# return 'Note: %s' % self.text
-
-
-# class TestGenericRelations(TestCase):
-# def setUp(self):
-# self.bookmark = Bookmark.objects.create(url='https://www.djangoproject.com/')
-# Tag.objects.create(tagged_item=self.bookmark, tag='django')
-# Tag.objects.create(tagged_item=self.bookmark, tag='python')
-# self.note = Note.objects.create(text='Remember the milk')
-# Tag.objects.create(tagged_item=self.note, tag='reminder')
-
-# def test_generic_relation(self):
-# """
-# Test a relationship that spans a GenericRelation field.
-# IE. A reverse generic relationship.
-# """
-
-# class BookmarkSerializer(serializers.ModelSerializer):
-# tags = serializers.RelatedField(many=True)
-
-# class Meta:
-# model = Bookmark
-# exclude = ('id',)
-
-# serializer = BookmarkSerializer(self.bookmark)
-# expected = {
-# 'tags': ['django', 'python'],
-# 'url': 'https://www.djangoproject.com/'
-# }
-# self.assertEqual(serializer.data, expected)
-
-# def test_generic_nested_relation(self):
-# """
-# Test saving a GenericRelation field via a nested serializer.
-# """
-
-# class TagSerializer(serializers.ModelSerializer):
-# class Meta:
-# model = Tag
-# exclude = ('content_type', 'object_id')
-
-# class BookmarkSerializer(serializers.ModelSerializer):
-# tags = TagSerializer(many=True)
-
-# class Meta:
-# model = Bookmark
-# exclude = ('id',)
-
-# data = {
-# 'url': 'https://docs.djangoproject.com/',
-# 'tags': [
-# {'tag': 'contenttypes'},
-# {'tag': 'genericrelations'},
-# ]
-# }
-# serializer = BookmarkSerializer(data=data)
-# self.assertTrue(serializer.is_valid())
-# serializer.save()
-# self.assertEqual(serializer.object.tags.count(), 2)
-
-# def test_generic_fk(self):
-# """
-# Test a relationship that spans a GenericForeignKey field.
-# IE. A forward generic relationship.
-# """
-
-# class TagSerializer(serializers.ModelSerializer):
-# tagged_item = serializers.RelatedField()
-
-# class Meta:
-# model = Tag
-# exclude = ('id', 'content_type', 'object_id')
-
-# serializer = TagSerializer(Tag.objects.all(), many=True)
-# expected = [
-# {
-# 'tag': 'django',
-# 'tagged_item': 'Bookmark: https://www.djangoproject.com/'
-# },
-# {
-# 'tag': 'python',
-# 'tagged_item': 'Bookmark: https://www.djangoproject.com/'
-# },
-# {
-# 'tag': 'reminder',
-# 'tagged_item': 'Note: Remember the milk'
-# }
-# ]
-# self.assertEqual(serializer.data, expected)
-
-# def test_restore_object_generic_fk(self):
-# """
-# Ensure an object with a generic foreign key can be restored.
-# """
-
-# class TagSerializer(serializers.ModelSerializer):
-# class Meta:
-# model = Tag
-# exclude = ('content_type', 'object_id')
-
-# serializer = TagSerializer()
-
-# bookmark = Bookmark(url='http://example.com')
-# attrs = {'tagged_item': bookmark, 'tag': 'example'}
-
-# tag = serializer.restore_object(attrs)
-# self.assertEqual(tag.tagged_item, bookmark)
+from __future__ import unicode_literals
+from django.contrib.contenttypes.models import ContentType
+from django.contrib.contenttypes.generic import GenericRelation, GenericForeignKey
+from django.db import models
+from django.test import TestCase
+from rest_framework import serializers
+from rest_framework.compat import python_2_unicode_compatible
+
+
+@python_2_unicode_compatible
+class Tag(models.Model):
+ """
+ Tags have a descriptive slug, and are attached to an arbitrary object.
+ """
+ tag = models.SlugField()
+ content_type = models.ForeignKey(ContentType)
+ object_id = models.PositiveIntegerField()
+ tagged_item = GenericForeignKey('content_type', 'object_id')
+
+ def __str__(self):
+ return self.tag
+
+
+@python_2_unicode_compatible
+class Bookmark(models.Model):
+ """
+ A URL bookmark that may have multiple tags attached.
+ """
+ url = models.URLField()
+ tags = GenericRelation(Tag)
+
+ def __str__(self):
+ return 'Bookmark: %s' % self.url
+
+
+@python_2_unicode_compatible
+class Note(models.Model):
+ """
+ A textual note that may have multiple tags attached.
+ """
+ text = models.TextField()
+ tags = GenericRelation(Tag)
+
+ def __str__(self):
+ return 'Note: %s' % self.text
+
+
+class TestGenericRelations(TestCase):
+ def setUp(self):
+ self.bookmark = Bookmark.objects.create(url='https://www.djangoproject.com/')
+ Tag.objects.create(tagged_item=self.bookmark, tag='django')
+ Tag.objects.create(tagged_item=self.bookmark, tag='python')
+ self.note = Note.objects.create(text='Remember the milk')
+ Tag.objects.create(tagged_item=self.note, tag='reminder')
+
+ def test_generic_relation(self):
+ """
+ Test a relationship that spans a GenericRelation field.
+ IE. A reverse generic relationship.
+ """
+
+ class BookmarkSerializer(serializers.ModelSerializer):
+ tags = serializers.StringRelatedField(many=True)
+
+ class Meta:
+ model = Bookmark
+ fields = ('tags', 'url')
+
+ serializer = BookmarkSerializer(self.bookmark)
+ expected = {
+ 'tags': ['django', 'python'],
+ 'url': 'https://www.djangoproject.com/'
+ }
+ self.assertEqual(serializer.data, expected)
+
+ def test_generic_fk(self):
+ """
+ Test a relationship that spans a GenericForeignKey field.
+ IE. A forward generic relationship.
+ """
+
+ class TagSerializer(serializers.ModelSerializer):
+ tagged_item = serializers.StringRelatedField()
+
+ class Meta:
+ model = Tag
+ fields = ('tag', 'tagged_item')
+
+ serializer = TagSerializer(Tag.objects.all(), many=True)
+ expected = [
+ {
+ 'tag': 'django',
+ 'tagged_item': 'Bookmark: https://www.djangoproject.com/'
+ },
+ {
+ 'tag': 'python',
+ 'tagged_item': 'Bookmark: https://www.djangoproject.com/'
+ },
+ {
+ 'tag': 'reminder',
+ 'tagged_item': 'Note: Remember the milk'
+ }
+ ]
+ self.assertEqual(serializer.data, expected)