Fix direct_messages_max_per_day set to nil

When set to nil, it should mean not zero, but "infinite".
This commit is contained in:
David Rodríguez
2017-10-21 17:07:21 +02:00
parent e6384bd5df
commit 97331cb1c9
2 changed files with 37 additions and 24 deletions

View File

@@ -13,6 +13,7 @@ class DirectMessage < ActiveRecord::Base
def max_per_day def max_per_day
return if errors.any? return if errors.any?
max = Setting[:direct_message_max_per_day] max = Setting[:direct_message_max_per_day]
return unless max
if sender.direct_messages_sent.today.count >= max.to_i if sender.direct_messages_sent.today.count >= max.to_i
errors.add(:title, I18n.t('activerecord.errors.models.direct_message.attributes.max_per_day.invalid')) errors.add(:title, I18n.t('activerecord.errors.models.direct_message.attributes.max_per_day.invalid'))

View File

@@ -4,10 +4,6 @@ describe DirectMessage do
let(:direct_message) { build(:direct_message) } let(:direct_message) { build(:direct_message) }
before(:each) do
Setting[:direct_message_max_per_day] = 3
end
it "should be valid" do it "should be valid" do
expect(direct_message).to be_valid expect(direct_message).to be_valid
end end
@@ -33,32 +29,48 @@ describe DirectMessage do
end end
describe "maximum number of direct messages per day" do describe "maximum number of direct messages per day" do
context "when set" do
before(:each) do
Setting[:direct_message_max_per_day] = 3
end
it "should not be valid if above maximum" do it "should not be valid if above maximum" do
sender = create(:user) sender = create(:user)
direct_message1 = create(:direct_message, sender: sender) direct_message1 = create(:direct_message, sender: sender)
direct_message2 = create(:direct_message, sender: sender) direct_message2 = create(:direct_message, sender: sender)
direct_message3 = create(:direct_message, sender: sender) direct_message3 = create(:direct_message, sender: sender)
direct_message4 = build(:direct_message, sender: sender) direct_message4 = build(:direct_message, sender: sender)
expect(direct_message4).to_not be_valid expect(direct_message4).to_not be_valid
end
it "should be valid if below maximum" do
sender = create(:user)
direct_message1 = create(:direct_message, sender: sender)
direct_message2 = create(:direct_message, sender: sender)
direct_message3 = build(:direct_message)
expect(direct_message).to be_valid
end
it "should be valid if no direct_messages sent" do
direct_message = build(:direct_message)
expect(direct_message).to be_valid
end
end end
it "should be valid if below maximum" do context "when unset" do
sender = create(:user) before(:each) do
direct_message1 = create(:direct_message, sender: sender) Setting[:direct_message_max_per_day] = nil
direct_message2 = create(:direct_message, sender: sender) end
direct_message3 = build(:direct_message) it "should be valid" do
expect(direct_message).to be_valid direct_message = build(:direct_message)
expect(direct_message).to be_valid
end
end end
it "should be valid if no direct_messages sent" do
direct_message = build(:direct_message)
expect(direct_message).to be_valid
end
end end
describe "scopes" do describe "scopes" do