Commit 6aec6f2e2186ab83af8ee832ea3d5c70f110a48b

Authored by Jared Pace
1 parent 25a79373
Exists in master and in 1 other branch production

Add a flag that will cause deploys to resolve all errs for the given project

app/models/deploy.rb
... ... @@ -10,6 +10,7 @@ class Deploy
10 10 embedded_in :project, :inverse_of => :deploys
11 11  
12 12 after_create :deliver_notification, :if => :should_notify?
  13 + after_create :resolve_project_errs, :if => :should_resolve_project_errs?
13 14  
14 15 validates_presence_of :username, :environment
15 16  
... ... @@ -17,10 +18,18 @@ class Deploy
17 18 Mailer.deploy_notification(self).deliver
18 19 end
19 20  
  21 + def resolve_project_errs
  22 + project.errs.unresolved.each {|err| err.resolve!}
  23 + end
  24 +
20 25 protected
21 26  
22 27 def should_notify?
23 28 project.watchers.any?
24 29 end
  30 +
  31 + def should_resolve_project_errs?
  32 + project.resolve_errs_on_deploy?
  33 + end
25 34  
26 35 end
... ...
app/models/project.rb
... ... @@ -4,6 +4,7 @@ class Project
4 4  
5 5 field :name, :type => String
6 6 field :api_key
  7 + field :resolve_errs_on_deploy, :type => Boolean, :default => false
7 8 key :name
8 9  
9 10 embeds_many :watchers
... ...
app/views/projects/_fields.html.haml
... ... @@ -2,6 +2,10 @@
2 2 = f.label :name
3 3 = f.text_field :name
4 4  
  5 +%div.checkbox
  6 + = f.check_box :resolve_errs_on_deploy
  7 + = f.label :resolve_errs_on_deploy, 'Resolve errors on deploy'
  8 +
5 9 %fieldset.nested-wrapper
6 10 %legend Watchers
7 11 - f.fields_for :watchers do |w|
... ...
public/stylesheets/application.css
... ... @@ -122,6 +122,7 @@ form label {
122 122 display: block;
123 123 }
124 124 form label.inline { display: inline; }
  125 +form .checkbox label { display: inline; }
125 126 form .required label { color: #BF3838;}
126 127 form input[type=text], form input[type=password] {
127 128 width: 96%; padding: 0.8em;
... ...
spec/models/deploy_spec.rb
... ... @@ -22,6 +22,24 @@ describe Deploy do
22 22 and_return(mock('email', :deliver => true))
23 23 Factory(:deploy, :project => Factory(:project_with_watcher))
24 24 end
  25 +
  26 + context 'when the project has resolve_errs_on_deploy set to false' do
  27 + it 'should not resolve the projects errs' do
  28 + project = Factory(:project, :resolve_errs_on_deploy => false)
  29 + @errs = 3.times.inject([]) {|errs,_| errs << Factory(:err, :resolved => false, :project => project)}
  30 + Factory(:deploy, :project => project)
  31 + project.reload.errs.none?{|err| err.resolved?}.should == true
  32 + end
  33 + end
  34 +
  35 + context 'when the project has resolve_errs_on_deploy set to true' do
  36 + it 'should not resolve the projects errs' do
  37 + project = Factory(:project, :resolve_errs_on_deploy => true)
  38 + @errs = 3.times.inject([]) {|errs,_| errs << Factory(:err, :resolved => false, :project => project)}
  39 + Factory(:deploy, :project => project)
  40 + project.reload.errs.all?{|err| err.resolved?}.should == true
  41 + end
  42 + end
25 43 end
26 44  
27 45 end
... ...