forked from AkkomaGang/akkoma
Fix flaky expires_at tests
The API parameter is not a timestamp but an offset. If a sufficient amount of time passes between the tests expires_at calculation and the internal calculation during processing of the request the strict equality assertion fails. (Either a direct assertion or indirect via job lookup). To avoid this lower comparison granularity.
This commit is contained in:
parent
0fee71f58f
commit
20c22eb159
1 changed files with 20 additions and 14 deletions
|
@ -111,7 +111,7 @@ test "posting a status", %{conn: conn} do
|
||||||
# 2 hours
|
# 2 hours
|
||||||
expires_in = 2 * 60 * 60
|
expires_in = 2 * 60 * 60
|
||||||
|
|
||||||
expires_at = DateTime.add(DateTime.utc_now(), expires_in)
|
expires_at1 = DateTime.add(DateTime.utc_now(), expires_in)
|
||||||
|
|
||||||
conn_four =
|
conn_four =
|
||||||
conn
|
conn
|
||||||
|
@ -123,12 +123,16 @@ test "posting a status", %{conn: conn} do
|
||||||
|
|
||||||
assert %{"id" => fourth_id} = json_response_and_validate_schema(conn_four, 200)
|
assert %{"id" => fourth_id} = json_response_and_validate_schema(conn_four, 200)
|
||||||
|
|
||||||
assert Activity.get_by_id(fourth_id)
|
activity = Activity.get_by_id(fourth_id)
|
||||||
|
assert activity
|
||||||
|
|
||||||
|
{:ok, expires_at2, _} = DateTime.from_iso8601(activity.data["expires_at"])
|
||||||
|
assert Timex.compare(expires_at1, expires_at2, :minutes) == 0
|
||||||
|
|
||||||
assert_enqueued(
|
assert_enqueued(
|
||||||
worker: Pleroma.Workers.PurgeExpiredActivity,
|
worker: Pleroma.Workers.PurgeExpiredActivity,
|
||||||
args: %{activity_id: fourth_id},
|
args: %{activity_id: fourth_id},
|
||||||
scheduled_at: expires_at
|
scheduled_at: expires_at2
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -148,16 +152,13 @@ test "automatically setting a post expiry if status_ttl_days is set" do
|
||||||
activity = Activity.get_by_id_with_object(id)
|
activity = Activity.get_by_id_with_object(id)
|
||||||
{:ok, expires_at, _} = DateTime.from_iso8601(activity.data["expires_at"])
|
{:ok, expires_at, _} = DateTime.from_iso8601(activity.data["expires_at"])
|
||||||
|
|
||||||
assert Timex.diff(
|
expiry_delay = Timex.diff(expires_at, DateTime.utc_now(), :hours)
|
||||||
expires_at,
|
assert(expiry_delay in [23, 24])
|
||||||
DateTime.utc_now(),
|
|
||||||
:hours
|
|
||||||
) == 23
|
|
||||||
|
|
||||||
assert_enqueued(
|
assert_enqueued(
|
||||||
worker: Pleroma.Workers.PurgeExpiredActivity,
|
worker: Pleroma.Workers.PurgeExpiredActivity,
|
||||||
args: %{activity_id: id},
|
args: %{activity_id: id},
|
||||||
scheduled_at: DateTime.add(DateTime.utc_now(), 1 * 60 * 60 * 24)
|
scheduled_at: expires_at
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -1405,7 +1406,7 @@ test "on pin removes deletion job, on unpin reschedule deletion" do
|
||||||
%{conn: conn} = oauth_access(["write:accounts", "write:statuses"])
|
%{conn: conn} = oauth_access(["write:accounts", "write:statuses"])
|
||||||
expires_in = 2 * 60 * 60
|
expires_in = 2 * 60 * 60
|
||||||
|
|
||||||
expires_at = DateTime.add(DateTime.utc_now(), expires_in)
|
expires_at1 = DateTime.add(DateTime.utc_now(), expires_in)
|
||||||
|
|
||||||
assert %{"id" => id} =
|
assert %{"id" => id} =
|
||||||
conn
|
conn
|
||||||
|
@ -1416,10 +1417,15 @@ test "on pin removes deletion job, on unpin reschedule deletion" do
|
||||||
})
|
})
|
||||||
|> json_response_and_validate_schema(200)
|
|> json_response_and_validate_schema(200)
|
||||||
|
|
||||||
|
activity = Activity.get_by_id(id)
|
||||||
|
{:ok, expires_at2, _} = DateTime.from_iso8601(activity.data["expires_at"])
|
||||||
|
|
||||||
|
assert Timex.compare(expires_at1, expires_at2, :minutes) == 0
|
||||||
|
|
||||||
assert_enqueued(
|
assert_enqueued(
|
||||||
worker: Pleroma.Workers.PurgeExpiredActivity,
|
worker: Pleroma.Workers.PurgeExpiredActivity,
|
||||||
args: %{activity_id: id},
|
args: %{activity_id: id},
|
||||||
scheduled_at: expires_at
|
scheduled_at: expires_at2
|
||||||
)
|
)
|
||||||
|
|
||||||
assert %{"id" => ^id, "pinned" => true} =
|
assert %{"id" => ^id, "pinned" => true} =
|
||||||
|
@ -1431,7 +1437,7 @@ test "on pin removes deletion job, on unpin reschedule deletion" do
|
||||||
refute_enqueued(
|
refute_enqueued(
|
||||||
worker: Pleroma.Workers.PurgeExpiredActivity,
|
worker: Pleroma.Workers.PurgeExpiredActivity,
|
||||||
args: %{activity_id: id},
|
args: %{activity_id: id},
|
||||||
scheduled_at: expires_at
|
scheduled_at: expires_at2
|
||||||
)
|
)
|
||||||
|
|
||||||
assert %{"id" => ^id, "pinned" => false} =
|
assert %{"id" => ^id, "pinned" => false} =
|
||||||
|
@ -1443,7 +1449,7 @@ test "on pin removes deletion job, on unpin reschedule deletion" do
|
||||||
assert_enqueued(
|
assert_enqueued(
|
||||||
worker: Pleroma.Workers.PurgeExpiredActivity,
|
worker: Pleroma.Workers.PurgeExpiredActivity,
|
||||||
args: %{activity_id: id},
|
args: %{activity_id: id},
|
||||||
scheduled_at: expires_at
|
scheduled_at: expires_at2
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -1944,7 +1950,7 @@ test "expires_at is nil for another user" do
|
||||||
|> json_response_and_validate_schema(:ok)
|
|> json_response_and_validate_schema(:ok)
|
||||||
|
|
||||||
{:ok, a_expires_at, 0} = DateTime.from_iso8601(a_expires_at)
|
{:ok, a_expires_at, 0} = DateTime.from_iso8601(a_expires_at)
|
||||||
assert DateTime.diff(expires_at, a_expires_at) == 0
|
assert Timex.compare(expires_at, a_expires_at, :minutes) == 0
|
||||||
|
|
||||||
%{conn: conn} = oauth_access(["read:statuses"])
|
%{conn: conn} = oauth_access(["read:statuses"])
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue