Skip to content

Commit 617be02

Browse files
committed
Add unit test for like feature
1 parent 1ce2f5d commit 617be02

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

tests/test_like.py

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# coding: utf-8
2+
from __future__ import absolute_import
3+
4+
from flask import url_for
5+
from flask_login import current_user
6+
import pytest
7+
8+
from firefly.models.user import User
9+
from firefly.models.topic import Category, Post
10+
11+
12+
@pytest.mark.usefixtures('client_class')
13+
class TestLike:
14+
15+
users = []
16+
17+
def setup(self):
18+
c = Category.objects.create(
19+
name='python', description='描述', _slug='python-slug'
20+
)
21+
Post.objects.create(
22+
title='标题test', content='内容test', category=c
23+
)
24+
25+
self.users = []
26+
for x in range(3):
27+
self.users.append(
28+
User.create_user(
29+
username='user' + str(x),
30+
password='password123',
31+
email='user' + str(x) + '@firefly.dev'
32+
)
33+
)
34+
35+
def login(self, email):
36+
form = {
37+
'email': email,
38+
'password': 'password123'
39+
}
40+
self.client.post(
41+
url_for('home.login'), data=form,
42+
follow_redirects=True
43+
)
44+
assert current_user.is_authenticated()
45+
46+
def test_like(self):
47+
post = Post.objects.first()
48+
assert len(post.likes) == 0
49+
50+
for user in self.users:
51+
self.login(user.email)
52+
url = url_for('api.like', id=post.id)
53+
rv = self.client.put(url)
54+
assert rv.status_code == 201
55+
assert len(post.likes) == len(self.users)
56+
57+
rv = self.client.delete(url)
58+
assert rv.status_code == 201
59+
assert len(post.likes) == 2

0 commit comments

Comments
 (0)