Skip to content

Commit 9dd4384

Browse files
committed
Add unit test for like feature
1 parent 1ce2f5d commit 9dd4384

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

tests/test_like.py

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

0 commit comments

Comments
 (0)