diff --git a/app/models/err.rb b/app/models/err.rb index 943e2be..865112a 100644 --- a/app/models/err.rb +++ b/app/models/err.rb @@ -7,16 +7,19 @@ class Err field :component field :action field :environment - field :resolved, :type => Boolean + field :resolved, :type => Boolean, :default => false referenced_in :project embeds_many :notices validates_presence_of :klass, :environment + scope :resolved, where(:resolved => true) + scope :unresolved, where(:resolved => false) + def self.for(attrs) project = attrs.delete(:project) - project.errs.where(attrs).first || project.errs.create(attrs) + project.errs.unresolved.where(attrs).first || project.errs.create(attrs) end def resolve! diff --git a/spec/models/err_spec.rb b/spec/models/err_spec.rb index 40321cf..324e6d7 100644 --- a/spec/models/err_spec.rb +++ b/spec/models/err_spec.rb @@ -74,4 +74,24 @@ describe Err do end end + context "Scopes" do + context "resolved" do + it 'only finds resolved Errors' do + resolved = Factory(:err, :resolved => true) + unresolved = Factory(:err, :resolved => false) + Err.resolved.all.should include(resolved) + Err.resolved.all.should_not include(unresolved) + end + end + + context "unresolved" do + it 'only finds unresolved Errors' do + resolved = Factory(:err, :resolved => true) + unresolved = Factory(:err, :resolved => false) + Err.unresolved.all.should_not include(resolved) + Err.unresolved.all.should include(unresolved) + end + end + end + end \ No newline at end of file -- libgit2 0.21.2