* Softrun rubocop * Hardrun rubocop (-A) * Change a rubocop rule * Add missing cops * Undo & redo rubocop -A
57 lines
1.6 KiB
Ruby
57 lines
1.6 KiB
Ruby
require "rails_helper"
|
|
|
|
RSpec.describe "Follows #create" do
|
|
let(:current_user) { create(:user) }
|
|
let(:user) { create(:user) }
|
|
let(:headers) { { "Content-Type": "application/json", Accept: "application/json" } }
|
|
let(:follow_payload) do
|
|
{
|
|
followable_type: "User",
|
|
followable_id: user.id,
|
|
verb: "follow"
|
|
}.to_json
|
|
end
|
|
|
|
before do
|
|
sign_in current_user
|
|
Settings::RateLimit.clear_cache
|
|
end
|
|
|
|
context "when rate limit has been hit" do
|
|
before do
|
|
rate_limit_checker = RateLimitChecker.new(current_user)
|
|
|
|
allow(rate_limit_checker)
|
|
.to receive(:user_today_follow_count)
|
|
.and_return(Settings::RateLimit.follow_count_daily + 1)
|
|
|
|
allow(RateLimitChecker)
|
|
.to receive(:new)
|
|
.and_return(rate_limit_checker)
|
|
end
|
|
|
|
it "returns an error for too many follows in a day" do
|
|
post "/follows", headers: headers, params: follow_payload
|
|
json_response = response.parsed_body
|
|
|
|
expect(response).to have_http_status(:too_many_requests)
|
|
expect(json_response["error"]).to eq("Daily account follow limit reached!")
|
|
end
|
|
end
|
|
|
|
it "follows" do
|
|
post "/follows", headers: headers, params: follow_payload
|
|
|
|
expect(response).to have_http_status(:ok)
|
|
expect(response.parsed_body["outcome"]).to eq("followed")
|
|
end
|
|
|
|
it "unfollows" do
|
|
current_user.follow(user)
|
|
post "/follows", headers: headers,
|
|
params: { followable_type: "User", followable_id: user.id, verb: "unfollow" }.to_json
|
|
|
|
expect(response).to have_http_status(:ok)
|
|
expect(response.parsed_body["outcome"]).to eq("unfollowed")
|
|
end
|
|
end
|