|
1
|
|
|
from django.conf import settings |
|
2
|
|
|
from django.utils.feedgenerator import rfc3339_date |
|
3
|
|
|
|
|
4
|
|
|
from actstream.tests import base |
|
5
|
|
|
|
|
6
|
|
|
|
|
7
|
|
|
class FeedsTestCase(base.DataTestCase): |
|
8
|
|
|
urls = 'actstream.urls' |
|
9
|
|
|
|
|
10
|
|
|
@property |
|
11
|
|
|
def rss_base(self): |
|
12
|
|
|
return ['<?xml version="1.0" encoding="utf-8"?>\n', '<rss ', |
|
13
|
|
|
'xmlns:atom="http://www.w3.org/2005/Atom"', 'version="2.0"', |
|
14
|
|
|
'<language>%s' % settings.LANGUAGE_CODE] |
|
15
|
|
|
|
|
16
|
|
|
@property |
|
17
|
|
|
def atom_base(self): |
|
18
|
|
|
return ['<?xml version="1.0" encoding="utf-8"?>\n', |
|
19
|
|
|
'xmlns="http://www.w3.org/2005/Atom"', |
|
20
|
|
|
'xml:lang="%s"' % settings.LANGUAGE_CODE, |
|
21
|
|
|
'<uri>http://example.com/detail/', |
|
22
|
|
|
'<id>tag:example.com,2000-01-01:/detail/'] |
|
23
|
|
|
|
|
24
|
|
|
def test_feed(self): |
|
25
|
|
|
self.client.login(username='admin', password='admin') |
|
26
|
|
|
expected = [ |
|
27
|
|
|
'Activity feed for your followed actors', |
|
28
|
|
|
'Public activities of actors you follow', |
|
29
|
|
|
'Two started following CoolGroup %s ago' % self.timesince, |
|
30
|
|
|
'Two joined CoolGroup %s ago' % self.timesince, |
|
31
|
|
|
] |
|
32
|
|
|
rss = self.capture('actstream_feed') |
|
33
|
|
|
self.assertAllIn(self.rss_base + expected, rss) |
|
34
|
|
|
atom = self.capture('actstream_feed_atom') |
|
35
|
|
|
self.assertAllIn(self.atom_base + expected, atom) |
|
36
|
|
|
json = self.capture('actstream_feed_json') |
|
37
|
|
|
|
|
38
|
|
|
def test_model_feed(self): |
|
39
|
|
|
expected = [ |
|
40
|
|
|
'Activity feed from %s' % self.User.__name__, |
|
41
|
|
|
'Public activities of %s' % self.User.__name__, |
|
42
|
|
|
'admin commented on CoolGroup %s ago' % self.timesince, |
|
43
|
|
|
'Two started following CoolGroup %s ago' % self.timesince, |
|
44
|
|
|
'Two joined CoolGroup %s ago' % self.timesince, |
|
45
|
|
|
'admin started following Two %s ago' % self.timesince, |
|
46
|
|
|
'admin joined CoolGroup %s ago' % self.timesince, |
|
47
|
|
|
] |
|
48
|
|
|
rss = self.capture('actstream_model_feed', self.user_ct.pk) |
|
49
|
|
|
self.assertAllIn(self.rss_base + expected, rss) |
|
50
|
|
|
atom = self.capture('actstream_model_feed_atom', self.user_ct.pk) |
|
51
|
|
|
self.assertAllIn(self.atom_base + expected, atom) |
|
52
|
|
|
json = self.capture('actstream_model_feed_json', self.user_ct.pk) |
|
53
|
|
|
|
|
54
|
|
|
def test_object_feed(self): |
|
55
|
|
|
expected = [ |
|
56
|
|
|
'Activity for Two', |
|
57
|
|
|
'admin started following Two %s ago' % self.timesince, |
|
58
|
|
|
] |
|
59
|
|
|
rss = self.capture('actstream_object_feed', |
|
60
|
|
|
self.user_ct.pk, self.user2.pk) |
|
61
|
|
|
self.assertAllIn(self.rss_base + expected, rss) |
|
62
|
|
|
atom = self.capture('actstream_object_feed_atom', |
|
63
|
|
|
self.user_ct.pk, self.user2.pk) |
|
64
|
|
|
self.assertAllIn(self.atom_base + expected, atom) |
|
65
|
|
|
json = self.capture( |
|
66
|
|
|
'actstream_object_feed_json', |
|
67
|
|
|
self.user_ct.pk, self.user2.pk |
|
68
|
|
|
) |
|
69
|
|
|
|