Add tests for pin/unpin endpoints
This commit is contained in:
parent
664bf5eab2
commit
04303c667e
|
@ -2,7 +2,9 @@
|
||||||
|
|
||||||
require "rails_helper"
|
require "rails_helper"
|
||||||
|
|
||||||
describe AnswerController do
|
describe AnswerController, type: :controller do
|
||||||
|
include ActiveSupport::Testing::TimeHelpers
|
||||||
|
|
||||||
let(:user) do
|
let(:user) do
|
||||||
FactoryBot.create :user,
|
FactoryBot.create :user,
|
||||||
otp_module: :disabled,
|
otp_module: :disabled,
|
||||||
|
@ -39,4 +41,62 @@ describe AnswerController do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "#pin" do
|
||||||
|
subject { post :pin, params: { username: user.screen_name, id: answer.id } }
|
||||||
|
|
||||||
|
context "user signed in" do
|
||||||
|
before(:each) { sign_in user }
|
||||||
|
|
||||||
|
it "pins the answer" do
|
||||||
|
travel_to(Time.at(1603290950).utc) do
|
||||||
|
expect { subject }.to change { answer.reload.pinned_at }.from(nil).to(Time.at(1603290950).utc)
|
||||||
|
expect(response).to redirect_to(user_path(user))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "other user signed in" do
|
||||||
|
let(:other_user) { FactoryBot.create(:user) }
|
||||||
|
|
||||||
|
before(:each) { sign_in other_user }
|
||||||
|
|
||||||
|
it "does not pin the answer do" do
|
||||||
|
travel_to(Time.at(1603290950).utc) do
|
||||||
|
expect { subject }.to raise_error(Errors::NotAuthorized)
|
||||||
|
expect(answer.reload.pinned_at).to eq(nil)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "#unpin" do
|
||||||
|
subject { delete :unpin, params: { username: user.screen_name, id: answer.id } }
|
||||||
|
|
||||||
|
context "user signed in" do
|
||||||
|
before(:each) do
|
||||||
|
sign_in user
|
||||||
|
answer.update!(pinned_at: Time.at(1603290950).utc)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "pins the answer" do
|
||||||
|
expect { subject }.to change { answer.reload.pinned_at }.from(Time.at(1603290950).utc).to(nil)
|
||||||
|
expect(response).to redirect_to(user_path(user))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "other user signed in" do
|
||||||
|
let(:other_user) { FactoryBot.create(:user) }
|
||||||
|
|
||||||
|
before(:each) do
|
||||||
|
sign_in other_user
|
||||||
|
answer.update!(pinned_at: Time.at(1603290950).utc)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "does not pin the answer do" do
|
||||||
|
expect { subject }.to raise_error(Errors::NotAuthorized)
|
||||||
|
expect(answer.reload.pinned_at).to eq(Time.at(1603290950).utc)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue