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

79 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))