docbrown/spec/models/profile_pin_spec.rb
Anna Buianova 01456fe029 [deploy] Finalize deleting user associations (#5624)
* Prepare factories and associations for Users::DeleteActivity specs

* Altered user associations, delete the needed associations in Users::DeleteActivity

* Moved and refined user deletion spec

* Removed useless commented user associations

* Refactored BackupData factory

* Refactored ProfilePin factory

* Refactored Reaction factory

* Fixed specs: Keep default _type in factories or specify it in tests

* Ok, notes shouldn't be deleted on user deletion

* Fixed creating reactable for specs

* Specify commentable/commentable_type explicitly when creating data for tests

* Fixed typo in the comments spec

* Removed unnneeded space

* Added aggregate_failures for testing user associations deletion

* Keep feedback_messages while deleting user activities
2020-01-23 11:29:47 -05:00

45 lines
1.4 KiB
Ruby

require "rails_helper"
RSpec.describe ProfilePin, type: :model do
let_it_be(:user) { create(:user) }
describe "validations" do
describe "number of pins" do
let_it_be(:articles) { create_list(:article, 4, user: user) }
let_it_be(:pins) do
articles.each { |article| create(:profile_pin, pinnable: article, profile: user) }
end
let(:fifth_article) { create(:article, user: user) }
let(:sixth_article) { create(:article, user: user) }
it "allows up to five pins per user" do
pin = build(:profile_pin, pinnable: fifth_article, profile: user)
expect(pin).to be_valid
end
it "disallows the sixth pin" do
create(:profile_pin, pinnable: fifth_article, profile: user)
user.reload
expect do
create(:profile_pin, pinnable: sixth_article, profile: user)
end.to raise_error(ActiveRecord::RecordInvalid)
end
end
describe "#profile" do
let_it_be(:article) { create(:article, user: user) }
it "ensures pinnable belongs to the same profile" do
pin = build(:profile_pin, pinnable: article, profile: create(:user))
expect(pin).not_to be_valid
end
it "ensures one pin per pinnable per profile" do
create(:profile_pin, pinnable: article, profile: user)
other_pin = build(:profile_pin, pinnable: article, profile: user)
expect(other_pin).not_to be_valid
end
end
end
end