Fixed related content tests
This commit is contained in:
@@ -20,7 +20,6 @@ class RelatedContent < ActiveRecord::Base
|
||||
after_create :create_opposite_related_content, unless: proc { opposite_related_content.present? }
|
||||
after_create :create_author_score
|
||||
|
||||
scope :not_hidden, -> { where('positive_score - negative_score / LEAST(nullif(positive_score + negative_score, 0), 1) >= ?', RELATED_CONTENT_SCORE_THRESHOLD) }
|
||||
scope :not_hidden, -> { where(hidden_at: nil) }
|
||||
|
||||
def score_positive(user)
|
||||
|
||||
@@ -872,8 +872,8 @@ ActiveRecord::Schema.define(version: 20171220010000) do
|
||||
t.integer "related_content_id"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
t.integer "related_content_scores_count", default: 0
|
||||
t.datetime "hidden_at"
|
||||
t.integer "related_content_scores_count", default: 0
|
||||
t.integer "author_id"
|
||||
end
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ describe RelatedContent do
|
||||
end
|
||||
|
||||
it "should not allow repeated related contents" do
|
||||
related_content = create(:related_content, parent_relationable: parent_relationable, child_relationable: child_relationable)
|
||||
related_content = create(:related_content, parent_relationable: parent_relationable, child_relationable: child_relationable, author: build(:user))
|
||||
new_related_content = build(:related_content, parent_relationable: related_content.parent_relationable, child_relationable: related_content.child_relationable)
|
||||
expect(new_related_content).not_to be_valid
|
||||
end
|
||||
@@ -26,7 +26,7 @@ describe RelatedContent do
|
||||
describe 'create_opposite_related_content' do
|
||||
let(:parent_relationable) { create(:proposal) }
|
||||
let(:child_relationable) { create(:debate) }
|
||||
let(:related_content) { build(:related_content, parent_relationable: parent_relationable, child_relationable: child_relationable) }
|
||||
let(:related_content) { build(:related_content, parent_relationable: parent_relationable, child_relationable: child_relationable, author: build(:user)) }
|
||||
|
||||
it 'creates an opposite related_content' do
|
||||
expect { related_content.save }.to change { RelatedContent.count }.by(2)
|
||||
@@ -40,8 +40,16 @@ describe RelatedContent do
|
||||
|
||||
describe '#relationed_contents' do
|
||||
before do
|
||||
create(:related_content, parent_relationable: parent_relationable, child_relationable: create(:proposal), positive_score: 6, negative_score: 20)
|
||||
create(:related_content, parent_relationable: parent_relationable, child_relationable: child_relationable)
|
||||
related_content = create(:related_content, parent_relationable: parent_relationable, child_relationable: create(:proposal), author: build(:user))
|
||||
create(:related_content, parent_relationable: parent_relationable, child_relationable: child_relationable, author: build(:user))
|
||||
|
||||
2.times do
|
||||
related_content.send("score_positive", build(:user))
|
||||
end
|
||||
|
||||
6.times do
|
||||
related_content.send("score_negative", build(:user))
|
||||
end
|
||||
end
|
||||
|
||||
it 'returns not hidden by reports related contents' do
|
||||
|
||||
@@ -6,7 +6,7 @@ shared_examples "relationable" do |relationable_model_name|
|
||||
let(:user) { create(:user) }
|
||||
|
||||
scenario 'related contents are listed' do
|
||||
related_content = create(:related_content, parent_relationable: relationable, child_relationable: related1)
|
||||
related_content = create(:related_content, parent_relationable: relationable, child_relationable: related1, author: build(:user))
|
||||
|
||||
visit eval("#{relationable.class.name.downcase}_path(relationable)")
|
||||
within("#related-content-list") do
|
||||
@@ -72,7 +72,7 @@ shared_examples "relationable" do |relationable_model_name|
|
||||
end
|
||||
|
||||
scenario 'related content can be scored positively', :js do
|
||||
related_content = create(:related_content, parent_relationable: relationable, child_relationable: related1)
|
||||
related_content = create(:related_content, parent_relationable: relationable, child_relationable: related1, author: build(:user))
|
||||
|
||||
login_as(user)
|
||||
visit eval("#{relationable.class.name.downcase}_path(relationable)")
|
||||
@@ -83,24 +83,13 @@ shared_examples "relationable" do |relationable_model_name|
|
||||
expect(page).to_not have_css("#score-positive-related-#{related_content.opposite_related_content.id}")
|
||||
end
|
||||
|
||||
expect(
|
||||
RelatedContentScores.where(
|
||||
user: current_user,
|
||||
related_content: related_content
|
||||
).first.value
|
||||
).to eq(1)
|
||||
|
||||
expect(
|
||||
RelatedContentScores.where(
|
||||
user: current_user,
|
||||
related_content: related_content.opposite_related_content
|
||||
).first.value
|
||||
).to eq(1)
|
||||
expect(related_content.related_content_scores.find_by(user_id: user.id, related_content_id: related_content.id).value).to eq(1)
|
||||
expect(related_content.opposite_related_content.related_content_scores.find_by(user_id: user.id, related_content_id: related_content.opposite_related_content.id).value).to eq(1)
|
||||
|
||||
end
|
||||
|
||||
scenario 'related content can be scored negatively', :js do
|
||||
related_content = create(:related_content, parent_relationable: relationable, child_relationable: related1)
|
||||
related_content = create(:related_content, parent_relationable: relationable, child_relationable: related1, author: build(:user))
|
||||
|
||||
login_as(user)
|
||||
visit eval("#{relationable.class.name.downcase}_path(relationable)")
|
||||
@@ -111,20 +100,20 @@ shared_examples "relationable" do |relationable_model_name|
|
||||
expect(page).to_not have_css("#score-negative-related-#{related_content.opposite_related_content.id}")
|
||||
end
|
||||
|
||||
expect(related_content.reload.negative_score).to eq(1)
|
||||
expect(related_content.opposite_related_content.reload.negative_score).to eq(1)
|
||||
expect(related_content.related_content_scores.find_by(user_id: user.id, related_content_id: related_content.id).value).to eq(-1)
|
||||
expect(related_content.opposite_related_content.related_content_scores.find_by(user_id: user.id, related_content_id: related_content.opposite_related_content.id).value).to eq(-1)
|
||||
end
|
||||
|
||||
scenario 'if related content has negative score it will be hidden' do
|
||||
related_content = create(:related_content, parent_relationable: relationable, child_relationable: related1)
|
||||
related_content = create(:related_content, parent_relationable: relationable, child_relationable: related1, author: build(:user))
|
||||
|
||||
related_content.positive_score = 4
|
||||
related_content.negative_score = 20
|
||||
related_content.opposite_related_content.positive_score = 4
|
||||
related_content.opposite_related_content.negative_score = 20
|
||||
2.times do
|
||||
related_content.send("score_positive", build(:user))
|
||||
end
|
||||
|
||||
related_content.save
|
||||
related_content.opposite_related_content.save
|
||||
6.times do
|
||||
related_content.send("score_negative", build(:user))
|
||||
end
|
||||
|
||||
login_as(user)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user