71 lines
2.1 KiB
Python
71 lines
2.1 KiB
Python
from django.test import TestCase
|
|
from django.db.utils import IntegrityError
|
|
from django.core.exceptions import ValidationError
|
|
from config.errors import ConflictError
|
|
from apps.advertiser.models import Advertiser
|
|
from apps.client.models import Client
|
|
from apps.mlscore.models import Mlscore
|
|
|
|
|
|
class MlscoreModelTest(TestCase):
|
|
def setUp(self):
|
|
self.advertiser = Advertiser.objects.create(name="Test Advertiser")
|
|
self.client_obj = Client.objects.create(
|
|
login="test_client",
|
|
age=25,
|
|
location="test_location",
|
|
gender=Client.GenderChoices.MALE,
|
|
)
|
|
|
|
def test_create_mlscore(self):
|
|
mlscore = Mlscore.objects.create(
|
|
advertiser=self.advertiser,
|
|
client=self.client_obj,
|
|
score=95,
|
|
)
|
|
|
|
self.assertEqual(mlscore.score, 95)
|
|
self.assertEqual(str(mlscore), "Test Advertiser | test_client")
|
|
|
|
def test_mlscore_unique_together_constraint(self):
|
|
Mlscore.objects.create(
|
|
advertiser=self.advertiser,
|
|
client=self.client_obj,
|
|
score=80,
|
|
)
|
|
|
|
with self.assertRaises(ConflictError):
|
|
Mlscore.objects.create(
|
|
advertiser=self.advertiser,
|
|
client=self.client_obj,
|
|
score=85,
|
|
)
|
|
|
|
def test_delete_advertiser_cascades(self):
|
|
mlscore = Mlscore.objects.create(
|
|
advertiser=self.advertiser,
|
|
client=self.client_obj,
|
|
score=90,
|
|
)
|
|
self.advertiser.delete()
|
|
|
|
self.assertFalse(Mlscore.objects.filter(id=mlscore.id).exists())
|
|
|
|
def test_delete_client_cascades(self):
|
|
mlscore = Mlscore.objects.create(
|
|
advertiser=self.advertiser,
|
|
client=self.client_obj,
|
|
score=90,
|
|
)
|
|
self.client_obj.delete()
|
|
|
|
self.assertFalse(Mlscore.objects.filter(id=mlscore.id).exists())
|
|
|
|
def test_score_positive_integer_constraint(self):
|
|
with self.assertRaises(ValidationError):
|
|
Mlscore.objects.create(
|
|
advertiser=self.advertiser,
|
|
client=self.client_obj,
|
|
score=-5,
|
|
)
|