From dd82f3327124fd2762cf6df2ac8c6380772bf127 Mon Sep 17 00:00:00 2001 From: Tim Graham Date: Fri, 29 Sep 2017 14:50:51 -0400 Subject: Fixed #27979 -- Made MySQL raise IntegrityError rather than OperationalError when saving negative numbers in PositiveInteger fields. --- tests/model_fields/test_integerfield.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'tests/model_fields/test_integerfield.py') diff --git a/tests/model_fields/test_integerfield.py b/tests/model_fields/test_integerfield.py index 99d7b1797c..5c7ba47fbb 100644 --- a/tests/model_fields/test_integerfield.py +++ b/tests/model_fields/test_integerfield.py @@ -1,6 +1,8 @@ +import unittest + from django.core import validators from django.core.exceptions import ValidationError -from django.db import connection, models +from django.db import IntegrityError, connection, models from django.test import SimpleTestCase, TestCase from .models import ( @@ -151,6 +153,13 @@ class PositiveIntegerFieldTests(IntegerFieldTests): model = PositiveIntegerModel documented_range = (0, 2147483647) + @unittest.skipIf(connection.vendor == 'sqlite', "SQLite doesn't have a constraint.") + def test_negative_values(self): + p = PositiveIntegerModel.objects.create(value=0) + p.value = models.F('value') - 1 + with self.assertRaises(IntegrityError): + p.save() + class ValidationTests(SimpleTestCase): -- cgit v1.3