ソースを参照

Fixed review tests to work with refactored code

master
David Winterbottom 14年前
コミット
7e8a52f702

+ 4
- 0
oscar/apps/product/reviews/abstract_models.py ファイルの表示

@@ -75,6 +75,10 @@ class AbstractProductReview(models.Model):
75 75
     def save(self, *args, **kwargs):
76 76
         if not self.user and not (self.name and self.email):  
77 77
             raise ValidationError("Anonymous review must have a name and an email")
78
+        if not self.title:
79
+            raise ValidationError("Reviews must have a title")
80
+        if self.score is None:
81
+            raise ValidationError("Reviews must have a score")
78 82
         super(AbstractProductReview, self).save(*args, **kwargs)
79 83
 
80 84
     def has_votes(self):

+ 6
- 6
oscar/apps/product/reviews/fixtures/sample-reviews.json ファイルの表示

@@ -7,8 +7,8 @@
7 7
             "product": 1, 
8 8
             "name": "", 
9 9
             "title": "Test review 1", 
10
-            "url": "", 
11
-            "approved": true, 
10
+            "homepage": "", 
11
+            "status": 1, 
12 12
             "score": "4", 
13 13
             "user": 1, 
14 14
             "date_created": "2011-05-19 18:00:48", 
@@ -25,8 +25,8 @@
25 25
             "product": 1, 
26 26
             "name": "Anon2", 
27 27
             "title": "Anon review 2", 
28
-            "url": "", 
29
-            "approved": true, 
28
+            "homepage": "", 
29
+            "status": 1, 
30 30
             "score": "3", 
31 31
             "user": null, 
32 32
             "date_created": "2011-05-20 10:51:54", 
@@ -43,8 +43,8 @@
43 43
             "product": 1, 
44 44
             "name": "Anon1", 
45 45
             "title": "another review", 
46
-            "url": "", 
47
-            "approved": true, 
46
+            "homepage": "", 
47
+            "status": 1, 
48 48
             "score": "5", 
49 49
             "user": null, 
50 50
             "date_created": "2011-05-20 10:10:46", 

+ 16
- 84
oscar/apps/product/reviews/tests.py ファイルの表示

@@ -1,5 +1,6 @@
1 1
 from random import randint
2 2
 from sys import maxint
3
+
3 4
 from django.test import TestCase, Client
4 5
 from django.core.exceptions import ValidationError
5 6
 from django.contrib.auth.models import User, AnonymousUser
@@ -7,8 +8,8 @@ from django.db import IntegrityError
7 8
 from django.core.urlresolvers import reverse
8 9
 from django.utils import unittest
9 10
 
10
-from oscar.apps.product.models import Item, ItemClass
11
-from oscar.apps.reviews.models import ProductReview, Vote
11
+from oscar.apps.product.reviews.models import ProductReview, Vote
12
+from oscar.test.helpers import create_product
12 13
 
13 14
 
14 15
 class ProductReviewTests(unittest.TestCase):
@@ -19,43 +20,33 @@ class ProductReviewTests(unittest.TestCase):
19 20
         username = str(randint(0, maxint))
20 21
         self.user = User.objects.create_user(username, '%s@users.com'%username, '%spass123'%username)
21 22
         self.anon_user = AnonymousUser()
22
-        self.item_class,_ = ItemClass.objects.get_or_create(name='Books')
23
-        self.item,_ = Item.objects.get_or_create(title='Django Book v2', item_class=self.item_class)
24
-        self.review,_ = ProductReview.objects.get_or_create(title='Django Book v2 Review',\
25
-                            product=self.item, user=self.user, score=3, approved=True)
26
-
23
+        self.item = create_product()
24
+        self.review = ProductReview.objects.create(product=self.item,
25
+                                                   title="Dummy review",
26
+                                                   score=3,
27
+                                                   user=self.user)
27 28
 
28
-class TopLevelProductReviewTests(ProductReviewTests):
29
-    u"""
30
-    Basic tests for ProductReview model
31
-    """
32 29
     def test_top_level_reviews_must_have_titles_and_scores(self):
33
-        self.assertRaises(ValidationError, ProductReview.objects.create, product=self.item,\
34
-                           user=self.user)
30
+        self.assertRaises(ValidationError, ProductReview.objects.create, product=self.item,
31
+                          user=self.user)
35 32
 
36 33
     def test_top_level_anonymous_reviews_must_have_names_and_emails(self):
37
-        self.assertRaises(ValidationError, ProductReview.objects.create, product=self.item,\
38
-                           user=None, title="Anonymous review", score=3)
34
+        self.assertRaises(ValidationError, ProductReview.objects.create, product=self.item,
35
+                          user=None, title="Anonymous review", score=3)
39 36
 
40 37
 
41 38
 class TopLevelProductReviewVoteTests(ProductReviewTests):
42
-    u"""
39
+    """
43 40
     Basic tests for Vote model
44 41
     """
45
-    def setUp(self):
46
-        super(TopLevelProductReviewVoteTests, self).setUp()
47
-
48
-    def test_top_level_vote_must_have_choice(self):
49
-        self.assertRaises(ValidationError, Vote.objects.create, review=self.review,\
50
-                           user=self.user)
51 42
 
52 43
     def test_try_vote_without_login(self):
53
-        self.assertRaises(ValueError, Vote.objects.create, review=self.review, choice =-1, user=self.anon_user)
44
+        self.assertRaises(ValueError, Vote.objects.create, review=self.review, delta=-1, user=self.anon_user)
54 45
 
55 46
     def test_try_vote_more_than_once(self):
56
-        vote1 = Vote.objects.create(review=self.review, user=self.user, choice=1)
47
+        vote1 = Vote.objects.create(review=self.review, user=self.user, delta=1)
57 48
         self.assertTrue(vote1)
58
-        self.assertRaises(IntegrityError, Vote.objects.create, review=self.review, choice=-1, user=self.user)
49
+        self.assertRaises(IntegrityError, Vote.objects.create, review=self.review, delta=-1, user=self.user)
59 50
 
60 51
 
61 52
 class SingleProductReviewViewTest(ProductReviewTests, TestCase):
@@ -87,63 +78,4 @@ class SingleProductReviewViewTest(ProductReviewTests, TestCase):
87 78
         response = self.client.get(url)
88 79
         self.assertContains(response, 'name')
89 80
         self.assertContains(response, 'email')
90
-        
91
-    def test_each_review_has_own_page(self):  # FIXME: broken for reverse
92
-        self.kwargs['review_id'] = self.review.id
93
-        url = reverse('oscar-product-review', kwargs = self.kwargs)
94
-        response = self.client.get(url)
95
-        self.assertEquals(200, response.status_code)
96
-
97
-
98
-class SingleProductReviewVoteViewTest(ProductReviewTests, TestCase):
99
-    u"""
100
-    Each product review can be voted up or down
101
-    """
102
-    def setUp(self):
103
-        self.client = Client()
104
-        super(SingleProductReviewVoteViewTest, self).setUp()   
105
-        self.kwargs = {'item_class_slug': self.item.get_item_class().slug, 
106
-                'item_slug': self.item.slug,
107
-                'item_id': self.item.id,
108
-                'review_id': self.review.id}
109
-        
110
-    def test_vote_up_product_review(self):
111
-        url = reverse('oscar-vote-review', kwargs=self.kwargs)
112
-        self.client.login(username='testuser', password='secret')
113
-        response = self.client.get(url)
114
-        self.assertEquals(200, response.status_code)
115
-    
116 81
 
117
-class ProductReviewVotingActionTests(TestCase):
118
-    u"""
119
-    Includes the behaviour tests after voting on a review
120
-    """
121
-    fixtures = ['sample-product', 'sample-reviews']    
122
-    
123
-    def setUp(self):
124
-        # get reviews
125
-        self.reviews = ProductReview.objects.all()       
126
-        # dummy voters
127
-        self.voters = 10        
128
-        self.users = []
129
-        for i in xrange(self.voters):
130
-            u = User.objects.create_user('user%d'%i, 'user%d@users.com'%i, 'userpass%d'%i)
131
-            self.users.append(u)        
132
-    
133
-    def test_upvote_can_boost_up_review(self):
134
-        # get a review
135
-        old_rank = 1
136
-        self.assertTrue(self.reviews)
137
-        self.review = self.reviews[old_rank]        
138
-        review_id = self.review.id
139
-        old_votes = self.review.total_votes
140
-        # vote up
141
-        for i in xrange(self.voters):
142
-            vote = Vote.objects.create(review=self.review, user=self.users[i], choice=1)
143
-            self.assertTrue(vote)
144
-        # test vote count
145
-        self.failUnlessEqual(self.review.total_votes, (self.voters + old_votes))
146
-        # test rank
147
-        reviews = ProductReview.top_voted.all()
148
-        new_rank = list(reviews.values_list('id', flat=True)).index(review_id)
149
-        self.failUnless(new_rank < old_rank)

読み込み中…
キャンセル
保存