Skip to content

Commit

Permalink
fixup! appease RubocopRails: Rails/HasManyOrHasOneDependent
Browse files Browse the repository at this point in the history
  • Loading branch information
robbkidd committed Jun 30, 2020
1 parent b766886 commit 22a24bf
Show file tree
Hide file tree
Showing 2 changed files with 123 additions and 0 deletions.
24 changes: 24 additions & 0 deletions src/supermarket/spec/models/group_spec.rb
Expand Up @@ -5,6 +5,30 @@
it { should have_many(:group_members) }
it { should have_many(:members) }
it { should have_many(:group_resources) }

context "when group is being destroyed" do
context "also destroys the group's" do
it "memberships" do
membership = create(:group_member)
group = membership.group
user = membership.user

expect { group.destroy }
.to change { user.memberships.count }
.by(-1)
end

it "resource associations" do
group_resource = create(:group_resource)
group = group_resource.group
resource = group_resource.resourceable

expect { group.destroy }
.to change { resource.group_resources.count }
.by(-1)
end
end
end
end

it "requires a name" do
Expand Down
99 changes: 99 additions & 0 deletions src/supermarket/spec/models/user_spec.rb
Expand Up @@ -11,6 +11,105 @@
it { should have_many(:tools) }
it { should have_many(:group_members) }
it { should have_many(:memberships) }

context "when user is being destroyed" do
context "also destroys the user's" do
it "accounts" do
user = create(:user)
no_of_user_accounts = user.accounts.count
expect(no_of_user_accounts).to be > 0 # the factory should make at least 1 account

expect { user.destroy }
.to change { Account.count }
.by(-no_of_user_accounts)
end

it "collaboration access to cookbooks" do
collaboration = create(:cookbook_collaborator)
user = collaboration.user
cookbook = collaboration.resourceable

expect { user.destroy }
.to change { cookbook.collaborators.count }
.by(-1)
end

it "memberships in groups" do
membership = create(:group_member)
user = membership.user
group = membership.group

expect { user.destroy }
.to change { group.members.count }
.by(-1)
end

it "following of cookbooks" do
following = create(:cookbook_follower)
user = following.user
cookbook = following.cookbook

expect { user.destroy }
.to change { cookbook.followers.count }
.by(-1)
end

it "email subscriptions" do
subscription = create(:email_preference)
user = subscription.user
email = subscription.system_email

expect { user.destroy }
.to change { email.subscribed_users.count }
.by(-1)
end
end

context "prevents destruction when the user" do
it "owns cookbooks" do
cookbook = create(:cookbook)
user = cookbook.owner

expect { user.destroy }
.to raise_error(ActiveRecord::DeleteRestrictionError)
end
it "owns tools" do
tool = create(:tool)
user = tool.owner

expect { user.destroy }
.to raise_error(ActiveRecord::DeleteRestrictionError)
end
it "is transferring cookbook ownership" do
ownership_transfer = create(:ownership_transfer_request)
user = ownership_transfer.sender

expect { user.destroy }
.to raise_error(ActiveRecord::DeleteRestrictionError)
end

it "is the recipient of cookbook ownership transfer" do
ownership_transfer = create(:ownership_transfer_request)
user = ownership_transfer.recipient

expect { user.destroy }
.to raise_error(ActiveRecord::DeleteRestrictionError)
end
end

context "disassociates the user from" do
it "cookbook versions the user published" do
cookbook = create(:cookbook)
user = create(:user)
user_published_this_one = create(:cookbook_version, cookbook: cookbook, user: user)

user.destroy
user_published_this_one.reload

expect(user_published_this_one.user_id).to be_nil
end
end
end
end

context "validations" do
Expand Down

0 comments on commit 22a24bf

Please sign in to comment.