diff --git a/spec/factories/classifications.rb b/spec/factories/classifications.rb index d2fde4b9e..d75d90d3e 100644 --- a/spec/factories/classifications.rb +++ b/spec/factories/classifications.rb @@ -38,5 +38,13 @@ FactoryBot.define do end factory :related_content do + association :author, factory: :user + association :parent_relationable, factory: [:proposal, :debate].sample + association :child_relationable, factory: [:proposal, :debate].sample + end + + factory :related_content_score do + association :user + association :related_content end end diff --git a/spec/models/related_content_score_spec.rb b/spec/models/related_content_score_spec.rb new file mode 100644 index 000000000..8e84b2a7f --- /dev/null +++ b/spec/models/related_content_score_spec.rb @@ -0,0 +1,23 @@ +require "rails_helper" + +describe RelatedContentScore do + it "is valid" do + expect(build(:related_content_score)).to be_valid + end + + it "is not valid with empty user or empty related_content" do + expect(build(:related_content_score, user: nil)).not_to be_valid + expect(build(:related_content_score, related_content: nil)).not_to be_valid + end + + it "is not valid with repeated related content scores" do + user = create(:user) + related_content = build(:related_content) + + create(:related_content_score, related_content: related_content, user: user) + + new_score = build(:related_content_score, related_content: related_content, user: user) + + expect(new_score).not_to be_valid + end +end diff --git a/spec/models/related_content_spec.rb b/spec/models/related_content_spec.rb index e0ddefc01..5ed206ef0 100644 --- a/spec/models/related_content_spec.rb +++ b/spec/models/related_content_spec.rb @@ -5,6 +5,10 @@ describe RelatedContent do let(:parent_relationable) { create([:proposal, :debate].sample) } let(:child_relationable) { create([:proposal, :debate].sample) } + it "is valid" do + expect(build(:related_content)).to be_valid + end + it "allows relationables from various classes" do expect(build(:related_content, parent_relationable: parent_relationable, child_relationable: child_relationable)).to be_valid expect(build(:related_content, parent_relationable: parent_relationable, child_relationable: child_relationable)).to be_valid @@ -12,9 +16,8 @@ describe RelatedContent do end it "does not allow empty relationables" do - expect(build(:related_content)).not_to be_valid - expect(build(:related_content, parent_relationable: parent_relationable)).not_to be_valid - expect(build(:related_content, child_relationable: child_relationable)).not_to be_valid + expect(build(:related_content, parent_relationable: nil)).not_to be_valid + expect(build(:related_content, child_relationable: nil)).not_to be_valid end it "does not allow repeated related contents" do