Skip to content

Commit ce13de0

Browse files
authored
Merge pull request #850 from rhyspowell/pcc04
Pcc04
2 parents 4289f64 + 574a7dc commit ce13de0

File tree

5 files changed

+256
-0
lines changed

5 files changed

+256
-0
lines changed

04/rhys/.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
data/*
2+
!data/README.md
3+
config.py

04/rhys/requirements.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
oauthlib==3.2.2
2+
requests==2.28.1
3+
requests-oauthlib==1.3.1
4+
six==1.10.0
5+
tweepy==4.10.1
6+
urllib3

04/rhys/test_usertweets.py

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
from collections import namedtuple
2+
import csv
3+
import unittest
4+
from unittest.mock import patch
5+
6+
7+
from tweets import TWEETS # mock data
8+
from usertweets import UserTweets, NUM_TWEETS
9+
10+
HANDLE = 'pybites'
11+
MAX_ID = '819831370113351680'
12+
13+
Tweet = namedtuple('Tweet', ['id_str', 'created_at', 'text'])
14+
15+
16+
def read_csv(fname):
17+
with open(fname) as f:
18+
has_header = csv.Sniffer().has_header(f.readline())
19+
f.seek(0)
20+
r = csv.reader(f)
21+
if has_header:
22+
next(r, None) # skip the header
23+
return [Tweet(*tw) for tw in r] # list(r)
24+
25+
26+
class TestUserTweets(unittest.TestCase):
27+
def setUp(self):
28+
super().setUp()
29+
with patch('tweepy.API') as mock_timeline:
30+
mock_timeline.return_value = TWEETS
31+
self.user = UserTweets(HANDLE, max_id=MAX_ID)
32+
33+
def tearDown(self):
34+
self.user = None
35+
super().tearDown()
36+
37+
def test_num_tweets(self):
38+
self.assertEqual(len(self.user), NUM_TWEETS)
39+
40+
def test_first_tweet_returned_by_api(self):
41+
tw_n = 0
42+
self.assertEqual(self.user[tw_n].id_str, MAX_ID)
43+
self.assertEqual(self.user[tw_n].created_at, TWEETS[tw_n].created_at)
44+
self.assertEqual(self.user[tw_n].text, TWEETS[tw_n].text)
45+
46+
def test_read_back_from_cached_csv(self):
47+
csv_tweets = read_csv(self.user.output_file)
48+
self.assertEqual(len(csv_tweets), NUM_TWEETS)
49+
tw_n = 0 # first
50+
self.assertEqual(csv_tweets[tw_n].id_str, MAX_ID)
51+
self.assertEqual(csv_tweets[tw_n].created_at,
52+
str(TWEETS[tw_n].created_at))
53+
self.assertEqual(csv_tweets[tw_n].text, TWEETS[tw_n].text)
54+
tw_n = -1 # last
55+
self.assertEqual(csv_tweets[tw_n].text, TWEETS[tw_n].text)
56+
57+
58+
if __name__ == "__main__":
59+
unittest.main()

0 commit comments

Comments
 (0)