1
0
mirror of https://github.com/django/django.git synced 2024-12-26 11:06:07 +00:00

Fixed #24595 Oracle test failure

The only problem for Oracle was the test, which tested nullity on
text/char fields -- but Oracle interprets_empty_strings_as_null.
This commit is contained in:
Shai Berger 2015-04-18 18:52:30 +03:00
parent e9fdecf984
commit d5a0accaa0

View File

@ -8,14 +8,14 @@ from django.db import (
) )
from django.db.models import Model from django.db.models import Model
from django.db.models.fields import ( from django.db.models.fields import (
BinaryField, BooleanField, CharField, DateTimeField, IntegerField, BigIntegerField, BinaryField, BooleanField, CharField, DateTimeField,
PositiveIntegerField, SlugField, TextField, IntegerField, PositiveIntegerField, SlugField, TextField,
) )
from django.db.models.fields.related import ( from django.db.models.fields.related import (
ForeignKey, ManyToManyField, OneToOneField, ForeignKey, ManyToManyField, OneToOneField,
) )
from django.db.transaction import atomic from django.db.transaction import atomic
from django.test import TransactionTestCase from django.test import TransactionTestCase, skipIfDBFeature
from .fields import CustomManyToManyField, InheritedManyToManyField from .fields import CustomManyToManyField, InheritedManyToManyField
from .models import ( from .models import (
@ -426,7 +426,8 @@ class SchemaTests(TransactionTestCase):
with connection.schema_editor() as editor: with connection.schema_editor() as editor:
editor.alter_field(Note, old_field, new_field, strict=True) editor.alter_field(Note, old_field, new_field, strict=True)
def test_alter_field_keep_null_status(self): @skipIfDBFeature('interprets_empty_strings_as_nulls')
def test_alter_textual_field_keep_null_status(self):
""" """
Changing a field type shouldn't affect the not null status. Changing a field type shouldn't affect the not null status.
""" """
@ -442,6 +443,22 @@ class SchemaTests(TransactionTestCase):
with self.assertRaises(IntegrityError): with self.assertRaises(IntegrityError):
Note.objects.create(info=None) Note.objects.create(info=None)
def test_alter_numeric_field_keep_null_status(self):
"""
Changing a field type shouldn't affect the not null status.
"""
with connection.schema_editor() as editor:
editor.create_model(UniqueTest)
with self.assertRaises(IntegrityError):
UniqueTest.objects.create(year=None, slug='aaa')
old_field = UniqueTest._meta.get_field("year")
new_field = BigIntegerField()
new_field.set_attributes_from_name("year")
with connection.schema_editor() as editor:
editor.alter_field(UniqueTest, old_field, new_field, strict=True)
with self.assertRaises(IntegrityError):
UniqueTest.objects.create(year=None, slug='bbb')
def test_alter_null_to_not_null(self): def test_alter_null_to_not_null(self):
""" """
#23609 - Tests handling of default values when altering from NULL to NOT NULL. #23609 - Tests handling of default values when altering from NULL to NOT NULL.