mirror of
https://github.com/ash-project/ash_graphql.git
synced 2024-09-20 21:32:59 +12:00
68 lines
1.6 KiB
Elixir
68 lines
1.6 KiB
Elixir
defmodule AshGraphql.SubscriptionTest do
|
|
use ExUnit.Case
|
|
|
|
alias AshGraphql.Test.PubSub
|
|
alias AshGraphql.Test.Schema
|
|
|
|
setup do
|
|
Application.put_env(PubSub, :notifier_test_pid, self() |> IO.inspect(label: :test_process))
|
|
{:ok, _} = PubSub.start_link()
|
|
{:ok, _} = Absinthe.Subscription.start_link(PubSub)
|
|
:ok
|
|
end
|
|
|
|
@query """
|
|
subscription {
|
|
subscribableCreated { id }
|
|
}
|
|
"""
|
|
@tag :wip
|
|
test "subscription triggers work" do
|
|
id = "1"
|
|
|
|
assert {:ok, %{"subscribed" => topic}} =
|
|
run_subscription(
|
|
@query,
|
|
Schema,
|
|
variables: %{"userId" => id},
|
|
context: %{pubsub: PubSub, actor: %{id: id}}
|
|
)
|
|
|
|
mutation = """
|
|
mutation CreateSubscribable($input: CreateSubscribableInput) {
|
|
createSubscribable(input: $input) {
|
|
result{
|
|
text
|
|
}
|
|
errors{
|
|
message
|
|
}
|
|
}
|
|
}
|
|
"""
|
|
|
|
IO.inspect(self())
|
|
|
|
assert {:ok, %{data: data}} =
|
|
run_subscription(mutation, Schema,
|
|
variables: %{"input" => %{"text" => "foo"}},
|
|
context: %{pubsub: PubSub}
|
|
)
|
|
|
|
assert_receive({:broadcast, absinthe_proxy, data, fields})
|
|
end
|
|
|
|
defp run_subscription(query, schema, opts) do
|
|
opts = Keyword.update(opts, :context, %{pubsub: PubSub}, &Map.put(&1, :pubsub, PubSub))
|
|
|
|
case Absinthe.run(query, schema, opts) do
|
|
# |> IO.inspect(label: :absinthe_run) do
|
|
{:ok, %{"subscribed" => topic}} = val ->
|
|
PubSub.subscribe(topic)
|
|
val
|
|
|
|
val ->
|
|
val
|
|
end
|
|
end
|
|
end
|