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

78 lines
2.8 KiB
Python

from django.test import TestCase
from django.db import IntegrityError, transaction
from ..models import Region, Site, MunicipalLocation, StudyLocation, StorageLocation
from ..factories import RegionFactory, SiteFactory, MunicipalLocationFactory, \
StudyLocationFactory, StorageLocationFactory
class RegionTestCase(TestCase):
def test_creation(self):
r = RegionFactory()
self.assertTrue(isinstance(r, Region))
self.assertEqual(r.__str__(), r.name)
def test_uniqueness(self):
r1 = RegionFactory()
with transaction.atomic(), self.assertRaises(IntegrityError):
RegionFactory(name=r1.name, code=r1.code)
r3 = RegionFactory()
self.assertTrue(isinstance(r3, Region))
class SiteTestCase(TestCase):
def test_creation(self):
s = SiteFactory()
self.assertTrue(isinstance(s, Site))
self.assertEqual(s.__str__(), s.name)
def test_uniqueness(self):
s1 = SiteFactory()
with transaction.atomic(), self.assertRaises(IntegrityError):
SiteFactory(region=s1.region, name=s1.name, code=s1.code)
s3 = SiteFactory()
self.assertTrue(isinstance(s3, Site))
class MunicipalLocationTestCase(TestCase):
def test_creation(self):
m = MunicipalLocationFactory()
self.assertTrue(isinstance(m, MunicipalLocation))
self.assertEqual(m.__str__(), m.name)
def test_uniqueness(self):
m1 = MunicipalLocationFactory()
with transaction.atomic(), self.assertRaises(IntegrityError):
MunicipalLocationFactory(name=m1.name, code=m1.code)
m3 = MunicipalLocationFactory()
self.assertTrue(isinstance(m3, MunicipalLocation))
class StudyLocationTestCase(TestCase):
def test_creation(self):
s = StudyLocationFactory()
self.assertTrue(isinstance(s, StudyLocation))
self.assertEqual(s.__str__(), s.code)
def test_uniqueness(self):
s1 = StudyLocationFactory()
with transaction.atomic(), self.assertRaises(IntegrityError):
StudyLocationFactory(site=s1.site, name=s1.name)
s3 = StudyLocationFactory()
self.assertTrue(isinstance(s3, StudyLocation))
class StorageLocationTestCase(TestCase):
def test_creation(self):
s = StorageLocationFactory()
self.assertTrue(isinstance(s, StorageLocation))
self.assertEqual(s.__str__(), s.code)
def test_uniqueness(self):
s1 = StorageLocationFactory()
with transaction.atomic(), self.assertRaises(IntegrityError):
StorageLocationFactory(code=s1.code, facility=s1.facility,
building=s1.building, room=s1.room,
freezer=s1.freezer, temp_c=s1.temp_c)
s3 = StorageLocationFactory()
self.assertTrue(isinstance(s3, StorageLocation))