fix: destroy action types default to accepts [] (#453)

This commit is contained in:
Frank Dugan III 2022-11-18 17:40:56 -06:00 committed by GitHub
parent 25eaaa91b1
commit e691222af0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 4 deletions

View file

@ -35,10 +35,17 @@ defmodule Ash.Resource.Transformers.DefaultAccept do
{accept, reject} =
case {action.accept, action.reject} do
{_, :all} -> {[], public_attribute_names}
{nil, reject} -> {reject(default_accept, reject), reject}
{:all, reject} -> {reject(public_attribute_names, reject), reject}
{accept, reject} -> {reject(accept, reject), reject}
{_, :all} ->
{[], public_attribute_names}
{nil, reject} ->
{reject(if(action.type != :destroy, do: default_accept, else: []), reject), reject}
{:all, reject} ->
{reject(public_attribute_names, reject), reject}
{accept, reject} ->
{reject(accept, reject), reject}
end
new_dsl_state =

View file

@ -34,12 +34,16 @@ defmodule Ash.Test.Dsl.Resource.Actions.ActionsTest do
create :all_params
create :no_params, accept: []
create :one_param, accept: [:first_name]
destroy :destroy
destroy :destroy_one_param, accept: [:first_name]
end
end
assert Info.action(resource, :all_params).accept == [:id, :first_name, :last_name]
assert Info.action(resource, :no_params).accept == []
assert Info.action(resource, :one_param).accept == [:first_name]
assert Info.action(resource, :destroy).accept == []
assert Info.action(resource, :destroy_one_param).accept == [:first_name]
end
test "some params" do