""" This module tests all our quiz models""" from django.test import TestCase from .models import Sport, Criterion class SportModelTest(TestCase): """Tests the sport model""" def setUp(self): self.name = "HIIT" self.url = ( "https://www.buchsys.de/fu-berlin/angebote/aktueller_zeitraum/_HIIT_" "-_High_Intensity_Interval_Training___HOME.html " ) self.test_sport = Sport( name=self.name, url=self.url, ) self.test_sport.save() def test_sport_can_be_created(self): """New sport is written to the database""" test_sport = Sport.objects.first() self.assertEqual(test_sport.name, self.name) self.assertEqual(test_sport.url, self.url) class CriterionRatingTest(TestCase): """Tests the Relation between Sport and Criterion""" def setUp(self): self.name = "HIIT" self.url = ( "https://www.buchsys.de/fu-berlin/angebote/aktueller_zeitraum/_HIIT_" "-_High_Intensity_Interval_Training___HOME.html " ) self.test_sport = Sport( name=self.name, url=self.url, ) self.test_sport.save() self.criterion = Criterion(name="Einzelsport") self.criterion.save() def test_can_rate_criterion_for_sport(self): """A rating for a specific criterion can be added to a sport""" self.test_sport.rate(self.criterion, 10) self.assertEqual(self.test_sport.criteria_ratings.first(), self.criterion) self.assertEqual(self.test_sport.get_rating(self.criterion), 10) def test_rating_can_be_changed(self): """ If a sport is rated again then the corresponding relation is changed, instead of recreated """ first_rating_object = self.test_sport.rate(self.criterion, 10) second_rating_object = self.test_sport.rate(self.criterion, 8) self.assertEqual(first_rating_object, second_rating_object) self.assertEqual(self.test_sport.get_rating(criterion=self.criterion), 8) class CriterionModelTest(TestCase): """Tests the Criterion model""" def test_criterion_can_be_created(self): """New criterion is saved to the db""" name = "Einzelsport" Criterion(name=name).save() test_criterion = Criterion.objects.first() self.assertEqual(test_criterion.name, name)