[deploy] Limit Response Template Count for Users (#7890)
This commit is contained in:
parent
8f81d8ce52
commit
3432c96ede
2 changed files with 28 additions and 0 deletions
|
|
@ -24,10 +24,20 @@ class ResponseTemplate < ApplicationRecord
|
|||
inclusion: { in: EMAIL_CONTENT_TYPES, message: EMAIL_VALIDATION_MSG },
|
||||
if: -> { type_of&.include?("email") }
|
||||
validate :user_nil_only_for_user_nil_types
|
||||
validate :template_count
|
||||
|
||||
private
|
||||
|
||||
def user_nil_only_for_user_nil_types
|
||||
return unless user_id.present? && USER_NIL_TYPE_OF_TYPES.include?(type_of)
|
||||
|
||||
errors.add(:type_of, USER_NIL_TYPE_OF_MSG)
|
||||
end
|
||||
|
||||
def template_count
|
||||
return unless user
|
||||
return if user.trusted || user.response_templates.count <= 30
|
||||
|
||||
errors.add(:user, "Response template limit of 30 per user has been reached")
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -27,4 +27,22 @@ RSpec.describe ResponseTemplate, type: :model do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "user validation" do
|
||||
it "validates the number of templates for a normal user" do
|
||||
user = create(:user)
|
||||
create_list(:response_template, 30, user_id: user.id)
|
||||
invalid_template = create(:response_template, user_id: user.id)
|
||||
|
||||
expect(invalid_template).not_to be_valid
|
||||
expect(invalid_template.errors.full_messages.join).to include("limit of 30 per user has been reached")
|
||||
end
|
||||
|
||||
it "allows trusted users to have unlimited templates" do
|
||||
user = create(:user, :trusted)
|
||||
create_list(:response_template, 31, user_id: user.id)
|
||||
|
||||
expect(user.response_templates.all?(&:valid?)).to be(true)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue