50 lines
1.3 KiB
Ruby
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
|