Skip to content

Commit 58f9b71

Browse files
authored
Merge pull request #148 from TotallyNotRobots/horoscope-cov
Add missing coverage for horoscope.py
2 parents d2f38ea + e409dcb commit 58f9b71

File tree

1 file changed

+29
-27
lines changed

1 file changed

+29
-27
lines changed

tests/plugin_tests/test_horoscope.py

Lines changed: 29 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@
33
import pytest
44
import requests
55

6+
from plugins import horoscope
7+
68
URL = (
79
"http://www.horoscope.com/us/horoscopes/general/"
810
"horoscope-general-daily-today.aspx?sign={sign}"
911
)
1012

1113

1214
def setup_db(mock_db):
13-
from plugins import horoscope
14-
1515
horoscope.table.create(mock_db.engine, checkfirst=True)
1616
sess = mock_db.session()
1717
sess.execute(horoscope.table.delete())
@@ -20,13 +20,11 @@ def setup_db(mock_db):
2020

2121

2222
def test_horoscope(mock_requests, mock_db):
23-
from plugins import horoscope
24-
2523
sess = setup_db(mock_db)
2624
mock_requests.add(
27-
'GET',
25+
"GET",
2826
URL.format(sign=1),
29-
headers={'User-Agent': "Some user agent"},
27+
headers={"User-Agent": "Some user agent"},
3028
body="""
3129
<div class="main-horoscope">
3230
<p>Some horoscope text</p>
@@ -39,40 +37,36 @@ def test_horoscope(mock_requests, mock_db):
3937
bot = MagicMock()
4038
bot.user_agent = "Some user agent"
4139

42-
response = horoscope.horoscope("aries", sess, bot, 'some_user', event)
40+
response = horoscope.horoscope("aries", sess, bot, "some_user", event)
4341

4442
assert response is None
4543

4644
event.message.assert_called_once_with("\x02aries\x02 Some horoscope text")
4745

48-
assert mock_db.get_data(horoscope.table) == [('some_user', 'aries')]
46+
assert mock_db.get_data(horoscope.table) == [("some_user", "aries")]
4947

5048

5149
def test_invalid_syntax(mock_requests, mock_db):
52-
from plugins import horoscope
53-
5450
sess = setup_db(mock_db)
5551

5652
event = MagicMock()
5753
bot = MagicMock()
5854
bot.user_agent = "Some user agent"
5955

60-
response = horoscope.horoscope('', sess, bot, 'some_user', event)
56+
response = horoscope.horoscope("", sess, bot, "some_user", event)
6157

6258
assert response is None
6359

6460
assert event.notice_doc.call_count == 1
6561

6662

6763
def test_database_read(mock_requests, mock_db):
68-
from plugins import horoscope
69-
7064
sess = setup_db(mock_db)
7165

7266
mock_requests.add(
73-
'GET',
67+
"GET",
7468
URL.format(sign=4),
75-
headers={'User-Agent': "Some user agent"},
69+
headers={"User-Agent": "Some user agent"},
7670
body="""
7771
<div class="main-horoscope">
7872
<p>Some horoscope text</p>
@@ -81,28 +75,26 @@ def test_database_read(mock_requests, mock_db):
8175
match_querystring=True,
8276
)
8377

84-
mock_db.add_row(horoscope.table, nick='some_user', sign='cancer')
78+
mock_db.add_row(horoscope.table, nick="some_user", sign="cancer")
8579

8680
event = MagicMock()
8781
bot = MagicMock()
8882
bot.user_agent = "Some user agent"
8983

90-
response = horoscope.horoscope('', sess, bot, 'some_user', event)
84+
response = horoscope.horoscope("", sess, bot, "some_user", event)
9185

9286
assert response is None
9387

9488
event.message.assert_called_once_with("\x02cancer\x02 Some horoscope text")
9589

9690

9791
def test_parse_fail(mock_requests, mock_db):
98-
from plugins import horoscope
99-
10092
sess = setup_db(mock_db)
10193

10294
mock_requests.add(
103-
'GET',
95+
"GET",
10496
URL.format(sign=4),
105-
headers={'User-Agent': "Some user agent"},
97+
headers={"User-Agent": "Some user agent"},
10698
body="""
10799
<div class="main-horoscope">
108100
</div>
@@ -115,25 +107,35 @@ def test_parse_fail(mock_requests, mock_db):
115107
bot.user_agent = "Some user agent"
116108

117109
with pytest.raises(horoscope.HoroscopeParseError):
118-
horoscope.horoscope('cancer', sess, bot, 'some_user', event)
110+
horoscope.horoscope("cancer", sess, bot, "some_user", event)
119111

120112
event.reply.assert_called_once_with("Unable to parse horoscope posting")
121113

122114

123115
def test_page_error(mock_requests, mock_db):
124-
from plugins import horoscope
125-
126116
sess = setup_db(mock_db)
127117

128118
event = MagicMock()
129119
bot = MagicMock()
130120
bot.user_agent = "Some user agent"
131121

132-
mock_requests.add('GET', URL.format(sign=1), status=404)
122+
mock_requests.add("GET", URL.format(sign=1), status=404)
133123

134124
with pytest.raises(requests.RequestException):
135-
horoscope.horoscope('aries', sess, bot, 'some_user', event)
125+
horoscope.horoscope("aries", sess, bot, "some_user", event)
136126

137127
event.reply.assert_called_once_with(
138-
"Could not get horoscope: 404 Client Error: Not Found for url: {}. URL Error".format(URL.format(sign=1))
128+
"Could not get horoscope: 404 Client Error: Not Found for url: {}. URL Error".format(
129+
URL.format(sign=1)
130+
)
139131
)
132+
133+
134+
def test_bad_sign(mock_requests):
135+
db = MagicMock()
136+
event = MagicMock()
137+
sign = "some_sign"
138+
res, err = horoscope.parse_or_lookup(sign, db, "foobar", event)
139+
assert res is None
140+
assert err is None
141+
event.notice.assert_called_with("Unknown sign: {}".format(sign))

0 commit comments

Comments
 (0)