From 6aec6f2e2186ab83af8ee832ea3d5c70f110a48b Mon Sep 17 00:00:00 2001 From: Jared Pace Date: Fri, 6 Aug 2010 18:10:20 -0400 Subject: [PATCH] Add a flag that will cause deploys to resolve all errs for the given project --- app/models/deploy.rb | 9 +++++++++ app/models/project.rb | 1 + app/views/projects/_fields.html.haml | 4 ++++ public/stylesheets/application.css | 1 + spec/models/deploy_spec.rb | 18 ++++++++++++++++++ 5 files changed, 33 insertions(+), 0 deletions(-) diff --git a/app/models/deploy.rb b/app/models/deploy.rb index d3c44aa..4277d38 100644 --- a/app/models/deploy.rb +++ b/app/models/deploy.rb @@ -10,6 +10,7 @@ class Deploy embedded_in :project, :inverse_of => :deploys after_create :deliver_notification, :if => :should_notify? + after_create :resolve_project_errs, :if => :should_resolve_project_errs? validates_presence_of :username, :environment @@ -17,10 +18,18 @@ class Deploy Mailer.deploy_notification(self).deliver end + def resolve_project_errs + project.errs.unresolved.each {|err| err.resolve!} + end + protected def should_notify? project.watchers.any? end + + def should_resolve_project_errs? + project.resolve_errs_on_deploy? + end end diff --git a/app/models/project.rb b/app/models/project.rb index 783a137..d3c5e57 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -4,6 +4,7 @@ class Project field :name, :type => String field :api_key + field :resolve_errs_on_deploy, :type => Boolean, :default => false key :name embeds_many :watchers diff --git a/app/views/projects/_fields.html.haml b/app/views/projects/_fields.html.haml index 5ba4846..0d0e0bc 100644 --- a/app/views/projects/_fields.html.haml +++ b/app/views/projects/_fields.html.haml @@ -2,6 +2,10 @@ = f.label :name = f.text_field :name +%div.checkbox + = f.check_box :resolve_errs_on_deploy + = f.label :resolve_errs_on_deploy, 'Resolve errors on deploy' + %fieldset.nested-wrapper %legend Watchers - f.fields_for :watchers do |w| diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css index e22d246..a8827c0 100644 --- a/public/stylesheets/application.css +++ b/public/stylesheets/application.css @@ -122,6 +122,7 @@ form label { display: block; } form label.inline { display: inline; } +form .checkbox label { display: inline; } form .required label { color: #BF3838;} form input[type=text], form input[type=password] { width: 96%; padding: 0.8em; diff --git a/spec/models/deploy_spec.rb b/spec/models/deploy_spec.rb index e33cf8b..1045434 100644 --- a/spec/models/deploy_spec.rb +++ b/spec/models/deploy_spec.rb @@ -22,6 +22,24 @@ describe Deploy do and_return(mock('email', :deliver => true)) Factory(:deploy, :project => Factory(:project_with_watcher)) end + + context 'when the project has resolve_errs_on_deploy set to false' do + it 'should not resolve the projects errs' do + project = Factory(:project, :resolve_errs_on_deploy => false) + @errs = 3.times.inject([]) {|errs,_| errs << Factory(:err, :resolved => false, :project => project)} + Factory(:deploy, :project => project) + project.reload.errs.none?{|err| err.resolved?}.should == true + end + end + + context 'when the project has resolve_errs_on_deploy set to true' do + it 'should not resolve the projects errs' do + project = Factory(:project, :resolve_errs_on_deploy => true) + @errs = 3.times.inject([]) {|errs,_| errs << Factory(:err, :resolved => false, :project => project)} + Factory(:deploy, :project => project) + project.reload.errs.all?{|err| err.resolved?}.should == true + end + end end end -- libgit2 0.21.2