-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtests.py
More file actions
115 lines (106 loc) · 4.11 KB
/
tests.py
File metadata and controls
115 lines (106 loc) · 4.11 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
#!flask/bin/python
import os
import unittest
from config import basedir
from app import app, db
from app.models import User, Post
from datetime import datetime, timedelta
class TestCase(unittest.TestCase):
def setUp(self): # runs before each test
app.config['TESTING'] = True
app.config['WTF_CSRF_ENABLED'] = False
app.config['SQLALCHEMY_DATABSE_URI'] = 'sqlite:///' + os.path.join(basedir, 'test.db')
self.app = app.test_client()
db.create_all()
def tearDown(self): #runs after each test
db.session.remove()
db.drop_all()
def test_avatar(self):
u = User(nickname='john', email='john@example.com')
avatar = u.avatar(128)
expected = 'http://gravatar.com/avatar/d4c74594d841139328695756648b6bd6'
assert avatar[0:len(expected)] == expected
def test_make_unique_nickname(self):
u = User(nickname='john', email='john@example.com')
db.session.add(u)
db.session.commit()
nickname = User.make_unique_nickname('john')
assert nickname != 'john'
u = User(nickname=nickname, email='susan@example.com')
db.session.add(u)
db.session.commit()
nickname2 = User.make_unique_nickname('john')
assert nickname2 != 'john'
assert nickname2 != nickname
def test_follow(self):
u1 = User(nickname='john', email='john@example.com')
u2 = User(nickname='susan', email='susan@example.com')
db.session.add(u1)
db.session.add(u2)
db.session.commit()
assert u1.unfollow(u2) is None # follow and unfollow methods return None if "unsuccessful"
u = u1.follow(u2) # follow and unfollow methods return a "User" to be sumbitted to db when successful
db.session.add(u)
db.session.commit()
assert u1.follow(u2) is None # because u1 is already following u2
assert u1.is_following(u2)
assert u1.followed.count() == 1
assert u1.followed.first().nickname == 'susan'
assert u2.followers.count() == 1
assert u2.followers.first().nickname == 'john'
u = u1.unfollow(u2)
assert u is not None
db.session.add(u)
db.session.commit()
assert not u1.is_following(u2)
assert u1.followed.count() == 0
assert u2.followers.count() == 0
def test_follow_posts(self):
#make four users
u1 = User(nickname='john', email='john@example.com')
u2 = User(nickname='susan', email='susan@example.com')
u3 = User(nickname='mary', email='mary@example.com')
u4 = User(nickname='david', email='david@example.com')
db.session.add(u1)
db.session.add(u2)
db.session.add(u3)
db.session.add(u4)
#make four posts
uutcnow = datetime.utcnow()
p1 = Post(body='post from john', author=u1, timestamp=utcnow + timedelta(seconds=1))
p2 = Post(body='post from susan', author=u1, timestamp=utcnow + timedelta(seconds=2))
p3 = Post(body='post from mary', author=u1, timestamp=utcnow + timedelta(seconds=3))
p4 = Post(body='post from david', author=u1, timestamp=utcnow + timedelta(seconds=4))
db.session.add(p1)
db.session.add(p2)
db.session.add(p3)
db.session.add(p4)
#setup the followers
u1.follow(u1)
u1.follow(u2)
u1.follow(u4)
u2.follow(u2)
u2.follow(u3)
u3.follow(u3)
u3.follow(u4)
u4.follow(u4)
db.session.add(u1)
db.session.add(u2)
db.session.add(u3)
db.session.add(u4)
db.session.commit()
#check the followed posts of each other
f1 = u1.followed_posts.all()
f2 = u2.followed_posts.all()
f3 = u3.followed_posts.all()
f4 = u4.followed_posts.all()
assert len(f1) == 3
assert len(f2) == 2
assert len(f3) == 3
assert len(f4) == 1
assert f1 == [p4, p2, p1]
assert f2 == [p3, p2]
assert f3 == [p4, p3]
assert f4 == [p4]
if __name__ == '__main__':
unittest.main()