~widelands-dev/widelands-website/django_staticfiles

« back to all changes in this revision

Viewing changes to djangoratings/tests.py

Removed app djangoratings

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
import unittest
2
 
import random
3
 
 
4
 
from django.db import models
5
 
from django.contrib.auth.models import User
6
 
from django.contrib.contenttypes.models import ContentType
7
 
from django.conf import settings
8
 
 
9
 
from exceptions import *
10
 
from models import Vote, SimilarUser, IgnoredObject
11
 
from fields import AnonymousRatingField, RatingField
12
 
 
13
 
settings.RATINGS_VOTES_PER_IP = 1
14
 
 
15
 
 
16
 
class RatingTestModel(models.Model):
17
 
    rating = AnonymousRatingField(range=2, can_change_vote=True)
18
 
    rating2 = RatingField(range=2, can_change_vote=False)
19
 
 
20
 
    def __unicode__(self):
21
 
        return unicode(self.pk)
22
 
 
23
 
 
24
 
class RatingTestCase(unittest.TestCase):
25
 
 
26
 
    def testRatings(self):
27
 
        instance = RatingTestModel.objects.create()
28
 
 
29
 
        # Test adding votes
30
 
        instance.rating.add(score=1, user=None, ip_address='127.0.0.1')
31
 
        self.assertEquals(instance.rating.score, 1)
32
 
        self.assertEquals(instance.rating.votes, 1)
33
 
 
34
 
        # Test adding votes
35
 
        instance.rating.add(score=2, user=None, ip_address='127.0.0.2')
36
 
        self.assertEquals(instance.rating.score, 3)
37
 
        self.assertEquals(instance.rating.votes, 2)
38
 
 
39
 
        # Test changing of votes
40
 
        instance.rating.add(score=2, user=None, ip_address='127.0.0.1')
41
 
        self.assertEquals(instance.rating.score, 4)
42
 
        self.assertEquals(instance.rating.votes, 2)
43
 
 
44
 
        # Test users
45
 
        user = User.objects.create(username=str(random.randint(0, 100000000)))
46
 
        user2 = User.objects.create(username=str(random.randint(0, 100000000)))
47
 
 
48
 
        instance.rating.add(score=2, user=user, ip_address='127.0.0.3')
49
 
        self.assertEquals(instance.rating.score, 6)
50
 
        self.assertEquals(instance.rating.votes, 3)
51
 
 
52
 
        instance.rating2.add(score=2, user=user, ip_address='127.0.0.3')
53
 
        self.assertEquals(instance.rating2.score, 2)
54
 
        self.assertEquals(instance.rating2.votes, 1)
55
 
 
56
 
        self.assertRaises(IPLimitReached, instance.rating2.add,
57
 
                          score=2, user=user2, ip_address='127.0.0.3')
58
 
 
59
 
        # Test deletion hooks
60
 
        Vote.objects.filter(ip_address='127.0.0.3').delete()
61
 
 
62
 
        instance = RatingTestModel.objects.get(pk=instance.pk)
63
 
 
64
 
        self.assertEquals(instance.rating.score, 4)
65
 
        self.assertEquals(instance.rating.votes, 2)
66
 
        self.assertEquals(instance.rating2.score, 0)
67
 
        self.assertEquals(instance.rating2.votes, 0)
68
 
 
69
 
 
70
 
class RecommendationsTestCase(unittest.TestCase):
71
 
 
72
 
    def setUp(self):
73
 
        self.instance = RatingTestModel.objects.create()
74
 
        self.instance2 = RatingTestModel.objects.create()
75
 
        self.instance3 = RatingTestModel.objects.create()
76
 
        self.instance4 = RatingTestModel.objects.create()
77
 
        self.instance5 = RatingTestModel.objects.create()
78
 
 
79
 
        # Test users
80
 
        self.user = User.objects.create(
81
 
            username=str(random.randint(0, 100000000)))
82
 
        self.user2 = User.objects.create(
83
 
            username=str(random.randint(0, 100000000)))
84
 
 
85
 
    def testExclusions(self):
86
 
        Vote.objects.all().delete()
87
 
 
88
 
        self.instance.rating.add(
89
 
            score=1, user=self.user, ip_address='127.0.0.1')
90
 
        self.instance2.rating.add(
91
 
            score=1, user=self.user, ip_address='127.0.0.1')
92
 
        self.instance3.rating.add(
93
 
            score=1, user=self.user, ip_address='127.0.0.1')
