Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions spec/counter_culture_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
require 'models/group_item'
require 'models/article_group'
require 'models/article'
require 'models/moderated_review'

if CounterCulture.supports_composite_keys?
require 'models/composite_group'
Expand Down Expand Up @@ -256,6 +257,18 @@ def yaml_load(yaml)
expect(user.review_approvals_count).to eq(26)
end

context 'when state changes in update callback update' do
it 'should increments counter cache once' do
user = User.create
moderate_review = ModeratedReview.create :user_id => user.id
moderate_review.update(up: true)
user.reload
moderate_review.reload

expect(user.approved_positive_reviews_count).to eq(1)
end
end

it "skips increments counter cache on destroy" do
user = User.create
product = Product.create
Expand Down
19 changes: 19 additions & 0 deletions spec/models/moderated_review.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
class ModeratedReview < ActiveRecord::Base
belongs_to :user

after_update :auto_approve

counter_culture :user, :column_name => -> (review) { review.positive_and_approved? ? 'approved_positive_reviews_count' : nil }
def positive_and_approved?
up? && approved?
end

private

def auto_approve
unless approved?
self.approved = true
save
end
end
end
2 changes: 2 additions & 0 deletions spec/models/user.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ class User < ActiveRecord::Base
has_many :reviews
accepts_nested_attributes_for :reviews, :allow_destroy => true

has_many :moderated_reviews

if PapertrailSupport.supported_here?
has_paper_trail
end
Expand Down
9 changes: 9 additions & 0 deletions spec/schema.rb
Original file line number Diff line number Diff line change
Expand Up @@ -92,13 +92,22 @@
t.integer "dynamic_delta_count", :default => 0, :null => false
t.integer "custom_delta_count", :default => 0, :null => false
t.integer "review_approvals_count", :default => 0, :null => false
t.integer "approved_positive_reviews_count", :default => 0, :null => false
t.string "has_string_id_id"
t.integer "has_non_pk_id_id"
t.float "review_value_sum", :default => 0.0, :null => false
t.datetime "created_at"
t.datetime "updated_at"
end

create_table "moderated_reviews", :force => true do |t|
t.integer "user_id"
t.boolean "up"
t.boolean "approved"
t.datetime "created_at"
t.datetime "updated_at"
end

create_table "categories", :force => true do |t|
t.string "name"
t.integer "products_count", :default => 0, :null => false
Expand Down