Commit 3517cb28604a266e2a9060f7dbd32c25ad65ca8f

Authored by Paulo Meireles
1 parent 1488e688

[Mezuro] Refactoring configuration (myprofile) controller, clients, and validations

plugins/mezuro/controllers/mezuro_plugin_myprofile_controller.rb
@@ -4,123 +4,119 @@ class MezuroPluginMyprofileController < ProfileController @@ -4,123 +4,119 @@ class MezuroPluginMyprofileController < ProfileController
4 4
5 5
6 def choose_base_tool 6 def choose_base_tool
7 - @configuration_name = params[:configuration_name]  
8 - @tool_names = Kalibro::Client::BaseToolClient.new 7 + @configuration_content = profile.articles.find(params[:id])
  8 + @base_tools = Kalibro::Client::BaseToolClient.base_tools
9 end 9 end
10 10
11 def choose_metric 11 def choose_metric
12 - @configuration_name = params[:configuration_name]  
13 - @collector_name = params[:collector_name]  
14 - @collector = Kalibro::Client::BaseToolClient.new.base_tool(@collector_name) 12 + @configuration_content = profile.articles.find(params[:id])
  13 + @base_tool = params[:base_tool]
  14 + @supported_metrics = Kalibro::Client::BaseToolClient.metrics @base_tool
15 end 15 end
16 16
17 def new_metric_configuration 17 def new_metric_configuration
18 - metric_name = params[:metric_name]  
19 - collector_name = params[:collector_name]  
20 - collector = Kalibro::Client::BaseToolClient.new.base_tool(collector_name)  
21 - @metric = collector.supported_metrics.find {|metric| metric.name == metric_name}  
22 - @configuration_name = params[:configuration_name] 18 + @configuration_content = profile.articles.find(params[:id])
  19 + @metric = Kalibro::Client::BaseToolClient.metric params[:metric_name], params[:base_tool]
23 end 20 end
24 21
25 def new_compound_metric_configuration 22 def new_compound_metric_configuration
26 - @configuration_name = params[:configuration_name]  
27 - @metric_configurations = Kalibro::Client::ConfigurationClient.new.configuration(@configuration_name).metric_configurations 23 + @configuration_content = profile.articles.find(params[:id])
  24 + @metric_configurations = @configuration_content.metric_configurations
28 end 25 end
29 26
30 def edit_metric_configuration 27 def edit_metric_configuration
31 - metric_name = params[:metric_name]  
32 - @configuration_name = params[:configuration_name]  
33 - @metric_configuration = Kalibro::Client::MetricConfigurationClient.new.metric_configuration(@configuration_name, metric_name) 28 + @configuration_content = profile.articles.find(params[:id])
  29 + @metric_configuration = Kalibro::Client::MetricConfigurationClient.metric_configuration(@configuration_content.name, params[:metric_name])
34 @metric = @metric_configuration.metric 30 @metric = @metric_configuration.metric
35 end 31 end
36 32
37 def edit_compound_metric_configuration 33 def edit_compound_metric_configuration
38 - metric_name = params[:metric_name]  
39 - @configuration_name = params[:configuration_name]  
40 - @metric_configuration = Kalibro::Client::MetricConfigurationClient.new.metric_configuration(@configuration_name, metric_name)  
41 - @metric_configurations = Kalibro::Client::ConfigurationClient.new.configuration(@configuration_name).metric_configurations 34 + @configuration_content = profile.articles.find(params[:id])
  35 + @metric_configuration = Kalibro::Client::MetricConfigurationClient.metric_configuration(@configuration_content.name, params[:metric_name])
  36 + @metric_configurations = @configuration_content.metric_configurations
42 @metric = @metric_configuration.metric 37 @metric = @metric_configuration.metric
43 end 38 end
44 39
45 def create_metric_configuration 40 def create_metric_configuration
46 - metric_name = generic_metric_configuration_creation(new_metric_configuration_instance)  
47 - redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/edit_metric_configuration?configuration_name=#{@configuration_name.gsub(/\s/, '+')}&metric_name=#{metric_name.gsub(/\s/, '+')}" 41 + configuration_content = profile.articles.find(params[:id])
  42 + metric_name = generic_metric_configuration_creation(new_metric_configuration_instance, configuration_content.name)
  43 + redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/edit_metric_configuration?id=#{configuration_content.id}&metric_name=#{metric_name.gsub(/\s/, '+')}"
48 end 44 end
49 45
50 def create_compound_metric_configuration 46 def create_compound_metric_configuration
51 - metric_name = generic_metric_configuration_creation(new_compound_metric_configuration_instance)  
52 - redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/edit_compound_metric_configuration?configuration_name=#{@configuration_name.gsub(/\s/, '+')}&metric_name=#{metric_name.gsub(/\s/, '+')}" 47 + configuration_content = profile.articles.find(params[:id])
  48 + metric_name = generic_metric_configuration_creation(new_compound_metric_configuration_instance, configuration_content.name)
  49 + redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/edit_compound_metric_configuration?id=#{configuration_content.id}&metric_name=#{metric_name.gsub(/\s/, '+')}"
53 end 50 end
54 51
55 def update_metric_configuration 52 def update_metric_configuration
56 - auxiliar_update_metric_configuration(MezuroPlugin::MetricConfigurationContent::NATIVE_TYPE)  
57 - redirect_to "/#{profile.identifier}/#{@configuration_name.downcase.gsub(/\s/, '-')}" 53 + @configuration_content = profile.articles.find(params[:id])
  54 + auxiliar_update_metric_configuration(Kalibro::Entities::MetricConfiguration::NATIVE_TYPE)
  55 + redirect_to "/#{profile.identifier}/#{@configuration_content.slug}"
