Fix #4599: Editing saved search fails when user has maximum saved searches.
This commit is contained in:
@@ -8,7 +8,7 @@ class SavedSearch < ApplicationRecord
|
|||||||
before_validation :normalize_query
|
before_validation :normalize_query
|
||||||
before_validation :normalize_labels
|
before_validation :normalize_labels
|
||||||
validates :query, presence: true
|
validates :query, presence: true
|
||||||
validate :validate_count
|
validate :validate_count, on: :create
|
||||||
|
|
||||||
scope :labeled, ->(label) { where_array_includes_any_lower(:labels, [normalize_label(label)]) }
|
scope :labeled, ->(label) { where_array_includes_any_lower(:labels, [normalize_label(label)]) }
|
||||||
scope :has_tag, ->(name) { where_regex(:query, "(^| )[~-]?#{Regexp.escape(name)}( |$)", flags: "i") }
|
scope :has_tag, ->(name) { where_regex(:query, "(^| )[~-]?#{Regexp.escape(name)}( |$)", flags: "i") }
|
||||||
@@ -173,7 +173,7 @@ class SavedSearch < ApplicationRecord
|
|||||||
end
|
end
|
||||||
|
|
||||||
def validate_count
|
def validate_count
|
||||||
if user.saved_searches.count + 1 > user.max_saved_searches
|
if user.saved_searches.count >= user.max_saved_searches
|
||||||
self.errors[:user] << "can only have up to #{user.max_saved_searches} " + "saved search".pluralize(user.max_saved_searches)
|
self.errors[:user] << "can only have up to #{user.max_saved_searches} " + "saved search".pluralize(user.max_saved_searches)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -161,14 +161,23 @@ class SavedSearchTest < ActiveSupport::TestCase
|
|||||||
|
|
||||||
context "A user with max saved searches" do
|
context "A user with max saved searches" do
|
||||||
setup do
|
setup do
|
||||||
@user = FactoryBot.create(:gold_user)
|
@user = create(:gold_user)
|
||||||
CurrentUser.user = @user
|
User.any_instance.stubs(:max_saved_searches).returns(1)
|
||||||
User.any_instance.stubs(:max_saved_searches).returns(0)
|
@ss1 = create(:saved_search, user: @user)
|
||||||
@saved_search = @user.saved_searches.create(:query => "xxx")
|
|
||||||
end
|
end
|
||||||
|
|
||||||
should "not be able to create another saved search" do
|
should "not be able to create another saved search" do
|
||||||
assert_equal(["You can only have up to 0 saved searches"], @saved_search.errors.full_messages)
|
@ss2 = build(:saved_search, user: @user)
|
||||||
|
|
||||||
|
assert_equal(false, @ss2.valid?)
|
||||||
|
assert_equal(["You can only have up to 1 saved search"], @ss2.errors.full_messages)
|
||||||
|
end
|
||||||
|
|
||||||
|
should "be able to edit existing saved searches" do
|
||||||
|
@ss1.update!(query: "blah")
|
||||||
|
|
||||||
|
assert_equal(true, @ss1.valid?)
|
||||||
|
assert_equal("blah", @ss1.query)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user