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 |