Commit 17c9c54fc08559c456d16abeccf60b3d9bcf27e7

Authored by Jesse Lewis
Committed by Robert Lail
1 parent edaa7791
Exists in master and in 1 other branch production

Added first_notice_at timestamp to Problem

app/models/problem.rb
@@ -7,6 +7,7 @@ class Problem @@ -7,6 +7,7 @@ class Problem
7 include Mongoid::Timestamps 7 include Mongoid::Timestamps
8 8
9 field :last_notice_at, :type => DateTime 9 field :last_notice_at, :type => DateTime
  10 + field :first_notice_at, :type => DateTime
10 field :last_deploy_at, :type => Time 11 field :last_deploy_at, :type => Time
11 field :resolved, :type => Boolean, :default => false 12 field :resolved, :type => Boolean, :default => false
12 field :resolved_at, :type => Time 13 field :resolved_at, :type => Time
@@ -29,6 +30,7 @@ class Problem @@ -29,6 +30,7 @@ class Problem
29 index :app_name 30 index :app_name
30 index :message 31 index :message
31 index :last_notice_at 32 index :last_notice_at
  33 + index :first_notice_at
32 index :last_deploy_at 34 index :last_deploy_at
33 index :notices_count 35 index :notices_count
34 36
@@ -126,7 +128,7 @@ class Problem @@ -126,7 +128,7 @@ class Problem
126 128
127 def cache_notice_attributes(notice=nil) 129 def cache_notice_attributes(notice=nil)
128 notice ||= notices.first 130 notice ||= notices.first
129 - attrs = {:last_notice_at => notices.order_by([:created_at, :asc]).last.try(:created_at)} 131 + attrs = {:last_notice_at => notices.order_by([:created_at, :asc]).last.try(:created_at), :first_notice_at => notices.order_by([:created_at, :asc]).first.try(:created_at)}
130 attrs.merge!( 132 attrs.merge!(
131 :message => notice.message, 133 :message => notice.message,
132 :environment => notice.environment_name, 134 :environment => notice.environment_name,
spec/models/problem_spec.rb
@@ -40,6 +40,22 @@ describe Problem do @@ -40,6 +40,22 @@ describe Problem do
40 end 40 end
41 end 41 end
42 42
  43 + context '#first_notice_at' do
  44 + it "returns the created_at timestamp of the first notice" do
  45 + err = Fabricate(:err)
  46 + problem = err.problem
  47 + problem.should_not be_nil
  48 +
  49 + problem.first_notice_at.should be_nil
  50 +
  51 + notice1 = Fabricate(:notice, :err => err)
  52 + problem.first_notice_at.should == notice1.created_at
  53 +
  54 + notice2 = Fabricate(:notice, :err => err)
  55 + problem.first_notice_at.should == notice1.created_at
  56 + end
  57 + end
  58 +
43 59
44 context '#message' do 60 context '#message' do
45 it "adding a notice caches its message" do 61 it "adding a notice caches its message" do