Skip to content

Commit 6a4b5cf

Browse files
authored
Merge pull request #414 from TotallyNotRobots/add-notes-tests
add-notes-tests
2 parents 5f3cdf5 + 384ab2c commit 6a4b5cf

File tree

2 files changed

+347
-3
lines changed

2 files changed

+347
-3
lines changed

plugins/notes.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,9 @@ def format_note(data):
117117

118118

119119
@hook.command("note", "notes", "todo")
120-
def note(text, conn, nick, db, notice):
120+
def note(text, conn, nick, db, event):
121121
"""<add|list|get|del|clear> args - manipulates your list of notes"""
122+
notice = event.notice
122123
args, cmd = parse_args(text)
123124

124125
if cmd in ["add", "new"]:
@@ -203,7 +204,7 @@ def cmd_show(args, conn, db, nick, notice):
203204
note_id = args[0]
204205
n = read_note(db, conn.name, nick, note_id)
205206
if not n:
206-
notice("{} is not a valid note ID.".format(nick))
207+
notice("{} is not a valid note ID.".format(note_id))
207208
return None
208209

209210
# show the note
@@ -218,7 +219,7 @@ def cmd_get(args, conn, db, nick, notice):
218219
note_id = args[0]
219220
n = read_note(db, conn.name, nick, note_id)
220221
if not n:
221-
notice("{} is not a valid note ID.".format(nick))
222+
notice("{} is not a valid note ID.".format(note_id))
222223
return None
223224

224225
# show the note

tests/plugin_tests/notes_test.py

