Makes tags count only visible debates and proposals

This commit is contained in:
kikito
2015-09-17 16:54:10 +02:00
parent d71a404661
commit 8ff8a1df7f
5 changed files with 52 additions and 2 deletions

View File

@@ -122,6 +122,14 @@ class Debate < ActiveRecord::Base
cached_votes_up/flags_count.to_f < 5 cached_votes_up/flags_count.to_f < 5
end end
def after_hide
self.tags.each{ |t| t.decrement_custom_counter_for('Debate') }
end
def after_restore
self.tags.each{ |t| t.increment_custom_counter_for('Debate') }
end
def self.title_max_length def self.title_max_length
@@title_max_length ||= self.columns.find { |c| c.name == 'title' }.limit || 80 @@title_max_length ||= self.columns.find { |c| c.name == 'title' }.limit || 80
end end

View File

@@ -105,6 +105,14 @@ class Proposal < ActiveRecord::Base
cached_votes_up) cached_votes_up)
end end
def after_hide
self.tags.each{ |t| t.decrement_custom_counter_for('Proposal') }
end
def after_restore
self.tags.each{ |t| t.increment_custom_counter_for('Proposal') }
end
def self.title_max_length def self.title_max_length
@@title_max_length ||= self.columns.find { |c| c.name == 'title' }.limit || 80 @@title_max_length ||= self.columns.find { |c| c.name == 'title' }.limit || 80
end end

View File

@@ -4,6 +4,7 @@ module ActsAsParanoidAliases
base.extend(ClassMethods) base.extend(ClassMethods)
def hide def hide
return false if hidden?
update_attribute(:hidden_at, Time.now) update_attribute(:hidden_at, Time.now)
after_hide after_hide
end end
@@ -24,8 +25,13 @@ module ActsAsParanoidAliases
end end
def restore(opts={}) def restore(opts={})
return false unless hidden?
super(opts) super(opts)
update_attribute(:confirmed_hide_at, nil) update_attribute(:confirmed_hide_at, nil)
after_restore
end
def after_restore
end end
end end
@@ -48,12 +54,12 @@ module ActsAsParanoidAliases
def hide_all(ids) def hide_all(ids)
return if ids.blank? return if ids.blank?
where(id: ids).update_all(hidden_at: Time.now) where(id: ids).each(&:hide)
end end
def restore_all(ids) def restore_all(ids)
return if ids.blank? return if ids.blank?
only_hidden.where(id: ids).update_all(hidden_at: nil) only_hidden.where(id: ids).each(&:restore)
end end
end end
end end

View File

@@ -350,6 +350,20 @@ describe Debate do
end end
end end
describe "custom tag counters when hiding/restoring" do
it "decreases the tag counter when hiden, and increases it when restored" do
debate = create(:debate, tag_list: "foo")
tag = ActsAsTaggableOn::Tag.where(name: 'foo').first
expect(tag.debates_count).to eq(1)
debate.hide
expect(tag.reload.debates_count).to eq(0)
debate.restore
expect(tag.reload.debates_count).to eq(1)
end
end
describe "conflictive debates" do describe "conflictive debates" do
it "should return true when it has more than 1 flag for 5 positive votes" do it "should return true when it has more than 1 flag for 5 positive votes" do

View File

@@ -193,6 +193,20 @@ describe Proposal do
end end
end end
describe "custom tag counters when hiding/restoring" do
it "decreases the tag counter when hiden, and increases it when restored" do
proposal = create(:proposal, tag_list: "foo")
tag = ActsAsTaggableOn::Tag.where(name: 'foo').first
expect(tag.proposals_count).to eq(1)
proposal.hide
expect(tag.reload.proposals_count).to eq(0)
proposal.restore
expect(tag.reload.proposals_count).to eq(1)
end
end
describe "#confidence_score" do describe "#confidence_score" do
it "takes into account votes" do it "takes into account votes" do