Commit d5a0acca authored by Shai Berger's avatar Shai Berger
Browse files

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.
parent e9fdecf9
Loading
Loading
Loading
Loading
+21 −4
Original line number Diff line number Diff line
@@ -8,14 +8,14 @@ from django.db import (
)
from django.db.models import Model
from django.db.models.fields import (
    BinaryField, BooleanField, CharField, DateTimeField, IntegerField,
    PositiveIntegerField, SlugField, TextField,
    BigIntegerField, BinaryField, BooleanField, CharField, DateTimeField,
    IntegerField, PositiveIntegerField, SlugField, TextField,
)
from django.db.models.fields.related import (
    ForeignKey, ManyToManyField, OneToOneField,
)
from django.db.transaction import atomic
from django.test import TransactionTestCase
from django.test import TransactionTestCase, skipIfDBFeature

from .fields import CustomManyToManyField, InheritedManyToManyField
from .models import (
@@ -426,7 +426,8 @@ class SchemaTests(TransactionTestCase):
        with connection.schema_editor() as editor:
            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.
        """
@@ -442,6 +443,22 @@ class SchemaTests(TransactionTestCase):
        with self.assertRaises(IntegrityError):
            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):
        """
        #23609 - Tests handling of default values when altering from NULL to NOT NULL.