From 0ed6d09376fe3adefdbf4b4a4d5318649ac96d20 Mon Sep 17 00:00:00 2001 From: Braidon Whatley Date: Wed, 17 Jul 2024 18:46:49 +1000 Subject: [PATCH] handle {:shared_owner, owner} in __fetch_plug__ (#387) --- lib/req/test.ex | 11 +++++++++++ test/req/test_test.exs | 10 ++++++++++ 2 files changed, 21 insertions(+) diff --git a/lib/req/test.ex b/lib/req/test.ex index ca3ae35d..cfb4b869 100644 --- a/lib/req/test.ex +++ b/lib/req/test.ex @@ -384,6 +384,17 @@ defmodule Req.Test do raise "no mock or stub for #{inspect(name)}" end + {:shared_owner, owner} when is_pid(owner) -> + result = Req.Test.Ownership.get_owned(@ownership, owner)[name] + + case result do + %{stub: value} -> + value + + {:ok, {:error, :no_expectations_and_no_stub}} -> + raise "no mock or stub for #{inspect(name)}" + end + :error -> raise "cannot find mock/stub #{inspect(name)} in process #{inspect(self())}" end diff --git a/test/req/test_test.exs b/test/req/test_test.exs index 7234ce1b..ab3aef63 100644 --- a/test/req/test_test.exs +++ b/test/req/test_test.exs @@ -20,6 +20,16 @@ defmodule Req.TestTest do |> Task.await() assert Req.Test.__fetch_plug__(:foo) == {MyPlug, [2]} + + Req.Test.stub(:bar, {SharedPlug, [1]}) + Req.Test.set_req_test_to_shared() + + Task.async(fn -> + assert Req.Test.__fetch_plug__(:bar) == {SharedPlug, [1]} + end) + |> Task.await() + after + Req.Test.set_req_test_to_private() end describe "expect/3" do