Commit 17c9c54fc08559c456d16abeccf60b3d9bcf27e7
Committed by
Robert Lail
1 parent
edaa7791
Exists in
master
and in
1 other branch
Added first_notice_at timestamp to Problem
Showing
2 changed files
with
19 additions
and
1 deletions
Show diff stats
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 |