94
 
        self.instance4.rating.add(
95
 
            score=1, user=self.user, ip_address='127.0.0.1')
96
 
        self.instance5.rating.add(
97
 
            score=1, user=self.user, ip_address='127.0.0.1')
98
 
        self.instance.rating.add(
99
 
            score=1, user=self.user2, ip_address='127.0.0.2')
100
 
 
101
 
        # we should only need to call this once
102
 
        SimilarUser.objects.update_recommendations()
103
 
 
104
 
        self.assertEquals(SimilarUser.objects.count(), 2)
105
 
 
106
 
        recs = list(SimilarUser.objects.get_recommendations(
107
 
            self.user2, RatingTestModel))
108
 
        self.assertEquals(len(recs), 4)
109
 
 
110
 
        ct = ContentType.objects.get_for_model(RatingTestModel)
111
 
 
112
 
        IgnoredObject.objects.create(
113
 
            user=self.user2, content_type=ct, object_id=self.instance2.pk)
114
 
 
115
 
        recs = list(SimilarUser.objects.get_recommendations(
116
 
            self.user2, RatingTestModel))
117
 
        self.assertEquals(len(recs), 3)
118
 
 
119
 
        IgnoredObject.objects.create(
120
 
            user=self.user2, content_type=ct, object_id=self.instance3.pk)
121
 
        IgnoredObject.objects.create(
122
 
            user=self.user2, content_type=ct, object_id=self.instance4.pk)
123
 
 
124
 
        recs = list(SimilarUser.objects.get_recommendations(
125
 
            self.user2, RatingTestModel))
126
 
        self.assertEquals(len(recs), 1)
127
 
        self.assertEquals(recs, [self.instance5])
128
 
 
129
 
        self.instance5.rating.add(
130
 
            score=1, user=self.user2, ip_address='127.0.0.2')
131
 
        recs = list(SimilarUser.objects.get_recommendations(
132
 
            self.user2, RatingTestModel))
133
 
        self.assertEquals(len(recs), 0)
134
 
 
135
 
    def testSimilarUsers(self):
136
 
        Vote.objects.all().delete()
137
 
 
138
 
        self.instance.rating.add(
139
 
            score=1, user=self.user, ip_address='127.0.0.1')
140
 
        self.instance2.rating.add(
141
 
            score=1, user=self.user, ip_address='127.0.0.1')
142
 
        self.instance3.rating.add(
143
 
            score=1, user=self.user, ip_address='127.0.0.1')
144
 
        self.instance4.rating.add(
145
 
            score=1, user=self.user, ip_address='127.0.0.1')
146
 
        self.instance5.rating.add(
147
 
            score=1, user=self.user, ip_address='127.0.0.1')
148
 
        self.instance.rating.add(
149
 
            score=1, user=self.user2, ip_address='127.0.0.2')
150
 
        self.instance2.rating.add(
151
 
            score=1, user=self.user2, ip_address='127.0.0.2')
152
 
        self.instance3.rating.add(
153
 
            score=1, user=self.user2, ip_address='127.0.0.2')
154
 
 
155
 
        SimilarUser.objects.update_recommendations()
156
 
 
157
 
        self.assertEquals(SimilarUser.objects.count(), 2)
158
 
 
159
 
        recs = list(SimilarUser.objects.get_recommendations(
160
 
            self.user2, RatingTestModel))
161
 
        self.assertEquals(len(recs), 2)
162
 
 
163
 
        self.instance4.rating.add(
164
 
            score=1, user=self.user2, ip_address='127.0.0.2')
165
 
 
166
 
        SimilarUser.objects.update_recommendations()
167
 
 
168
 
        self.assertEquals(SimilarUser.objects.count(), 2)
169
 
 
170
 
        recs = list(SimilarUser.objects.get_recommendations(
171
 
            self.user2, RatingTestModel))
172
 
        self.assertEquals(len(recs), 1)
173
 
        self.assertEquals(recs, [self.instance5])
174
 
 
175
 
        self.instance5.rating.add(
176
 
            score=1, user=self.user2, ip_address='127.0.0.2')
177
 
 
178
 
        SimilarUser.objects.update_recommendations()
179
 
 
180
 
        self.assertEquals(SimilarUser.objects.count(), 2)
181
 
 
182
 
        recs = list(SimilarUser.objects.get_recommendations(
183
 
            self.user2, RatingTestModel))
184
 
        self.assertEquals(len(recs), 0)