Commit 6512befb2a74c3838c6293ea02bd3ade6c056a43

Authored by Joao M. M. da Silva + Jefferson Fernandes
Committed by Caio
1 parent 1c94ea32

[Mezuro] Added validation to Project saving.

plugins/mezuro/lib/mezuro_plugin/project_content.rb
1 class MezuroPlugin::ProjectContent < Article 1 class MezuroPlugin::ProjectContent < Article
  2 + validate :validate_kalibro_project_name
2 3
3 def self.short_description 4 def self.short_description
4 'Kalibro project' 5 'Kalibro project'
@@ -26,13 +27,13 @@ class MezuroPlugin::ProjectContent &lt; Article @@ -26,13 +27,13 @@ class MezuroPlugin::ProjectContent &lt; Article
26 end 27 end
27 28
28 def get_date_result(date) 29 def get_date_result(date)
29 - client = Kalibro::Client::ProjectResultClient.new 30 + client = Kalibro::Client::ProjectResultClient.new
30 @project_result ||= client.has_results_before(name, date) ? client.last_result_before(name, date) : client.first_result_after(name, date) 31 @project_result ||= client.has_results_before(name, date) ? client.last_result_before(name, date) : client.first_result_after(name, date)
31 end 32 end
32 33
33 def module_result(module_name) 34 def module_result(module_name)
34 module_name = project.name if module_name.nil? 35 module_name = project.name if module_name.nil?
35 - @module_client ||= module_result_client.module_result(project.name, module_name, project_result.date) 36 + @module_client ||= module_result_client.module_result(project.name, module_name, project_result.date)
36 end 37 end
37 38
38 def result_history(module_name) 39 def result_history(module_name)
@@ -48,13 +49,20 @@ class MezuroPlugin::ProjectContent &lt; Article @@ -48,13 +49,20 @@ class MezuroPlugin::ProjectContent &lt; Article
48 49
49 private 50 private
50 51
  52 + def validate_kalibro_project_name
  53 + begin
  54 + Kalibro::Client::ProjectClient.project(name)
  55 + errors.add_to_base("Project name already exists in Kalibro")
  56 + rescue
  57 + end
  58 + end
  59 +
51 def send_project_to_service 60 def send_project_to_service
52 Kalibro::Client::ProjectClient.save(self) 61 Kalibro::Client::ProjectClient.save(self)
53 - Kalibro::Client::KalibroClient.process_project(name, periodicity_in_days) 62 + Kalibro::Client::KalibroClient.process_project(name, periodicity_in_days)
54 end 63 end
55 64
56 def remove_project_from_service 65 def remove_project_from_service
57 Kalibro::Client::ProjectClient.remove(name) 66 Kalibro::Client::ProjectClient.remove(name)
58 end 67 end
59 -  
60 end 68 end
plugins/mezuro/test/unit/mezuro_plugin/project_content_test.rb
@@ -14,6 +14,15 @@ class ProjectContentTest &lt; ActiveSupport::TestCase @@ -14,6 +14,15 @@ class ProjectContentTest &lt; ActiveSupport::TestCase
14 @content.repository_url = @project.repository.address 14 @content.repository_url = @project.repository.address
15 @content.configuration_name = @project.configuration_name 15 @content.configuration_name = @project.configuration_name
16 @content.periodicity_in_days = 1 16 @content.periodicity_in_days = 1
  17 +
  18 + @content2 = MezuroPlugin::ProjectContent.new
  19 + @content2.name = @content.name
  20 + @content2.license = @project.license
  21 + @content2.description = @project.description
  22 + @content2.repository_type = @project.repository.type
  23 + @content2.repository_url = @project.repository.address
  24 + @content2.configuration_name = @project.configuration_name
  25 + @content2.periodicity_in_days = 1
17 end 26 end
18 27
19 should 'be an article' do 28 should 'be an article' do
@@ -91,6 +100,12 @@ returns(module_result) @@ -91,6 +100,12 @@ returns(module_result)
91 @content.send :remove_project_from_service 100 @content.send :remove_project_from_service
92 end 101 end
93 102
  103 + should 'not save a project with an existing project name in kalibro' do
  104 + Kalibro::Client::ProjectClient.expects(:project).with(@content.name).returns(mock)
  105 + @content.send :validate_kalibro_project_name
  106 + assert_equal @content.errors.on_base, "Project name already exists in Kalibro"
  107 + end
  108 +
94 private 109 private
95 def mock_project_client 110 def mock_project_client
96 Kalibro::Client::ProjectClient.expects(:project).with(@content.name).returns(@project) 111 Kalibro::Client::ProjectClient.expects(:project).with(@content.name).returns(@project)
@@ -103,18 +118,3 @@ returns(module_result) @@ -103,18 +118,3 @@ returns(module_result)
103 end 118 end
104 119
105 end 120 end
106 -  
107 -  
108 -  
109 -  
110 -  
111 -  
112 -  
113 -  
114 -  
115 -  
116 -  
117 -  
118 -  
119 -  
120 -