Skip to content

Commit 3193d98

Browse files
authored
Merge pull request #648 from code-corps/535-add-unique-constraint-to-membership-create-changeset
Added unique constraint to member/organization of organization membership
2 parents 140de9b + f724972 commit 3193d98

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

test/models/organization_membership_test.exs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,5 +80,18 @@ defmodule CodeCorps.OrganizationMembershipTest do
8080
assert result == :error
8181
changeset |> assert_error_message(:member, "does not exist")
8282
end
83+
84+
test "ensures uniqueness of organization/member combination" do
85+
existing = insert(:organization_membership)
86+
87+
changeset = OrganizationMembership.create_changeset(
88+
%OrganizationMembership{},
89+
%{member_id: existing.member_id, organization_id: existing.organization_id}
90+
)
91+
92+
{:error, changeset} = changeset |> Repo.insert
93+
94+
changeset |> assert_error_message(:member, "has already been taken")
95+
end
8396
end
8497
end

web/models/organization_membership.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ defmodule CodeCorps.OrganizationMembership do
2424
|> validate_required([:member_id, :organization_id])
2525
|> assoc_constraint(:member)
2626
|> assoc_constraint(:organization)
27+
|> unique_constraint(:member, name: :organization_memberships_member_id_organization_id_index)
2728
|> put_change(:role, "pending")
2829
end
2930

0 commit comments

Comments
 (0)