Skip to content

Commit

Permalink
fix: return correct changeset params when foreign key is set
Browse files Browse the repository at this point in the history
  • Loading branch information
cylkdev committed Nov 24, 2022
1 parent 8cdc270 commit 789e171
Showing 1 changed file with 13 additions and 16 deletions.
29 changes: 13 additions & 16 deletions lib/factory_ex/schema_associations_builder.ex
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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

Expand All @@ -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)

Expand Down

0 comments on commit 789e171

Please sign in to comment.