FIX: delete unused tags shouldn't delete tags belonging to tag groups
This commit is contained in:
parent
96511e4548
commit
298ed5d021
|
@ -21,7 +21,13 @@ class Tag < ActiveRecord::Base
|
||||||
where("lower(tags.name) IN (?)", name)
|
where("lower(tags.name) IN (?)", name)
|
||||||
end
|
end
|
||||||
|
|
||||||
scope :unused, -> { where(topic_count: 0, pm_topic_count: 0) }
|
# tags that have never been used and don't belong to a tag group
|
||||||
|
scope :unused, -> do
|
||||||
|
where(topic_count: 0, pm_topic_count: 0)
|
||||||
|
.joins("LEFT JOIN tag_group_memberships tgm ON tags.id = tgm.tag_id")
|
||||||
|
.where("tgm.tag_id IS NULL")
|
||||||
|
end
|
||||||
|
|
||||||
scope :base_tags, -> { where(target_tag_id: nil) }
|
scope :base_tags, -> { where(target_tag_id: nil) }
|
||||||
|
|
||||||
has_many :tag_users, dependent: :destroy # notification settings
|
has_many :tag_users, dependent: :destroy # notification settings
|
||||||
|
|
|
@ -194,6 +194,9 @@ describe Tag do
|
||||||
Fabricate(:tag, name: "unused2", topic_count: 0, pm_topic_count: 0)]
|
Fabricate(:tag, name: "unused2", topic_count: 0, pm_topic_count: 0)]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
let(:tag_in_group) { Fabricate(:tag, name: "unused_in_group", topic_count: 0, pm_topic_count: 0) }
|
||||||
|
let!(:tag_group) { Fabricate(:tag_group, tag_names: [tag_in_group.name]) }
|
||||||
|
|
||||||
it "returns the correct tags" do
|
it "returns the correct tags" do
|
||||||
expect(Tag.unused.pluck(:name)).to contain_exactly("unused1", "unused2")
|
expect(Tag.unused.pluck(:name)).to contain_exactly("unused1", "unused2")
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue