Files
grecia/spec/controllers/related_contents_controller_spec.rb
Javi Martín 3fe292dfe2 Move relationable expectations to controller tests
Having expectations related to database operations in system tests after
the process running the browser has started might result in exceptions
while running our test suite.
2023-08-30 14:46:35 +02:00

58 lines
1.9 KiB
Ruby

require "rails_helper"
describe RelatedContentsController do
describe "#score" do
it "raises an error if related content does not exist" do
controller.params[:id] = 0
expect do
controller.send(:score, "action")
end.to raise_error ActiveRecord::RecordNotFound
end
end
describe "#score_positive" do
it "increases the score of both the related content and its opposite" do
user = create(:user, :level_two)
related_content = create(:related_content, author: create(:user))
opposite_content = related_content.opposite_related_content
sign_in user
put :score_positive, params: { id: related_content, format: :js }
score = related_content.related_content_scores
.find_by(user: user, related_content: related_content)
.value
opposite_score = opposite_content.related_content_scores
.find_by(user: user, related_content: opposite_content)
.value
expect(score).to eq(1)
expect(opposite_score).to eq(1)
end
end
describe "#score_negative" do
it "decreases the score of both the related content and its opposite" do
user = create(:user, :level_two)
related_content = create(:related_content, author: create(:user))
opposite_content = related_content.opposite_related_content
sign_in user
put :score_negative, params: { id: related_content, format: :js }
score = related_content.related_content_scores
.find_by(user: user, related_content: related_content)
.value
opposite_score = opposite_content.related_content_scores
.find_by(user: user, related_content: opposite_content)
.value
expect(score).to eq(-1)
expect(opposite_score).to eq(-1)
end
end
end