58 end 56 end
59 57
60 def update_compound_metric_configuration 58 def update_compound_metric_configuration
61 - auxiliar_update_metric_configuration(MezuroPlugin::MetricConfigurationContent::COMPOUND_TYPE)  
62 - redirect_to "/#{profile.identifier}/#{@configuration_name.downcase.gsub(/\s/, '-')}" 59 + @configuration_content = profile.articles.find(params[:id])
  60 + auxiliar_update_metric_configuration(Kalibro::Entities::MetricConfiguration::COMPOUND_TYPE)
  61 + redirect_to "/#{profile.identifier}/#{@configuration_content.slug}"
63 end 62 end
64 63
65 def new_range 64 def new_range
  65 + @configuration_content = profile.articles.find(params[:id])
66 @metric_name = params[:metric_name] 66 @metric_name = params[:metric_name]
67 - @configuration_name = params[:configuration_name]  
68 end 67 end
69 68
70 def edit_range 69 def edit_range
  70 + @configuration_content = profile.articles.find(params[:id])
71 @metric_name = params[:metric_name] 71 @metric_name = params[:metric_name]
72 - @configuration_name = params[:configuration_name]  
73 @beginning_id = params[:beginning_id] 72 @beginning_id = params[:beginning_id]
74 73
75 - metric_configuration_client = Kalibro::Client::MetricConfigurationClient.new  
76 - metric_configuration = metric_configuration_client.metric_configuration(@configuration_name, @metric_name) 74 + metric_configuration = Kalibro::Client::MetricConfigurationClient.metric_configuration(@configuration_content.name, @metric_name)
77 @range = metric_configuration.ranges.find{ |range| range.beginning == @beginning_id.to_f } 75 @range = metric_configuration.ranges.find{ |range| range.beginning == @beginning_id.to_f }
78 end 76 end
79 77
80 def create_range 78 def create_range
  79 + @configuration_content = profile.articles.find(params[:id])
81 @range = new_range_instance 80 @range = new_range_instance
82 - configuration_name = params[:configuration_name]  
83 metric_name = params[:metric_name] 81 metric_name = params[:metric_name]
84 beginning_id = params[:beginning_id] 82 beginning_id = params[:beginning_id]
85 - metric_configuration_client = Kalibro::Client::MetricConfigurationClient.new  
86 - metric_configuration = metric_configuration_client.metric_configuration(configuration_name, metric_name) 83 +
  84 + metric_configuration = Kalibro::Client::MetricConfigurationClient.metric_configuration(@configuration_content.name, metric_name)
87 metric_configuration.add_range(@range) 85 metric_configuration.add_range(@range)
88 - metric_configuration_client.save(metric_configuration, configuration_name) 86 + Kalibro::Client::MetricConfigurationClient.new.save(metric_configuration, @configuration_content.name)
89 end 87 end
90 88
91 def update_range 89 def update_range
  90 + configuration_content = profile.articles.find(params[:id])
92 metric_name = params[:metric_name] 91 metric_name = params[:metric_name]
93 - configuration_name = params[:configuration_name]  
94 beginning_id = params[:beginning_id] 92 beginning_id = params[:beginning_id]
95 - metric_configuration_client = Kalibro::Client::MetricConfigurationClient.new  
96 - metric_configuration = metric_configuration_client.metric_configuration(configuration_name, metric_name) 93 + metric_configuration = Kalibro::Client::MetricConfigurationClient.metric_configuration(configuration_content.name, metric_name)
97 index = metric_configuration.ranges.index{ |range| range.beginning == beginning_id.to_f } 94 index = metric_configuration.ranges.index{ |range| range.beginning == beginning_id.to_f }
98 metric_configuration.ranges[index] = new_range_instance 95 metric_configuration.ranges[index] = new_range_instance
99 - Kalibro::Client::MetricConfigurationClient.new.save(metric_configuration, configuration_name) 96 + Kalibro::Client::MetricConfigurationClient.new.save(metric_configuration, configuration_content.name)
100 end 97 end
101 98
102 def remove_range 99 def remove_range
103 - configuration_name = params[:configuration_name] 100 + configuration_content = profile.articles.find(params[:id])
104 metric_name = params[:metric_name] 101 metric_name = params[:metric_name]
105 beginning_id = params[:range_beginning] 102 beginning_id = params[:range_beginning]
106 - metric_configuration_client = Kalibro::Client::MetricConfigurationClient.new  
107 - metric_configuration = metric_configuration_client.metric_configuration(configuration_name, metric_name) 103 +
  104 + metric_configuration = Kalibro::Client::MetricConfigurationClient.metric_configuration(configuration_content.name, metric_name)
108 metric_configuration.ranges.delete_if { |range| range.beginning == beginning_id.to_f }.inspect 105 metric_configuration.ranges.delete_if { |range| range.beginning == beginning_id.to_f }.inspect
109 Kalibro::Client::MetricConfigurationClient.new.save(metric_configuration, configuration_name) 106 Kalibro::Client::MetricConfigurationClient.new.save(metric_configuration, configuration_name)
110 - formatted_configuration_name = configuration_name.gsub(/\s/, '+')  
111 formatted_metric_name = metric_name.gsub(/\s/, '+') 107 formatted_metric_name = metric_name.gsub(/\s/, '+')
112 if metric_configuration.metric.class == Kalibro::Entities::CompoundMetric 108 if metric_configuration.metric.class == Kalibro::Entities::CompoundMetric
113 - redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/edit_compound_metric_configuration?configuration_name=#{formatted_configuration_name}&metric_name=#{formatted_metric_name}" 109 + redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/edit_compound_metric_configuration?id=#{configuration_content.id}&metric_name=#{formatted_metric_name}"
114 else 110 else
115 - redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/edit_metric_configuration?configuration_name=#{formatted_configuration_name}&metric_name=#{formatted_metric_name}" 111 + redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/edit_metric_configuration?id=#{configuration_content.id}&metric_name=#{formatted_metric_name}"
116 end 112 end
117 end 113 end
118 114
119 def remove_metric_configuration 115 def remove_metric_configuration
120 - configuration_name = params[:configuration_name] 116 + configuration_content = profile.articles.find(params[:id])
121 metric_name = params[:metric_name] 117 metric_name = params[:metric_name]
122 - Kalibro::Client::MetricConfigurationClient.new.remove(configuration_name, metric_name)  
123 - redirect_to "/#{profile.identifier}/#{configuration_name.downcase.gsub(/\s/, '-')}" 118 + Kalibro::Client::MetricConfigurationClient.new.remove(configuration_content.name, metric_name)
  119 + redirect_to "/#{profile.identifier}/#{configuration_content.slug}"
124 end 120 end
125 121
126 private 122 private
@@ -128,16 +124,16 @@ class MezuroPluginMyprofileController < ProfileController @@ -128,16 +124,16 @@ class MezuroPluginMyprofileController < ProfileController
128 def new_metric_configuration_instance 124 def new_metric_configuration_instance
129 metric_configuration = Kalibro::Entities::MetricConfiguration.new 125 metric_configuration = Kalibro::Entities::MetricConfiguration.new
130 metric_configuration.metric = Kalibro::Entities::NativeMetric.new 126 metric_configuration.metric = Kalibro::Entities::NativeMetric.new
131 - assign_metric_configuration_instance(metric_configuration, MezuroPlugin::MetricConfigurationContent::NATIVE_TYPE) 127 + assign_metric_configuration_instance(metric_configuration, Kalibro::Entities::MetricConfiguration::NATIVE_TYPE)
132 end 128 end
133 129
134 def new_compound_metric_configuration_instance 130 def new_compound_metric_configuration_instance
135 metric_configuration = Kalibro::Entities::MetricConfiguration.new 131 metric_configuration = Kalibro::Entities::MetricConfiguration.new
136 metric_configuration.metric = Kalibro::Entities::CompoundMetric.new 132 metric_configuration.metric = Kalibro::Entities::CompoundMetric.new
137 - assign_metric_configuration_instance(metric_configuration, MezuroPlugin::MetricConfigurationContent::COMPOUND_TYPE) 133 + assign_metric_configuration_instance(metric_configuration, Kalibro::Entities::MetricConfiguration::COMPOUND_TYPE)
138 end 134 end
139 135
140 - def assign_metric_configuration_instance(metric_configuration, type=MezuroPlugin::MetricConfigurationContent::NATIVE_TYPE) 136 + def assign_metric_configuration_instance(metric_configuration, type=Kalibro::Entities::MetricConfiguration::NATIVE_TYPE)
141 metric_configuration.metric.name = params[:metric_configuration][:metric][:name] 137 metric_configuration.metric.name = params[:metric_configuration][:metric][:name]
142 metric_configuration.metric.description = params[:metric_configuration][:metric][:description] 138 metric_configuration.metric.description = params[:metric_configuration][:metric][:description]
143 metric_configuration.metric.scope = params[:metric_configuration][:metric][:scope] 139 metric_configuration.metric.scope = params[:metric_configuration][:metric][:scope]
@@ -145,28 +141,25 @@ class MezuroPluginMyprofileController < ProfileController @@ -145,28 +141,25 @@ class MezuroPluginMyprofileController < ProfileController
145 metric_configuration.weight = params[:metric_configuration][:weight] 141 metric_configuration.weight = params[:metric_configuration][:weight]
146 metric_configuration.aggregation_form = params[:metric_configuration][:aggregation_form] 142 metric_configuration.aggregation_form = params[:metric_configuration][:aggregation_form]
147 143
148 - if type == MezuroPlugin::MetricConfigurationContent::NATIVE_TYPE 144 + if type == Kalibro::Entities::MetricConfiguration::NATIVE_TYPE
149 metric_configuration.metric.origin = params[:metric_configuration][:metric][:origin] 145 metric_configuration.metric.origin = params[:metric_configuration][:metric][:origin]
150 metric_configuration.metric.language = params[:metric_configuration][:metric][:language] 146 metric_configuration.metric.language = params[:metric_configuration][:metric][:language]
151 - elsif type == MezuroPlugin::MetricConfigurationContent::COMPOUND_TYPE 147 + elsif type == Kalibro::Entities::MetricConfiguration::COMPOUND_TYPE
152 metric_configuration.metric.script = params[:metric_configuration][:metric][:script] 148 metric_configuration.metric.script = params[:metric_configuration][:metric][:script]
153 end 149 end
154 metric_configuration 150 metric_configuration
155 end 151 end
156 152
157 - def generic_metric_configuration_creation(metric_configuration)  
158 - @configuration_name = params[:configuration_name]  
159 - Kalibro::Client::MetricConfigurationClient.new.save(metric_configuration, @configuration_name) 153 + def generic_metric_configuration_creation(metric_configuration, configuration_name)
  154 + Kalibro::Client::MetricConfigurationClient.new.save(metric_configuration, configuration_name)
160 metric_configuration.metric.name 155 metric_configuration.metric.name
161 end 156 end
162 157
163 def auxiliar_update_metric_configuration(type) 158 def auxiliar_update_metric_configuration(type)
164 - @configuration_name = params[:configuration_name]  
165 metric_name = params[:metric_configuration][:metric][:name] 159 metric_name = params[:metric_configuration][:metric][:name]
166 - metric_configuration_client = Kalibro::Client::MetricConfigurationClient.new  
167 - metric_configuration = metric_configuration_client.metric_configuration(@configuration_name, metric_name) 160 + metric_configuration = Kalibro::Client::MetricConfigurationClient.metric_configuration(@configuration_content.name, metric_name)
168 metric_configuration = assign_metric_configuration_instance(metric_configuration, type) 161 metric_configuration = assign_metric_configuration_instance(metric_configuration, type)
169 - metric_configuration_client.save(metric_configuration, @configuration_name) 162 + Kalibro::Client::MetricConfigurationClient.new.save(metric_configuration, @configuration_content.name)
170 end 163 end
171 164
172 def new_range_instance 165 def new_range_instance
plugins/mezuro/lib/kalibro/client/base_tool_client.rb
1 class Kalibro::Client::BaseToolClient 1 class Kalibro::Client::BaseToolClient
2 2
  3 + def self.base_tools
  4 + new.base_tool_names
  5 + end
  6 +
  7 + def self.metrics(base_tool)
  8 + new.base_tool(base_tool).supported_metrics
  9 + end
  10 +
  11 + def self.metric(metric_name, base_tool)
  12 + metrics(base_tool).find {|metric| metric.name == metric_name}
  13 + end
  14 +
3 def initialize 15 def initialize
4 @port = Kalibro::Client::Port.new('BaseTool') 16 @port = Kalibro::Client::Port.new('BaseTool')
5 end 17 end
plugins/mezuro/lib/kalibro/client/configuration_client.rb
1 class Kalibro::Client::ConfigurationClient 1 class Kalibro::Client::ConfigurationClient
2 2
  3 + def self.configuration(configuration_name)
  4 + new.configuration(configuration_name)
  5 + end
  6 +
3 def self.save(configuration_content) 7 def self.save(configuration_content)
4 - configuration = Kalibro::Entities::Configuration.new  
5 - configuration.name = configuration_content.name 8 + begin
  9 + configuration = new.configuration(configuration_content.name)
  10 + rescue
  11 + configuration = Kalibro::Entities::Configuration.new
  12 + configuration.name = configuration_content.name
  13 + end
  14 +
6 configuration.description = configuration_content.description 15 configuration.description = configuration_content.description
7 new.save(configuration) 16 new.save(configuration)
8 end 17 end
plugins/mezuro/lib/kalibro/client/metric_configuration_client.rb
1 class Kalibro::Client::MetricConfigurationClient 1 class Kalibro::Client::MetricConfigurationClient
2 2
  3 + def self.metric_configuration(configuration_name, metric_name)
  4 + new.metric_configuration(configuration_name, metric_name)
  5 + end
  6 +
3 def initialize 7 def initialize
4 @port = Kalibro::Client::Port.new('MetricConfiguration') 8 @port = Kalibro::Client::Port.new('MetricConfiguration')
5 end 9 end
@@ -25,4 +29,4 @@ class Kalibro::Client::MetricConfigurationClient @@ -25,4 +29,4 @@ class Kalibro::Client::MetricConfigurationClient
25 }) 29 })
26 end 30 end
27 31
28 -end  
29 \ No newline at end of file 32 \ No newline at end of file
  33 +end
plugins/mezuro/lib/kalibro/entities/metric_configuration.rb
1 class Kalibro::Entities::MetricConfiguration < Kalibro::Entities::Entity 1 class Kalibro::Entities::MetricConfiguration < Kalibro::Entities::Entity
2 2
  3 + NATIVE_TYPE='native'
  4 + COMPOUND_TYPE='compound'
  5 +
3 attr_accessor :metric, :code, :weight, :aggregation_form, :range 6 attr_accessor :metric, :code, :weight, :aggregation_form, :range
4 7
5 def metric=(value) 8 def metric=(value)
plugins/mezuro/lib/mezuro_plugin/configuration_content.rb
1 class MezuroPlugin::ConfigurationContent < Article 1 class MezuroPlugin::ConfigurationContent < Article
  2 + validate_on_create :validate_kalibro_configuration_name
2 3
3 def self.short_description 4 def self.short_description
4 'Kalibro configuration' 5 'Kalibro configuration'
@@ -8,7 +9,7 @@ class MezuroPlugin::ConfigurationContent &lt; Article @@ -8,7 +9,7 @@ class MezuroPlugin::ConfigurationContent &lt; Article
8 'Sets of thresholds to interpret metrics' 9 'Sets of thresholds to interpret metrics'
9 end 10 end
10 11
11 - settings_items :description, :metrics 12 + settings_items :description
12 13
13 include ActionView::Helpers::TagHelper 14 include ActionView::Helpers::TagHelper
14 def to_html(options = {}) 15 def to_html(options = {})
@@ -17,15 +18,29 @@ class MezuroPlugin::ConfigurationContent &lt; Article @@ -17,15 +18,29 @@ class MezuroPlugin::ConfigurationContent &lt; Article
17 end 18 end
18 end 19 end
19 20
20 - def configuration #FIXME invalid method name 21 + def configuration
21 Kalibro::Client::ConfigurationClient.configuration(name) 22 Kalibro::Client::ConfigurationClient.configuration(name)
22 end 23 end
  24 +
  25 + def metric_configurations
  26 + configuration.metric_configurations
  27 + end
  28 +
23 29
24 after_save :send_configuration_to_service 30 after_save :send_configuration_to_service
25 after_destroy :remove_configuration_from_service 31 after_destroy :remove_configuration_from_service
26 32
27 private 33 private
28 34
  35 + def validate_kalibro_configuration_name
  36 + existing = Kalibro::Client::ConfigurationClient.new.configuration_names
  37 + existing.each { |a| a.downcase!}
  38 +
  39 + if existing.include?(name.downcase)
  40 + errors.add_to_base("Configuration name already exists in Kalibro")
  41 + end
  42 + end
  43 +
29 def send_configuration_to_service 44 def send_configuration_to_service
30 Kalibro::Client::ConfigurationClient.save(self) 45 Kalibro::Client::ConfigurationClient.save(self)
31 end 46 end
plugins/mezuro/lib/mezuro_plugin/metric_configuration_content.rb
@@ -1,40 +0,0 @@ @@ -1,40 +0,0 @@
1 -class MezuroPlugin::MetricConfigurationContent < Article  
2 -  
3 - NATIVE_TYPE='native'  
4 - COMPOUND_TYPE='compound'  
5 -  
6 - def self.short_description  
7 - 'Kalibro Configurated Metric'  
8 - end  
9 -  
10 - def self.description  
11 - 'Sets of thresholds to interpret a metric'  
12 - end  
13 -  
14 - settings_items :description, :code, :weight, :scope, :aggregation_form, :range  
15 -  
16 - include ActionView::Helpers::TagHelper  
17 - def to_html(options = {})  
18 - lambda do  
19 - render :file => 'content_viewer/show_configuration.rhtml'  
20 - end  
21 - end  
22 -  
23 - def metric_configuration #FIXME invalid method name  
24 - Kalibro::Client::MetricConfigurationClient.metric_configuration(name)  
25 - end  
26 -  
27 - after_save :send_metric_configuration_to_service  
28 - after_destroy :remove_metric_configuration_from_service  
29 -  
30 - private  
31 -  
32 - def send_metric_configuration_to_service  
33 - Kalibro::Client::MetricConfigurationClient.save(self)  
34 - end  
35 -  
36 - def remove_metric_configuration_from_service  
37 - Kalibro::Client::MetricConfigurationClient.remove(name)  
38 - end  
39 -  
40 -end  
plugins/mezuro/public/javascripts/validations.js
@@ -30,8 +30,15 @@ function IsNotNumeric(value){ @@ -30,8 +30,15 @@ function IsNotNumeric(value){
30 return true; 30 return true;
31 } 31 }
32 32
  33 +function IsNotInfinite(value){
  34 + if(value.match(/INF/)){
  35 + return false;
  36 + }
  37 + return true;
  38 +}
  39 +
33 function IsNotHexadecimal(value){ 40 function IsNotHexadecimal(value){
34 - if(value.match(/[0-9a-fA-F]{1,8}/)) 41 + if(value.match(/^[0-9a-fA-F]{1,8}$/))
35 { 42 {
36 return false; 43 return false;
37 } 44 }
@@ -50,15 +57,17 @@ function validate_new_range_configuration(event){ @@ -50,15 +57,17 @@ function validate_new_range_configuration(event){
50 alert("Please fill all fields marked with (*)"); 57 alert("Please fill all fields marked with (*)");
51 return false; 58 return false;
52 } 59 }
53 - if (IsNotNumeric(beginning) || IsNotNumeric(end) || IsNotNumeric(grade)) 60 + if ( (IsNotNumeric(beginning) && IsNotInfinite(beginning)) || (IsNotNumeric(end) && IsNotInfinite(end)) || IsNotNumeric(grade))
54 { 61 {
55 alert("Beginning, End and Grade must be numeric values"); 62 alert("Beginning, End and Grade must be numeric values");
56 return false; 63 return false;
57 } 64 }
58 if (parseInt(beginning) > parseInt(end)) 65 if (parseInt(beginning) > parseInt(end))
59 { 66 {
60 - alert("End must be greater than Beginning");  
61 - return false; 67 + if(IsNotInfinite(beginning) && IsNotInfinite(end)){
  68 + alert("End must be greater than Beginning");
  69 + return false;
  70 + }
62 } 71 }
63 if (IsNotHexadecimal(color)){ 72 if (IsNotHexadecimal(color)){
64 alert("Color must be an hexadecimal value"); 73 alert("Color must be an hexadecimal value");
plugins/mezuro/test/functional/mezuro_plugin_myprofile_controller_test.rb
@@ -14,7 +14,7 @@ class MezuroPluginMyprofileControllerTest &lt; ActionController::TestCase @@ -14,7 +14,7 @@ class MezuroPluginMyprofileControllerTest &lt; ActionController::TestCase
14 @response = ActionController::TestResponse.new 14 @response = ActionController::TestResponse.new
15 @profile = fast_create(Community) 15 @profile = fast_create(Community)
16 16
17 - @collector = BaseToolFixtures.analizo 17 + @base_tool = BaseToolFixtures.analizo
18 @base_tool_client = Kalibro::Client::BaseToolClient.new 18 @base_tool_client = Kalibro::Client::BaseToolClient.new
19 @metric = NativeMetricFixtures.amloc 19 @metric = NativeMetricFixtures.amloc
20 @metric_configuration_client = Kalibro::Client::MetricConfigurationClient.new 20 @metric_configuration_client = Kalibro::Client::MetricConfigurationClient.new
@@ -23,70 +23,73 @@ class MezuroPluginMyprofileControllerTest &lt; ActionController::TestCase @@ -23,70 +23,73 @@ class MezuroPluginMyprofileControllerTest &lt; ActionController::TestCase
23 @configuration = ConfigurationFixtures.kalibro_configuration 23 @configuration = ConfigurationFixtures.kalibro_configuration
24 end 24 end
25 25
26 - should 'assign configuration name in choose_base_tool' do  
27 - get :choose_base_tool, :profile => @profile.identifier, :configuration_name => "test name"  
28 - assert_equal assigns(:configuration_name), "test name" 26 + should 'assign configuration content in choose_base_tool' do
  27 + create_configuration_content
  28 + Kalibro::Client::BaseToolClient.expects(:base_tools).returns([])
  29 + get :choose_base_tool, :profile => @profile.identifier, :id => @content.id
  30 + assert_equal assigns(:configuration_content), @content
29 end 31 end
30 32
31 - should 'create base tool client' do  
32 - get :choose_base_tool, :profile => @profile.identifier, :configuration_name => "test name"  
33 - assert assigns(:tool_names).instance_of?(Kalibro::Client::BaseToolClient)  
34 - end  
35 -  
36 - should 'assign configuration and collector name in choose_metric' do 33 + should 'assign configuration and base_tool name in choose_metric' do
  34 + create_configuration_content
37 Kalibro::Client::BaseToolClient.expects(:new).returns(@base_tool_client) 35 Kalibro::Client::BaseToolClient.expects(:new).returns(@base_tool_client)
38 - @base_tool_client.expects(:base_tool).with(@collector.name).returns(@collector)  
39 - get :choose_metric, :profile => @profile.identifier, :configuration_name => "test name", :collector_name => "Analizo"  
40 - assert_equal assigns(:configuration_name), "test name"  
41 - assert_equal assigns(:collector_name), "Analizo" 36 + @base_tool_client.expects(:base_tool).with(@base_tool.name).returns(@base_tool)
  37 + get :choose_metric, :profile => @profile.identifier, :id => @content.id, :base_tool => @base_tool.name
  38 + assert_equal @content, assigns(:configuration_content)
  39 + assert_equal @base_tool.name, assigns(:base_tool)
42 end 40 end
43 41
44 - should 'get collector by name' do 42 + should 'get base_tool by name' do
  43 + create_configuration_content
45 Kalibro::Client::BaseToolClient.expects(:new).returns(@base_tool_client) 44 Kalibro::Client::BaseToolClient.expects(:new).returns(@base_tool_client)
46 - @base_tool_client.expects(:base_tool).with(@collector.name).returns(@collector)  
47 - get :choose_metric, :profile => @profile.identifier, :configuration_name => "test name", :collector_name => "Analizo"  
48 - assert_equal assigns(:collector), @collector 45 + @base_tool_client.expects(:base_tool).with(@base_tool.name).returns(@base_tool)
  46 + get :choose_metric, :profile => @profile.identifier, :id => @content.id, :base_tool => @base_tool.name
  47 + assert_equal @base_tool.name, assigns(:base_tool)
49 end 48 end
50 49
51 should 'get chosen native metric and configuration name' do 50 should 'get chosen native metric and configuration name' do
  51 + create_configuration_content
52 Kalibro::Client::BaseToolClient.expects(:new).returns(@base_tool_client) 52 Kalibro::Client::BaseToolClient.expects(:new).returns(@base_tool_client)
53 - @base_tool_client.expects(:base_tool).with(@collector.name).returns(@collector)  
54 - get :new_metric_configuration, :profile => @profile.identifier, :configuration_name => "test name", :collector_name => "Analizo", :metric_name => @metric.name  
55 - assert_equal assigns(:configuration_name), "test name"  
56 - assert_equal assigns(:metric), @metric 53 + @base_tool_client.expects(:base_tool).with(@base_tool.name).returns(@base_tool)
  54 + get :new_metric_configuration, :profile => @profile.identifier, :id => @content.id, :base_tool => @base_tool.name, :metric_name => @metric.name
  55 + assert_equal @content, assigns(:configuration_content)
  56 + assert_equal @metric, assigns(:metric)
57 end 57 end
58 58
59 should 'call configuration client in new_compound_metric_configuration method' do 59 should 'call configuration client in new_compound_metric_configuration method' do
  60 + create_configuration_content
60 configuration_client = mock 61 configuration_client = mock
61 Kalibro::Client::ConfigurationClient.expects(:new).returns(configuration_client) 62 Kalibro::Client::ConfigurationClient.expects(:new).returns(configuration_client)
62 configuration_client.expects(:configuration).with(@configuration.name).returns(@configuration) 63 configuration_client.expects(:configuration).with(@configuration.name).returns(@configuration)
63 - get :new_compound_metric_configuration, :profile => @profile.identifier, :configuration_name => @configuration.name 64 + get :new_compound_metric_configuration, :profile => @profile.identifier, :id => @content.id
64 assert_response 200 65 assert_response 200
65 end 66 end
66 67
67 should 'assign configuration name and get metric_configuration' do 68 should 'assign configuration name and get metric_configuration' do
  69 + create_configuration_content
68 Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client) 70 Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client)
69 - @metric_configuration_client.expects(:metric_configuration).with("test name", @metric.name).returns(@metric_configuration)  
70 - get :edit_metric_configuration, :profile => @profile.identifier, :configuration_name => "test name", :metric_name => @metric.name  
71 - assert_equal assigns(:configuration_name), "test name" 71 + @metric_configuration_client.expects(:metric_configuration).with(@configuration.name, @metric.name).returns(@metric_configuration)
  72 + get :edit_metric_configuration, :profile => @profile.identifier, :id => @content.id, :metric_name => @metric.name
  73 + assert_equal assigns(:configuration_content), @content
72 assert_equal assigns(:metric_configuration), @metric_configuration 74 assert_equal assigns(:metric_configuration), @metric_configuration
73 assert_equal assigns(:metric), @metric_configuration.metric 75 assert_equal assigns(:metric), @metric_configuration.metric
74 end 76 end
75 77
76 should 'test metric creation' do 78 should 'test metric creation' do
  79 + create_configuration_content
77 Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client) 80 Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client)
78 @metric_configuration_client.expects(:save) 81 @metric_configuration_client.expects(:save)
79 - get :create_metric_configuration, :profile => @profile.identifier, :configuration_name => "test name", 82 + get :create_metric_configuration, :profile => @profile.identifier, :id => @content.id,
80 :metric_configuration => { :code => @metric_configuration.code, :weight => @metric_configuration.code, :aggregation => @metric_configuration.aggregation_form, 83 :metric_configuration => { :code => @metric_configuration.code, :weight => @metric_configuration.code, :aggregation => @metric_configuration.aggregation_form,
81 :metric => { :name => @metric.name, :origin => @metric.origin, :description => @metric.description, :scope => @metric.scope, :language => @metric.language }} 84 :metric => { :name => @metric.name, :origin => @metric.origin, :description => @metric.description, :scope => @metric.scope, :language => @metric.language }}
82 - assert_equal assigns(:configuration_name), "test name"  
83 assert_response 302 85 assert_response 302
84 end 86 end
85 87
86 should 'test compound metric creation' do 88 should 'test compound metric creation' do
  89 + create_configuration_content