Lines changed: 343 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,343 @@
1+
import datetime
2+
from unittest.mock import MagicMock, call
3+
4+
from plugins import notes
5+
6+
7+
def test_note_add(mock_db, freeze_time):
8+
db = mock_db.session()
9+
notes.table.create(bind=mock_db.engine)
10+
event = MagicMock()
11+
event.conn.name = "test"
12+
res = notes.note(
13+
text="add foo", conn=event.conn, nick="bar", db=db, event=event
14+
)
15+
assert res is None
16+
17+
assert event.mock_calls == [call.notice("Note added!")]
18+
assert mock_db.get_data(notes.table) == [
19+
(1, "test", "bar", "foo", None, False, datetime.datetime.now())
20+
]
21+
22+
23+
def test_note_add_multiple(mock_db, freeze_time):
24+
db = mock_db.session()
25+
notes.table.create(bind=mock_db.engine)
26+
event = MagicMock()
27+
event.conn.name = "test"
28+
res = notes.note(
29+
text="add foo", conn=event.conn, nick="bar", db=db, event=event
30+
)
31+
res1 = notes.note(
32+
text="add foo1", conn=event.conn, nick="bar", db=db, event=event
33+
)
34+
assert res is None
35+
assert res1 is None
36+
37+
assert event.mock_calls == [
38+
call.notice("Note added!"),
39+
call.notice("Note added!"),
40+
]
41+
assert mock_db.get_data(notes.table) == [
42+
(1, "test", "bar", "foo", None, False, datetime.datetime.now()),
43+
(2, "test", "bar", "foo1", None, False, datetime.datetime.now()),
44+
]
45+
46+
47+
def test_note_del(mock_db, freeze_time):
48+
db = mock_db.session()
49+
notes.table.create(bind=mock_db.engine)
50+
event = MagicMock()
51+
event.conn.name = "test"
52+
nick = "bar"
53+
notes.add_note(db, event.conn.name, nick, "testing")
54+
res = notes.note(
55+
text="del 1", conn=event.conn, nick=nick, db=db, event=event
56+
)
57+
assert res is None
58+
59+
60+
def test_note_del_no_text(mock_db, freeze_time):
61+
db = mock_db.session()
62+
notes.table.create(bind=mock_db.engine)
63+
event = MagicMock()
64+
event.conn.name = "test"
65+
nick = "bar"
66+
notes.add_note(db, event.conn.name, nick, "testing")
67+
res = notes.note(text="del", conn=event.conn, nick=nick, db=db, event=event)
68+
assert res == "No note ID provided!"
69+
70+
assert event.mock_calls == []
71+
assert mock_db.get_data(notes.table) == [
72+
(
73+
1,
74+
event.conn.name,
75+
nick,
76+
"testing",
77+
None,
78+
False,
79+
datetime.datetime.now(),
80+
)
81+
]
82+
83+
84+
def test_note_get(mock_db, freeze_time):
85+
db = mock_db.session()
86+
notes.table.create(bind=mock_db.engine)
87+
event = MagicMock()
88+
event.conn.name = "test"
89+
nick = "bar"
90+
notes.add_note(db, event.conn.name, nick, "testing")
91+
res = notes.note(
92+
text="get 1", conn=event.conn, nick=nick, db=db, event=event
93+
)
94+
assert res is None
95+
96+
assert event.mock_calls == [
97+
call.notice("\x02Note #1:\x02 testing - \x0222 Aug, 2019\x02")
98+
]
99+
assert mock_db.get_data(notes.table) == [
100+
(
101+
1,
102+
event.conn.name,
103+
nick,
104+
"testing",
105+
None,
106+
False,
107+
datetime.datetime.now(),
108+
)
109+
]
110+
111+
112+
def test_note_get_no_id(mock_db, freeze_time):
113+
db = mock_db.session()
114+
notes.table.create(bind=mock_db.engine)
115+
event = MagicMock()
116+
event.conn.name = "test"
117+
nick = "bar"
118+
notes.add_note(db, event.conn.name, nick, "testing")
119+
res = notes.note(text="get", conn=event.conn, nick=nick, db=db, event=event)
120+
assert res == "No note ID provided!"
121+
122+
assert event.mock_calls == []
123+
assert mock_db.get_data(notes.table) == [
124+
(
125+
1,
126+
event.conn.name,
127+
nick,
128+
"testing",
129+
None,
130+
False,
131+
datetime.datetime.now(),
132+
)
133+
]
134+
135+
136+
def test_note_get_bad_id(mock_db, freeze_time):
137+
db = mock_db.session()
138+
notes.table.create(bind=mock_db.engine)
139+
event = MagicMock()
140+
event.conn.name = "test"
141+
nick = "bar"
142+
notes.add_note(db, event.conn.name, nick, "testing")
143+
res = notes.note(text="2", conn=event.conn, nick=nick, db=db, event=event)
144+
assert res is None
145+
146+
assert event.mock_calls == [call.notice("2 is not a valid note ID.")]
147+
148+
149+
def test_note_show_no_id(mock_db, freeze_time):
150+
db = mock_db.session()
151+
notes.table.create(bind=mock_db.engine)
152+
event = MagicMock()
153+
event.conn.name = "test"
154+
nick = "bar"
155+
notes.add_note(db, event.conn.name, nick, "testing")
156+
res = notes.note(
157+
text="show", conn=event.conn, nick=nick, db=db, event=event
158+
)
159+
assert res == "No note ID provided!"
160+
161+
assert event.mock_calls == []
162+
163+
164+
def test_note_show_bad_id(mock_db, freeze_time):
165+
db = mock_db.session()
166+
notes.table.create(bind=mock_db.engine)
167+
event = MagicMock()
168+
event.conn.name = "test"
169+
nick = "bar"
170+
notes.add_note(db, event.conn.name, nick, "testing")
171+
res = notes.note(
172+
text="show 2", conn=event.conn, nick=nick, db=db, event=event
173+
)
174+
assert res is None
175+
176+
assert event.mock_calls == [call.notice("2 is not a valid note ID.")]
177+
178+
179+
def test_note_share(mock_db, freeze_time):
180+
db = mock_db.session()
181+
notes.table.create(bind=mock_db.engine)
182+
event = MagicMock()
183+
event.conn.name = "test"
184+
nick = "bar"
185+
notes.add_note(db, event.conn.name, nick, "testing")
186+
res = notes.note(
187+
text="share 1", conn=event.conn, nick=nick, db=db, event=event
188+
)
189+
assert res == "\x02Note #1:\x02 testing - \x0222 Aug, 2019\x02"
190+
191+
assert event.mock_calls == []
192+
193+
194+
def test_note_bad_cmd(mock_db, freeze_time):
195+
db = mock_db.session()
196+
notes.table.create(bind=mock_db.engine)
197+
event = MagicMock()
198+
event.conn.name = "test"
199+
nick = "bar"
200+
res = notes.note(text="foo", conn=event.conn, nick=nick, db=db, event=event)
201+
202+
assert res is None
203+
204+
assert event.mock_calls == [call.notice("Unknown command: foo")]
205+
assert mock_db.get_data(notes.table) == []
206+
207+
208+
def test_note_list(mock_db, freeze_time):
209+
db = mock_db.session()
210+
notes.table.create(bind=mock_db.engine)
211+
event = MagicMock()
212+
event.conn.name = "test"
213+
nick = "bar"
214+
notes.add_note(db, event.conn.name, nick, "testing")
215+
notes.add_note(db, event.conn.name, nick, "testing1")
216+
notes.add_note(db, event.conn.name, nick, "testing2")
217+
notes.delete_note(db, event.conn.name, nick, 2)
218+
res = notes.note(
219+
text="list", conn=event.conn, nick=nick, db=db, event=event
220+
)
221+
assert res is None
222+
223+
assert event.mock_calls == [
224+
call.notice("All notes for bar:"),
225+
call.notice("\x02Note #1:\x02 testing - \x0222 Aug, 2019\x02"),
226+
call.notice("\x02Note #3:\x02 testing2 - \x0222 Aug, 2019\x02"),
227+
]
228+
229+
230+
def test_note_listall(mock_db, freeze_time):
231+
db = mock_db.session()
232+
notes.table.create(bind=mock_db.engine)
233+
event = MagicMock()
234+
event.conn.name = "test"
235+
nick = "bar"
236+
notes.add_note(db, event.conn.name, nick, "testing")
237+
notes.add_note(db, event.conn.name, nick, "testing1")
238+
notes.add_note(db, event.conn.name, nick, "testing2")
239+
notes.delete_note(db, event.conn.name, nick, 2)
240+
res = notes.note(
241+
text="listall", conn=event.conn, nick=nick, db=db, event=event
242+
)
243+
assert res is None
244+
245+
assert event.mock_calls == [
246+
call.notice("All notes for bar:"),
247+
call.notice("\x02Note #1:\x02 testing - \x0222 Aug, 2019\x02"),
248+
call.notice("\x02Note #2:\x02 testing1 - \x0222 Aug, 2019\x02"),
249+
call.notice("\x02Note #3:\x02 testing2 - \x0222 Aug, 2019\x02"),
250+
]
251+
252+
253+
def test_note_list_no_notes(mock_db, freeze_time):
254+
db = mock_db.session()
255+
notes.table.create(bind=mock_db.engine)
256+
event = MagicMock()
257+
event.conn.name = "test"
258+
nick = "bar"
259+
res = notes.note(
260+
text="list", conn=event.conn, nick=nick, db=db, event=event
261+
)
262+
assert res is None
263+
264+
assert event.mock_calls == [call.notice("You have no notes.")]
265+
266+
267+
def test_note_listall_no_notes(mock_db, freeze_time):
268+
db = mock_db.session()
269+
notes.table.create(bind=mock_db.engine)
270+
event = MagicMock()
271+
event.conn.name = "test"
272+
nick = "bar"
273+
res = notes.note(
274+
text="listall", conn=event.conn, nick=nick, db=db, event=event
275+
)
276+
assert res is None
277+
278+
assert event.mock_calls == [call.notice("You have no notes.")]
279+
280+
281+
def test_note_clear(mock_db, freeze_time):
282+
db = mock_db.session()
283+
notes.table.create(bind=mock_db.engine)
284+
event = MagicMock()
285+
event.conn.name = "test"
286+
nick = "bar"
287+
notes.add_note(db, event.conn.name, nick, "testing")
288+
notes.add_note(db, event.conn.name, nick, "testing1")
289+
res = notes.note(
290+
text="clear", conn=event.conn, nick=nick, db=db, event=event
291+
)
292+
293+
assert res is None
294+
295+
assert event.mock_calls == [call.notice("All notes deleted!")]
296+
assert mock_db.get_data(notes.table) == [
297+
(
298+
1,
299+
event.conn.name,
300+
nick,
301+
"testing",
302+
None,
303+
True,
304+
datetime.datetime.now(),
305+
),
306+
(
307+
2,
308+
event.conn.name,
309+
nick,
310+
"testing1",
311+
None,
312+
True,
313+
datetime.datetime.now(),
314+
),
315+
]
316+
317+
318+
def test_note_del_no_note(mock_db, freeze_time):
319+
db = mock_db.session()
320+
notes.table.create(bind=mock_db.engine)
321+
event = MagicMock()
322+
event.conn.name = "test"
323+
nick = "bar"
324+
res = notes.note(
325+
text="del 1", conn=event.conn, nick=nick, db=db, event=event
326+
)
327+
assert res is None
328+
329+
assert event.mock_calls == [call.notice("#1 is not a valid note ID.")]
330+
assert mock_db.get_data(notes.table) == []
331+
332+
333+
def test_note_add_no_text(mock_db, freeze_time):
334+
db = mock_db.session()
335+
notes.table.create(bind=mock_db.engine)
336+
event = MagicMock()
337+
event.conn.name = "test"
338+
res = notes.note(
339+
text="add", conn=event.conn, nick="bar", db=db, event=event
340+
)
341+
assert res == "No text provided!"
342+
assert event.mock_calls == []
343+
assert mock_db.get_data(notes.table) == []

0 commit comments

Comments
 (0)