Commit 6512befb2a74c3838c6293ea02bd3ade6c056a43
Committed by
Caio
1 parent
1c94ea32
Exists in
master
and in
29 other branches
[Mezuro] Added validation to Project saving.
Showing
2 changed files
with
27 additions
and
19 deletions
Show diff stats
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 < Article | @@ -26,13 +27,13 @@ class MezuroPlugin::ProjectContent < 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 < Article | @@ -48,13 +49,20 @@ class MezuroPlugin::ProjectContent < 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 < ActiveSupport::TestCase | @@ -14,6 +14,15 @@ class ProjectContentTest < 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 | - |