Skip UUID tests for Django 1.7

This commit is contained in:
Carlton Gibson 2016-02-10 17:20:21 +01:00
parent 14e52ca974
commit 363bc4fbcc
2 changed files with 33 additions and 22 deletions

View File

@ -2,6 +2,7 @@ from __future__ import unicode_literals
import uuid import uuid
import django
from django.db import models from django.db import models
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
@ -47,10 +48,10 @@ class ManyToManySource(RESTFrameworkModel):
class ForeignKeyTarget(RESTFrameworkModel): class ForeignKeyTarget(RESTFrameworkModel):
name = models.CharField(max_length=100) name = models.CharField(max_length=100)
if django.VERSION > (1, 7):
class UUIDForeignKeyTarget(RESTFrameworkModel): class UUIDForeignKeyTarget(RESTFrameworkModel):
uuid = models.UUIDField(primary_key=True, default=uuid.uuid4) uuid = models.UUIDField(primary_key=True, default=uuid.uuid4)
name = models.CharField(max_length=100) name = models.CharField(max_length=100)
class ForeignKeySource(RESTFrameworkModel): class ForeignKeySource(RESTFrameworkModel):
@ -68,13 +69,13 @@ class NullableForeignKeySource(RESTFrameworkModel):
verbose_name='Optional target object', verbose_name='Optional target object',
on_delete=models.CASCADE) on_delete=models.CASCADE)
if django.VERSION > (1, 7):
class NullableUUIDForeignKeySource(RESTFrameworkModel): class NullableUUIDForeignKeySource(RESTFrameworkModel):
name = models.CharField(max_length=100) name = models.CharField(max_length=100)
target = models.ForeignKey(ForeignKeyTarget, null=True, blank=True, target = models.ForeignKey(UUIDForeignKeyTarget, null=True, blank=True,
related_name='nullable_sources', related_name='nullable_sources',
verbose_name='Optional target object', verbose_name='Optional target object',
on_delete=models.CASCADE) on_delete=models.CASCADE)
# OneToOne # OneToOne

View File

@ -1,15 +1,22 @@
from __future__ import unicode_literals from __future__ import unicode_literals
import django
import pytest
from django.test import TestCase from django.test import TestCase
from django.utils import six from django.utils import six
from rest_framework import serializers from rest_framework import serializers
from tests.models import ( from tests.models import (
ForeignKeySource, ForeignKeyTarget, ManyToManySource, ManyToManyTarget, ForeignKeySource, ForeignKeyTarget, ManyToManySource, ManyToManyTarget,
NullableForeignKeySource, NullableOneToOneSource, NullableForeignKeySource, NullableOneToOneSource, OneToOneTarget
NullableUUIDForeignKeySource, OneToOneTarget, UUIDForeignKeyTarget
) )
if django.VERSION > (1, 7):
from tests.models import (
NullableUUIDForeignKeySource,
UUIDForeignKeyTarget
)
# ManyToMany # ManyToMany
class ManyToManyTargetSerializer(serializers.ModelSerializer): class ManyToManyTargetSerializer(serializers.ModelSerializer):
@ -44,16 +51,17 @@ class NullableForeignKeySourceSerializer(serializers.ModelSerializer):
fields = ('id', 'name', 'target') fields = ('id', 'name', 'target')
# Nullable UUIDForeignKey if django.VERSION > (1, 7):
class NullableUUIDForeignKeySourceSerializer(serializers.ModelSerializer): # Nullable UUIDForeignKey
target = serializers.PrimaryKeyRelatedField( class NullableUUIDForeignKeySourceSerializer(serializers.ModelSerializer):
pk_field=serializers.UUIDField(), target = serializers.PrimaryKeyRelatedField(
queryset=UUIDForeignKeyTarget.objects.all(), pk_field=serializers.UUIDField(),
allow_null=True) queryset=UUIDForeignKeyTarget.objects.all(),
allow_null=True)
class Meta: class Meta:
model = NullableUUIDForeignKeySource model = NullableUUIDForeignKeySource
fields = ('id', 'name', 'target') fields = ('id', 'name', 'target')
# Nullable OneToOne # Nullable OneToOne
@ -445,12 +453,14 @@ class PKNullableForeignKeyTests(TestCase):
] ]
self.assertEqual(serializer.data, expected) self.assertEqual(serializer.data, expected)
@pytest.mark.skipif(django.VERSION < (1, 8), reason="UUIDField not available")
def test_null_uuid_foreign_key_serializes_as_none(self): def test_null_uuid_foreign_key_serializes_as_none(self):
source = NullableUUIDForeignKeySource(name='Source') source = NullableUUIDForeignKeySource(name='Source')
serializer = NullableUUIDForeignKeySourceSerializer(source) serializer = NullableUUIDForeignKeySourceSerializer(source)
data = serializer.data data = serializer.data
self.assertEqual(data["target"], None) self.assertEqual(data["target"], None)
@pytest.mark.skipif(django.VERSION < (1, 8), reason="UUIDField not available")
def test_nullable_uuid_foreign_key_is_valid_when_none(self): def test_nullable_uuid_foreign_key_is_valid_when_none(self):
data = {"name": "Source", "target": None} data = {"name": "Source", "target": None}
serializer = NullableUUIDForeignKeySourceSerializer(data=data) serializer = NullableUUIDForeignKeySourceSerializer(data=data)