Completed
Pull Request — master (#345)
by
unknown
29s
created

DataTestCase.setUp()   A

Complexity

Conditions 2

Size

Total Lines 58

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
c 1
b 0
f 0
dl 0
loc 58
rs 9.639

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
from json import loads
2
from datetime import datetime
3
from inspect import getargspec
4
5
from django.test import TestCase
6
from django.template import Template, Context
7
from django.utils.six import text_type
8
from django.utils.timesince import timesince
9
from django.contrib.sites.models import Site
10
from django.contrib.auth.models import Group
11
from django.contrib.contenttypes.models import ContentType
12
from django.core.urlresolvers import reverse
13
14
from actstream.models import Action, Follow
15
from actstream.registry import register, unregister
16
from actstream.compat import get_user_model, get_model
17
from actstream.actions import follow
18
from actstream.signals import action
19
20
21
def render(src, **ctx):
22
    return Template('{% load activity_tags %}' + src).render(Context(ctx))
23
24
25
class LTE(int):
26
    def __new__(cls, n):
27
        obj = super(LTE, cls).__new__(cls, n)
28
        obj.n = n
29
        return obj
30
31
    def __eq__(self, other):
32
        return other <= self.n
33
34
    def __repr__(self):
35
        return "<= %s" % self.n
36
37
38
class ActivityBaseTestCase(TestCase):
39
    actstream_models = ()
40
    maxDiff = None
41
42
    def setUp(self):
43
        self.User = get_user_model()
44
        self.user_ct = ContentType.objects.get_for_model(self.User)
45
        register(self.User)
46
        for model in self.actstream_models:
47
            register(model)
48
49
    def assertSetEqual(self, l1, l2, msg=None, domap=True):
50
        if domap:
51
            l1 = map(text_type, l1)
52
        self.assertSequenceEqual(set(l1), set(l2), msg)
53
54
    def assertAllIn(self, bits, string):
55
        for bit in bits:
56
            self.assertIn(bit, string)
57
58
    def assertJSON(self, string):
59
        return loads(string)
60
61
    def tearDown(self):
62
        for model in self.actstream_models:
63
            model = get_model(*model.split('.'))
64
            unregister(model)
65
            model.objects.all().delete()
66
        Action.objects.all().delete()
67
        Follow.objects.all().delete()
68
        self.User.objects.all().delete()
69
70
    def capture(self, viewname, *args):
71
        response = self.client.get(reverse(viewname, args=args))
72
        content = response.content.decode()
73
        if response['Content-Type'] == 'application/json':
74
            return loads(content)
75
        return content
76
77
78
class DataTestCase(ActivityBaseTestCase):
79
    actstream_models = ('auth.Group', 'sites.Site')
80
81
    def setUp(self):
82
        self.testdate = datetime(2000, 1, 1)
83
        self.timesince = timesince(self.testdate).encode('utf8').replace(
84
            b'\xc2\xa0', b' ').decode()
85
        self.group_ct = ContentType.objects.get_for_model(Group)
86
        super(DataTestCase, self).setUp()
87
        self.group = Group.objects.create(name='CoolGroup')
88
        self.another_group = Group.objects.create(name='NiceGroup')
89
        if 'email' in getargspec(self.User.objects.create_superuser).args:
90
            self.user1 = self.User.objects.create_superuser('admin', '[email protected]', 'admin')
91
            self.user2 = self.User.objects.create_user('Two', '[email protected]')
92
            self.user3 = self.User.objects.create_user('Three', '[email protected]')
93
            self.user4 = self.User.objects.create_user('Four', '[email protected]')
94
        else:
95
            self.user1 = self.User.objects.create_superuser('admin', 'admin')
96
            self.user2 = self.User.objects.create_user('Two')
97
            self.user3 = self.User.objects.create_user('Three')
98
            self.user4 = self.User.objects.create_user('Four')
99
        # User1 joins group
100
        self.user1.groups.add(self.group)
101
        self.join_action = action.send(self.user1, verb='joined',
102
                                       target=self.group,
103
                                       timestamp=self.testdate)[0][1]
104
105
        # User1 follows User2
106
        follow(self.user1, self.user2, timestamp=self.testdate)
107
108
        # User2 joins group
109
        self.user2.groups.add(self.group)
110
        action.send(self.user2, verb='joined', target=self.group,
111
                    timestamp=self.testdate)
112
113
        # User2 follows group
114
        follow(self.user2, self.group, timestamp=self.testdate)
115
116
        # User1 comments on group
117
        # Use a site object here and predict the "__unicode__ method output"
118
        action.send(self.user1, verb='commented on', target=self.group,
119
                    timestamp=self.testdate)
120
121
        self.comment = Site.objects.create(
122
            domain="admin: Sweet Group!...")
123
124
        # Group responds to comment
125
        action.send(self.group, verb='responded to', target=self.comment,
126
                    timestamp=self.testdate)
127
128
        # User 3 did something but doesn't following someone
129
        action.send(self.user3, verb='liked actstream', timestamp=self.testdate)
130
131
        # User4 likes group
132
        follow(self.user4, self.another_group, timestamp=self.testdate, flag='liking')
133
        # User4 watches group
134
        follow(self.user4, self.another_group, timestamp=self.testdate, flag='watching')
135
        # User4 likes User1
136
        follow(self.user4, self.user1, timestamp=self.testdate, flag='liking')
137
        # User4 blacklist user3
138
        follow(self.user4, self.user3, timestamp=self.testdate, flag='blacklisting')
139