From 90dcfbf43757bfe909d1499e2c13023fbe3cc2cc Mon Sep 17 00:00:00 2001 From: Mike Slemmer Date: Thu, 8 Aug 2013 18:03:41 -0700 Subject: [PATCH] tests passing plus added search api --- lib/jam_ruby/models/crash_dump.rb | 12 ++++++++++++ spec/factories.rb | 3 +++ spec/jam_ruby/models/crash_dump_spec.rb | 17 +++++++++++++++++ 3 files changed, 32 insertions(+) diff --git a/lib/jam_ruby/models/crash_dump.rb b/lib/jam_ruby/models/crash_dump.rb index b3441ae34..1a61da598 100644 --- a/lib/jam_ruby/models/crash_dump.rb +++ b/lib/jam_ruby/models/crash_dump.rb @@ -13,5 +13,17 @@ module JamRuby self.id = SecureRandom.uuid self.uri = "dump/#{self.id}-#{self.created_at.to_i}" end + + def self.search(start_ts, end_ts, user_id, client_id) + result = CrashDump.scoped + unless start_ts.nil? || end_ts.nil? + time_range = start_ts..end_ts + result = result.where("EXTRACT(EPOCH FROM created_at)::bigint >= ?", start_ts).where("EXTRACT(EPOCH FROM created_at)::bigint <= ?", end_ts) + end + result = result.where(:user_id => user_id) unless user_id.nil? + result = result.where(:client_id => client_id) unless client_id.nil? + result + end + end end diff --git a/spec/factories.rb b/spec/factories.rb index ddac6d64b..951cd7232 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -118,4 +118,7 @@ FactoryGirl.define do factory :music_session_perf_data, :class => JamRuby::MusicSessionPerfData do association :music_session => :music_session end + + factory :crash_dump, :class => JamRuby::CrashDump do + end end diff --git a/spec/jam_ruby/models/crash_dump_spec.rb b/spec/jam_ruby/models/crash_dump_spec.rb index 0e3c0b110..27dc4cd72 100644 --- a/spec/jam_ruby/models/crash_dump_spec.rb +++ b/spec/jam_ruby/models/crash_dump_spec.rb @@ -18,4 +18,21 @@ describe CrashDump do CrashDump.first.id.should == @cd.id end + + it "should be able to search for a crash dump" do + @cd = FactoryGirl.build(:crash_dump) + @cd.client_type = "Win32" + @cd.client_version = "version" + @cd.save + @cd.reload + + CrashDump.search(nil, nil, nil, nil).count.should == 1 + CrashDump.search(@cd.created_at.to_i - 100, @cd.created_at.to_i + 100, nil, nil).count.should == 1 + CrashDump.search(@cd.created_at.to_i - 100, @cd.created_at.to_i - 1, nil, nil).count.should == 0 + CrashDump.search(nil, nil, "blah", nil).count.should == 0 + CrashDump.search(nil, nil, @cd.user_id, nil).count.should == 1 + CrashDump.search(nil, nil, nil, "blah").count.should == 0 + CrashDump.search(nil, nil, nil, @cd.client_id).count.should == 1 + end + end