From 7afd710ffe21b7814f284977de63d4049e987540 Mon Sep 17 00:00:00 2001 From: kernel-io Date: Wed, 2 Jul 2025 03:29:00 +1200 Subject: [PATCH 1/3] failing test Signed-off-by: kernel-io --- test/parent_filter_policy_test.ex | 35 +++++++++++++++++++++++++++++++ test/support/resources/post.ex | 15 +++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 test/parent_filter_policy_test.ex diff --git a/test/parent_filter_policy_test.ex b/test/parent_filter_policy_test.ex new file mode 100644 index 00000000..89d26d6c --- /dev/null +++ b/test/parent_filter_policy_test.ex @@ -0,0 +1,35 @@ +defmodule ParentFilterPolicyTest do + use AshPostgres.RepoCase, async: false + + alias AshPostgres.Test.{Organization, Post, User} + + require Ash.Query + + test "building references don't throw an exception when doing weird things" do + organization = + Organization + |> Ash.Changeset.for_create(:create, %{name: "test_org"}) + |> Ash.create!() + + user = + User + |> Ash.Changeset.for_create(:create, %{organization_id: organization.id, name: "foo bar"}) + |> Ash.create!() + + Post + |> Ash.Changeset.for_create(:create, %{organization_id: organization.id}) + |> Ash.create!() + + Post + |> Ash.Changeset.for_create(:create, %{organization_id: organization.id, title: "test_org"}) + |> Ash.create!() + + assert {:ok, _results} = + Post + |> Ash.Query.for_read(:weird) + |> Ash.read( + authorize?: true, + actor: user + ) + end +end diff --git a/test/support/resources/post.ex b/test/support/resources/post.ex index 5ff80458..9243a3c3 100644 --- a/test/support/resources/post.ex +++ b/test/support/resources/post.ex @@ -92,6 +92,12 @@ defmodule AshPostgres.Test.Post do authorize_if(relates_to_actor_via([:organization, :users])) end + policy action(:weird) do + authorize_if( + relates_to_actor_via([:posts_with_my_organization_name_as_a_title, :organization, :users]) + ) + end + policy action(:allow_any) do authorize_if(always()) end @@ -360,6 +366,9 @@ defmodule AshPostgres.Test.Post do filter(expr(title == "foo")) end + read :weird do + end + read :category_matches do argument(:category, CiCategory) filter(expr(category == ^arg(:category))) @@ -599,6 +608,12 @@ defmodule AshPostgres.Test.Post do filter(expr(^actor(:id) == id)) end + has_many(:posts_with_my_organization_name_as_a_title, __MODULE__) do + public?(true) + no_attributes?(true) + filter(expr(fragment("? = ?", organization.name, parent(organization.name)))) + end + belongs_to :parent_post, __MODULE__ do public?(true) end From 89f0250d013af1642635019d6d036e99f34f6188 Mon Sep 17 00:00:00 2001 From: kernel-io Date: Thu, 3 Jul 2025 11:09:16 +1200 Subject: [PATCH 2/3] cleaned up and added another failing test Signed-off-by: kernel-io --- mix.lock | 10 +++++----- ...ilter_policy_test.ex => parent_filter_test.exs} | 14 +++++++++++--- test/support/resources/post.ex | 4 ++-- 3 files changed, 18 insertions(+), 10 deletions(-) rename test/{parent_filter_policy_test.ex => parent_filter_test.exs} (61%) diff --git a/mix.lock b/mix.lock index b802109e..7f05569e 100644 --- a/mix.lock +++ b/mix.lock @@ -1,6 +1,6 @@ %{ - "ash": {:hex, :ash, "3.5.24", "47bffb562c39482315d245ce22a381768b1bc16628ba974195630f3ca87d6218", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:ecto, "~> 3.7", [hex: :ecto, repo: "hexpm", optional: false]}, {:ets, "~> 0.8", [hex: :ets, repo: "hexpm", optional: false]}, {:igniter, ">= 0.6.4 and < 1.0.0-0", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, ">= 1.0.0", [hex: :jason, repo: "hexpm", optional: false]}, {:picosat_elixir, "~> 0.2", [hex: :picosat_elixir, repo: "hexpm", optional: true]}, {:plug, ">= 0.0.0", [hex: :plug, repo: "hexpm", optional: true]}, {:reactor, "~> 0.11", [hex: :reactor, repo: "hexpm", optional: false]}, {:simple_sat, ">= 0.1.1 and < 1.0.0-0", [hex: :simple_sat, repo: "hexpm", optional: true]}, {:spark, ">= 2.2.65 and < 3.0.0-0", [hex: :spark, repo: "hexpm", optional: false]}, {:splode, ">= 0.2.6 and < 1.0.0-0", [hex: :splode, repo: "hexpm", optional: false]}, {:stream_data, "~> 1.0", [hex: :stream_data, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.1", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "881e0decc5e75a0109ca545472b5c6ecb3b28893fec9eaf1866b8c35ddf78c16"}, - "ash_sql": {:hex, :ash_sql, "0.2.83", "de8a9776186d1d1df54e265c1cf0c4e61c1d72be1297c9538f1a32eb9b84de55", [:mix], [{:ash, "~> 3.5", [hex: :ash, repo: "hexpm", optional: false]}, {:ecto, "~> 3.9", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_sql, "~> 3.9", [hex: :ecto_sql, repo: "hexpm", optional: false]}], "hexpm", "5c99192814177d589d2ba518968b97d1ec7af12446631e3e5538f7a617d7d289"}, + "ash": {:hex, :ash, "3.5.25", "99f7139e98b745a64312ae80e2420589205b2fec1799f00fc58da771d2c63373", [:mix], [{:decimal, "~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:ecto, "~> 3.7", [hex: :ecto, repo: "hexpm", optional: false]}, {:ets, "~> 0.8", [hex: :ets, repo: "hexpm", optional: false]}, {:igniter, ">= 0.6.4 and < 1.0.0-0", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, ">= 1.0.0", [hex: :jason, repo: "hexpm", optional: false]}, {:picosat_elixir, "~> 0.2", [hex: :picosat_elixir, repo: "hexpm", optional: true]}, {:plug, ">= 0.0.0", [hex: :plug, repo: "hexpm", optional: true]}, {:reactor, "~> 0.11", [hex: :reactor, repo: "hexpm", optional: false]}, {:simple_sat, ">= 0.1.1 and < 1.0.0-0", [hex: :simple_sat, repo: "hexpm", optional: true]}, {:spark, ">= 2.2.65 and < 3.0.0-0", [hex: :spark, repo: "hexpm", optional: false]}, {:splode, ">= 0.2.6 and < 1.0.0-0", [hex: :splode, repo: "hexpm", optional: false]}, {:stream_data, "~> 1.0", [hex: :stream_data, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.1", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "d45844ea30062b796d4adcad75b8d91e21081ac0f1bb6627d1a2663ca5ecf258"}, + "ash_sql": {:hex, :ash_sql, "0.2.84", "1187555609f4773aacb5cccdca82a78c2b3f7390e78b400a8f03c91b2e7cd82f", [:mix], [{:ash, ">= 3.5.25 and < 4.0.0-0", [hex: :ash, repo: "hexpm", optional: false]}, {:ecto, "~> 3.9", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_sql, "~> 3.9", [hex: :ecto_sql, repo: "hexpm", optional: false]}], "hexpm", "5e6a4d3070e60a0653c572527276a8c034b9458e37b1aca8868b17fcf0a1d1c0"}, "benchee": {:hex, :benchee, "1.4.0", "9f1f96a30ac80bab94faad644b39a9031d5632e517416a8ab0a6b0ac4df124ce", [:mix], [{:deep_merge, "~> 1.0", [hex: :deep_merge, repo: "hexpm", optional: false]}, {:statistex, "~> 1.0", [hex: :statistex, repo: "hexpm", optional: false]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "299cd10dd8ce51c9ea3ddb74bb150f93d25e968f93e4c1fa31698a8e4fa5d715"}, "bunt": {:hex, :bunt, "1.0.0", "081c2c665f086849e6d57900292b3a161727ab40431219529f13c4ddcf3e7a44", [:mix], [], "hexpm", "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5"}, "credo": {:hex, :credo, "1.7.12", "9e3c20463de4b5f3f23721527fcaf16722ec815e70ff6c60b86412c695d426c1", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "8493d45c656c5427d9c729235b99d498bd133421f3e0a683e5c1b561471291e5"}, @@ -23,7 +23,7 @@ "git_ops": {:hex, :git_ops, "2.8.0", "29ac9ab68bf9645973cb2752047b987e75cbd3d9761489c615e3ba80018fa885", [:mix], [{:git_cli, "~> 0.2", [hex: :git_cli, repo: "hexpm", optional: false]}, {:igniter, ">= 0.5.27 and < 1.0.0-0", [hex: :igniter, repo: "hexpm", optional: true]}, {:nimble_parsec, "~> 1.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}, {:req, "~> 0.5", [hex: :req, repo: "hexpm", optional: false]}], "hexpm", "b535e4ad6b5d13e14c455e76f65825659081b5530b0827eb0232d18719530eec"}, "glob_ex": {:hex, :glob_ex, "0.1.11", "cb50d3f1ef53f6ca04d6252c7fde09fd7a1cf63387714fe96f340a1349e62c93", [:mix], [], "hexpm", "342729363056e3145e61766b416769984c329e4378f1d558b63e341020525de4"}, "hpax": {:hex, :hpax, "1.0.3", "ed67ef51ad4df91e75cc6a1494f851850c0bd98ebc0be6e81b026e765ee535aa", [:mix], [], "hexpm", "8eab6e1cfa8d5918c2ce4ba43588e894af35dbd8e91e6e55c817bca5847df34a"}, - "igniter": {:hex, :igniter, "0.6.9", "99dd9ea7bcf2fe829617dac660069b3461183e4efbf303dd120fdef96923287d", [:mix], [{:glob_ex, "~> 0.1.7", [hex: :glob_ex, repo: "hexpm", optional: false]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:owl, "~> 0.11", [hex: :owl, repo: "hexpm", optional: false]}, {:phx_new, "~> 1.7", [hex: :phx_new, repo: "hexpm", optional: true]}, {:req, "~> 0.5", [hex: :req, repo: "hexpm", optional: false]}, {:rewrite, ">= 1.1.1 and < 2.0.0-0", [hex: :rewrite, repo: "hexpm", optional: false]}, {:sourceror, "~> 1.4", [hex: :sourceror, repo: "hexpm", optional: false]}, {:spitfire, ">= 0.1.3 and < 1.0.0-0", [hex: :spitfire, repo: "hexpm", optional: false]}], "hexpm", "5fe407e10bc9416f7cd6af90d0409c8226ff2acacb9a7e7b9a097a66c8b5caef"}, + "igniter": {:hex, :igniter, "0.6.10", "896d75fc48ed493ff22accd111fe2e34747163d26c5f374267bad1ef4a6c5076", [:mix], [{:glob_ex, "~> 0.1.7", [hex: :glob_ex, repo: "hexpm", optional: false]}, {:jason, "~> 1.4", [hex: :jason, repo: "hexpm", optional: false]}, {:owl, "~> 0.11", [hex: :owl, repo: "hexpm", optional: false]}, {:phx_new, "~> 1.7", [hex: :phx_new, repo: "hexpm", optional: true]}, {:req, "~> 0.5", [hex: :req, repo: "hexpm", optional: false]}, {:rewrite, ">= 1.1.1 and < 2.0.0-0", [hex: :rewrite, repo: "hexpm", optional: false]}, {:sourceror, "~> 1.4", [hex: :sourceror, repo: "hexpm", optional: false]}, {:spitfire, ">= 0.1.3 and < 1.0.0-0", [hex: :spitfire, repo: "hexpm", optional: false]}], "hexpm", "9a3abc56e94f362730a3023dfe0ac2ced1186f95fa1ccf4cc30df0c8ce0fc276"}, "iterex": {:hex, :iterex, "0.1.2", "58f9b9b9a22a55cbfc7b5234a9c9c63eaac26d276b3db80936c0e1c60355a5a6", [:mix], [], "hexpm", "2e103b8bcc81757a9af121f6dc0df312c9a17220f302b1193ef720460d03029d"}, "jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"}, "libgraph": {:hex, :libgraph, "0.16.0", "3936f3eca6ef826e08880230f806bfea13193e49bf153f93edcf0239d4fd1d07", [:mix], [], "hexpm", "41ca92240e8a4138c30a7e06466acc709b0cbb795c643e9e17174a178982d6bf"}, @@ -38,8 +38,8 @@ "nimble_pool": {:hex, :nimble_pool, "1.1.0", "bf9c29fbdcba3564a8b800d1eeb5a3c58f36e1e11d7b7fb2e084a643f645f06b", [:mix], [], "hexpm", "af2e4e6b34197db81f7aad230c1118eac993acc0dae6bc83bac0126d4ae0813a"}, "owl": {:hex, :owl, "0.12.2", "65906b525e5c3ef51bab6cba7687152be017aebe1da077bb719a5ee9f7e60762", [:mix], [{:ucwidth, "~> 0.2", [hex: :ucwidth, repo: "hexpm", optional: true]}], "hexpm", "6398efa9e1fea70a04d24231e10dcd66c1ac1aa2da418d20ef5357ec61de2880"}, "postgrex": {:hex, :postgrex, "0.20.0", "363ed03ab4757f6bc47942eff7720640795eb557e1935951c1626f0d303a3aed", [:mix], [{:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "d36ef8b36f323d29505314f704e21a1a038e2dc387c6409ee0cd24144e187c0f"}, - "reactor": {:hex, :reactor, "0.15.5", "341d9ee664d6141df6639f227692ee6adc8a493d04232dee79e8a4a88e6cef8a", [:mix], [{:igniter, "~> 0.4", [hex: :igniter, repo: "hexpm", optional: true]}, {:iterex, "~> 0.1", [hex: :iterex, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:libgraph, "~> 0.16", [hex: :libgraph, repo: "hexpm", optional: false]}, {:spark, "~> 2.0", [hex: :spark, repo: "hexpm", optional: false]}, {:splode, "~> 0.2", [hex: :splode, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.2", [hex: :telemetry, repo: "hexpm", optional: false]}, {:yaml_elixir, "~> 2.11", [hex: :yaml_elixir, repo: "hexpm", optional: false]}, {:ymlr, "~> 5.0", [hex: :ymlr, repo: "hexpm", optional: false]}], "hexpm", "f9f440ecbdb0c41a832902a692608bd24be621fa7a602819d0dd12971d69f9aa"}, - "req": {:hex, :req, "0.5.12", "7ce85835867a114c28b6cfc2d8a412f86660290907315ceb173a00e587b853d2", [:mix], [{:brotli, "~> 0.3.1", [hex: :brotli, repo: "hexpm", optional: true]}, {:ezstd, "~> 1.0", [hex: :ezstd, repo: "hexpm", optional: true]}, {:finch, "~> 0.17", [hex: :finch, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mime, "~> 2.0.6 or ~> 2.1", [hex: :mime, repo: "hexpm", optional: false]}, {:nimble_csv, "~> 1.0", [hex: :nimble_csv, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "d65f3d0e7032eb245706554cb5240dbe7a07493154e2dd34e7bb65001aa6ef32"}, + "reactor": {:hex, :reactor, "0.15.6", "d717f9add549b25a089a94c90197718d2d838e35d81dd776b1d81587d4cf2aaa", [:mix], [{:igniter, "~> 0.4", [hex: :igniter, repo: "hexpm", optional: true]}, {:iterex, "~> 0.1", [hex: :iterex, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:libgraph, "~> 0.16", [hex: :libgraph, repo: "hexpm", optional: false]}, {:spark, "~> 2.0", [hex: :spark, repo: "hexpm", optional: false]}, {:splode, "~> 0.2", [hex: :splode, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.2", [hex: :telemetry, repo: "hexpm", optional: false]}, {:yaml_elixir, "~> 2.11", [hex: :yaml_elixir, repo: "hexpm", optional: false]}, {:ymlr, "~> 5.0", [hex: :ymlr, repo: "hexpm", optional: false]}], "hexpm", "74db98165e3644d86e0f723672d91ceca4339eaa935bcad7e78bf146a46d77b9"}, + "req": {:hex, :req, "0.5.14", "521b449fa0bf275e6d034c05f29bec21789a0d6cd6f7a1c326c7bee642bf6e07", [:mix], [{:brotli, "~> 0.3.1", [hex: :brotli, repo: "hexpm", optional: true]}, {:ezstd, "~> 1.0", [hex: :ezstd, repo: "hexpm", optional: true]}, {:finch, "~> 0.17", [hex: :finch, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mime, "~> 2.0.6 or ~> 2.1", [hex: :mime, repo: "hexpm", optional: false]}, {:nimble_csv, "~> 1.0", [hex: :nimble_csv, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "b7b15692071d556c73432c7797aa7e96b51d1a2db76f746b976edef95c930021"}, "rewrite": {:hex, :rewrite, "1.1.2", "f5a5d10f5fed1491a6ff48e078d4585882695962ccc9e6c779bae025d1f92eda", [:mix], [{:glob_ex, "~> 0.1", [hex: :glob_ex, repo: "hexpm", optional: false]}, {:sourceror, "~> 1.0", [hex: :sourceror, repo: "hexpm", optional: false]}, {:text_diff, "~> 0.1", [hex: :text_diff, repo: "hexpm", optional: false]}], "hexpm", "7f8b94b1e3528d0a47b3e8b7bfeca559d2948a65fa7418a9ad7d7712703d39d4"}, "simple_sat": {:hex, :simple_sat, "0.1.3", "f650fc3c184a5fe741868b5ac56dc77fdbb428468f6dbf1978e14d0334497578", [:mix], [], "hexpm", "a54305066a356b7194dc81db2a89232bacdc0b3edaef68ed9aba28dcbc34887b"}, "sobelow": {:hex, :sobelow, "0.14.0", "dd82aae8f72503f924fe9dd97ffe4ca694d2f17ec463dcfd365987c9752af6ee", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "7ecf91e298acfd9b24f5d761f19e8f6e6ac585b9387fb6301023f1f2cd5eed5f"}, diff --git a/test/parent_filter_policy_test.ex b/test/parent_filter_test.exs similarity index 61% rename from test/parent_filter_policy_test.ex rename to test/parent_filter_test.exs index 89d26d6c..d13044a9 100644 --- a/test/parent_filter_policy_test.ex +++ b/test/parent_filter_test.exs @@ -1,11 +1,11 @@ -defmodule ParentFilterPolicyTest do +defmodule AshPostgres.Test.ParentFilterTest do use AshPostgres.RepoCase, async: false alias AshPostgres.Test.{Organization, Post, User} require Ash.Query - test "building references don't throw an exception when doing weird things" do + test "when the first relationship in an `exists` path has parent references in its filter, we don't get error" do organization = Organization |> Ash.Changeset.for_create(:create, %{name: "test_org"}) @@ -26,10 +26,18 @@ defmodule ParentFilterPolicyTest do assert {:ok, _results} = Post - |> Ash.Query.for_read(:weird) + |> Ash.Query.for_read(:read_with_policy_with_parent) |> Ash.read( authorize?: true, actor: user ) + + assert {:ok, _} = + Post + |> Ash.Query.filter( + organization.posts.posts_with_my_organization_name_as_a_title.organization.users.name == + "tuna" + ) + |> Ash.read(authorize?: false) end end diff --git a/test/support/resources/post.ex b/test/support/resources/post.ex index 9243a3c3..7f04ff3c 100644 --- a/test/support/resources/post.ex +++ b/test/support/resources/post.ex @@ -92,7 +92,7 @@ defmodule AshPostgres.Test.Post do authorize_if(relates_to_actor_via([:organization, :users])) end - policy action(:weird) do + policy action(:read_with_policy_with_parent) do authorize_if( relates_to_actor_via([:posts_with_my_organization_name_as_a_title, :organization, :users]) ) @@ -366,7 +366,7 @@ defmodule AshPostgres.Test.Post do filter(expr(title == "foo")) end - read :weird do + read :read_with_policy_with_parent do end read :category_matches do From 47524ae5beb7a85062411c1358e34c32987d96e8 Mon Sep 17 00:00:00 2001 From: kernel-io Date: Thu, 3 Jul 2025 21:09:45 +1200 Subject: [PATCH 3/3] updated tests Signed-off-by: kernel-io --- test/parent_filter_test.exs | 12 ++++++++---- test/support/resources/post.ex | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/test/parent_filter_test.exs b/test/parent_filter_test.exs index d13044a9..fefbde24 100644 --- a/test/parent_filter_test.exs +++ b/test/parent_filter_test.exs @@ -11,20 +11,25 @@ defmodule AshPostgres.Test.ParentFilterTest do |> Ash.Changeset.for_create(:create, %{name: "test_org"}) |> Ash.create!() + not_my_organization = + Organization + |> Ash.Changeset.for_create(:create, %{name: "test_org_2"}) + |> Ash.create!() + user = User |> Ash.Changeset.for_create(:create, %{organization_id: organization.id, name: "foo bar"}) |> Ash.create!() Post - |> Ash.Changeset.for_create(:create, %{organization_id: organization.id}) + |> Ash.Changeset.for_create(:create, %{organization_id: not_my_organization.id}) |> Ash.create!() Post |> Ash.Changeset.for_create(:create, %{organization_id: organization.id, title: "test_org"}) |> Ash.create!() - assert {:ok, _results} = + assert {:ok, [%Post{title: "test_org"}]} = Post |> Ash.Query.for_read(:read_with_policy_with_parent) |> Ash.read( @@ -35,8 +40,7 @@ defmodule AshPostgres.Test.ParentFilterTest do assert {:ok, _} = Post |> Ash.Query.filter( - organization.posts.posts_with_my_organization_name_as_a_title.organization.users.name == - "tuna" + organization.posts.posts_with_my_organization_name_as_a_title.title == "tuna" ) |> Ash.read(authorize?: false) end diff --git a/test/support/resources/post.ex b/test/support/resources/post.ex index 7f04ff3c..5da68941 100644 --- a/test/support/resources/post.ex +++ b/test/support/resources/post.ex @@ -611,7 +611,7 @@ defmodule AshPostgres.Test.Post do has_many(:posts_with_my_organization_name_as_a_title, __MODULE__) do public?(true) no_attributes?(true) - filter(expr(fragment("? = ?", organization.name, parent(organization.name)))) + filter(expr(fragment("? = ?", title, parent(organization.name)))) end belongs_to :parent_post, __MODULE__ do