]> git.parisson.com Git - django_quiz.git/commitdiff
continuing to work on the quiz/models.py
authorTom Walker <tomwalker0472@gmail.com>
Thu, 19 Jun 2014 18:57:01 +0000 (19:57 +0100)
committerTom Walker <tomwalker0472@gmail.com>
Thu, 19 Jun 2014 18:57:01 +0000 (19:57 +0100)
quiz/models.py
quiz/tests.py

index 69e4975f575cc9c6d687352ba4ccfc35971edc7a..b4cd73a380aaff10e257ca6f93f38667b35853a5 100644 (file)
@@ -161,7 +161,6 @@ class Progress(models.Model):
         the third is the percentage correct.
 
         The dict will have one key for every category that you have defined
-        BUT
         """
 
         categories = Category.objects.all()
@@ -238,13 +237,17 @@ class Progress(models.Model):
         Increase if all were correct.
 
         Does not return anything.
+
+        TO DO: Raise error when necessary
         """
 
         category_test = Category.objects.filter(category = category_queried) \
                                         .exists()
 
-        if category_test == False:
-            return "error",  "category does not exist"
+        if category_test == False or score_to_add == False or \
+           possible_to_add == False or str(score_to_add).isdigit() == False or \
+           str(possible_to_add).isdigit() == False:
+            return "error",  "category does not exist or invalid score"
 
         to_find = re.escape(str(category_queried)) + r",(\d+),(\d+),"
 
index 2bdda934879ce58487f03e5cea19700433b7c14d..46c828c1db1fea5fcf06fa04e801a7e29e50e083 100644 (file)
@@ -1,6 +1,6 @@
 # -*- coding: iso-8859-15 -*-
 
-
+from django.contrib.auth.models import User
 from django.test import TestCase
 
 from quiz.models import Category, Quiz, Progress, Sitting, Question
@@ -59,9 +59,108 @@ class TestQuiz(TestCase):
         c1 = Category.objects.get(id = 1)
 
         q5 = Quiz.objects.create(id = 5,
-                            title = "test quiz 5",
-                            description = "d5",
-                            url = "tq5",
-                            category = c1,)
+                                 title = "test quiz 5",
+                                 description = "d5",
+                                 url = "tq5",
+                                 category = c1,
+                                 exam_paper = True,)
 
         self.assertEqual(q5.category.category, c1.category)
+        self.assertEqual(q5.random_order, False)
+        self.assertEqual(q5.answers_at_end, False)
+        self.assertEqual(q5.exam_paper, True)
+
+
+class TestProgress(TestCase):
+    def setUp(self):
+        Category.objects.new_category(category = "elderberries")
+
+        Quiz.objects.create(id = 1,
+                            title = "test quiz 1",
+                            description = "d1",
+                            url = "tq1",)
+
+        self.user = User.objects.create_user(username = "jacob",
+                                             email = "jacob@jacob.com",
+                                             password = "top_secret")
+
+
+    def test_list_all_empty(self):
+        p1 = Progress.objects.new_progress(self.user)
+        self.assertEqual(p1.score, "")
+
+        category_dict = p1.list_all_cat_scores()
+
+        self.assertIn(str(category_dict.keys()[0]), p1.score)
+
+        category_dict = p1.list_all_cat_scores()
+
+        self.assertIn("elderberries", p1.score)
+
+        Category.objects.new_category(category = "cheese")
+
+        category_dict = p1.list_all_cat_scores()
+
+        self.assertIn("cheese", p1.score)
+
+    def test_check_cat(self):
+        p1 = Progress.objects.new_progress(self.user)
+        elderberry_score = p1.check_cat_score("elderberries")
+
+        self.assertEqual(elderberry_score, (0, 0))
+
+        fake_score = p1.check_cat_score("monkey")
+
+        self.assertEqual(fake_score, ("error", "category does not exist"))
+
+        Category.objects.new_category(category = "cheese")
+        cheese_score = p1.check_cat_score("cheese")
+
+        self.assertEqual(cheese_score, (0, 0))
+        self.assertIn("cheese", p1.score)
+
+    def test_update_score(self):
+        p1 = Progress.objects.new_progress(self.user)
+        p1.list_all_cat_scores()
+        p1.update_score("elderberries", 1, 2)
+        elderberry_score = p1.check_cat_score("elderberries")
+
+        self.assertEqual(elderberry_score, (1, 2))
+
+        Category.objects.new_category(category = "cheese")
+        p1.update_score("cheese", 3, 4)
+        cheese_score = p1.check_cat_score("cheese")
+
+        self.assertEqual(cheese_score, (3, 4))
+
+        fake_cat = p1.update_score("hamster", 3, 4)
+        self.assertIn('error', str(fake_cat))
+
+        non_int = p1.update_score("hamster", "1", "a")
+        self.assertIn('error', str(non_int))
+
+
+class TestSitting(TestCase):
+    def setUp(self):
+        q1 = Quiz.objects.create(id = 1,
+                                 title = "test quiz 1",
+                                 description = "d1",
+                                 url = "tq1",)
+
+        Question.objects.create(id = 1,
+                                quiz = q1,
+                                content = "squawk",)
+
+        Question.objects.create(id = 2,
+                                quiz = q1,
+                                content = "squeek",)
+
+        self.user = User.objects.create_user(username = "jacob",
+                                 email = "jacob@jacob.com",
+                                 password = "top_secret")
+
+        Sitting.objects.new_sitting(self.user, q1)
+
+    def test_get_next(self):
+        s1 = Sitting.objects.get(id = 1)
+        print s1.question_list