diff options
author | Lorenz Diener <[email protected]> | 2018-07-30 23:08:30 +0200 |
---|---|---|
committer | Lorenz Diener <[email protected]> | 2018-07-30 23:08:30 +0200 |
commit | 2d81e9b2cbd3e3c1abd3a472220c667e89b29f5e (patch) | |
tree | d8aceee169716fe834edc379fbee5cef86823976 /tests/test_filters.py | |
parent | d04b3da7d5a8f130ad723e5f8797f314cdc072ca (diff) | |
download | mastodon.py-2d81e9b2cbd3e3c1abd3a472220c667e89b29f5e.tar.gz |
Add filter tests
Diffstat (limited to 'tests/test_filters.py')
-rw-r--r-- | tests/test_filters.py | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/tests/test_filters.py b/tests/test_filters.py new file mode 100644 index 0000000..dc39ddb --- /dev/null +++ b/tests/test_filters.py | |||
@@ -0,0 +1,91 @@ | |||
1 | import pytest | ||
2 | import time | ||
3 | |||
4 | @pytest.mark.vcr() | ||
5 | def test_filter_create(api): | ||
6 | keyword_filter = api.filter_create("anime", ['notifications'], irreversible = False, whole_word = True, expires_in = None) | ||
7 | try: | ||
8 | assert(keyword_filter) | ||
9 | |||
10 | all_filters = api.filters() | ||
11 | assert(keyword_filter in all_filters) | ||
12 | assert(keyword_filter.irreversible == False) | ||
13 | assert(keyword_filter.whole_word == True) | ||
14 | |||
15 | keyword_filter_2 = api.filter(keyword_filter.id) | ||
16 | assert(keyword_filter == keyword_filter_2) | ||
17 | finally: | ||
18 | api.filter_delete(keyword_filter) | ||
19 | |||
20 | |||
21 | keyword_filter = api.filter_create("anime", ['notifications'], irreversible = False, whole_word = False, expires_in = None) | ||
22 | try: | ||
23 | assert(keyword_filter) | ||
24 | assert(keyword_filter.irreversible == False) | ||
25 | assert(keyword_filter.whole_word == False) | ||
26 | |||
27 | all_filters = api.filters() | ||
28 | assert(keyword_filter in all_filters) | ||
29 | |||
30 | keyword_filter_2 = api.filter(keyword_filter.id) | ||
31 | assert(keyword_filter == keyword_filter_2) | ||
32 | finally: | ||
33 | api.filter_delete(keyword_filter) | ||
34 | |||
35 | @pytest.mark.vcr() | ||
36 | def test_filter_serverside(api, api2): | ||
37 | api.account_follow(api2.account_verify_credentials()) | ||
38 | keyword_filter_1 = api.filter_create("anime", ['home'], irreversible = True, whole_word = False, expires_in = None) | ||
39 | keyword_filter_2 = api.filter_create("girugamesh", ['home'], irreversible = True, whole_word = True, expires_in = None) | ||
40 | keyword_filter_3 = api.filter_create("japanimation", ['notifications'], irreversible = True, whole_word = True, expires_in = None) | ||
41 | time.sleep(2) | ||
42 | status_1 = api2.toot("I love animes") | ||
43 | status_2 = api2.toot("Girugamesh!") | ||
44 | status_3 = api2.toot("Girugameshnetworking!") | ||
45 | status_4 = api2.toot("I love japanimation!") | ||
46 | time.sleep(2) | ||
47 | tl = api.timeline_home() | ||
48 | try: | ||
49 | assert not status_1['id'] in map(lambda st: st['id'], tl) | ||
50 | assert not status_2['id'] in map(lambda st: st['id'], tl) | ||
51 | assert status_3['id'] in map(lambda st: st['id'], tl) | ||
52 | assert status_4['id'] in map(lambda st: st['id'], tl) | ||
53 | finally: | ||
54 | api.filter_delete(keyword_filter_1) | ||
55 | api.filter_delete(keyword_filter_2) | ||
56 | api.filter_delete(keyword_filter_3) | ||
57 | api2.status_delete(status_1) | ||
58 | api2.status_delete(status_2) | ||
59 | api2.status_delete(status_3) | ||
60 | api2.status_delete(status_4) | ||
61 | |||
62 | @pytest.mark.vcr() | ||
63 | def test_filter_clientside(api, api2): | ||
64 | api.account_follow(api2.account_verify_credentials()) | ||
65 | keyword_filter_1 = api.filter_create("anime", ['home'], irreversible = False, whole_word = False, expires_in = None) | ||
66 | keyword_filter_2 = api.filter_create("girugamesh", ['home'], irreversible = False, whole_word = True, expires_in = None) | ||
67 | keyword_filter_3 = api.filter_create("japanimation", ['notifications'], irreversible = False, whole_word = True, expires_in = None) | ||
68 | status_1 = api2.toot("I love animes") | ||
69 | status_2 = api2.toot("Girugamesh!") | ||
70 | status_3 = api2.toot("Girugameshnetworking!") | ||
71 | status_4 = api2.toot("I love japanimation!") | ||
72 | tl = api.timeline_home() | ||
73 | try: | ||
74 | assert status_1['id'] in map(lambda st: st['id'], tl) | ||
75 | assert status_2['id'] in map(lambda st: st['id'], tl) | ||
76 | assert status_3['id'] in map(lambda st: st['id'], tl) | ||
77 | assert status_4['id'] in map(lambda st: st['id'], tl) | ||
78 | |||
79 | filtered = api.filters_apply(tl, [keyword_filter_1, keyword_filter_2, keyword_filter_3], 'home') | ||
80 | assert not status_1['id'] in map(lambda st: st['id'], filtered) | ||
81 | assert not status_2['id'] in map(lambda st: st['id'], filtered) | ||
82 | assert status_3['id'] in map(lambda st: st['id'], filtered) | ||
83 | assert status_4['id'] in map(lambda st: st['id'], filtered) | ||
84 | finally: | ||
85 | api.filter_delete(keyword_filter_1) | ||
86 | api.filter_delete(keyword_filter_2) | ||
87 | api.filter_delete(keyword_filter_3) | ||
88 | api2.status_delete(status_1) | ||
89 | api2.status_delete(status_2) | ||
90 | api2.status_delete(status_3) | ||
91 | api2.status_delete(status_4) | ||