forked from AkkomaGang/akkoma
Add tests for fetch_ordered_collection
This commit is contained in:
parent
5021b7836f
commit
b775fded10
1 changed files with 65 additions and 0 deletions
|
@ -104,4 +104,69 @@ test "does not adress actor's follower address if the activity is not public", %
|
||||||
assert Enum.sort(cc) == expected_cc
|
assert Enum.sort(cc) == expected_cc
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "fetch_ordered_collection" do
|
||||||
|
import Tesla.Mock
|
||||||
|
|
||||||
|
test "fetches the first OrderedCollectionPage when an OrderedCollection is encountered" do
|
||||||
|
mock(fn
|
||||||
|
%{method: :get, url: "http://mastodon.com/outbox"} ->
|
||||||
|
json(%{"type" => "OrderedCollection", "first" => "http://mastodon.com/outbox?page=true"})
|
||||||
|
|
||||||
|
%{method: :get, url: "http://mastodon.com/outbox?page=true"} ->
|
||||||
|
json(%{"type" => "OrderedCollectionPage", "orderedItems" => ["ok"]})
|
||||||
|
end)
|
||||||
|
|
||||||
|
assert Utils.fetch_ordered_collection("http://mastodon.com/outbox", 1) == ["ok"]
|
||||||
|
end
|
||||||
|
|
||||||
|
test "fetches several pages in the right order one after another, but only the specified amount" do
|
||||||
|
mock(fn
|
||||||
|
%{method: :get, url: "http://example.com/outbox"} ->
|
||||||
|
json(%{
|
||||||
|
"type" => "OrderedCollectionPage",
|
||||||
|
"orderedItems" => [0],
|
||||||
|
"next" => "http://example.com/outbox?page=1"
|
||||||
|
})
|
||||||
|
|
||||||
|
%{method: :get, url: "http://example.com/outbox?page=1"} ->
|
||||||
|
json(%{
|
||||||
|
"type" => "OrderedCollectionPage",
|
||||||
|
"orderedItems" => [1],
|
||||||
|
"next" => "http://example.com/outbox?page=2"
|
||||||
|
})
|
||||||
|
|
||||||
|
%{method: :get, url: "http://example.com/outbox?page=2"} ->
|
||||||
|
json(%{"type" => "OrderedCollectionPage", "orderedItems" => [2]})
|
||||||
|
end)
|
||||||
|
|
||||||
|
assert Utils.fetch_ordered_collection("http://example.com/outbox", 0) == [0]
|
||||||
|
assert Utils.fetch_ordered_collection("http://example.com/outbox", 1) == [0, 1]
|
||||||
|
end
|
||||||
|
|
||||||
|
test "returns an error if the url doesn't have an OrderedCollection/Page" do
|
||||||
|
mock(fn
|
||||||
|
%{method: :get, url: "http://example.com/not-an-outbox"} ->
|
||||||
|
json(%{"type" => "NotAnOutbox"})
|
||||||
|
end)
|
||||||
|
|
||||||
|
assert {:error, _} = Utils.fetch_ordered_collection("http://example.com/not-an-outbox", 1)
|
||||||
|
end
|
||||||
|
|
||||||
|
test "returns the what was collected if there are less pages than specified" do
|
||||||
|
mock(fn
|
||||||
|
%{method: :get, url: "http://example.com/outbox"} ->
|
||||||
|
json(%{
|
||||||
|
"type" => "OrderedCollectionPage",
|
||||||
|
"orderedItems" => [0],
|
||||||
|
"next" => "http://example.com/outbox?page=1"
|
||||||
|
})
|
||||||
|
|
||||||
|
%{method: :get, url: "http://example.com/outbox?page=1"} ->
|
||||||
|
json(%{"type" => "OrderedCollectionPage", "orderedItems" => [1]})
|
||||||
|
end)
|
||||||
|
|
||||||
|
assert Utils.fetch_ordered_collection("http://example.com/outbox", 5) == [0, 1]
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue