diff options
| -rw-r--r-- | lib/pleroma/web/mastodon_api/controllers/poll_controller.ex | 6 | ||||
| -rw-r--r-- | test/pleroma/web/mastodon_api/controllers/poll_controller_test.exs | 19 | 
2 files changed, 23 insertions, 2 deletions
diff --git a/lib/pleroma/web/mastodon_api/controllers/poll_controller.ex b/lib/pleroma/web/mastodon_api/controllers/poll_controller.ex index f89bfa7f2..495f89278 100644 --- a/lib/pleroma/web/mastodon_api/controllers/poll_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/poll_controller.ex @@ -34,8 +34,10 @@ defmodule Pleroma.Web.MastodonAPI.PollController do      with %Object{} = object <- Object.get_by_id(id),           %Activity{} = activity <- Activity.get_create_by_object_ap_id(object.data["id"]),           true <- Visibility.visible_for_user?(activity, user) do -      PollWorker.new(%{"op" => "refresh", "activity_id" => activity.id}) -      |> Oban.insert(unique: [period: 60]) +      unless activity.local do +        PollWorker.new(%{"op" => "refresh", "activity_id" => activity.id}) +        |> Oban.insert(unique: [period: 60]) +      end        try_render(conn, "show.json", %{object: object, for: user})      else diff --git a/test/pleroma/web/mastodon_api/controllers/poll_controller_test.exs b/test/pleroma/web/mastodon_api/controllers/poll_controller_test.exs index b2cceec51..4b236678c 100644 --- a/test/pleroma/web/mastodon_api/controllers/poll_controller_test.exs +++ b/test/pleroma/web/mastodon_api/controllers/poll_controller_test.exs @@ -29,6 +29,25 @@ defmodule Pleroma.Web.MastodonAPI.PollControllerTest do        id = to_string(object.id)        assert %{"id" => ^id, "expired" => false, "multiple" => false} = response +      refute_enqueued( +        worker: Pleroma.Workers.PollWorker, +        args: %{"op" => "refresh", "activity_id" => activity.id} +      ) +    end + +    test "does not create oban job to refresh poll if activity is local", %{conn: conn} do +      user = insert(:user, local: false) +      question = insert(:question, user: user) +      activity = insert(:question_activity, question: question, local: false) + +      # Ensure this is not represented as a local activity +      refute activity.local + +      object = Object.normalize(activity, fetch: false) + +      get(conn, "/api/v1/polls/#{object.id}") +      |> json_response_and_validate_schema(200) +        assert_enqueued(          worker: Pleroma.Workers.PollWorker,          args: %{"op" => "refresh", "activity_id" => activity.id}  | 
