From 4ea707b37646df03363016d8f6f4e1e19a9d6fd0 Mon Sep 17 00:00:00 2001 From: Ben Wilson Date: Sat, 3 Apr 2021 00:22:23 -0400 Subject: [PATCH] test refactoring --- .gitignore | 1 + test/absinthe/execution/subscription_test.exs | 38 +------------------ test/support/pubsub.ex | 37 ++++++++++++++++++ 3 files changed, 40 insertions(+), 36 deletions(-) create mode 100644 test/support/pubsub.ex diff --git a/.gitignore b/.gitignore index feaa0b52ca..3076217657 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ missing_rules.rb .DS_Store /priv/plts/*.plt /priv/plts/*.plt.hash +.vscode/ \ No newline at end of file diff --git a/test/absinthe/execution/subscription_test.exs b/test/absinthe/execution/subscription_test.exs index eabee18521..cc87d2d7d2 100644 --- a/test/absinthe/execution/subscription_test.exs +++ b/test/absinthe/execution/subscription_test.exs @@ -3,40 +3,6 @@ defmodule Absinthe.Execution.SubscriptionTest do import ExUnit.CaptureLog - defmodule PubSub do - @behaviour Absinthe.Subscription.Pubsub - - def start_link() do - Registry.start_link(keys: :unique, name: __MODULE__) - end - - def node_name() do - node() - end - - def subscribe(topic) do - Registry.register(__MODULE__, topic, []) - :ok - end - - def publish_subscription(topic, data) do - message = %{ - topic: topic, - event: "subscription:data", - result: data - } - - Registry.dispatch(__MODULE__, topic, fn entries -> - for {pid, _} <- entries, do: send(pid, {:broadcast, message}) - end) - end - - def publish_mutation(_proxy_topic, _mutation_result, _subscribed_fields) do - # this pubsub is local and doesn't support clusters - :ok - end - end - defmodule Schema do use Absinthe.Schema @@ -145,8 +111,8 @@ defmodule Absinthe.Execution.SubscriptionTest do end setup_all do - {:ok, _} = PubSub.start_link() - {:ok, _} = Absinthe.Subscription.start_link(PubSub) + {:ok, _} = start_supervised(PubSub) + {:ok, _} = start_supervised({Absinthe.Subscription, [PubSub]}) :ok end diff --git a/test/support/pubsub.ex b/test/support/pubsub.ex new file mode 100644 index 0000000000..dabb22a539 --- /dev/null +++ b/test/support/pubsub.ex @@ -0,0 +1,37 @@ +defmodule PubSub do + @behaviour Absinthe.Subscription.Pubsub + + def child_spec(opts) do + opts = + opts + |> Keyword.merge(keys: :unique, name: __MODULE__) + + Registry.child_spec(opts) + end + + def node_name() do + node() + end + + def subscribe(topic) do + Registry.register(__MODULE__, topic, []) + :ok + end + + def publish_subscription(topic, data) do + message = %{ + topic: topic, + event: "subscription:data", + result: data + } + + Registry.dispatch(__MODULE__, topic, fn entries -> + for {pid, _} <- entries, do: send(pid, {:broadcast, message}) + end) + end + + def publish_mutation(_proxy_topic, _mutation_result, _subscribed_fields) do + # this pubsub is local and doesn't support clusters + :ok + end +end