impressionist/tests/test_app/spec/models/counter_caching_spec.rb

50 lines
1.3 KiB
Ruby

require 'spec_helper'
describe Impression do
fixtures :widgets
let(:widget) { Widget.find(1) }
before do
described_class.destroy_all
end
describe "self#impressionist_counter_caching?" do
it "knows when counter caching is enabled" do
expect(Widget).to be_impressionist_counter_caching
end
it "knows when counter caching is disabled" do
expect(Article).not_to be_impressionist_counter_caching
end
end
describe "self#counter_caching?" do
it "knows when counter caching is enabled" do
allow(ActiveSupport::Deprecation).to receive(:warn)
expect(Widget).to be_counter_caching
end
it "knows when counter caching is disabled" do
allow(ActiveSupport::Deprecation).to receive(:warn)
expect(Article).not_to be_counter_caching
end
end
describe "#update_impressionist_counter_cache" do
it "updates the counter cache column to reflect the correct number of impressions" do
expect do
widget.impressions.create(:request_hash => 'abcd1234')
widget.reload
end.to change(widget, :impressions_count).from(0).to(1)
end
it "does not update the timestamp on the impressable" do
expect do
widget.impressions.create(:request_hash => 'abcd1234')
widget.reload
end.not_to change(widget, :updated_at)
end
end
end