From 789e171acd55de34a83b2d718f11b72558404450 Mon Sep 17 00:00:00 2001 From: Kurt Hogarth <87607684+cylkdev@users.noreply.github.com> Date: Thu, 24 Nov 2022 12:29:55 -0800 Subject: [PATCH] fix: return correct changeset params when foreign key is set --- lib/factory_ex/schema_associations_builder.ex | 29 +++++++++---------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/lib/factory_ex/schema_associations_builder.ex b/lib/factory_ex/schema_associations_builder.ex index 3776071..dfa94da 100644 --- a/lib/factory_ex/schema_associations_builder.ex +++ b/lib/factory_ex/schema_associations_builder.ex @@ -66,18 +66,18 @@ defmodule FactoryEx.SchemaAssociationsBuilder do maybe_create_many_new_assocs( ecto_assoc.queryable, params, + ecto_assoc.owner_key, field, - assoc_keys, - ecto_assoc.owner_key + assoc_keys ) ecto_assoc.cardinality === :one -> maybe_create_new_assoc( ecto_assoc.queryable, params, + ecto_assoc.owner_key, field, - assoc_keys, - ecto_assoc.owner_key + assoc_keys ) end @@ -89,20 +89,19 @@ defmodule FactoryEx.SchemaAssociationsBuilder do convert_to_ecto_schema_assoc_params({field, []}, params, ecto_assocs, ecto_schema) end - defp maybe_create_many_new_assocs(queryable, params, field, assoc_keys, owner_key) do + defp maybe_create_many_new_assocs(queryable, params, owner_key, field, assoc_keys) do + changeset_params = Map.get(params, field, [%{}]) case Map.get(params, owner_key) do - nil -> - params = Map.get(params, field, %{}) - factory_reflections_build_many(queryable, params, assoc_keys) - - _owner_key -> params + nil -> factory_reflections_build_many(queryable, changeset_params, assoc_keys) + _foreign_key -> changeset_params end end - defp maybe_create_new_assoc(queryable, params, field, assoc_keys, owner_key) do + defp maybe_create_new_assoc(queryable, params, owner_key, field, assoc_keys) do + changeset_params = Map.get(params, field, %{}) case Map.get(params, owner_key) do - nil -> factory_reflections_build(queryable, params, field, assoc_keys) - _owner_key -> params + nil -> factory_reflections_build(queryable, changeset_params, assoc_keys) + _foreign_key -> changeset_params end end @@ -124,9 +123,7 @@ defmodule FactoryEx.SchemaAssociationsBuilder do |> Enum.map(&Map.merge(&1, assoc_params)) end - defp factory_reflections_build(queryable, params, field, assoc_keys) do - params = Map.get(params, field, %{}) - + defp factory_reflections_build(queryable, params, assoc_keys) do assoc_params = create_ecto_schema_reflections(queryable, params, assoc_keys) params = QueryableEtsFactory.build_params(queryable, params)