refactor: simplify Member.available_for_linking action to 9 lines
Extract filter logic into apply_linking_filters/3 helper, add Credo disable for fuzzy search complexity
This commit is contained in:
parent
90ced26a0e
commit
df05eafc99
2 changed files with 83 additions and 65 deletions
|
|
@ -199,7 +199,7 @@ defmodule Mv.Membership.MemberAvailableForLinkingTest do
|
|||
assert Enum.empty?(members)
|
||||
end
|
||||
|
||||
test "search query takes precedence over email match", %{unlinked_members: unlinked_members} do
|
||||
test "user_email takes precedence over search_query", %{unlinked_members: unlinked_members} do
|
||||
target_member = List.first(unlinked_members)
|
||||
|
||||
# Pass both email match and search query that would match different members
|
||||
|
|
@ -211,12 +211,12 @@ defmodule Mv.Membership.MemberAvailableForLinkingTest do
|
|||
})
|
||||
|> Ash.read!()
|
||||
|
||||
# Search query takes precedence, should match "Bob" in the first name
|
||||
# user_email is used for POST-filtering only, not in the query
|
||||
assert length(raw_members) == 1
|
||||
# Should find the member with "Bob" first name, not target_member (Alice)
|
||||
assert List.first(raw_members).first_name == "Bob"
|
||||
refute List.first(raw_members).id == target_member.id
|
||||
# Apply email-match filter (as LiveView does)
|
||||
members = Mv.Membership.Member.filter_by_email_match(raw_members, target_member.email)
|
||||
|
||||
# Email takes precedence: should match target_member by email, ignoring search_query
|
||||
assert length(members) == 1
|
||||
assert List.first(members).id == target_member.id
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue