from django.core.exceptions import ValidationError from django.db import models from django.test import TestCase from .models import GenericIPAddress class GenericIPAddressFieldTests(TestCase): def test_genericipaddressfield_formfield_protocol(self): """ GenericIPAddressField with a specified protocol does not generate a formfield without a protocol. """ model_field = models.GenericIPAddressField(protocol='IPv4') form_field = model_field.formfield() with self.assertRaises(ValidationError): form_field.clean('::1') model_field = models.GenericIPAddressField(protocol='IPv6') form_field = model_field.formfield() with self.assertRaises(ValidationError): form_field.clean('127.0.0.1') def test_null_value(self): """ Null values should be resolved to None. """ GenericIPAddress.objects.create() o = GenericIPAddress.objects.get() self.assertIsNone(o.ip) def test_blank_string_saved_as_null(self): o = GenericIPAddress.objects.create(ip='') o.refresh_from_db() self.assertIsNone(o.ip) GenericIPAddress.objects.update(ip='') o.refresh_from_db() self.assertIsNone(o.ip) def test_save_load(self): instance = GenericIPAddress.objects.create(ip='::1') loaded = GenericIPAddress.objects.get() self.assertEqual(loaded.ip, instance.ip)