forked from douban/code
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_comment.py
More file actions
143 lines (119 loc) · 5.09 KB
/
test_comment.py
File metadata and controls
143 lines (119 loc) · 5.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
# -*- coding: utf-8 -*-
from tests.base import TestCase
from vilya.models import comment
T_PROJ_ID = 123
T_PROJ_ID_2 = 135
T_REF = '2a200e45b0e223d13477e'
T_REF_2 = '2a200e45b0e223d13aaaa'
T_AUTHOR = 'user1'
T_CONTENT = 'test comment content'
T_CONTENT2 = 'test comment content 2'
class TestCommentFuncts(TestCase):
def test_add_comment(self):
cid1 = comment.add(T_PROJ_ID, T_REF, T_AUTHOR, T_CONTENT)
assert cid1
cid2 = comment.add(T_PROJ_ID, T_REF, T_AUTHOR, T_CONTENT)
assert cid2
assert cid1 != cid2
def test_get_comment(self):
cid = comment.add(T_PROJ_ID, T_REF, T_AUTHOR, T_CONTENT)
com = comment.get(cid)
assert com[1] == T_PROJ_ID
assert com[2] == T_REF
def test_chinese_comment(self):
T_CONTENT_ZH = u'test is 牛B'
cid = comment.add(T_PROJ_ID, T_REF, T_AUTHOR, T_CONTENT_ZH)
com = comment.get(cid)
assert com[4] == T_CONTENT_ZH
def test_get_unexisting_comment(self):
cid = comment.add(T_PROJ_ID, T_REF, T_AUTHOR, T_CONTENT)
com = comment.get(cid + 1)
assert com is None
def test_delete_comment(self):
cid = comment.add(T_PROJ_ID, T_REF, T_AUTHOR, T_CONTENT)
assert comment.get(cid)
ok = comment.delete(cid)
assert ok
assert not comment.get(cid)
assert not comment.delete(cid), "Cannot delete twice same comment"
def test_latest_comments(self):
cid1 = comment.add(T_PROJ_ID, T_REF, T_AUTHOR, T_CONTENT)
cid2 = comment.add(T_PROJ_ID, T_REF, T_AUTHOR, T_CONTENT2)
latest = comment.latest()
assert latest == [cid1, cid2]
def test_gets_by_project_id(self):
cid1 = comment.add(T_PROJ_ID, T_REF, T_AUTHOR, T_CONTENT)
comment.add(T_PROJ_ID_2, T_REF, T_AUTHOR, T_CONTENT)
cid2 = comment.add(T_PROJ_ID, T_REF, T_AUTHOR, T_CONTENT2)
cmnts = comment.gets_by_project(T_PROJ_ID)
assert cmnts == [cid1, cid2]
def test_gets_by_ref(self):
cid1 = comment.add(T_PROJ_ID, T_REF, T_AUTHOR, T_CONTENT)
comment.add(T_PROJ_ID, T_REF_2, T_AUTHOR, T_CONTENT)
cid2 = comment.add(T_PROJ_ID, T_REF, T_AUTHOR, T_CONTENT2)
cmnts = comment.gets_by_ref(T_REF)
assert cmnts == [cid1, cid2]
def test_gets_by_proj_and_ref(self):
cid1 = comment.add(T_PROJ_ID, T_REF, T_AUTHOR, T_CONTENT)
comment.add(T_PROJ_ID, T_REF_2, T_AUTHOR, T_CONTENT)
cid2 = comment.add(T_PROJ_ID, T_REF, T_AUTHOR, T_CONTENT2)
cmnts = comment.gets_by_proj_and_ref(T_PROJ_ID, T_REF)
assert cmnts == [cid1, cid2]
def test_gets_with_order(self):
all_cmnts = [comment.add(T_PROJ_ID, T_REF, T_AUTHOR, T_CONTENT)
for i in range(30)]
assert len(all_cmnts) == 30
assert comment.gets_by_ref(
T_REF, order='desc') == list(reversed(all_cmnts))
assert comment.gets_by_ref(T_REF, start=10) == all_cmnts[10:]
assert comment.gets_by_ref(
T_REF, start=10, limit=5) == all_cmnts[10:15]
def test_gets_with_proj_with_order(self):
all_cmnts = [comment.add(T_PROJ_ID, T_REF, T_AUTHOR, T_CONTENT)
for i in range(30)]
assert len(all_cmnts) == 30
assert comment.gets_by_proj_and_ref(
T_PROJ_ID, T_REF, order='desc') == list(reversed(all_cmnts))
assert comment.gets_by_proj_and_ref(T_PROJ_ID, T_REF, start=10) == all_cmnts[10:] # noqa
assert comment.gets_by_proj_and_ref(
T_PROJ_ID, T_REF, start=10, limit=5) == all_cmnts[10:15]
def test_modify_comment(self):
cid = comment.add(T_PROJ_ID, T_REF, T_AUTHOR, T_CONTENT)
comment.update(cid, {'content': 'new content'})
assert comment.get(cid)[4] == 'new content'
cC = comment.Comment
class TestCommentORM(TestCase):
def _add(self, project_id=T_PROJ_ID, ref=T_REF,
author=T_AUTHOR, content=T_CONTENT):
return cC.get(comment.add(project_id, ref, author, content))
def test_add(self):
c = self._add(T_PROJ_ID, T_REF, T_AUTHOR, T_CONTENT)
assert c.project_id == T_PROJ_ID
assert c.ref == T_REF
assert c.author == T_AUTHOR
def test_get(self):
c1 = self._add()
c2 = cC.get(c1.comment_id)
assert c1.comment_id == c2.comment_id
assert c1 == c2
def test_delete(self):
c = self._add()
assert cC.get(c.comment_id)
ok = cC.delete(c.comment_id)
assert ok
assert not cC.get(c.comment_id)
def test_update(self):
c = self._add(content='content1')
assert c.content == 'content1'
assert cC.get(c.comment_id).content == 'content1'
c.update('content2')
assert c.content == 'content2'
assert cC.get(c.comment_id).content == 'content2'
def test_gets_by_project_id(self):
c1 = self._add(T_PROJ_ID)
self._add(T_PROJ_ID_2)
c2 = self._add(T_PROJ_ID)
clist = cC.gets_by_project(T_PROJ_ID)
assert clist == [c1, c2]
clist = cC.gets_by_project(T_PROJ_ID, order='desc')
assert clist == [c2, c1], "%s == %s" % (clist, [c2, c1])