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

44 lines
1.6 KiB
Python

from django.test import TestCase
from django.db import IntegrityError, transaction
from ..models import Species, TrapSpecies, CollectionSpecies
from ..factories import (SpeciesFactory, TrapSpeciesFactory,
CollectionSpeciesFactory)
class SpeciesTestCase(TestCase):
def test_creation(self):
s = SpeciesFactory()
self.assertTrue(isinstance(s, Species))
self.assertEqual(s.__str__(), s.common_name)
def test_uniqueness(self):
s1 = SpeciesFactory()
with transaction.atomic(), self.assertRaises(IntegrityError):
SpeciesFactory(common_name=s1.common_name, species=s1.species)
s3 = SpeciesFactory()
self.assertTrue(isinstance(s3, Species))
class TrapSpeciesTestCase(TestCase):
def test_creation(self):
t = TrapSpeciesFactory()
self.assertTrue(isinstance(t, TrapSpecies))
label = "{} {}".format(t.collection_trap, t.species)
self.assertEqual(t.__str__(), label)
class CollectionSpeciesTestCase(TestCase):
def test_creation(self):
c = CollectionSpeciesFactory()
self.assertTrue(isinstance(c, CollectionSpecies))
label = "{} {}".format(c.collection, c.species)
self.assertEqual(c.__str__(), label)
def test_uniqueness(self):
c1 = CollectionSpeciesFactory()
with transaction.atomic(), self.assertRaises(IntegrityError):
CollectionSpeciesFactory(collection=c1.collection,
species=c1.species)
c3 = CollectionSpeciesFactory()
self.assertTrue(isinstance(c3, CollectionSpecies))