docbrown/spec/labor/rate_limit_checker_spec.rb
rhymes e588fa7ece Code cleanups (#659)
* Initial automatic cleanup with rubocop

* Fix syntax error introduced by rubocop

* Cleanup seeds file

* Cleanup lib folder

* Exclude bin folder because it contains auto generated files

* Make Rubocop a little bit more chatty

* Block length should not include comments in the count

* Cleanup config folder

* Cleanup specs

* Updated Rubocop version and generated a todo file

* Fix broken ArticlesApi spec

* Fix tests

* Restored rubocop pre-commit hook
2018-08-07 11:00:13 -04:00

44 lines
1.8 KiB
Ruby

require "rails_helper"
RSpec.describe RateLimitChecker do
let(:user) { create(:user) }
let(:article) { create(:article, user_id: user.id) }
it ".limit_by_situation returns false for invalid case" do
expect(described_class.new(user).limit_by_situation("random-nothing")).to eq(false)
end
it ".limit_by_situation returns true if too many comments at once" do
create_list(:comment, 10, user_id: user.id, commentable_id: article.id)
expect(described_class.new(user).limit_by_situation("comment_creation")).to eq(true)
end
it ".limit_by_situation returns false if allowed comment" do
create_list(:comment, 2, user_id: user.id, commentable_id: article.id)
expect(described_class.new(user).limit_by_situation("comment_creation")).to eq(false)
end
it ". limit_by_situation returns true if too many published articles at once" do
create_list(:article, 10, user_id: user.id, published: true)
expect(described_class.new(user).limit_by_situation("published_article_creation")).to eq(true)
end
it ".limit_by_situation returns false if published articles comment" do
create_list(:article, 2, user_id: user.id, published: true)
expect(described_class.new(user).limit_by_situation("published_article_creation")).to eq(false)
end
it ".limit_by_email_recipient_address returns true if too many published articles at once" do
10.times do
EmailMessage.create(to: user.email, sent_at: Time.now)
end
expect(described_class.new.limit_by_email_recipient_address(user.email)).to eq(true)
end
it ".limit_by_email_recipient_address returns false if published articles comment" do
2.times do
EmailMessage.create(to: user.email, sent_at: Time.now)
end
expect(described_class.new.limit_by_email_recipient_address(user.email)).to eq(false)
end
end