test: cover strategy fetch/process behaviors
This commit is contained in:
129
tests/test_strategies.py
Normal file
129
tests/test_strategies.py
Normal file
@@ -0,0 +1,129 @@
|
||||
from types import SimpleNamespace
|
||||
|
||||
from skywipe.operations import (
|
||||
RecordDeletionStrategy,
|
||||
FeedStrategy,
|
||||
BookmarkStrategy,
|
||||
)
|
||||
|
||||
|
||||
def test_record_deletion_strategy_fetch_and_process(monkeypatch):
|
||||
captured = {}
|
||||
|
||||
class FakeParams:
|
||||
def __init__(self, **kwargs):
|
||||
self.kwargs = kwargs
|
||||
|
||||
def fake_list_records(params):
|
||||
captured["params"] = params
|
||||
return "response"
|
||||
|
||||
def fake_delete_record(data):
|
||||
captured["delete"] = data
|
||||
|
||||
client = SimpleNamespace(
|
||||
com=SimpleNamespace(
|
||||
atproto=SimpleNamespace(
|
||||
repo=SimpleNamespace(
|
||||
list_records=fake_list_records,
|
||||
delete_record=fake_delete_record,
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
context = SimpleNamespace(
|
||||
did="did:plc:fake",
|
||||
batch_size=2,
|
||||
client=client,
|
||||
logger=SimpleNamespace(debug=lambda *_args, **_kwargs: None),
|
||||
)
|
||||
|
||||
monkeypatch.setattr(
|
||||
"skywipe.operations.models.ComAtprotoRepoListRecords.Params",
|
||||
FakeParams,
|
||||
)
|
||||
|
||||
strategy = RecordDeletionStrategy("app.bsky.feed.like")
|
||||
response = strategy.fetch(context, cursor="next")
|
||||
assert response == "response"
|
||||
assert captured["params"].kwargs == {
|
||||
"repo": "did:plc:fake",
|
||||
"collection": "app.bsky.feed.like",
|
||||
"limit": 2,
|
||||
"cursor": "next",
|
||||
}
|
||||
|
||||
record = SimpleNamespace(uri="at://did:plc:fake/app.bsky.feed.like/abc123")
|
||||
strategy.process_item(record, context)
|
||||
assert captured["delete"] == {
|
||||
"repo": "did:plc:fake",
|
||||
"collection": "app.bsky.feed.like",
|
||||
"rkey": "abc123",
|
||||
}
|
||||
|
||||
|
||||
def test_feed_strategy_fetch_and_process():
|
||||
captured = {}
|
||||
|
||||
def fake_get_author_feed(**kwargs):
|
||||
captured["feed"] = kwargs
|
||||
return "feed"
|
||||
|
||||
def fake_delete_post(uri):
|
||||
captured["delete"] = uri
|
||||
|
||||
client = SimpleNamespace(
|
||||
get_author_feed=fake_get_author_feed,
|
||||
delete_post=fake_delete_post,
|
||||
)
|
||||
context = SimpleNamespace(
|
||||
did="did:plc:fake",
|
||||
batch_size=3,
|
||||
client=client,
|
||||
logger=SimpleNamespace(debug=lambda *_args, **_kwargs: None),
|
||||
)
|
||||
|
||||
strategy = FeedStrategy()
|
||||
response = strategy.fetch(context, cursor=None)
|
||||
assert response == "feed"
|
||||
assert captured["feed"] == {"actor": "did:plc:fake", "limit": 3}
|
||||
|
||||
response = strategy.fetch(context, cursor="next")
|
||||
assert response == "feed"
|
||||
assert captured["feed"] == {
|
||||
"actor": "did:plc:fake", "limit": 3, "cursor": "next"}
|
||||
|
||||
post = SimpleNamespace(post=SimpleNamespace(uri="at://post"))
|
||||
strategy.process_item(post, context)
|
||||
assert captured["delete"] == "at://post"
|
||||
|
||||
|
||||
def test_bookmark_strategy_fetch(monkeypatch):
|
||||
captured = {}
|
||||
|
||||
class FakeParams:
|
||||
def __init__(self, **kwargs):
|
||||
self.kwargs = kwargs
|
||||
|
||||
def fake_get_bookmarks(params):
|
||||
captured["params"] = params
|
||||
return "bookmarks"
|
||||
|
||||
client = SimpleNamespace(
|
||||
app=SimpleNamespace(
|
||||
bsky=SimpleNamespace(
|
||||
bookmark=SimpleNamespace(get_bookmarks=fake_get_bookmarks)
|
||||
)
|
||||
)
|
||||
)
|
||||
context = SimpleNamespace(batch_size=5, client=client)
|
||||
|
||||
monkeypatch.setattr(
|
||||
"skywipe.operations.models.AppBskyBookmarkGetBookmarks.Params",
|
||||
FakeParams,
|
||||
)
|
||||
|
||||
strategy = BookmarkStrategy()
|
||||
response = strategy.fetch(context, cursor="cursor")
|
||||
assert response == "bookmarks"
|
||||
assert captured["params"].kwargs == {"limit": 5, "cursor": "cursor"}
|
||||
Reference in New Issue
Block a user