diff options
author | halcy <halcy@ARARAGI-KUN> | 2022-11-07 23:11:30 +0200 |
---|---|---|
committer | halcy <halcy@ARARAGI-KUN> | 2022-11-07 23:11:30 +0200 |
commit | 3277ca777821e76955fb26d80788939a311db9db (patch) | |
tree | bef0749a451464d00e59fb3c685e6eb6d69a8a78 /tests/test_filters.py | |
parent | 33d1e17e2e75884abd6e0a8a3e4a4da388e97e55 (diff) | |
download | mastodon.py-3277ca777821e76955fb26d80788939a311db9db.tar.gz |
Initial test fixing pass. Four tests still fail.
Diffstat (limited to 'tests/test_filters.py')
-rw-r--r-- | tests/test_filters.py | 193 |
1 files changed, 99 insertions, 94 deletions
diff --git a/tests/test_filters.py b/tests/test_filters.py index 7accbd8..3ffa726 100644 --- a/tests/test_filters.py +++ b/tests/test_filters.py | |||
@@ -1,109 +1,114 @@ | |||
1 | import pytest | 1 | import pytest |
2 | import time | 2 | import time |
3 | import vcr | ||
3 | 4 | ||
4 | @pytest.mark.vcr() | 5 | @pytest.mark.vcr() |
5 | def test_filter_create(api): | 6 | def test_filter_create(api): |
6 | keyword_filter = api.filter_create("anime", ['notifications'], irreversible = False, whole_word = True, expires_in = None) | 7 | with vcr.use_cassette('test_filter_create.yaml', cassette_library_dir='tests/cassettes_pre_4_0_0', record_mode='none'): |
7 | try: | 8 | keyword_filter = api.filter_create("anime", ['notifications'], irreversible = False, whole_word = True, expires_in = None) |
8 | assert(keyword_filter) | 9 | try: |
9 | 10 | assert(keyword_filter) | |
10 | all_filters = api.filters() | 11 | |
11 | assert(keyword_filter in all_filters) | 12 | all_filters = api.filters() |
12 | assert(keyword_filter.irreversible == False) | 13 | assert(keyword_filter in all_filters) |
13 | assert(keyword_filter.whole_word == True) | 14 | assert(keyword_filter.irreversible == False) |
14 | 15 | assert(keyword_filter.whole_word == True) | |
15 | keyword_filter_2 = api.filter(keyword_filter.id) | 16 | |
16 | assert(keyword_filter == keyword_filter_2) | 17 | keyword_filter_2 = api.filter(keyword_filter.id) |
17 | finally: | 18 | assert(keyword_filter == keyword_filter_2) |
18 | api.filter_delete(keyword_filter) | 19 | finally: |
19 | 20 | api.filter_delete(keyword_filter) | |
20 | 21 | ||
21 | keyword_filter = api.filter_create("anime", ['notifications'], irreversible = False, whole_word = False, expires_in = None) | 22 | |
22 | try: | 23 | keyword_filter = api.filter_create("anime", ['notifications'], irreversible = False, whole_word = False, expires_in = None) |
23 | assert(keyword_filter) | 24 | try: |
24 | assert(keyword_filter.irreversible == False) | 25 | assert(keyword_filter) |
25 | assert(keyword_filter.whole_word == False) | 26 | assert(keyword_filter.irreversible == False) |
26 | 27 | assert(keyword_filter.whole_word == False) | |
27 | all_filters = api.filters() | 28 | |
28 | assert(keyword_filter in all_filters) | 29 | all_filters = api.filters() |
29 | 30 | assert(keyword_filter in all_filters) | |
30 | keyword_filter_2 = api.filter(keyword_filter.id) | 31 | |
31 | assert(keyword_filter == keyword_filter_2) | 32 | keyword_filter_2 = api.filter(keyword_filter.id) |
32 | finally: | 33 | assert(keyword_filter == keyword_filter_2) |
33 | api.filter_delete(keyword_filter) | 34 | finally: |
34 | time.sleep(2) | 35 | api.filter_delete(keyword_filter) |
36 | time.sleep(2) | ||
35 | 37 | ||
36 | @pytest.mark.vcr() | 38 | @pytest.mark.vcr() |
37 | def test_filter_update(api): | 39 | def test_filter_update(api): |
38 | keyword_filter = api.filter_create("anime", ['notifications'], irreversible = False, whole_word = True, expires_in = None) | 40 | with vcr.use_cassette('test_filter_update.yaml', cassette_library_dir='tests/cassettes_pre_4_0_0', record_mode='none'): |
39 | keyword_filter_2 = api.filter_update(keyword_filter, phrase = "japanimation") | 41 | keyword_filter = api.filter_create("anime", ['notifications'], irreversible = False, whole_word = True, expires_in = None) |
40 | keyword_filter = api.filter(keyword_filter.id) | 42 | keyword_filter_2 = api.filter_update(keyword_filter, phrase = "japanimation") |
41 | assert(keyword_filter.phrase == "japanimation") | 43 | keyword_filter = api.filter(keyword_filter.id) |
44 | assert(keyword_filter.phrase == "japanimation") | ||
42 | 45 | ||
43 | @pytest.mark.vcr() | 46 | @pytest.mark.vcr() |
44 | def test_filter_serverside(api, api2): | 47 | def test_filter_serverside(api, api2): |
45 | api.account_follow(api2.account_verify_credentials()) | 48 | with vcr.use_cassette('test_filter_serverside.yaml', cassette_library_dir='tests/cassettes_pre_4_0_0', record_mode='none'): |
46 | keyword_filter_1 = api.filter_create("anime", ['home'], irreversible = True, whole_word = False, expires_in = None) | 49 | api.account_follow(api2.account_verify_credentials()) |
47 | keyword_filter_2 = api.filter_create("girugamesh", ['home'], irreversible = True, whole_word = True, expires_in = None) | 50 | keyword_filter_1 = api.filter_create("anime", ['home'], irreversible = True, whole_word = False, expires_in = None) |
48 | keyword_filter_3 = api.filter_create("japanimation", ['notifications'], irreversible = True, whole_word = True, expires_in = None) | 51 | keyword_filter_2 = api.filter_create("girugamesh", ['home'], irreversible = True, whole_word = True, expires_in = None) |
49 | time.sleep(2) | 52 | keyword_filter_3 = api.filter_create("japanimation", ['notifications'], irreversible = True, whole_word = True, expires_in = None) |
50 | status_1 = api2.toot("I love animes") | 53 | time.sleep(2) |
51 | status_2 = api2.toot("Girugamesh!") | 54 | status_1 = api2.toot("I love animes") |
52 | status_3 = api2.toot("Girugameshnetworking!") | 55 | status_2 = api2.toot("Girugamesh!") |
53 | status_4 = api2.toot("I love japanimation!") | 56 | status_3 = api2.toot("Girugameshnetworking!") |
54 | time.sleep(2) | 57 | status_4 = api2.toot("I love japanimation!") |
55 | tl = api.timeline_home() | 58 | time.sleep(2) |
56 | try: | 59 | tl = api.timeline_home() |
57 | assert not status_1['id'] in map(lambda st: st['id'], tl) | 60 | try: |
58 | assert not status_2['id'] in map(lambda st: st['id'], tl) | 61 | assert not status_1['id'] in map(lambda st: st['id'], tl) |
59 | assert status_3['id'] in map(lambda st: st['id'], tl) | 62 | assert not status_2['id'] in map(lambda st: st['id'], tl) |
60 | assert status_4['id'] in map(lambda st: st['id'], tl) | 63 | assert status_3['id'] in map(lambda st: st['id'], tl) |
61 | finally: | 64 | assert status_4['id'] in map(lambda st: st['id'], tl) |
62 | api.filter_delete(keyword_filter_1) | 65 | finally: |
63 | api.filter_delete(keyword_filter_2) | 66 | api.filter_delete(keyword_filter_1) |
64 | api.filter_delete(keyword_filter_3) | 67 | api.filter_delete(keyword_filter_2) |
65 | api2.status_delete(status_1) | 68 | api.filter_delete(keyword_filter_3) |
66 | api2.status_delete(status_2) | 69 | api2.status_delete(status_1) |
67 | api2.status_delete(status_3) | 70 | api2.status_delete(status_2) |
68 | api2.status_delete(status_4) | 71 | api2.status_delete(status_3) |
69 | time.sleep(2) | 72 | api2.status_delete(status_4) |
73 | time.sleep(2) | ||
70 | 74 | ||
71 | @pytest.mark.vcr() | 75 | @pytest.mark.vcr() |
72 | def test_filter_clientside(api, api2): | 76 | def test_filter_clientside(api, api2): |
73 | # Make sure no filters are left over from some previous run | 77 | with vcr.use_cassette('test_filter_clientside.yaml', cassette_library_dir='tests/cassettes_pre_4_0_0', record_mode='none'): |
74 | # Unclean, but neccesary | 78 | # Make sure no filters are left over from some previous run |
75 | all_filters = api.filters() | 79 | # Unclean, but neccesary |
76 | for mastodon_filter in all_filters: | 80 | all_filters = api.filters() |
77 | api.filter_delete(mastodon_filter) | 81 | for mastodon_filter in all_filters: |
78 | 82 | api.filter_delete(mastodon_filter) | |
79 | time.sleep(2) | 83 | |
80 | api.account_follow(api2.account_verify_credentials()) | 84 | time.sleep(2) |
81 | keyword_filter_1 = api.filter_create("anime", ['home'], irreversible = False, whole_word = False, expires_in = None) | 85 | api.account_follow(api2.account_verify_credentials()) |
82 | keyword_filter_2 = api.filter_create("girugamesh", ['home'], irreversible = False, whole_word = True, expires_in = None) | 86 | keyword_filter_1 = api.filter_create("anime", ['home'], irreversible = False, whole_word = False, expires_in = None) |
83 | keyword_filter_3 = api.filter_create("japanimation", ['notifications'], irreversible = False, whole_word = True, expires_in = None) | 87 | keyword_filter_2 = api.filter_create("girugamesh", ['home'], irreversible = False, whole_word = True, expires_in = None) |
84 | status_1 = api2.toot("I love animes") | 88 | keyword_filter_3 = api.filter_create("japanimation", ['notifications'], irreversible = False, whole_word = True, expires_in = None) |
85 | status_2 = api2.toot("Girugamesh!") | 89 | status_1 = api2.toot("I love animes") |
86 | status_3 = api2.toot("Girugameshnetworking!") | 90 | status_2 = api2.toot("Girugamesh!") |
87 | status_4 = api2.toot("I love japanimation!") | 91 | status_3 = api2.toot("Girugameshnetworking!") |
88 | time.sleep(2) | 92 | status_4 = api2.toot("I love japanimation!") |
89 | 93 | time.sleep(2) | |
90 | tl = api.timeline_home() | ||
91 | try: | ||
92 | assert status_1['id'] in map(lambda st: st['id'], tl) | ||
93 | assert status_2['id'] in map(lambda st: st['id'], tl) | ||
94 | assert status_3['id'] in map(lambda st: st['id'], tl) | ||
95 | assert status_4['id'] in map(lambda st: st['id'], tl) | ||
96 | 94 | ||
97 | filtered = api.filters_apply(tl, [keyword_filter_1, keyword_filter_2, keyword_filter_3], 'home') | 95 | tl = api.timeline_home() |
98 | assert not status_1['id'] in map(lambda st: st['id'], filtered) | 96 | try: |
99 | assert not status_2['id'] in map(lambda st: st['id'], filtered) | 97 | assert status_1['id'] in map(lambda st: st['id'], tl) |
100 | assert status_3['id'] in map(lambda st: st['id'], filtered) | 98 | assert status_2['id'] in map(lambda st: st['id'], tl) |
101 | assert status_4['id'] in map(lambda st: st['id'], filtered) | 99 | assert status_3['id'] in map(lambda st: st['id'], tl) |
102 | finally: | 100 | assert status_4['id'] in map(lambda st: st['id'], tl) |
103 | api.filter_delete(keyword_filter_1) | 101 | |
104 | api.filter_delete(keyword_filter_2) | 102 | filtered = api.filters_apply(tl, [keyword_filter_1, keyword_filter_2, keyword_filter_3], 'home') |
105 | api.filter_delete(keyword_filter_3) | 103 | assert not status_1['id'] in map(lambda st: st['id'], filtered) |
106 | api2.status_delete(status_1) | 104 | assert not status_2['id'] in map(lambda st: st['id'], filtered) |
107 | api2.status_delete(status_2) | 105 | assert status_3['id'] in map(lambda st: st['id'], filtered) |
108 | api2.status_delete(status_3) | 106 | assert status_4['id'] in map(lambda st: st['id'], filtered) |
109 | api2.status_delete(status_4) | 107 | finally: |
108 | api.filter_delete(keyword_filter_1) | ||
109 | api.filter_delete(keyword_filter_2) | ||
110 | api.filter_delete(keyword_filter_3) | ||
111 | api2.status_delete(status_1) | ||
112 | api2.status_delete(status_2) | ||
113 | api2.status_delete(status_3) | ||
114 | api2.status_delete(status_4) | ||