Fix #4908: Prevent artist entries from being made on disambiguation tags.
Don't allow artist entries to be created for deprecated tags.
This commit is contained in:
@@ -174,6 +174,10 @@ class Artist < ApplicationRecord
|
|||||||
errors.add(:name, "'#{name}' is a #{tag.category_name.downcase} tag; artist entries can only be created for artist tags")
|
errors.add(:name, "'#{name}' is a #{tag.category_name.downcase} tag; artist entries can only be created for artist tags")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if tag&.is_deprecated?
|
||||||
|
errors.add(:name, "'#{name}' is an ambiguous tag; try another name")
|
||||||
|
end
|
||||||
|
|
||||||
if tag_alias.present?
|
if tag_alias.present?
|
||||||
errors.add(:name, "'#{name}' is aliased to '#{tag_alias.consequent_name}'")
|
errors.add(:name, "'#{name}' is aliased to '#{tag_alias.consequent_name}'")
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -549,6 +549,14 @@ class ArtistTest < ActiveSupport::TestCase
|
|||||||
assert_equal(true, artist.invalid?)
|
assert_equal(true, artist.invalid?)
|
||||||
assert_match(/'foo' is aliased to 'bar'/, artist.errors.full_messages.join)
|
assert_match(/'foo' is aliased to 'bar'/, artist.errors.full_messages.join)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
should "not allow creating artist entries for deprecated tags" do
|
||||||
|
create(:tag, name: "orange", is_deprecated: true)
|
||||||
|
artist = build(:artist, name: "orange")
|
||||||
|
|
||||||
|
assert_equal(true, artist.invalid?)
|
||||||
|
assert_match(/'orange' is an ambiguous tag/, artist.errors.full_messages.join)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context "when renaming" do
|
context "when renaming" do
|
||||||
|
|||||||
Reference in New Issue
Block a user