From 225b87390d69f4509ec2c30b824d315a93b9eb7f Mon Sep 17 00:00:00 2001 From: Molly Struve Date: Wed, 13 May 2020 08:38:23 -0500 Subject: [PATCH] [deploy] Limit Suggestions for Social Service Posts (#7811) --- app/models/buffer_update.rb | 8 +++++++- spec/models/buffer_update_spec.rb | 9 +++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/app/models/buffer_update.rb b/app/models/buffer_update.rb index 27eaead9f..e2ceeffb8 100644 --- a/app/models/buffer_update.rb +++ b/app/models/buffer_update.rb @@ -2,7 +2,7 @@ class BufferUpdate < ApplicationRecord resourcify belongs_to :article - validate :validate_body_text_recent_uniqueness + validate :validate_body_text_recent_uniqueness, :validate_suggestion_limit validates :status, inclusion: { in: %w[pending sent_direct confirmed dismissed] } def self.buff!(article_id, text, buffer_profile_id_code, social_service_name = "twitter", tag_id = nil, admin_id = nil) @@ -56,4 +56,10 @@ class BufferUpdate < ApplicationRecord errors.add(:body_text, "\"#{body_text}\" has already been submitted very recently") end end + + def validate_suggestion_limit + return unless BufferUpdate.where(article_id: article_id, tag_id: tag_id, social_service_name: social_service_name).count > 2 + + errors.add(:article_id, "already has multiple suggestions for #{social_service_name}") + end end diff --git a/spec/models/buffer_update_spec.rb b/spec/models/buffer_update_spec.rb index 763493322..3791cae66 100644 --- a/spec/models/buffer_update_spec.rb +++ b/spec/models/buffer_update_spec.rb @@ -42,4 +42,13 @@ RSpec.describe BufferUpdate, type: :model do described_class.buff!(create(:article).id, "twitter_buffer_text", "CODE", "twitter", 1) expect(described_class.all.size).to eq(2) end + + it "does not allow more than 3 suggestions" do + Array.new(3) do |i| + described_class.buff!(article.id, "twitter_buffer_text_#{i}", "CODE", "twitter") + end + invalid_buffer = described_class.buff!(article.id, "twitter_buffer_text_4", "CODE", "twitter") + expect(described_class.all.size).to eq(3) + expect(invalid_buffer.errors.full_messages.first).to include("already has multiple suggestions") + end end