diff --git a/app/models/service.rb b/app/models/service.rb index d21e8a2c5676bc274a3065e644e2bf8e454c780b..540aaad1ce586f7efbb81a1bd3ff1e79907d86ba 100644 --- a/app/models/service.rb +++ b/app/models/service.rb @@ -49,4 +49,8 @@ class Service < ActiveRecord::Base def execute # implement inside child end + + def can_test? + !project.empty_repo? + end end diff --git a/app/views/projects/services/_form.html.haml b/app/views/projects/services/_form.html.haml index b3cbf17809f7618330f335a61e991ab623e186b7..a099193cb6e762983ffb374afe97a90208acf2da 100644 --- a/app/views/projects/services/_form.html.haml +++ b/app/views/projects/services/_form.html.haml @@ -44,5 +44,5 @@ .form-actions = f.submit 'Save', class: 'btn btn-save'   - - if @service.valid? && @service.activated? + - if @service.valid? && @service.activated? && @service.can_test? = link_to 'Test settings', test_project_service_path(@project, @service.to_param), class: 'btn btn-small' diff --git a/spec/models/service_spec.rb b/spec/models/service_spec.rb index 55ef191473070b9908c14673aa7a551a81c4b847..667c80bcf19e9d6f31ed8db868f47883efa3ced2 100644 --- a/spec/models/service_spec.rb +++ b/spec/models/service_spec.rb @@ -18,6 +18,7 @@ require 'spec_helper' describe Service do + describe "Associations" do it { should belong_to :project } it { should have_one :service_hook } @@ -26,4 +27,40 @@ describe Service do describe "Mass assignment" do it { should_not allow_mass_assignment_of(:project_id) } end + + describe "Test Button" do + before do + @service = Service.new + end + + describe "Testable" do + let (:project) { create :project } + + before do + @service.stub( + project: project + ) + @testable = @service.can_test? + end + + describe :can_test do + it { @testable.should == false } + end + end + + describe "With commits" do + let (:project) { create :project_with_code } + + before do + @service.stub( + project: project + ) + @testable = @service.can_test? + end + + describe :can_test do + it { @testable.should == true } + end + end + end end