87 Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client) 90 Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client)
88 @metric_configuration_client.expects(:save) 91 @metric_configuration_client.expects(:save)
89 - get :create_compound_metric_configuration, :profile => @profile.identifier, :configuration_name => "test name", 92 + get :create_compound_metric_configuration, :profile => @profile.identifier, :id => @content.id,
90 :metric_configuration => { :code => @compound_metric_configuration.code, :weight => @compound_metric_configuration.weight, 93 :metric_configuration => { :code => @compound_metric_configuration.code, :weight => @compound_metric_configuration.weight,
91 :aggregation_form => @compound_metric_configuration.aggregation_form, :metric => { :name => @compound_metric_configuration.metric.name , 94 :aggregation_form => @compound_metric_configuration.aggregation_form, :metric => { :name => @compound_metric_configuration.metric.name ,
92 :description => @compound_metric_configuration.metric.description, :scope => @compound_metric_configuration.metric.scope, 95 :description => @compound_metric_configuration.metric.description, :scope => @compound_metric_configuration.metric.scope,
@@ -95,37 +98,43 @@ class MezuroPluginMyprofileControllerTest &lt; ActionController::TestCase @@ -95,37 +98,43 @@ class MezuroPluginMyprofileControllerTest &lt; ActionController::TestCase
95 end 98 end
96 99
97 should 'test metric edition' do 100 should 'test metric edition' do
  101 + create_configuration_content
98 Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client) 102 Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client)
99 - @metric_configuration_client.expects(:metric_configuration).with("test name","test metric name").returns(@metric_configuration)  
100 - get :edit_metric_configuration, :profile => @profile.identifier, :configuration_name => "test name", :metric_name => "test metric name" 103 + @metric_configuration_client.expects(:metric_configuration).with(@configuration.name,@metric.name).returns(@metric_configuration)
  104 + get :edit_metric_configuration, :profile => @profile.identifier, :id => @content.id, :metric_name => @metric.name
101 assert_response 200 105 assert_response 200
102 end 106 end
103 107
104 should 'test compound metric edition' do 108 should 'test compound metric edition' do
  109 + create_configuration_content
105 configuration_client = mock 110 configuration_client = mock
106 Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client) 111 Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client)
107 Kalibro::Client::ConfigurationClient.expects(:new).returns(configuration_client) 112 Kalibro::Client::ConfigurationClient.expects(:new).returns(configuration_client)
108 configuration_client.expects(:configuration).with(@configuration.name).returns(@configuration) 113 configuration_client.expects(:configuration).with(@configuration.name).returns(@configuration)
109 @metric_configuration_client.expects(:metric_configuration).with(@configuration.name,@metric.name).returns(@compound_metric_configuration) 114 @metric_configuration_client.expects(:metric_configuration).with(@configuration.name,@metric.name).returns(@compound_metric_configuration)
110 - get :edit_compound_metric_configuration, :profile => @profile.identifier, :configuration_name => @configuration.name, :metric_name => @metric.name 115 + get :edit_compound_metric_configuration, :profile => @profile.identifier, :id => @content.id, :metric_name => @metric.name
111 assert_response 200 116 assert_response 200
112 end 117 end
113 118
114 should 'update metric configuration' do 119 should 'update metric configuration' do
  120 + create_configuration_content
  121 + Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client)
115 Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client) 122 Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client)
116 @metric_configuration_client.expects(:metric_configuration).with(@configuration.name, @metric_configuration.metric.name).returns(@metric_configuration) 123 @metric_configuration_client.expects(:metric_configuration).with(@configuration.name, @metric_configuration.metric.name).returns(@metric_configuration)
117 @metric_configuration_client.expects(:save) 124 @metric_configuration_client.expects(:save)
118 - get :update_metric_configuration, :profile => @profile.identifier, :configuration_name => @configuration.name, 125 + get :update_metric_configuration, :profile => @profile.identifier, :id => @content.id,
119 :metric_configuration => { :code => @metric_configuration.code, :weight => @metric_configuration.weight, :aggregation => @metric_configuration.aggregation_form, 126 :metric_configuration => { :code => @metric_configuration.code, :weight => @metric_configuration.weight, :aggregation => @metric_configuration.aggregation_form,
120 :metric => { :name => @metric.name, :origin => @metric.origin, :description => @metric.description, :scope => @metric.scope, :language => @metric.language }} 127 :metric => { :name => @metric.name, :origin => @metric.origin, :description => @metric.description, :scope => @metric.scope, :language => @metric.language }}
121 assert_response 302 128 assert_response 302
122 end 129 end
123 130
124 should 'update compound metric configuration' do 131 should 'update compound metric configuration' do
  132 + create_configuration_content
  133 + Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client)
