mirror of
https://github.com/jimeh/redistat.git
synced 2026-02-19 05:16:39 +00:00
85 lines
2.7 KiB
Ruby
85 lines
2.7 KiB
Ruby
require "spec_helper"
|
|
|
|
describe Redistat::Event do
|
|
include Redistat::Database
|
|
|
|
before(:each) do
|
|
db.flushdb
|
|
@scope = "PageViews"
|
|
@label = "about_us"
|
|
@label_hash = Digest::SHA1.hexdigest(@label)
|
|
@stats = {'views' => 1}
|
|
@meta = {'user_id' => 239}
|
|
@options = {:depth => :hour}
|
|
@date = Time.now
|
|
@event = Redistat::Event.new(@scope, @label, @date, @stats, @options, @meta)
|
|
end
|
|
|
|
it "should initialize properly" do
|
|
@event.id.should be_nil
|
|
@event.scope.to_s.should == @scope
|
|
@event.label.to_s.should == @label
|
|
@event.label_hash.should == @label_hash
|
|
@event.date.to_time.to_s.should == @date.to_s
|
|
@event.stats.should == @stats
|
|
@event.meta.should == @meta
|
|
@event.options.should == @event.default_options.merge(@options)
|
|
end
|
|
|
|
it "should allow changing attributes" do
|
|
# date
|
|
@event.date.to_time.to_s.should == @date.to_s
|
|
@date = Time.now
|
|
@event.date = @date
|
|
@event.date.to_time.to_s.should == @date.to_s
|
|
# label
|
|
@event.label.to_s.should == @label
|
|
@event.label_hash.should == @label_hash
|
|
@label = "contact_us"
|
|
@label_hash = Digest::SHA1.hexdigest(@label)
|
|
@event.label = @label
|
|
@event.label.to_s.should == @label
|
|
@event.label_hash.should == @label_hash
|
|
end
|
|
|
|
it "should increment next_id" do
|
|
event = Redistat::Event.new("VisitorCount", @label, @date, @stats, @options, @meta)
|
|
@event.next_id.should == 1
|
|
event.next_id.should == 1
|
|
@event.next_id.should == 2
|
|
event.next_id.should == 2
|
|
end
|
|
|
|
it "should store event properly" do
|
|
@event = Redistat::Event.new(@scope, @label, @date, @stats, @options.merge({:store_event => true}), @meta)
|
|
@event.new?.should be_true
|
|
@event.save
|
|
@event.new?.should be_false
|
|
keys = db.keys "*"
|
|
keys.should include("#{@event.scope}#{Redistat::KEY_EVENT}#{@event.id}")
|
|
keys.should include("#{@event.scope}#{Redistat::KEY_EVENT_IDS}")
|
|
end
|
|
|
|
it "should find event by id" do
|
|
@event = Redistat::Event.new(@scope, @label, @date, @stats, @options.merge({:store_event => true}), @meta).save
|
|
fetched = Redistat::Event.find(@scope, @event.id)
|
|
@event.scope.to_s.should == fetched.scope.to_s
|
|
@event.label.to_s.should == fetched.label.to_s
|
|
@event.date.to_s.should == fetched.date.to_s
|
|
@event.stats.should == fetched.stats
|
|
@event.meta.should == fetched.meta
|
|
end
|
|
|
|
it "should store summarized statistics" do
|
|
2.times do |i|
|
|
@event = Redistat::Event.new(@scope, @label, @date, @stats, @options, @meta).save
|
|
Redistat::Date::DEPTHS.each do |depth|
|
|
summary = db.hgetall @event.key.to_s(depth)
|
|
summary.should have_at_least(1).items
|
|
summary["views"].should == (i+1).to_s
|
|
break if depth == :hour
|
|
end
|
|
end
|
|
end
|
|
|
|
end |