From 97331cb1c956b485f3663669dc1c2a7f38aeb35d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Rodr=C3=ADguez?= Date: Sat, 21 Oct 2017 17:07:21 +0200 Subject: [PATCH] Fix `direct_messages_max_per_day` set to nil When set to nil, it should mean not zero, but "infinite". --- app/models/direct_message.rb | 1 + spec/models/direct_message_spec.rb | 60 ++++++++++++++++++------------ 2 files changed, 37 insertions(+), 24 deletions(-) diff --git a/app/models/direct_message.rb b/app/models/direct_message.rb index ae14e652d..7c652c83e 100644 --- a/app/models/direct_message.rb +++ b/app/models/direct_message.rb @@ -13,6 +13,7 @@ class DirectMessage < ActiveRecord::Base def max_per_day return if errors.any? max = Setting[:direct_message_max_per_day] + return unless max 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')) diff --git a/spec/models/direct_message_spec.rb b/spec/models/direct_message_spec.rb index 28b30b0ce..913f22a58 100644 --- a/spec/models/direct_message_spec.rb +++ b/spec/models/direct_message_spec.rb @@ -4,10 +4,6 @@ describe DirectMessage do let(:direct_message) { build(:direct_message) } - before(:each) do - Setting[:direct_message_max_per_day] = 3 - end - it "should be valid" do expect(direct_message).to be_valid end @@ -33,32 +29,48 @@ describe DirectMessage do end 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 - sender = create(:user) - direct_message1 = create(:direct_message, sender: sender) - direct_message2 = create(:direct_message, sender: sender) - direct_message3 = create(:direct_message, sender: sender) + it "should not be valid if above maximum" do + sender = create(:user) + direct_message1 = create(:direct_message, sender: sender) + direct_message2 = create(:direct_message, sender: sender) + direct_message3 = create(:direct_message, sender: sender) - direct_message4 = build(:direct_message, sender: sender) - expect(direct_message4).to_not be_valid + direct_message4 = build(:direct_message, sender: sender) + 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 - 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) + context "when unset" do + before(:each) do + Setting[:direct_message_max_per_day] = nil + end - direct_message3 = build(:direct_message) - expect(direct_message).to be_valid + it "should be valid" do + direct_message = build(:direct_message) + + expect(direct_message).to be_valid + 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 describe "scopes" do