125 Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client) 134 Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client)
126 @metric_configuration_client.expects(:metric_configuration).with(@configuration.name, @compound_metric_configuration.metric.name).returns(@compound_metric_configuration) 135 @metric_configuration_client.expects(:metric_configuration).with(@configuration.name, @compound_metric_configuration.metric.name).returns(@compound_metric_configuration)
127 @metric_configuration_client.expects(:save) 136 @metric_configuration_client.expects(:save)
128 - get :update_compound_metric_configuration, :profile => @profile.identifier, :configuration_name => @configuration.name, 137 + get :update_compound_metric_configuration, :profile => @profile.identifier, :id => @content.id,
129 :metric_configuration => { :code => @compound_metric_configuration.code, :weight => @compound_metric_configuration.weight, 138 :metric_configuration => { :code => @compound_metric_configuration.code, :weight => @compound_metric_configuration.weight,
130 :aggregation_form => @compound_metric_configuration.aggregation_form, :metric => { :name => @compound_metric_configuration.metric.name , 139 :aggregation_form => @compound_metric_configuration.aggregation_form, :metric => { :name => @compound_metric_configuration.metric.name ,
131 :description => @compound_metric_configuration.metric.description, :scope => @compound_metric_configuration.metric.scope, 140 :description => @compound_metric_configuration.metric.description, :scope => @compound_metric_configuration.metric.scope,
@@ -134,26 +143,41 @@ class MezuroPluginMyprofileControllerTest &lt; ActionController::TestCase @@ -134,26 +143,41 @@ class MezuroPluginMyprofileControllerTest &lt; ActionController::TestCase
134 end 143 end
135 144
136 should 'assign configuration name and metric name to new range' do 145 should 'assign configuration name and metric name to new range' do
137 - get :new_range, :profile => @profile.identifier, :configuration_name => "test name", :metric_name => @metric.name  
138 - assert_equal assigns(:configuration_name), "test name" 146 + create_configuration_content
  147 + get :new_range, :profile => @profile.identifier, :id => @content.id, :metric_name => @metric.name
  148 + assert_equal assigns(:configuration_content), @content
139 assert_equal assigns(:metric_name), @metric.name 149 assert_equal assigns(:metric_name), @metric.name
140 end 150 end
141 151
142 should 'create instance range' do 152 should 'create instance range' do
  153 + create_configuration_content
143 Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client) 154 Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client)
144 - @metric_configuration_client.expects(:metric_configuration).with("test name", @metric.name).returns(@metric_configuration) 155 + Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client)
  156 + @metric_configuration_client.expects(:metric_configuration).with(@configuration.name, @metric.name).returns(@metric_configuration)
145 @metric_configuration_client.expects(:save) 157 @metric_configuration_client.expects(:save)
146 range = @metric_configuration.ranges[0] 158 range = @metric_configuration.ranges[0]
147 get :create_range, :profile => @profile.identifier, :range => { :beginning => range.beginning, :end => range.end, :label => range.label, 159 get :create_range, :profile => @profile.identifier, :range => { :beginning => range.beginning, :end => range.end, :label => range.label,
148 - :grade => range.grade, :color => range.color, :comments => range.comments }, :configuration_name => "test name", :metric_name => @metric.name 160 + :grade => range.grade, :color => range.color, :comments => range.comments }, :id => @content.id, :metric_name => @metric.name
149 assert assigns(:range).instance_of?(Kalibro::Entities::Range) 161 assert assigns(:range).instance_of?(Kalibro::Entities::Range)
150 end 162 end
151 163
152 should 'redirect from remove metric configuration' do 164 should 'redirect from remove metric configuration' do
  165 + create_configuration_content
153 Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client) 166 Kalibro::Client::MetricConfigurationClient.expects(:new).returns(@metric_configuration_client)
154 @metric_configuration_client.expects(:remove) 167 @metric_configuration_client.expects(:remove)
155 - get :remove_metric_configuration, :profile => @profile.identifier, :configuration_name => "test name", :metric_name => @metric.name 168 + get :remove_metric_configuration, :profile => @profile.identifier, :id => @content.id, :metric_name => @metric.name
156 assert_response 302 169 assert_response 302
157 end 170 end
  171 +
  172 + private
  173 +
  174 + def create_configuration_content
  175 + client = mock
  176 + Kalibro::Client::ConfigurationClient.expects(:new).returns(client)
  177 + client.expects(:configuration_names).returns([])
  178 + @content = MezuroPlugin::ConfigurationContent.new(:profile => @profile, :name => @configuration.name)
  179 + @content.expects(:send_configuration_to_service).returns(nil)
  180 + @content.save
  181 + end
158 182
159 end 183 end
plugins/mezuro/test/unit/mezuro_plugin/metric_configuration_content_test.rb
@@ -1,44 +0,0 @@ @@ -1,44 +0,0 @@
1 -require "test_helper"  
2 -  
3 -class MetricConfigurationContentTest < ActiveSupport::TestCase  
4 -  
5 - def setup  
6 - @metric_configuration = MezuroPlugin::MetricConfigurationContent.new  
7 - end  
8 -  
9 - should 'be a metric configuration' do  
10 - assert_kind_of Article, @metric_configuration  
11 - end  
12 -  
13 - should 'have short description' do  
14 - assert_equal 'Kalibro Configurated Metric', MezuroPlugin::MetricConfigurationContent.short_description  
15 - end  
16 -  
17 - should 'have description' do  
18 - assert_equal 'Sets of thresholds to interpret a metric', MezuroPlugin::MetricConfigurationContent.description  
19 - end  
20 -  
21 - should 'have an html view' do  
22 - assert_not_nil @metric_configuration.to_html  
23 - end  
24 -  
25 - #should 'return metric configuration' do  
26 - # pending "Need refactoring"  
27 - #end  
28 -  
29 - should 'send metric configuration to service after saving' do  
30 - @metric_configuration.expects :send_metric_configuration_to_service  
31 - @metric_configuration.run_callbacks :after_save  
32 - end  
33 -  
34 - should 'send correct metric configuration to service' do  
35 - Kalibro::Client::MetricConfigurationClient.expects(:save).with(@metric_configuration)  
36 - @metric_configuration.send :send_metric_configuration_to_service  
37 - end  
38 -  
39 - should 'remove metric configuration from service' do  
40 - Kalibro::Client::MetricConfigurationClient.expects(:remove).with(@metric_configuration.name)  
41 - @metric_configuration.send :remove_metric_configuration_from_service  
42 - end  
43 -  
44 -end