ccdb-api/ccdb/misc/tests/test_models.py

79 lines
2.9 KiB
Python

from django.test import TestCase
from django.db import IntegrityError, transaction
from ..models import (MeasurementUnit, MeasurementType, Material, Color,
Container)
from .factories import (MeasurementUnitFactory, MeasurementTypeFactory,
MaterialFactory, ColorFactory, ContainerFactory)
class MeasurementUnitTestCase(TestCase):
def test_creation(self):
m = MeasurementUnitFactory()
self.assertTrue(isinstance(m, MeasurementUnit))
self.assertEqual(m.__str__(), m.code)
def test_uniqueness(self):
m1 = MeasurementUnitFactory()
with transaction.atomic(), self.assertRaises(IntegrityError):
MeasurementUnitFactory(name=m1.name, code=m1.code)
m3 = MeasurementUnitFactory()
self.assertTrue(isinstance(m3, MeasurementUnit))
class MeasurementTypeTestCase(TestCase):
def test_creation(self):
m = MeasurementTypeFactory()
self.assertTrue(isinstance(m, MeasurementType))
self.assertEqual(m.__str__(), m.name)
def test_uniqueness(self):
m1 = MeasurementTypeFactory()
with transaction.atomic(), self.assertRaises(IntegrityError):
MeasurementTypeFactory(name=m1.name, code=m1.code,
measurement_type_class=m1.measurement_type_class)
m3 = MeasurementTypeFactory()
self.assertTrue(isinstance(m3, MeasurementType))
class MaterialTestCase(TestCase):
def test_creation(self):
m = MaterialFactory()
self.assertTrue(isinstance(m, Material))
self.assertEqual(m.__str__(), m.name)
def test_uniqueness(self):
m1 = MaterialFactory()
with transaction.atomic(), self.assertRaises(IntegrityError):
MaterialFactory(name=m1.name, code=m1.code)
m3 = MaterialFactory()
self.assertTrue(isinstance(m3, Material))
class ColorTestCase(TestCase):
def test_creation(self):
c = ColorFactory()
self.assertTrue(isinstance(c, Color))
self.assertEqual(c.__str__(), c.name)
def test_uniqueness(self):
c1 = ColorFactory()
with transaction.atomic(), self.assertRaises(IntegrityError):
ColorFactory(name=c1.name, code=c1.code, color_number=c1.color_number)
c3 = ColorFactory()
self.assertTrue(isinstance(c3, Color))
class ContainerTestCase(TestCase):
def test_creation(self):
c = ContainerFactory()
self.assertTrue(isinstance(c, Container))
self.assertEqual(c.__str__(), c.name)
def test_uniqueness(self):
c1 = ContainerFactory()
with transaction.atomic(), self.assertRaises(IntegrityError):
ContainerFactory(name=c1.name, code=c1.code, color=c1.color,
material=c1.material, volume=c1.volume)
c3 = ContainerFactory()
self.assertTrue(isinstance(c3, Container))