Implement new notification dismiss behaviour, add test for old behaviour

This commit is contained in:
Lorenz Diener 2019-10-11 21:51:28 +02:00
pare ec58bd4de8
commit 30eb63261c
S'han modificat 3 arxius amb 69 adicions i 24 eliminacions

Veure arxiu

@ -1795,15 +1795,19 @@ class Mastodon:
self.__api_request('POST', '/api/v1/notifications/clear')
@api_version("1.3.0", "1.3.0", "1.3.0")
@api_version("1.3.0", "2.9.2", "2.9.2")
def notifications_dismiss(self, id):
"""
Deletes a single notification
"""
id = self.__unpack_id(id)
params = self.__generate_params(locals())
self.__api_request('POST', '/api/v1/notifications/dismiss', params)
if self.verify_minimum_version("2.9.2"):
url = '/api/v1/notifications/{0}/dismiss'.format(str(id))
return self.__api_request('POST', '/api/v1/notifications/dismiss', params)
else:
params = self.__generate_params(locals())
self.__api_request('POST', '/api/v1/notifications/dismiss', params)
###
# Writing data: Conversations

Veure arxiu

@ -12,11 +12,11 @@ interactions:
method: POST
uri: http://localhost:3000/api/v1/statuses
response:
body: {string: '{"id":"102317291057725861","created_at":"2019-06-22T21:12:41.706Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"en","uri":"http://localhost/users/admin/statuses/102317291057725861","url":"http://localhost/@admin/102317291057725861","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"pinned":false,"content":"\u003cp\u003e\u003cspan
body: {string: '{"id":"102945481191655042","created_at":"2019-10-11T19:49:42.450Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"en","uri":"http://localhost/users/admin/statuses/102945481191655042","url":"http://localhost/@admin/102945481191655042","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"pinned":false,"content":"\u003cp\u003e\u003cspan
class=\"h-card\"\u003e\u003ca href=\"http://localhost/@mastodonpy_test\" class=\"u-url
mention\"\u003e@\u003cspan\u003emastodonpy_test\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e
hello!\u003c/p\u003e","reblog":null,"application":{"name":"Mastodon.py test
suite","website":null},"account":{"id":"1","username":"admin","acct":"admin","display_name":"","locked":false,"bot":false,"created_at":"2019-06-22T12:42:50.096Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@admin","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":2,"following_count":1,"statuses_count":17,"emojis":[],"fields":[]},"media_attachments":[],"mentions":[{"id":"1234567890123456","username":"mastodonpy_test","url":"http://localhost/@mastodonpy_test","acct":"mastodonpy_test"}],"tags":[],"emojis":[],"card":null,"poll":null}'}
suite","website":null},"account":{"id":"1","username":"admin","acct":"admin","display_name":"","locked":false,"bot":false,"created_at":"2019-06-22T12:42:50.096Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@admin","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":2,"following_count":1,"statuses_count":20,"emojis":[],"fields":[]},"media_attachments":[],"mentions":[{"id":"1234567890123456","username":"mastodonpy_test","url":"http://localhost/@mastodonpy_test","acct":"mastodonpy_test"}],"tags":[],"emojis":[],"card":null,"poll":null}'}
headers:
Cache-Control: ['no-cache, no-store']
Content-Type: [application/json; charset=utf-8]
@ -27,8 +27,8 @@ interactions:
X-Download-Options: [noopen]
X-Frame-Options: [SAMEORIGIN]
X-Permitted-Cross-Domain-Policies: [none]
X-Request-Id: [93a5beb9-f93d-4498-a0a6-c08258d72d95]
X-Runtime: ['0.229491']
X-Request-Id: [116f5b2b-1d95-4382-9c2c-cc392a5f684c]
X-Runtime: ['0.211426']
X-XSS-Protection: [1; mode=block]
content-length: ['1488']
status: {code: 200, message: OK}
@ -43,16 +43,22 @@ interactions:
method: GET
uri: http://localhost:3000/api/v1/notifications
response:
body: {string: '[{"id":"112","type":"mention","created_at":"2019-06-22T21:12:41.829Z","account":{"id":"1","username":"admin","acct":"admin","display_name":"","locked":false,"bot":false,"created_at":"2019-06-22T12:42:50.096Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@admin","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":2,"following_count":1,"statuses_count":17,"emojis":[],"fields":[]},"status":{"id":"102317291057725861","created_at":"2019-06-22T21:12:41.706Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"en","uri":"http://localhost/users/admin/statuses/102317291057725861","url":"http://localhost/@admin/102317291057725861","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"content":"\u003cp\u003e\u003cspan
body: {string: '[{"id":"124","type":"mention","created_at":"2019-10-11T19:49:42.579Z","account":{"id":"1","username":"admin","acct":"admin","display_name":"","locked":false,"bot":false,"created_at":"2019-06-22T12:42:50.096Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@admin","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":2,"following_count":1,"statuses_count":20,"emojis":[],"fields":[]},"status":{"id":"102945481191655042","created_at":"2019-10-11T19:49:42.450Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"en","uri":"http://localhost/users/admin/statuses/102945481191655042","url":"http://localhost/@admin/102945481191655042","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"content":"\u003cp\u003e\u003cspan
class=\"h-card\"\u003e\u003ca href=\"http://localhost/@mastodonpy_test\" class=\"u-url
mention\"\u003e@\u003cspan\u003emastodonpy_test\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e
hello!\u003c/p\u003e","reblog":null,"application":{"name":"Mastodon.py test
suite","website":null},"account":{"id":"1","username":"admin","acct":"admin","display_name":"","locked":false,"bot":false,"created_at":"2019-06-22T12:42:50.096Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@admin","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":2,"following_count":1,"statuses_count":17,"emojis":[],"fields":[]},"media_attachments":[],"mentions":[{"id":"1234567890123456","username":"mastodonpy_test","url":"http://localhost/@mastodonpy_test","acct":"mastodonpy_test"}],"tags":[],"emojis":[],"card":null,"poll":null}}]'}
suite","website":null},"account":{"id":"1","username":"admin","acct":"admin","display_name":"","locked":false,"bot":false,"created_at":"2019-06-22T12:42:50.096Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@admin","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":2,"following_count":1,"statuses_count":20,"emojis":[],"fields":[]},"media_attachments":[],"mentions":[{"id":"1234567890123456","username":"mastodonpy_test","url":"http://localhost/@mastodonpy_test","acct":"mastodonpy_test"}],"tags":[],"emojis":[],"card":null,"poll":null}},{"id":"120","type":"poll","created_at":"2019-06-22T21:18:06.944Z","account":{"id":"1","username":"admin","acct":"admin","display_name":"","locked":false,"bot":false,"created_at":"2019-06-22T12:42:50.096Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@admin","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":2,"following_count":1,"statuses_count":20,"emojis":[],"fields":[]},"status":{"id":"102317292327454763","created_at":"2019-06-22T21:13:01.083Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"en","uri":"http://localhost/users/admin/statuses/102317292327454763","url":"http://localhost/@admin/102317292327454763","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"content":"\u003cp\u003enice\u003c/p\u003e","reblog":null,"application":{"name":"Mastodon.py
test suite","website":null},"account":{"id":"1","username":"admin","acct":"admin","display_name":"","locked":false,"bot":false,"created_at":"2019-06-22T12:42:50.096Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@admin","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":2,"following_count":1,"statuses_count":20,"emojis":[],"fields":[]},"media_attachments":[],"mentions":[],"tags":[],"emojis":[],"card":null,"poll":{"id":"16","expires_at":"2019-06-22T21:18:01.074Z","expired":true,"multiple":false,"votes_count":1,"voted":true,"options":[{"title":"four
twenty","votes_count":0},{"title":"sixty-nine","votes_count":1}],"emojis":[]}}},{"id":"115","type":"mention","created_at":"2019-06-22T21:13:26.829Z","account":{"id":"1","username":"admin","acct":"admin","display_name":"","locked":false,"bot":false,"created_at":"2019-06-22T12:42:50.096Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@admin","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":2,"following_count":1,"statuses_count":20,"emojis":[],"fields":[]},"status":{"id":"102317294005876209","created_at":"2019-06-22T21:13:26.706Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"en","uri":"http://localhost/users/admin/statuses/102317294005876209","url":"http://localhost/@admin/102317294005876209","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"content":"\u003cp\u003e\u003cspan
class=\"h-card\"\u003e\u003ca href=\"http://localhost/@mastodonpy_test\" class=\"u-url
mention\"\u003e@\u003cspan\u003emastodonpy_test\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e
beep beep I\u0026apos;m a jeep\u003c/p\u003e","reblog":null,"application":{"name":"Mastodon.py
test suite","website":null},"account":{"id":"1","username":"admin","acct":"admin","display_name":"","locked":false,"bot":false,"created_at":"2019-06-22T12:42:50.096Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@admin","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":2,"following_count":1,"statuses_count":20,"emojis":[],"fields":[]},"media_attachments":[],"mentions":[{"id":"1234567890123456","username":"mastodonpy_test","url":"http://localhost/@mastodonpy_test","acct":"mastodonpy_test"}],"tags":[],"emojis":[],"card":null,"poll":null}}]'}
headers:
Cache-Control: ['no-cache, no-store']
Content-Type: [application/json; charset=utf-8]
Link: ['<http://localhost:3000/api/v1/notifications?max_id=112>; rel="next",
<http://localhost:3000/api/v1/notifications?min_id=112>; rel="prev"']
Link: ['<http://localhost:3000/api/v1/notifications?max_id=115>; rel="next",
<http://localhost:3000/api/v1/notifications?min_id=124>; rel="prev"']
Referrer-Policy: [strict-origin-when-cross-origin]
Transfer-Encoding: [chunked]
Vary: ['Accept-Encoding, Origin']
@ -60,13 +66,42 @@ interactions:
X-Download-Options: [noopen]
X-Frame-Options: [SAMEORIGIN]
X-Permitted-Cross-Domain-Policies: [none]
X-Request-Id: [a381923e-e73f-479f-acea-eae201792ae7]
X-Runtime: ['0.095464']
X-Request-Id: [e8ea61bd-7565-4392-9a7a-e6152a5635d1]
X-Runtime: ['0.126201']
X-XSS-Protection: [1; mode=block]
content-length: ['2089']
content-length: ['6180']
status: {code: 200, message: OK}
- request:
body: id=112
body: null
headers:
Accept: ['*/*']
Accept-Encoding: ['gzip, deflate']
Authorization: [Bearer __MASTODON_PY_TEST_ACCESS_TOKEN]
Connection: [keep-alive]
User-Agent: [python-requests/2.18.4]
method: GET
uri: http://localhost:3000/api/v1/instance/
response:
body: {string: '{"uri":"localhost","title":"Mastodon","description":"","email":"","version":"2.9.1","urls":{"streaming_api":"ws://localhost:4000"},"stats":{"user_count":3,"status_count":21,"domain_count":0},"thumbnail":"http://localhost/packs/media/images/preview-9a17d32fc48369e8ccd910a75260e67d.jpg","languages":["en"],"registrations":true,"contact_account":null}'}
headers:
Cache-Control: ['max-age=300, public']
Content-Type: [application/json; charset=utf-8]
Date: ['Fri, 11 Oct 2019 19:49:42 GMT']
ETag: [W/"b6028559f8312dda8add94d97903ca58"]
Referrer-Policy: [strict-origin-when-cross-origin]
Transfer-Encoding: [chunked]
Vary: ['Accept-Encoding, Origin']
X-Content-Type-Options: [nosniff]
X-Download-Options: [noopen]
X-Frame-Options: [SAMEORIGIN]
X-Permitted-Cross-Domain-Policies: [none]
X-Request-Id: [866137ef-767a-4738-aaf8-687d0b5f6062]
X-Runtime: ['0.054816']
X-XSS-Protection: [1; mode=block]
content-length: ['349']
status: {code: 200, message: OK}
- request:
body: id=124
headers:
Accept: ['*/*']
Accept-Encoding: ['gzip, deflate']
@ -89,8 +124,8 @@ interactions:
X-Download-Options: [noopen]
X-Frame-Options: [SAMEORIGIN]
X-Permitted-Cross-Domain-Policies: [none]
X-Request-Id: [6d7d73d4-f824-4b47-805f-1552bc92f7d8]
X-Runtime: ['0.041361']
X-Request-Id: [3e179fba-39e7-4e2c-b58e-db7dc3fa2f03]
X-Runtime: ['0.038802']
X-XSS-Protection: [1; mode=block]
content-length: ['2']
status: {code: 200, message: OK}
@ -104,10 +139,10 @@ interactions:
Content-Length: ['0']
User-Agent: [python-requests/2.18.4]
method: DELETE
uri: http://localhost:3000/api/v1/statuses/102317291057725861
uri: http://localhost:3000/api/v1/statuses/102945481191655042
response:
body: {string: '{"id":"102317291057725861","created_at":"2019-06-22T21:12:41.706Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"en","uri":"http://localhost/users/admin/statuses/102317291057725861","url":"http://localhost/@admin/102317291057725861","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"pinned":false,"text":"@mastodonpy_test
hello!","reblog":null,"application":{"name":"Mastodon.py test suite","website":null},"account":{"id":"1","username":"admin","acct":"admin","display_name":"","locked":false,"bot":false,"created_at":"2019-06-22T12:42:50.096Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@admin","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":2,"following_count":1,"statuses_count":17,"emojis":[],"fields":[]},"media_attachments":[],"mentions":[{"id":"1234567890123456","username":"mastodonpy_test","url":"http://localhost/@mastodonpy_test","acct":"mastodonpy_test"}],"tags":[],"emojis":[],"card":null,"poll":null}'}
body: {string: '{"id":"102945481191655042","created_at":"2019-10-11T19:49:42.450Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"en","uri":"http://localhost/users/admin/statuses/102945481191655042","url":"http://localhost/@admin/102945481191655042","replies_count":0,"reblogs_count":0,"favourites_count":0,"favourited":false,"reblogged":false,"muted":false,"pinned":false,"text":"@mastodonpy_test
hello!","reblog":null,"application":{"name":"Mastodon.py test suite","website":null},"account":{"id":"1","username":"admin","acct":"admin","display_name":"","locked":false,"bot":false,"created_at":"2019-06-22T12:42:50.096Z","note":"\u003cp\u003e\u003c/p\u003e","url":"http://localhost/@admin","avatar":"http://localhost/avatars/original/missing.png","avatar_static":"http://localhost/avatars/original/missing.png","header":"http://localhost/headers/original/missing.png","header_static":"http://localhost/headers/original/missing.png","followers_count":2,"following_count":1,"statuses_count":20,"emojis":[],"fields":[]},"media_attachments":[],"mentions":[{"id":"1234567890123456","username":"mastodonpy_test","url":"http://localhost/@mastodonpy_test","acct":"mastodonpy_test"}],"tags":[],"emojis":[],"card":null,"poll":null}'}
headers:
Cache-Control: ['no-cache, no-store']
Content-Type: [application/json; charset=utf-8]
@ -118,8 +153,8 @@ interactions:
X-Download-Options: [noopen]
X-Frame-Options: [SAMEORIGIN]
X-Permitted-Cross-Domain-Policies: [none]
X-Request-Id: [d8419c44-3f0a-4c22-b486-fe69128ad00a]
X-Runtime: ['0.137253']
X-Request-Id: [881b7e0e-4ee4-485c-9b01-746d55c0d4f7]
X-Runtime: ['0.070719']
X-XSS-Protection: [1; mode=block]
content-length: ['1281']
status: {code: 200, message: OK}

Veure arxiu

@ -1,4 +1,5 @@
import pytest
import vcr
@pytest.fixture()
def mention(api2):
@ -14,7 +15,12 @@ def test_notifications(api, mention):
@pytest.mark.vcr()
def test_notifications_dismiss(api, mention):
notifications = api.notifications()
api.notifications_dismiss(notifications[0])
api.notifications_dismiss(notifications[0]) # TODO possibly verify that this returns a notif dict
def test_notifications_dismiss_pre_2_9_2(api, mention):
with vcr.use_cassette('test_notifications_dismiss.yaml', cassette_library_dir='tests/cassettes_pre_2_9_2', record_mode='none'):
notifications = api.notifications()
api.notifications_dismiss(notifications[0])
@pytest.mark.vcr()
def test_notifications_clear(api):