Commit 11b8fd73ec92e3c91d119684f33430dab750e033
Exists in
master
and in
29 other branches
Merge branch 'mezuro-dev' into mezuro
Conflicts: plugins/mezuro/public/javascripts/project_content.js
Showing
192 changed files
with
3654 additions
and
3072 deletions
Show diff stats
Too many changes.
To preserve performance only 100 of 192 files displayed.
features/step_definitions/mezuro_steps.rb
@@ -32,3 +32,17 @@ Then /^I should see "([^\"]*)" inside an alert$/ do |message| | @@ -32,3 +32,17 @@ Then /^I should see "([^\"]*)" inside an alert$/ do |message| | ||
32 | selenium.get_alert.should eql(message) | 32 | selenium.get_alert.should eql(message) |
33 | selenium.chooseOkOnNextConfirmation(); | 33 | selenium.chooseOkOnNextConfirmation(); |
34 | end | 34 | end |
35 | + | ||
36 | +When /^I have a Mezuro project with the following data$/ do |fields| | ||
37 | + item = {} | ||
38 | + fields.rows_hash.each do |name, value| | ||
39 | + if(name=="community") | ||
40 | + item.merge!(:profile=>Profile[value]) | ||
41 | + else | ||
42 | + item.merge!(name => value) | ||
43 | + end | ||
44 | + end | ||
45 | + result = MezuroPlugin::ProjectContent.new(item) | ||
46 | + result.save! | ||
47 | +end | ||
48 | + |
features/step_definitions/noosfero_steps.rb
@@ -761,3 +761,9 @@ Given /^there are no pending jobs$/ do | @@ -761,3 +761,9 @@ Given /^there are no pending jobs$/ do | ||
761 | Delayed::Worker.new.work_off | 761 | Delayed::Worker.new.work_off |
762 | end | 762 | end |
763 | end | 763 | end |
764 | + | ||
765 | +When /^I confirm the "(.*)" dialog$/ do |confirmation| | ||
766 | + a = page.driver.browser.switch_to.alert | ||
767 | + assert_equal confirmation, a.text | ||
768 | + a.accept | ||
769 | +end |
features/support/hooks.rb
plugins/mezuro/controllers/myprofile/mezuro_plugin_base_tool_controller.rb
@@ -1,10 +0,0 @@ | @@ -1,10 +0,0 @@ | ||
1 | -class MezuroPluginBaseToolController < MezuroPluginMyprofileController | ||
2 | - | ||
3 | - append_view_path File.join(File.dirname(__FILE__) + '/../../views') | ||
4 | - | ||
5 | - def choose_metric | ||
6 | - @configuration_content = profile.articles.find(params[:id]) | ||
7 | - @base_tools = Kalibro::BaseTool.all | ||
8 | - end | ||
9 | - | ||
10 | -end |
plugins/mezuro/controllers/myprofile/mezuro_plugin_metric_configuration_controller.rb
@@ -2,96 +2,108 @@ class MezuroPluginMetricConfigurationController < MezuroPluginMyprofileControlle | @@ -2,96 +2,108 @@ class MezuroPluginMetricConfigurationController < MezuroPluginMyprofileControlle | ||
2 | 2 | ||
3 | append_view_path File.join(File.dirname(__FILE__) + '/../../views') | 3 | append_view_path File.join(File.dirname(__FILE__) + '/../../views') |
4 | 4 | ||
5 | - def new_metric_configuration | 5 | + def choose_metric |
6 | @configuration_content = profile.articles.find(params[:id]) | 6 | @configuration_content = profile.articles.find(params[:id]) |
7 | - @metric = Kalibro::BaseTool.find_by_name(params[:base_tool]).metric params[:metric_name] | 7 | + @base_tools = Kalibro::BaseTool.all |
8 | end | 8 | end |
9 | 9 | ||
10 | - def new_compound_metric_configuration | 10 | + def new_native |
11 | @configuration_content = profile.articles.find(params[:id]) | 11 | @configuration_content = profile.articles.find(params[:id]) |
12 | - @metric_configurations = @configuration_content.metric_configurations | ||
13 | - if configuration_content_has_errors? | ||
14 | - redirect_to_error_page @configuration_content.errors[:base] | ||
15 | - end | 12 | + @reading_group_names_and_ids = reading_group_names_and_ids |
13 | + @metric = Kalibro::BaseTool.find_by_name(params[:base_tool_name]).metric params[:metric_name] | ||
14 | + @metric_configuration = Kalibro::MetricConfiguration.new :base_tool_name => params[:base_tool_name], :metric => @metric | ||
16 | end | 15 | end |
17 | 16 | ||
18 | - def edit_metric_configuration | ||
19 | - @configuration_content = profile.articles.find(params[:id]) | ||
20 | - @metric_configuration = Kalibro::MetricConfiguration.find_by_configuration_name_and_metric_name(@configuration_content.name, params[:metric_name]) | ||
21 | - @metric = @metric_configuration.metric | 17 | + def edit_native |
18 | + params_to_edit_view | ||
22 | end | 19 | end |
23 | 20 | ||
24 | - def edit_compound_metric_configuration | 21 | + def new_compound |
25 | @configuration_content = profile.articles.find(params[:id]) | 22 | @configuration_content = profile.articles.find(params[:id]) |
26 | - @metric_configuration = Kalibro::MetricConfiguration.find_by_configuration_name_and_metric_name(@configuration_content.name, params[:metric_name]) | ||
27 | @metric_configurations = @configuration_content.metric_configurations | 23 | @metric_configurations = @configuration_content.metric_configurations |
28 | - @metric = @metric_configuration.metric | ||
29 | - end | ||
30 | - | ||
31 | - def create_metric_configuration | ||
32 | - id = params[:id] | ||
33 | - metric_name = params[:metric_configuration][:metric][:name] | ||
34 | - metric_configuration = Kalibro::MetricConfiguration.new(params[:metric_configuration]) | ||
35 | - metric_configuration.save | ||
36 | - if metric_configuration_has_errors? metric_configuration | ||
37 | - redirect_to_error_page metric_configuration.errors[0].message | ||
38 | - else | ||
39 | - redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/metric_configuration/edit_metric_configuration?id=#{id}&metric_name=#{metric_name.gsub(/\s/, '+')}" | 24 | + @reading_group_names_and_ids = reading_group_names_and_ids |
25 | + metric = Kalibro::Metric.new :compound => true | ||
26 | + @metric_configuration = Kalibro::MetricConfiguration.new :metric => metric | ||
27 | + if configuration_content_has_errors? | ||
28 | + redirect_to_error_page @configuration_content.errors[:base] | ||
40 | end | 29 | end |
41 | end | 30 | end |
42 | 31 | ||
43 | - def create_compound_metric_configuration | ||
44 | - id = params[:id] | ||
45 | - metric_name = params[:metric_configuration][:metric][:name] | ||
46 | - metric_configuration = Kalibro::MetricConfiguration.new(params[:metric_configuration]) | ||
47 | - metric_configuration.save | ||
48 | - if metric_configuration_has_errors? metric_configuration | ||
49 | - redirect_to_error_page metric_configuration.errors[0].message | ||
50 | - else | ||
51 | - redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/metric_configuration/edit_compound_metric_configuration?id=#{id}&metric_name=#{metric_name.gsub(/\s/, '+')}" | ||
52 | - end | 32 | + def edit_compound |
33 | + params_to_edit_view | ||
53 | end | 34 | end |
54 | 35 | ||
55 | - def update_metric_configuration | ||
56 | - @configuration_content = profile.articles.find(params[:id]) | ||
57 | - metric_name = params[:metric_configuration][:metric][:name] | ||
58 | - metric_configuration = Kalibro::MetricConfiguration.find_by_configuration_name_and_metric_name(@configuration_content.name, metric_name) | ||
59 | - metric_configuration.update_attributes params[:metric_configuration] | 36 | + def create |
37 | + configuration_content = profile.articles.find(params[:id]) | ||
38 | + metric_configuration = Kalibro::MetricConfiguration.create(params[:metric_configuration]) | ||
39 | + | ||
60 | if metric_configuration_has_errors? metric_configuration | 40 | if metric_configuration_has_errors? metric_configuration |
61 | redirect_to_error_page metric_configuration.errors[0].message | 41 | redirect_to_error_page metric_configuration.errors[0].message |
62 | else | 42 | else |
63 | - redirect_to "/#{profile.identifier}/#{@configuration_content.slug}" | 43 | + redirect_to(metric_configuration_url(configuration_content, metric_configuration.id)) |
64 | end | 44 | end |
65 | end | 45 | end |
66 | 46 | ||
67 | - def update_compound_metric_configuration | 47 | + def update |
68 | @configuration_content = profile.articles.find(params[:id]) | 48 | @configuration_content = profile.articles.find(params[:id]) |
69 | - metric_name = params[:metric_configuration][:metric][:name] | ||
70 | - metric_configuration = Kalibro::MetricConfiguration.find_by_configuration_name_and_metric_name(@configuration_content.name, metric_name) | 49 | + metric_configurations = @configuration_content.metric_configurations |
50 | + metric_configuration = find_metric_configuration(metric_configurations, params[:metric_configuration][:id].to_i) | ||
71 | metric_configuration.update_attributes params[:metric_configuration] | 51 | metric_configuration.update_attributes params[:metric_configuration] |
72 | if metric_configuration_has_errors? metric_configuration | 52 | if metric_configuration_has_errors? metric_configuration |
73 | redirect_to_error_page metric_configuration.errors[0].message | 53 | redirect_to_error_page metric_configuration.errors[0].message |
74 | else | 54 | else |
75 | - redirect_to "/#{profile.identifier}/#{@configuration_content.slug}" | 55 | + redirect_to @configuration_content.view_url |
76 | end | 56 | end |
77 | end | 57 | end |
78 | 58 | ||
79 | - def remove_metric_configuration | 59 | + def remove |
80 | configuration_content = profile.articles.find(params[:id]) | 60 | configuration_content = profile.articles.find(params[:id]) |
81 | - metric_name = params[:metric_name] | ||
82 | - metric_configuration = Kalibro::MetricConfiguration.find_by_configuration_name_and_metric_name(configuration_content.name, metric_name) | 61 | + configuration_id = configuration_content.configuration_id |
62 | + metric_configuration = Kalibro::MetricConfiguration.new({:id => params[:metric_configuration_id].to_i}) | ||
83 | metric_configuration.destroy | 63 | metric_configuration.destroy |
84 | if metric_configuration_has_errors? metric_configuration | 64 | if metric_configuration_has_errors? metric_configuration |
85 | redirect_to_error_page metric_configuration.errors[0].message | 65 | redirect_to_error_page metric_configuration.errors[0].message |
86 | else | 66 | else |
87 | - redirect_to "/#{profile.identifier}/#{configuration_content.slug}" | 67 | + redirect_to configuration_content.view_url |
88 | end | 68 | end |
89 | end | 69 | end |
90 | - | 70 | + |
91 | private | 71 | private |
92 | - | 72 | + |
73 | + def find_metric_configuration (metric_configurations, metric_configuration_id) | ||
74 | + metric_configurations.select {|metric_configuration| metric_configuration.id == metric_configuration_id }.first | ||
75 | + end | ||
76 | + | ||
77 | + def reading_group_names_and_ids | ||
78 | + array = Kalibro::ReadingGroup.all.map { |reading_group| [reading_group.name, reading_group.id] } | ||
79 | + array.sort { |x,y| x.first.downcase <=> y.first.downcase } | ||
80 | + end | ||
81 | + | ||
82 | + def metric_configuration_has_errors? metric_configuration | ||
83 | + not metric_configuration.errors.empty? | ||
84 | + end | ||
85 | + | ||
93 | def configuration_content_has_errors? | 86 | def configuration_content_has_errors? |
94 | not @configuration_content.errors[:base].nil? | 87 | not @configuration_content.errors[:base].nil? |
95 | end | 88 | end |
96 | - | 89 | + |
90 | + def metric_configuration_url(configuration_content, metric_configuration_id) | ||
91 | + url = configuration_content.view_url | ||
92 | + url[:controller] = controller_name | ||
93 | + url[:id] = configuration_content.id | ||
94 | + url[:metric_configuration_id] = metric_configuration_id | ||
95 | + url[:action] = (params[:metric_configuration][:metric][:compound] == "true" ? "edit_compound" : "edit_native") | ||
96 | + url | ||
97 | + end | ||
98 | + | ||
99 | + def params_to_edit_view | ||
100 | + @configuration_content = profile.articles.find(params[:id]) | ||
101 | + @metric_configurations = @configuration_content.metric_configurations | ||
102 | + @metric_configuration = find_metric_configuration(@metric_configurations, params[:metric_configuration_id].to_i) | ||
103 | + @metric = @metric_configuration.metric | ||
104 | + @reading_group_names_and_ids = reading_group_names_and_ids | ||
105 | + @ranges = Kalibro::Range.ranges_of(@metric_configuration.id) | ||
106 | + end | ||
107 | + | ||
97 | end | 108 | end |
109 | + |
plugins/mezuro/controllers/myprofile/mezuro_plugin_myprofile_controller.rb
@@ -2,27 +2,15 @@ class MezuroPluginMyprofileController < ProfileController #MyprofileController? | @@ -2,27 +2,15 @@ class MezuroPluginMyprofileController < ProfileController #MyprofileController? | ||
2 | 2 | ||
3 | append_view_path File.join(File.dirname(__FILE__) + '/../../views') | 3 | append_view_path File.join(File.dirname(__FILE__) + '/../../views') |
4 | 4 | ||
5 | - rescue_from Exception do |exception| | ||
6 | - @message = process_error_message exception.message | ||
7 | - render :partial => "error_page" | ||
8 | - end | 5 | +# rescue_from Exception do |exception| |
6 | +# @message = process_error_message exception.message | ||
7 | +# render :partial => "error_page" | ||
8 | +# end | ||
9 | 9 | ||
10 | def error_page | 10 | def error_page |
11 | @message = params[:message] | 11 | @message = params[:message] |
12 | end | 12 | end |
13 | 13 | ||
14 | - def choose_base_tool | ||
15 | - @configuration_content = profile.articles.find(params[:id]) | ||
16 | - @base_tools = Kalibro::BaseTool.all_names | ||
17 | - end | ||
18 | - | ||
19 | - def choose_metric | ||
20 | - @configuration_content = profile.articles.find(params[:id]) | ||
21 | - @base_tool = params[:base_tool] | ||
22 | - base_tool = Kalibro::BaseTool.find_by_name(@base_tool) | ||
23 | - @supported_metrics = base_tool.nil? ? [] : base_tool.supported_metrics | ||
24 | - end | ||
25 | - | ||
26 | protected | 14 | protected |
27 | 15 | ||
28 | def redirect_to_error_page(message) | 16 | def redirect_to_error_page(message) |
@@ -30,11 +18,7 @@ class MezuroPluginMyprofileController < ProfileController #MyprofileController? | @@ -30,11 +18,7 @@ class MezuroPluginMyprofileController < ProfileController #MyprofileController? | ||
30 | redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/error_page?message=#{message}" | 18 | redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/error_page?message=#{message}" |
31 | end | 19 | end |
32 | 20 | ||
33 | - def metric_configuration_has_errors? metric_configuration | ||
34 | - not metric_configuration.errors.empty? | ||
35 | - end | ||
36 | - | ||
37 | - def process_error_message message | 21 | + def process_error_message message #FIXME |
38 | if message =~ /bla/ | 22 | if message =~ /bla/ |
39 | message | 23 | message |
40 | else | 24 | else |
plugins/mezuro/controllers/myprofile/mezuro_plugin_range_controller.rb
@@ -2,65 +2,65 @@ class MezuroPluginRangeController < MezuroPluginMyprofileController | @@ -2,65 +2,65 @@ class MezuroPluginRangeController < MezuroPluginMyprofileController | ||
2 | 2 | ||
3 | append_view_path File.join(File.dirname(__FILE__) + '/../../views') | 3 | append_view_path File.join(File.dirname(__FILE__) + '/../../views') |
4 | 4 | ||
5 | - def new_range | ||
6 | - @content_id = params[:id] | ||
7 | - @metric_name = params[:metric_name] | ||
8 | - @range = Kalibro::Range.new | ||
9 | - @range_color = "#000000" | 5 | + def new |
6 | + params_to_range_form | ||
7 | + params_to_redirect | ||
10 | end | 8 | end |
11 | 9 | ||
12 | - def edit_range | ||
13 | - @beginning_id = params[:beginning_id] | ||
14 | - @content_id = params[:id] | ||
15 | - configuration_name = profile.articles.find(@content_id).name | ||
16 | - @metric_name = params[:metric_name] | ||
17 | - metric_configuration = Kalibro::MetricConfiguration.find_by_configuration_name_and_metric_name(configuration_name, @metric_name) | ||
18 | - @range = metric_configuration.ranges.find{|range| range.beginning == @beginning_id.to_f || @beginning_id =="-INF" } | ||
19 | - @range_color = "#" + @range.color.to_s.gsub(/^ff/, "") | 10 | + def edit |
11 | + params_to_range_form | ||
12 | + ranges = Kalibro::Range.ranges_of params[:metric_configuration_id].to_i | ||
13 | + @range = (ranges.select { |range| range.id == params[:range_id].to_i }).first | ||
20 | end | 14 | end |
21 | 15 | ||
22 | - def create_range | ||
23 | - @configuration_content = profile.articles.find(params[:id]) | ||
24 | - @range = Kalibro::Range.new params[:range] | ||
25 | - metric_name = params[:metric_name] | ||
26 | - metric_configuration = Kalibro::MetricConfiguration.find_by_configuration_name_and_metric_name(@configuration_content.name, metric_name) | ||
27 | - metric_configuration.add_range(@range) | ||
28 | - metric_configuration.save | ||
29 | - if metric_configuration_has_errors? metric_configuration | ||
30 | - @error = metric_configuration.errors[0].message | ||
31 | - end | 16 | + def create |
17 | + params_to_redirect | ||
18 | + save_range | ||
32 | end | 19 | end |
33 | 20 | ||
34 | - def update_range | ||
35 | - configuration_content = profile.articles.find(params[:id]) | ||
36 | - metric_name = params[:metric_name] | ||
37 | - beginning_id = params[:beginning_id] | ||
38 | - metric_configuration = Kalibro::MetricConfiguration.find_by_configuration_name_and_metric_name(configuration_content.name, metric_name) | ||
39 | - index = metric_configuration.ranges.index{ |range| range.beginning == beginning_id.to_f || beginning_id == "-INF" } | ||
40 | - metric_configuration.ranges[index] = Kalibro::Range.new params[:range] | ||
41 | - metric_configuration.save | ||
42 | - if metric_configuration_has_errors? metric_configuration | ||
43 | - @error = metric_configuration.errors[0].message | ||
44 | - end | 21 | + def update |
22 | + save_range | ||
45 | end | 23 | end |
46 | 24 | ||
47 | - def remove_range | 25 | + def remove |
48 | configuration_content = profile.articles.find(params[:id]) | 26 | configuration_content = profile.articles.find(params[:id]) |
49 | - metric_name = params[:metric_name] | ||
50 | - beginning_id = params[:beginning_id] | ||
51 | - metric_configuration = Kalibro::MetricConfiguration.find_by_configuration_name_and_metric_name(configuration_content.name, metric_name) | ||
52 | - metric_configuration.ranges.delete_if { |range| range.beginning == beginning_id.to_f || beginning_id == "-INF" } | ||
53 | - metric_configuration.save | ||
54 | - if metric_configuration_has_errors? metric_configuration | ||
55 | - redirect_to_error_page metric_configuration.errors[0].message | ||
56 | - else | ||
57 | - formatted_metric_name = metric_name.gsub(/\s/, '+') | ||
58 | - if metric_configuration.metric.class == Kalibro::CompoundMetric | ||
59 | - redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/metric_configuration/edit_compound_metric_configuration?id=#{configuration_content.id}&metric_name=#{formatted_metric_name}" | ||
60 | - else | ||
61 | - redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/metric_configuration/edit_metric_configuration?id=#{configuration_content.id}&metric_name=#{formatted_metric_name}" | ||
62 | - end | 27 | + Kalibro::Range.new({:id => params[:range_id].to_i}).destroy |
28 | + redirect_to(metric_configuration_url(configuration_content)) | ||
29 | + end | ||
30 | + | ||
31 | + private | ||
32 | + | ||
33 | + def metric_configuration_url configuration_content | ||
34 | + url = configuration_content.view_url | ||
35 | + url[:controller] = "mezuro_plugin_metric_configuration" | ||
36 | + url[:id] = configuration_content.id | ||
37 | + url[:metric_configuration_id] = params[:metric_configuration_id].to_i | ||
38 | + url[:action] = (params[:compound] ? "edit_compound" : "edit_native") | ||
39 | + url | ||
40 | + end | ||
41 | + | ||
42 | + def reading_labels_and_ids | ||
43 | + Kalibro::Reading.readings_of(params[:reading_group_id].to_i).map { |reading| [reading.label, reading.id] } | ||
44 | + end | ||
45 | + | ||
46 | + def save_range | ||
47 | + metric_configuration_id = params[:metric_configuration_id].to_i | ||
48 | + @range = Kalibro::Range.new params[:range] | ||
49 | + @range.save metric_configuration_id | ||
50 | + if !@range.errors.empty? | ||
51 | + @error = @range.errors[0].message | ||
63 | end | 52 | end |
64 | end | 53 | end |
65 | 54 | ||
55 | + def params_to_range_form | ||
56 | + @content_id = params[:id].to_i | ||
57 | + @metric_configuration_id = params[:metric_configuration_id].to_i | ||
58 | + @reading_labels_and_ids = reading_labels_and_ids | ||
59 | + end | ||
60 | + | ||
61 | + def params_to_redirect | ||
62 | + @reading_group_id = params[:reading_group_id].to_i | ||
63 | + @compound = params[:compound] | ||
64 | + end | ||
65 | + | ||
66 | end | 66 | end |
plugins/mezuro/controllers/myprofile/mezuro_plugin_reading_controller.rb
0 → 100644
@@ -0,0 +1,36 @@ | @@ -0,0 +1,36 @@ | ||
1 | +class MezuroPluginReadingController < MezuroPluginMyprofileController | ||
2 | + | ||
3 | + append_view_path File.join(File.dirname(__FILE__) + '/../../views') | ||
4 | + | ||
5 | + def new | ||
6 | + @reading_group_content = profile.articles.find(params[:id]) | ||
7 | + end | ||
8 | + | ||
9 | + def save | ||
10 | + reading_group_content = profile.articles.find(params[:id]) | ||
11 | + reading = Kalibro::Reading.new params[:reading] | ||
12 | + | ||
13 | + if( reading.save(reading_group_content.reading_group_id) ) | ||
14 | + redirect_to reading_group_content.view_url | ||
15 | + else | ||
16 | + redirect_to_error_page reading.errors[0].message | ||
17 | + end | ||
18 | + end | ||
19 | + | ||
20 | + def edit | ||
21 | + @reading_group_content = profile.articles.find(params[:id]) | ||
22 | + @reading = Kalibro::Reading.find params[:reading_id] | ||
23 | + end | ||
24 | + | ||
25 | + def destroy | ||
26 | + reading_group_content = profile.articles.find(params[:id]) | ||
27 | + reading = Kalibro::Reading.find params[:reading_id] | ||
28 | + reading.destroy | ||
29 | + if( reading.errors.empty? ) | ||
30 | + redirect_to reading_group_content.view_url | ||
31 | + else | ||
32 | + redirect_to_error_page reading.errors[0].message | ||
33 | + end | ||
34 | + end | ||
35 | + | ||
36 | +end |
plugins/mezuro/controllers/profile/mezuro_plugin_module_controller.rb
@@ -1,62 +0,0 @@ | @@ -1,62 +0,0 @@ | ||
1 | -class MezuroPluginModuleController < MezuroPluginProfileController | ||
2 | - | ||
3 | - append_view_path File.join(File.dirname(__FILE__) + '/../../views') | ||
4 | - | ||
5 | - def module_result | ||
6 | - @content = profile.articles.find(params[:id]) | ||
7 | - @module_result = @content.module_result(params) | ||
8 | - @module = @module_result.module | ||
9 | - @module_label = "#{@module.name} (#{@module.granularity})" | ||
10 | - if project_content_has_errors? | ||
11 | - redirect_to_error_page(@content.errors[:base]) | ||
12 | - else | ||
13 | - render :partial => 'module_result' | ||
14 | - end | ||
15 | - end | ||
16 | - | ||
17 | - def module_metrics_history | ||
18 | - metric_name = params[:metric_name] | ||
19 | - @content = profile.articles.find(params[:id]) | ||
20 | - module_history = @content.result_history(params[:module_name]) | ||
21 | - if project_content_has_errors? | ||
22 | - redirect_to_error_page(@content.errors[:base]) | ||
23 | - else | ||
24 | - @score_history = filtering_metric_history(metric_name, module_history) | ||
25 | - render :partial => 'score_history' | ||
26 | - end | ||
27 | - end | ||
28 | - | ||
29 | - def module_grade_history | ||
30 | - @content = profile.articles.find(params[:id]) | ||
31 | - modules_results = @content.result_history(params[:module_name]) | ||
32 | - if project_content_has_errors? | ||
33 | - redirect_to_error_page(@content.errors[:base]) | ||
34 | - else | ||
35 | - @score_history = modules_results.map do |module_result| | ||
36 | - [module_result.grade, format_date_to_simple_form(module_result.date)] | ||
37 | - end | ||
38 | - render :partial => 'score_history' | ||
39 | - end | ||
40 | - end | ||
41 | - | ||
42 | - private | ||
43 | - | ||
44 | - def filtering_metric_history(metric_name, module_history) | ||
45 | - metrics_history = module_history.map do |module_result| | ||
46 | - [module_result.metric_results, format_date_to_simple_form(module_result.date)] | ||
47 | - end | ||
48 | - metric_history = metrics_history.map do |metric_results_with_date| | ||
49 | - [(metric_results_with_date.first.select do |metric_result| | ||
50 | - metric_result.metric.name.delete("() ") == metric_name | ||
51 | - end).first, metric_results_with_date.last] | ||
52 | - end | ||
53 | - metric_history.map do |metric_result_with_date| | ||
54 | - [metric_result_with_date.first.value, metric_result_with_date.last] | ||
55 | - end | ||
56 | - end | ||
57 | - | ||
58 | - def format_date_to_simple_form date | ||
59 | - date.to_s[0..9] | ||
60 | - end | ||
61 | - | ||
62 | -end |
plugins/mezuro/controllers/profile/mezuro_plugin_module_result_controller.rb
0 → 100644
@@ -0,0 +1,21 @@ | @@ -0,0 +1,21 @@ | ||
1 | +class MezuroPluginModuleResultController < MezuroPluginProfileController | ||
2 | + | ||
3 | + append_view_path File.join(File.dirname(__FILE__) + '/../../views') | ||
4 | + | ||
5 | + def module_result | ||
6 | + @module_result = Kalibro::ModuleResult.find(params[:module_result_id].to_i) | ||
7 | + @metric_results = Kalibro::MetricResult.metric_results_of(@module_result.id) | ||
8 | + render :partial => 'module_result' | ||
9 | + end | ||
10 | + | ||
11 | + def metric_result_history | ||
12 | + @history = Kalibro::MetricResult.history_of(params[:metric_name], params[:module_result_id].to_i) | ||
13 | + render :partial => 'score_history' | ||
14 | + end | ||
15 | + | ||
16 | + def module_result_history | ||
17 | + @history = Kalibro::ModuleResult.history_of(params[:module_result_id].to_i) | ||
18 | + render :partial => 'score_history' | ||
19 | + end | ||
20 | + | ||
21 | +end |
plugins/mezuro/controllers/profile/mezuro_plugin_processing_controller.rb
0 → 100644
@@ -0,0 +1,34 @@ | @@ -0,0 +1,34 @@ | ||
1 | +class MezuroPluginProcessingController < MezuroPluginProfileController | ||
2 | + | ||
3 | + append_view_path File.join(File.dirname(__FILE__) + '/../../views') | ||
4 | + | ||
5 | + def state | ||
6 | + processing = processing_for_date(params[:repository_id].to_i, params[:date]) | ||
7 | + if processing.error.nil? | ||
8 | + render :text => processing.state | ||
9 | + else | ||
10 | + render :text => 'ERROR' | ||
11 | + end | ||
12 | + end | ||
13 | + | ||
14 | + def processing | ||
15 | + @processing = processing_for_date(params[:repository_id].to_i, params[:date]) | ||
16 | + if @processing.error.nil? | ||
17 | + render :partial => 'processing' | ||
18 | + else | ||
19 | + render :partial => 'processing_error' | ||
20 | + end | ||
21 | + end | ||
22 | + | ||
23 | + private | ||
24 | + | ||
25 | + def processing_for_date(repository_id, date = nil) | ||
26 | + processing_class = Kalibro::Processing | ||
27 | + if date.nil? | ||
28 | + processing_class.processing_of(repository_id) | ||
29 | + else | ||
30 | + processing_class.processing_with_date_of(repository_id, date) | ||
31 | + end | ||
32 | + end | ||
33 | + | ||
34 | +end |
plugins/mezuro/controllers/profile/mezuro_plugin_profile_controller.rb
1 | +#TODO Ver quais metodos precisam estar aqui e fazer os testes | ||
1 | class MezuroPluginProfileController < ProfileController | 2 | class MezuroPluginProfileController < ProfileController |
2 | 3 | ||
3 | append_view_path File.join(File.dirname(__FILE__) + '/../../views') | 4 | append_view_path File.join(File.dirname(__FILE__) + '/../../views') |
4 | 5 | ||
6 | +=begin | ||
5 | rescue_from Exception do |exception| | 7 | rescue_from Exception do |exception| |
6 | @message = process_error_message exception.message | 8 | @message = process_error_message exception.message |
7 | render :partial => "error_page" | 9 | render :partial => "error_page" |
@@ -10,7 +12,7 @@ class MezuroPluginProfileController < ProfileController | @@ -10,7 +12,7 @@ class MezuroPluginProfileController < ProfileController | ||
10 | def error_page | 12 | def error_page |
11 | @message = params[:message] | 13 | @message = params[:message] |
12 | end | 14 | end |
13 | - | 15 | +=end |
14 | protected | 16 | protected |
15 | 17 | ||
16 | def process_error_message message | 18 | def process_error_message message |
@@ -24,6 +26,11 @@ class MezuroPluginProfileController < ProfileController | @@ -24,6 +26,11 @@ class MezuroPluginProfileController < ProfileController | ||
24 | def project_content_has_errors? | 26 | def project_content_has_errors? |
25 | not @content.errors[:base].nil? | 27 | not @content.errors[:base].nil? |
26 | end | 28 | end |
29 | + | ||
30 | + def redirect_to_error_page(message) | ||
31 | + message = URI.escape(CGI.escape(process_error_message(message)),'.') | ||
32 | + redirect_to "/profile/#{profile.identifier}/plugin/mezuro/error_page?message=#{message}" | ||
33 | + end | ||
27 | 34 | ||
28 | end | 35 | end |
29 | 36 |
plugins/mezuro/controllers/profile/mezuro_plugin_project_controller.rb
@@ -1,50 +0,0 @@ | @@ -1,50 +0,0 @@ | ||
1 | -class MezuroPluginProjectController < MezuroPluginProfileController | ||
2 | - | ||
3 | - append_view_path File.join(File.dirname(__FILE__) + '/../../views') | ||
4 | - | ||
5 | - def project_state | ||
6 | - @content = profile.articles.find(params[:id]) | ||
7 | - project = @content.project | ||
8 | - if project_content_has_errors? | ||
9 | - redirect_to_error_page(@content.errors[:base]) | ||
10 | - else | ||
11 | - state = project.kalibro_error.nil? ? project.state : "ERROR" | ||
12 | - render :text => state | ||
13 | - end | ||
14 | - end | ||
15 | - | ||
16 | - def project_error | ||
17 | - @content = profile.articles.find(params[:id]) | ||
18 | - @project = @content.project | ||
19 | - if project_content_has_errors? | ||
20 | - redirect_to_error_page(@content.errors[:base]) | ||
21 | - else | ||
22 | - render :partial => 'project_error' | ||
23 | - end | ||
24 | - end | ||
25 | - | ||
26 | - def project_result | ||
27 | - @content = profile.articles.find(params[:id]) | ||
28 | - date = params[:date] | ||
29 | - @project_result = date.nil? ? @content.project_result : @content.project_result_with_date(date) | ||
30 | - if project_content_has_errors? | ||
31 | - redirect_to_error_page(@content.errors[:base]) | ||
32 | - else | ||
33 | - render :partial => 'project_result' | ||
34 | - end | ||
35 | - end | ||
36 | - | ||
37 | - def project_tree | ||
38 | - @content = profile.articles.find(params[:id]) | ||
39 | - date = params[:date] | ||
40 | - project_result = date.nil? ? @content.project_result : @content.project_result_with_date(date) | ||
41 | - @project_name = @content.project.name if not @content.project.nil? | ||
42 | - if project_content_has_errors? | ||
43 | - redirect_to_error_page(@content.errors[:base]) | ||
44 | - else | ||
45 | - @source_tree = project_result.node(params[:module_name]) | ||
46 | - render :partial =>'source_tree' | ||
47 | - end | ||
48 | - end | ||
49 | - | ||
50 | -end |
plugins/mezuro/controllers/profile/mezuro_plugin_repository_controller.rb
0 → 100644
@@ -0,0 +1,67 @@ | @@ -0,0 +1,67 @@ | ||
1 | +class MezuroPluginRepositoryController < MezuroPluginProfileController | ||
2 | + | ||
3 | + append_view_path File.join(File.dirname(__FILE__) + '/../../views') | ||
4 | + | ||
5 | + def new | ||
6 | + params_repository_form | ||
7 | + end | ||
8 | + | ||
9 | + def edit | ||
10 | + params_repository_form | ||
11 | + @repository = @project_content.repositories.select{ |repository| repository.id.to_s == params[:repository_id] }.first | ||
12 | + end | ||
13 | + | ||
14 | + def save | ||
15 | + project_content = profile.articles.find(params[:id]) | ||
16 | + | ||
17 | + repository = Kalibro::Repository.new( params[:repository] ) | ||
18 | + repository.save(project_content.project_id) | ||
19 | + | ||
20 | + if( repository.errors.empty? ) | ||
21 | + repository.process | ||
22 | + redirect_to(repository_url(project_content, repository.id)) | ||
23 | + else | ||
24 | + redirect_to_error_page repository.errors[0].message | ||
25 | + end | ||
26 | + end | ||
27 | + | ||
28 | + def show | ||
29 | + @project_content = profile.articles.find(params[:id]) | ||
30 | + @repository = @project_content.repositories.select{ |repository| repository.id == params[:repository_id].to_i }.first | ||
31 | + @configuration_name = Kalibro::Configuration.configuration_of(@repository.id).name | ||
32 | + end | ||
33 | + | ||
34 | + def destroy | ||
35 | + project_content = profile.articles.find(params[:id]) | ||
36 | + repository = Kalibro::Repository.new :id => params[:repository_id] | ||
37 | + repository.destroy | ||
38 | + if( repository.errors.empty? ) | ||
39 | + redirect_to project_content.view_url | ||
40 | + else | ||
41 | + redirect_to_error_page repository.errors[0].message | ||
42 | + end | ||
43 | + end | ||
44 | + | ||
45 | + private | ||
46 | + | ||
47 | + def repository_url(project_content, repository_id) | ||
48 | + url = project_content.view_url | ||
49 | + url[:controller] = controller_name | ||
50 | + url[:id] = project_content.id | ||
51 | + url[:repository_id] = repository_id | ||
52 | + url[:action] = "show" | ||
53 | + url | ||
54 | + end | ||
55 | + | ||
56 | + def params_repository_form | ||
57 | + @project_content = profile.articles.find(params[:id]) | ||
58 | + @repository_types = Kalibro::Repository.repository_types | ||
59 | + | ||
60 | + configurations = Kalibro::Configuration.all | ||
61 | + configurations = [] if (configurations.nil?) | ||
62 | + @configuration_select = configurations.map do |configuration| | ||
63 | + [configuration.name,configuration.id] | ||
64 | + end | ||
65 | + end | ||
66 | + | ||
67 | +end |
plugins/mezuro/features/adding_metric_configuration.feature
plugins/mezuro/features/adding_ranges.feature
plugins/mezuro/features/creating_configuration.feature
plugins/mezuro/features/creating_project.feature
@@ -1,54 +0,0 @@ | @@ -1,54 +0,0 @@ | ||
1 | -@mezuro | ||
2 | -Feature: Create project | ||
3 | - As a mezuro user | ||
4 | - I want to create a Mezuro project | ||
5 | - | ||
6 | - Background: | ||
7 | - Given the following users | ||
8 | - | login | name | | ||
9 | - | joaosilva | Joao Silva | | ||
10 | - And I am logged in as "joaosilva" | ||
11 | - And "Mezuro" plugin is enabled | ||
12 | - And the following community | ||
13 | - | identifier | name | | ||
14 | - | mycommunity | My Community | | ||
15 | - And "Joao Silva" is admin of "My Community" | ||
16 | - | ||
17 | - Scenario: I see Mezuro project's input form | ||
18 | - Given I am on My Community's control panel | ||
19 | - When I follow "Mezuro Project" | ||
20 | - Then I should see "Title" | ||
21 | - And I should see "License" | ||
22 | - And I should see "Repository type" | ||
23 | - And I should see "GIT" | ||
24 | - And I should see "REMOTE_ZIP" | ||
25 | - And I should see "REMOTE_TARBALL" | ||
26 | - And I should see "SUBVERSION" | ||
27 | - And I should see "Repository url" | ||
28 | - And I should see "Configuration" | ||
29 | - And I should see "Kalibro for Java" | ||
30 | - | ||
31 | - Scenario: I create a Mezuro project with valid attributes | ||
32 | - Given I am on My Community's control panel | ||
33 | - When I create a Mezuro project with the following data | ||
34 | - | Title | Sample Project | | ||
35 | - | License | GNU General Public License version 2.0 (GPL-2.0) | | ||
36 | - | Repository type | SUBVERSION | | ||
37 | - | Repository url | https://qt-calculator.svn.sourceforge.net/svnroot/qt-calculator | | ||
38 | - | Configuration | Kalibro for Java | | ||
39 | - Then I should see "Sample Project" | ||
40 | - And I should see "GNU General Public License version 2.0 (GPL-2.0)" | ||
41 | - And I should see "SUBVERSION" | ||
42 | - And I should see "https://qt-calculator.svn.sourceforge.net/svnroot/qt-calculator" | ||
43 | - And I should see "Kalibro for Java" | ||
44 | - | ||
45 | - Scenario: I can't create a Mezuro project with invalid attributes | ||
46 | - Given I am on My Community's control panel | ||
47 | - When I create a Mezuro project with the following data | ||
48 | - | Title | | | ||
49 | - | License | GNU General Public License version 2.0 (GPL-2.0) | | ||
50 | - | Repository type | SUBVERSION | | ||
51 | - | Repository url | | | ||
52 | - | Configuration | Kalibro for Java | | ||
53 | - Then I should see "The highlighted fields are mandatory." | ||
54 | - And I should see "Repository URL is mandatory" |
plugins/mezuro/features/editing_configuration.feature
plugins/mezuro/features/initialize_monkey_server.sh
@@ -0,0 +1,68 @@ | @@ -0,0 +1,68 @@ | ||
1 | +Feature: Project | ||
2 | + As a mezuro user | ||
3 | + I want to create, edit and remove a Mezuro project | ||
4 | + | ||
5 | + Background: | ||
6 | + Given the following users | ||
7 | + | login | name | | ||
8 | + | joaosilva | Joao Silva | | ||
9 | + And I am logged in as "joaosilva" | ||
10 | + And "Mezuro" plugin is enabled | ||
11 | + And the following community | ||
12 | + | identifier | name | | ||
13 | + | mycommunity | My Community | | ||
14 | + And "Joao Silva" is admin of "My Community" | ||
15 | + | ||
16 | + Scenario: I see Mezuro project's input form | ||
17 | + Given I am on mycommunity's control panel | ||
18 | + When I follow "Mezuro project" | ||
19 | + Then I should see "Title" | ||
20 | + And I should see "Description" | ||
21 | + | ||
22 | + Scenario: I create a Mezuro project with valid attributes | ||
23 | + Given I am on mycommunity's control panel | ||
24 | + When I create a Mezuro project with the following data | ||
25 | + | Title | Sample Project | | ||
26 | + | Description | Sample Description | | ||
27 | + Then I should see "Sample Project" | ||
28 | + And I should see "Sample Description" | ||
29 | + And I should see "Add Repository" | ||
30 | + | ||
31 | + @selenium | ||
32 | + Scenario: I edit a Mezuro project | ||
33 | + When I have a Mezuro project with the following data | ||
34 | + | name | Sample Project | | ||
35 | + | description | Sample Description | | ||
36 | + | community | mycommunity | | ||
37 | + And I am on article "Sample Project" | ||
38 | + And I should be on /mycommunity/sample-project | ||
39 | + Then I should see "Sample Project" | ||
40 | + And I should see "Sample Description" | ||
41 | + And I should see "Add Repository" | ||
42 | + When I follow "Edit" | ||
43 | + # Not complete | ||
44 | + | ||
45 | +# @selenium | ||
46 | +# Scenario: I delete a Mezuro project that belongs to me | ||
47 | +# Given the following Mezuro project | ||
48 | +# | name | description | owner | | ||
49 | +# | Sample Project | Sample Description | joaosilva | | ||
50 | +# And I am on article "Sample Project" | ||
51 | +# And I should be on /joaosilva/sample-project | ||
52 | +# When I follow "Delete" | ||
53 | +# And I confirm the "Are you sure that you want to remove the item "Sample Project"?" dialog | ||
54 | +# Then I go to /joaosilva/sample-project | ||
55 | +# And I should see "There is no such page: /joaosilva/sample-project" | ||
56 | +# | ||
57 | +# @selenium | ||
58 | +# Scenario: I cannot delete a Mezuro project that doesn't belong to me | ||
59 | +# Given the following Mezuro project | ||
60 | +# | name | description | owner | | ||
61 | +# | Sample Project | Sample Description | joaosilva | | ||
62 | +# And I am on article "Sample Project" | ||
63 | +# And I should be on /joaosilva/sample-project | ||
64 | +# When I follow "Delete" | ||
65 | +# And I confirm the "Are you sure that you want to remove the item "Sample Project"?" dialog | ||
66 | +# Then I go to /joaosilva/sample-project | ||
67 | +# And I should see "There is no such page: /joaosilva/sample-project" | ||
68 | + |
plugins/mezuro/features/removing_metric_configuration.feature
plugins/mezuro/lib/kalibro/base_tool.rb
1 | class Kalibro::BaseTool < Kalibro::Model | 1 | class Kalibro::BaseTool < Kalibro::Model |
2 | 2 | ||
3 | - attr_accessor :name, :description, :supported_metric | ||
4 | - | ||
5 | - def self.all_names | ||
6 | - request("BaseTool", :get_base_tool_names)[:base_tool_name].to_a | ||
7 | - end | 3 | + attr_accessor :name, :description, :collector_class_name, :supported_metric |
8 | 4 | ||
9 | def self.find_by_name(base_tool_name) | 5 | def self.find_by_name(base_tool_name) |
10 | - new request("BaseTool", :get_base_tool, {:base_tool_name => base_tool_name})[:base_tool] | 6 | + new request(:get_base_tool, {:base_tool_name => base_tool_name})[:base_tool] |
11 | end | 7 | end |
12 | 8 | ||
13 | def self.all | 9 | def self.all |
14 | basetools = all_names | 10 | basetools = all_names |
15 | basetools.map{ |name| find_by_name(name) } | 11 | basetools.map{ |name| find_by_name(name) } |
16 | - end | 12 | + end |
13 | + | ||
14 | + def self.all_names | ||
15 | + request(:all_base_tool_names)[:base_tool_name].to_a | ||
16 | + end | ||
17 | 17 | ||
18 | def supported_metric=(value) | 18 | def supported_metric=(value) |
19 | - @supported_metric = Kalibro::NativeMetric.to_objects_array value | 19 | + @supported_metric = Kalibro::Metric.to_objects_array value |
20 | end | 20 | end |
21 | 21 | ||
22 | def supported_metrics | 22 | def supported_metrics |
plugins/mezuro/lib/kalibro/compound_metric.rb
plugins/mezuro/lib/kalibro/compound_metric_with_error.rb
@@ -1,13 +0,0 @@ | @@ -1,13 +0,0 @@ | ||
1 | -class Kalibro::CompoundMetricWithError < Kalibro::Model | ||
2 | - | ||
3 | - attr_accessor :metric, :error | ||
4 | - | ||
5 | - def metric=(value) | ||
6 | - @metric = Kalibro::CompoundMetric.to_object value | ||
7 | - end | ||
8 | - | ||
9 | - def error=(value) | ||
10 | - @error = Kalibro::Error.to_object value | ||
11 | - end | ||
12 | - | ||
13 | -end |
plugins/mezuro/lib/kalibro/configuration.rb
1 | class Kalibro::Configuration < Kalibro::Model | 1 | class Kalibro::Configuration < Kalibro::Model |
2 | 2 | ||
3 | - attr_accessor :name, :description, :metric_configuration | 3 | + attr_accessor :id, :name, :description |
4 | 4 | ||
5 | - def metric_configuration=(value) | ||
6 | - @metric_configuration = Kalibro::MetricConfiguration.to_objects_array value | 5 | + def id=(value) |
6 | + @id = value.to_i | ||
7 | end | 7 | end |
8 | 8 | ||
9 | - def metric_configurations | ||
10 | - @metric_configuration.nil? ? [] : @metric_configuration | 9 | + def self.configuration_of(repository_id) |
10 | + new request(:configuration_of, {:repository_id => repository_id})[:configuration] | ||
11 | end | 11 | end |
12 | 12 | ||
13 | - def metric_configurations=(metric_configurations) | ||
14 | - @metric_configuration = metric_configurations | 13 | + def self.all |
14 | + response = request(:all_configurations)[:configuration] | ||
15 | + response = [] if response.nil? | ||
16 | + response = [response] if response.is_a?(Hash) | ||
17 | + response.map {|configuration| new configuration} | ||
15 | end | 18 | end |
16 | 19 | ||
17 | - def self.find_by_name(configuration_name) | ||
18 | - new request("Configuration", :get_configuration, {:configuration_name => configuration_name})[:configuration] | ||
19 | - end | ||
20 | - | ||
21 | - def self.all_names | ||
22 | - request("Configuration", :get_configuration_names)[:configuration_name] | ||
23 | - end | ||
24 | - | ||
25 | - def update_attributes(attributes={}) | ||
26 | - attributes.each { |field, value| send("#{field}=", value) if self.class.is_valid?(field) } | ||
27 | - save | ||
28 | - end | ||
29 | - | ||
30 | - def metric_configurations_hash | ||
31 | - self.to_hash[:metric_configuration] | ||
32 | - end | ||
33 | end | 20 | end |
@@ -0,0 +1,16 @@ | @@ -0,0 +1,16 @@ | ||
1 | +class Kalibro::DateMetricResult < Kalibro::Model | ||
2 | + | ||
3 | + attr_accessor :date, :metric_result | ||
4 | + | ||
5 | + def date=(value) | ||
6 | + @date = value.is_a?(String) ? DateTime.parse(value) : value | ||
7 | + end | ||
8 | + | ||
9 | + def metric_result=(value) | ||
10 | + @metric_result = Kalibro::MetricResult.to_object value | ||
11 | + end | ||
12 | + | ||
13 | + def result | ||
14 | + @metric_result.value | ||
15 | + end | ||
16 | +end |
@@ -0,0 +1,17 @@ | @@ -0,0 +1,17 @@ | ||
1 | +class Kalibro::DateModuleResult < Kalibro::Model | ||
2 | + | ||
3 | + attr_accessor :date, :module_result | ||
4 | + | ||
5 | + def date=(value) | ||
6 | + @date = value.is_a?(String) ? DateTime.parse(value) : value | ||
7 | + end | ||
8 | + | ||
9 | + def module_result=(value) | ||
10 | + @module_result = Kalibro::ModuleResult.to_object value | ||
11 | + end | ||
12 | + | ||
13 | + def result | ||
14 | + @module_result.grade | ||
15 | + end | ||
16 | + | ||
17 | +end |
plugins/mezuro/lib/kalibro/error.rb
@@ -1,21 +0,0 @@ | @@ -1,21 +0,0 @@ | ||
1 | -class Kalibro::Error < Kalibro::Model | ||
2 | - | ||
3 | - attr_accessor :error_class, :message, :stack_trace_element, :cause | ||
4 | - | ||
5 | - def stack_trace_element=(value) | ||
6 | - @stack_trace_element = Kalibro::StackTraceElement.to_objects_array value | ||
7 | - end | ||
8 | - | ||
9 | - def stack_trace | ||
10 | - @stack_trace_element | ||
11 | - end | ||
12 | - | ||
13 | - def stack_trace=(stack_trace) | ||
14 | - @stack_trace_element = stack_trace | ||
15 | - end | ||
16 | - | ||
17 | - def cause=(cause_value) | ||
18 | - @cause = Kalibro::Error.to_object cause_value | ||
19 | - end | ||
20 | - | ||
21 | -end |
plugins/mezuro/lib/kalibro/metric.rb
1 | class Kalibro::Metric < Kalibro::Model | 1 | class Kalibro::Metric < Kalibro::Model |
2 | 2 | ||
3 | - attr_accessor :name, :scope, :description | 3 | + attr_accessor :name, :compound, :scope, :description, :script, :language |
4 | + | ||
5 | + def languages | ||
6 | + @language | ||
7 | + end | ||
8 | + | ||
9 | + def languages=(languages) | ||
10 | + @language = languages | ||
11 | + end | ||
12 | + | ||
13 | + def language=(value) | ||
14 | + @language = Kalibro::Model.to_objects_array value | ||
15 | + end | ||
4 | 16 | ||
5 | end | 17 | end |
plugins/mezuro/lib/kalibro/metric_configuration.rb
1 | class Kalibro::MetricConfiguration < Kalibro::Model | 1 | class Kalibro::MetricConfiguration < Kalibro::Model |
2 | 2 | ||
3 | - NATIVE_TYPE='native' | ||
4 | - COMPOUND_TYPE='compound' | 3 | + attr_accessor :id, :code, :metric, :base_tool_name, :weight, :aggregation_form, :reading_group_id, :configuration_id |
4 | + | ||
5 | + def id=(value) | ||
6 | + @id = value.to_i | ||
7 | + end | ||
5 | 8 | ||
6 | - attr_accessor :metric, :code, :weight, :aggregation_form, :range, :configuration_name | 9 | + def reading_group_id=(value) |
10 | + @reading_group_id = value.to_i | ||
11 | + end | ||
7 | 12 | ||
8 | def metric=(value) | 13 | def metric=(value) |
9 | - if value.kind_of?(Hash) | ||
10 | - @metric = native?(value) ? Kalibro::NativeMetric.to_object(value) : Kalibro::CompoundMetric.to_object(value) | ||
11 | - else | ||
12 | - @metric = value | ||
13 | - end | 14 | + @metric = Kalibro::Metric.to_object(value) |
14 | end | 15 | end |
15 | 16 | ||
16 | def weight=(value) | 17 | def weight=(value) |
17 | @weight = value.to_f | 18 | @weight = value.to_f |
18 | end | 19 | end |
19 | 20 | ||
20 | - def range=(value) | ||
21 | - @range = Kalibro::Range.to_objects_array value | ||
22 | - end | ||
23 | - | ||
24 | - def add_range(new_range) | ||
25 | - @range = [] if @range.nil? | ||
26 | - @range << new_range | ||
27 | - end | ||
28 | - | ||
29 | - def ranges | ||
30 | - @range | ||
31 | - end | ||
32 | - | ||
33 | - def ranges=(ranges) | ||
34 | - @range = ranges | ||
35 | - end | ||
36 | - | ||
37 | def update_attributes(attributes={}) | 21 | def update_attributes(attributes={}) |
38 | attributes.each { |field, value| send("#{field}=", value) if self.class.is_valid?(field) } | 22 | attributes.each { |field, value| send("#{field}=", value) if self.class.is_valid?(field) } |
39 | save | 23 | save |
40 | end | 24 | end |
41 | 25 | ||
42 | - def self.find_by_configuration_name_and_metric_name(configuration_name, metric_name) | ||
43 | - metric_configuration = new request("MetricConfiguration", :get_metric_configuration, { | ||
44 | - :configuration_name => configuration_name, | ||
45 | - :metric_name => metric_name | ||
46 | - })[:metric_configuration] | ||
47 | - metric_configuration.configuration_name = configuration_name | ||
48 | - metric_configuration | 26 | + def to_hash |
27 | + super :except => [:configuration_id] | ||
49 | end | 28 | end |
50 | 29 | ||
51 | - def destroy | ||
52 | - begin | ||
53 | - self.class.request("MetricConfiguration", :remove_metric_configuration, { | ||
54 | - :configuration_name => configuration_name, | ||
55 | - :metric_name=> metric.name | ||
56 | - }) | ||
57 | - rescue Exception => exception | ||
58 | - add_error exception | ||
59 | - end | ||
60 | - end | ||
61 | - | ||
62 | - def to_hash | ||
63 | - super :except => [:configuration_name] | 30 | + def self.metric_configurations_of(configuration_id) |
31 | + response = request(:metric_configurations_of, {:configuration_id => configuration_id})[:metric_configuration] | ||
32 | + response = [] if response.nil? | ||
33 | + response = [response] if response.is_a?(Hash) | ||
34 | + response.map { |metric_configuration| new metric_configuration } | ||
64 | end | 35 | end |
65 | 36 | ||
66 | private | 37 | private |
67 | 38 | ||
68 | - def native?(value) | ||
69 | - value.has_key?(:origin) ? true : false | ||
70 | - end | ||
71 | - | ||
72 | def save_params | 39 | def save_params |
73 | - {:metric_configuration => to_hash, :configuration_name => configuration_name} | 40 | + {:metric_configuration => self.to_hash, :configuration_id => self.configuration_id} |
74 | end | 41 | end |
75 | 42 | ||
76 | end | 43 | end |
plugins/mezuro/lib/kalibro/metric_configuration_snapshot.rb
0 → 100644
@@ -0,0 +1,38 @@ | @@ -0,0 +1,38 @@ | ||
1 | +class Kalibro::MetricConfigurationSnapshot < Kalibro::Model | ||
2 | + | ||
3 | + attr_accessor :code, :weight, :aggregation_form, :metric, :base_tool_name, :range | ||
4 | + | ||
5 | + def weight=(value) | ||
6 | + @weight = value.to_f | ||
7 | + end | ||
8 | + | ||
9 | + def metric=(value) | ||
10 | + if value.kind_of?(Hash) | ||
11 | + @metric = Kalibro::Metric.to_object(value) | ||
12 | + else | ||
13 | + @metric = value | ||
14 | + end | ||
15 | + end | ||
16 | + | ||
17 | + def range=(value) | ||
18 | + value.to_a | ||
19 | + @range = [] | ||
20 | + | ||
21 | + value.each do |range_snapshot| | ||
22 | + @range << Kalibro::RangeSnapshot.to_object(range_snapshot) | ||
23 | + end | ||
24 | + | ||
25 | + end | ||
26 | + | ||
27 | + def range_snapshot | ||
28 | + range | ||
29 | + end | ||
30 | + | ||
31 | + def to_hash | ||
32 | + hash = super | ||
33 | + hash[:attributes!][:range] = {'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', | ||
34 | + 'xsi:type' => 'kalibro:rangeSnapshotXml' } | ||
35 | + hash | ||
36 | + end | ||
37 | + | ||
38 | +end |
plugins/mezuro/lib/kalibro/metric_result.rb
1 | class Kalibro::MetricResult < Kalibro::Model | 1 | class Kalibro::MetricResult < Kalibro::Model |
2 | 2 | ||
3 | - attr_accessor :metric, :value, :range, :descendent_result, :weight | ||
4 | - | ||
5 | - def metric=(value) | ||
6 | - if value.kind_of?(Hash) | ||
7 | - @metric = native?(value) ? Kalibro::NativeMetric.to_object(value) : Kalibro::CompoundMetric.to_object(value) | ||
8 | - else | ||
9 | - @metric = value | 3 | + attr_accessor :id, :configuration, :value, :error |
4 | + | ||
5 | + def initialize(attributes={}) | ||
6 | + value = attributes[:value] | ||
7 | + @value = (value == "NaN") ? attributes[:aggregated_value].to_f : value.to_f | ||
8 | + attributes.each do |field, value| | ||
9 | + if field!= :value and field!= :aggregated_value and self.class.is_valid?(field) | ||
10 | + send("#{field}=", value) | ||
11 | + end | ||
10 | end | 12 | end |
13 | + @errors = [] | ||
11 | end | 14 | end |
12 | 15 | ||
13 | - def value=(value) | ||
14 | - @value = value.to_f | 16 | + def id=(value) |
17 | + @id = value.to_i | ||
15 | end | 18 | end |
16 | 19 | ||
17 | - def range=(value) | ||
18 | - @range = Kalibro::Range.to_object value | 20 | + def configuration=(value) |
21 | + @configuration = Kalibro::MetricConfigurationSnapshot.to_object value | ||
19 | end | 22 | end |
20 | 23 | ||
21 | - def descendent_result=(value) | ||
22 | - array = value.kind_of?(Array) ? value : [value] | ||
23 | - @descendent_result = array.collect {|element| element.to_f} | 24 | + def metric_configuration_snapshot |
25 | + configuration | ||
24 | end | 26 | end |
25 | 27 | ||
26 | - def descendent_results | ||
27 | - @descendent_result | 28 | + def error=(value) |
29 | + @error = Kalibro::Throwable.to_object value | ||
30 | + end | ||
31 | + | ||
32 | + def descendant_results | ||
33 | + self.class.request(:descendant_results_of, {:metric_result_id => self.id})[:descendant_result].to_a | ||
28 | end | 34 | end |
29 | 35 | ||
30 | - def descendent_results=(descendent_results) | ||
31 | - @descendent_result = descendent_results | 36 | + def self.metric_results_of(module_result_id) |
37 | + response = request(:metric_results_of, {:module_result_id => module_result_id})[:metric_result] | ||
38 | + response = [] if response.nil? | ||
39 | + response = [response] if response.is_a?(Hash) | ||
40 | + response.map {|metric_result| new metric_result} | ||
32 | end | 41 | end |
33 | - | ||
34 | - private | ||
35 | - | ||
36 | - def native?(value) | ||
37 | - value.has_key?(:origin) ? true : false | 42 | + |
43 | + def self.history_of(metric_name, module_result_id) | ||
44 | + response = self.request(:history_of_metric, {:metric_name => metric_name, :module_result_id => module_result_id})[:date_metric_result] | ||
45 | + response = [] if response.nil? | ||
46 | + response = [response] if response.is_a?(Hash) | ||
47 | + response.map {|date_metric_result| Kalibro::DateMetricResult.new date_metric_result} | ||
38 | end | 48 | end |
39 | 49 | ||
40 | end | 50 | end |
plugins/mezuro/lib/kalibro/model.rb
@@ -7,20 +7,21 @@ class Kalibro::Model | @@ -7,20 +7,21 @@ class Kalibro::Model | ||
7 | @errors = [] | 7 | @errors = [] |
8 | end | 8 | end |
9 | 9 | ||
10 | + | ||
10 | def to_hash(options={}) | 11 | def to_hash(options={}) |
11 | hash = Hash.new | 12 | hash = Hash.new |
12 | - excepts = !options[:except].nil? ? options[:except] : [] | 13 | + excepts = options[:except].nil? ? [] : options[:except] |
13 | excepts << :errors | 14 | excepts << :errors |
14 | fields.each do |field| | 15 | fields.each do |field| |
15 | if(!excepts.include?(field)) | 16 | if(!excepts.include?(field)) |
16 | field_value = send(field) | 17 | field_value = send(field) |
17 | if !field_value.nil? | 18 | if !field_value.nil? |
18 | - hash[field] = convert_to_hash(field_value) | 19 | + hash[field] = convert_to_hash(field_value) |
19 | if field_value.is_a?(Kalibro::Model) | 20 | if field_value.is_a?(Kalibro::Model) |
20 | hash = {:attributes! => {}}.merge(hash) | 21 | hash = {:attributes! => {}}.merge(hash) |
21 | hash[:attributes!][field.to_sym] = { | 22 | hash[:attributes!][field.to_sym] = { |
22 | 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', | 23 | 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', |
23 | - 'xsi:type' => 'kalibro:' + xml_class_name(field_value) } | 24 | + 'xsi:type' => 'kalibro:' + xml_instance_class_name(field_value) } |
24 | end | 25 | end |
25 | end | 26 | end |
26 | end | 27 | end |
@@ -28,7 +29,7 @@ class Kalibro::Model | @@ -28,7 +29,7 @@ class Kalibro::Model | ||
28 | hash | 29 | hash |
29 | end | 30 | end |
30 | 31 | ||
31 | - def self.request(endpoint, action, request_body = nil) | 32 | + def self.request(action, request_body = nil) |
32 | response = client(endpoint).request(:kalibro, action) { soap.body = request_body } | 33 | response = client(endpoint).request(:kalibro, action) { soap.body = request_body } |
33 | response.to_hash["#{action}_response".to_sym] # response is a Savon::SOAP::Response, and to_hash is a Savon::SOAP::Response method | 34 | response.to_hash["#{action}_response".to_sym] # response is a Savon::SOAP::Response, and to_hash is a Savon::SOAP::Response method |
34 | end | 35 | end |
@@ -40,17 +41,25 @@ class Kalibro::Model | @@ -40,17 +41,25 @@ class Kalibro::Model | ||
40 | 41 | ||
41 | def self.to_object value | 42 | def self.to_object value |
42 | value.kind_of?(Hash) ? new(value) : value | 43 | value.kind_of?(Hash) ? new(value) : value |
43 | - end | ||
44 | - | 44 | + end |
45 | + | ||
45 | def self.create(attributes={}) | 46 | def self.create(attributes={}) |
46 | new_model = new attributes | 47 | new_model = new attributes |
47 | new_model.save | 48 | new_model.save |
48 | new_model | 49 | new_model |
49 | end | 50 | end |
50 | 51 | ||
52 | + def self.find(id) | ||
53 | + if(exists?(id)) | ||
54 | + new request(find_action, id_params(id))["#{class_name.underscore}".to_sym] | ||
55 | + else | ||
56 | + raise Kalibro::Errors::RecordNotFound | ||
57 | + end | ||
58 | + end | ||
59 | + | ||
51 | def save | 60 | def save |
52 | begin | 61 | begin |
53 | - self.class.request(save_endpoint, save_action, save_params) | 62 | + self.id = self.class.request(save_action, save_params)["#{instance_class_name.underscore}_id".to_sym] |
54 | true | 63 | true |
55 | rescue Exception => exception | 64 | rescue Exception => exception |
56 | add_error exception | 65 | add_error exception |
@@ -60,12 +69,16 @@ class Kalibro::Model | @@ -60,12 +69,16 @@ class Kalibro::Model | ||
60 | 69 | ||
61 | def destroy | 70 | def destroy |
62 | begin | 71 | begin |
63 | - self.class.request(destroy_endpoint, destroy_action, destroy_params) | 72 | + self.class.request(destroy_action, destroy_params) |
64 | rescue Exception => exception | 73 | rescue Exception => exception |
65 | add_error exception | 74 | add_error exception |
66 | end | 75 | end |
67 | end | 76 | end |
68 | 77 | ||
78 | + def self.exists?(id) | ||
79 | + request(exists_action, id_params(id))[:exists] | ||
80 | + end | ||
81 | + | ||
69 | protected | 82 | protected |
70 | 83 | ||
71 | def fields | 84 | def fields |
@@ -76,13 +89,13 @@ class Kalibro::Model | @@ -76,13 +89,13 @@ class Kalibro::Model | ||
76 | return value if value.nil? | 89 | return value if value.nil? |
77 | return value.collect { |element| convert_to_hash(element) } if value.is_a?(Array) | 90 | return value.collect { |element| convert_to_hash(element) } if value.is_a?(Array) |
78 | return value.to_hash if value.is_a?(Kalibro::Model) | 91 | return value.to_hash if value.is_a?(Kalibro::Model) |
79 | - return self.class.date_with_milliseconds(value) if value.is_a?(DateTime) | 92 | + return self.class.date_with_milliseconds(value) if value.is_a?(DateTime) |
80 | return 'INF' if value.is_a?(Float) and value.infinite? == 1 | 93 | return 'INF' if value.is_a?(Float) and value.infinite? == 1 |
81 | return '-INF' if value.is_a?(Float) and value.infinite? == -1 | 94 | return '-INF' if value.is_a?(Float) and value.infinite? == -1 |
82 | - value | 95 | + value.to_s |
83 | end | 96 | end |
84 | 97 | ||
85 | - def xml_class_name(object) | 98 | + def xml_instance_class_name(object) |
86 | xml_name = object.class.name | 99 | xml_name = object.class.name |
87 | xml_name["Kalibro::"] = "" | 100 | xml_name["Kalibro::"] = "" |
88 | xml_name[0..0] = xml_name[0..0].downcase | 101 | xml_name[0..0] = xml_name[0..0].downcase |
@@ -97,38 +110,50 @@ class Kalibro::Model | @@ -97,38 +110,50 @@ class Kalibro::Model | ||
97 | def self.is_valid?(field) | 110 | def self.is_valid?(field) |
98 | field.to_s[0] != '@' and field != :attributes! and (field.to_s =~ /xsi/).nil? | 111 | field.to_s[0] != '@' and field != :attributes! and (field.to_s =~ /xsi/).nil? |
99 | end | 112 | end |
100 | - | 113 | + |
101 | def self.date_with_milliseconds(date) | 114 | def self.date_with_milliseconds(date) |
102 | milliseconds = "." + (date.sec_fraction * 60 * 60 * 24 * 1000).to_s | 115 | milliseconds = "." + (date.sec_fraction * 60 * 60 * 24 * 1000).to_s |
103 | date.to_s[0..18] + milliseconds + date.to_s[19..-1] | 116 | date.to_s[0..18] + milliseconds + date.to_s[19..-1] |
104 | end | 117 | end |
105 | - | ||
106 | - def class_name | 118 | + |
119 | + def instance_class_name | ||
107 | self.class.name.gsub(/Kalibro::/,"") | 120 | self.class.name.gsub(/Kalibro::/,"") |
108 | end | 121 | end |
109 | - | ||
110 | - def save_endpoint | 122 | + |
123 | + def self.endpoint | ||
111 | class_name | 124 | class_name |
112 | end | 125 | end |
113 | - | 126 | + |
114 | def save_action | 127 | def save_action |
115 | - "save_#{class_name.underscore}".to_sym | 128 | + "save_#{instance_class_name.underscore}".to_sym |
116 | end | 129 | end |
117 | - | 130 | + |
118 | def save_params | 131 | def save_params |
119 | - {class_name.underscore.to_sym => self.to_hash} | 132 | + {instance_class_name.underscore.to_sym => self.to_hash} |
120 | end | 133 | end |
121 | - | ||
122 | - def destroy_endpoint | ||
123 | - class_name | ||
124 | - end | ||
125 | - | 134 | + |
126 | def destroy_action | 135 | def destroy_action |
127 | - "remove_#{class_name.underscore}".to_sym | 136 | + "delete_#{instance_class_name.underscore}".to_sym |
128 | end | 137 | end |
129 | - | 138 | + |
130 | def destroy_params | 139 | def destroy_params |
131 | - {"#{class_name.underscore}_name".to_sym => self.name} | 140 | + {"#{instance_class_name.underscore}_id".to_sym => self.id} |
141 | + end | ||
142 | + | ||
143 | + def self.class_name | ||
144 | + self.name.gsub(/Kalibro::/,"") | ||
145 | + end | ||
146 | + | ||
147 | + def self.exists_action | ||
148 | + "#{class_name.underscore}_exists".to_sym | ||
149 | + end | ||
150 | + | ||
151 | + def self.id_params(id) | ||
152 | + {"#{class_name.underscore}_id".to_sym => id} | ||
153 | + end | ||
154 | + | ||
155 | + def self.find_action | ||
156 | + "get_#{class_name.underscore}".to_sym | ||
132 | end | 157 | end |
133 | 158 | ||
134 | def add_error(exception) | 159 | def add_error(exception) |
plugins/mezuro/lib/kalibro/module.rb
@@ -2,17 +2,4 @@ class Kalibro::Module < Kalibro::Model | @@ -2,17 +2,4 @@ class Kalibro::Module < Kalibro::Model | ||
2 | 2 | ||
3 | attr_accessor :name, :granularity | 3 | attr_accessor :name, :granularity |
4 | 4 | ||
5 | - def self.parent_names(name) | ||
6 | - path = [] | ||
7 | - ancestors = [] | ||
8 | - name.split(".").each do |token| | ||
9 | - path << token | ||
10 | - ancestors << path.join(".") | ||
11 | - end | ||
12 | - ancestors | ||
13 | - end | ||
14 | - | ||
15 | - def ancestor_names | ||
16 | - self.class.parent_names(@name) | ||
17 | - end | ||
18 | end | 5 | end |
plugins/mezuro/lib/kalibro/module_node.rb
@@ -1,21 +0,0 @@ | @@ -1,21 +0,0 @@ | ||
1 | -class Kalibro::ModuleNode < Kalibro::Model | ||
2 | - | ||
3 | - attr_accessor :module, :child | ||
4 | - | ||
5 | - def module=(value) | ||
6 | - @module = Kalibro::Module.to_object value | ||
7 | - end | ||
8 | - | ||
9 | - def child=(value) | ||
10 | - @child = Kalibro::ModuleNode.to_objects_array value | ||
11 | - end | ||
12 | - | ||
13 | - def children | ||
14 | - @child | ||
15 | - end | ||
16 | - | ||
17 | - def children=(children) | ||
18 | - @child = children | ||
19 | - end | ||
20 | - | ||
21 | -end |
plugins/mezuro/lib/kalibro/module_result.rb
1 | class Kalibro::ModuleResult < Kalibro::Model | 1 | class Kalibro::ModuleResult < Kalibro::Model |
2 | 2 | ||
3 | - attr_accessor :module, :date, :grade, :metric_result, :compound_metric_with_error | 3 | + attr_accessor :id, :module, :grade, :parent_id |
4 | 4 | ||
5 | - def self.find_by_project_name_and_module_name_and_date(project_name, module_name, date) | ||
6 | - new request( | ||
7 | - 'ModuleResult', | ||
8 | - :get_module_result, | ||
9 | - { | ||
10 | - :project_name => project_name, | ||
11 | - :module_name => module_name, | ||
12 | - :date => date_with_milliseconds(date) | ||
13 | - })[:module_result] | 5 | + def self.find(id) |
6 | + new request(:get_module_result, { :module_result_id => id })[:module_result] | ||
14 | end | 7 | end |
15 | - | ||
16 | - def self.all_by_project_name_and_module_name(project_name, module_name) | ||
17 | - response = request( | ||
18 | - 'ModuleResult', | ||
19 | - :get_result_history, | ||
20 | - { | ||
21 | - :project_name => project_name, | ||
22 | - :module_name => module_name | ||
23 | - })[:module_result] | ||
24 | - Kalibro::ModuleResult.to_objects_array(response) | 8 | + |
9 | + def children | ||
10 | + response = self.class.request(:children_of, {:module_result_id => id})[:module_result] | ||
11 | + response = [] if response.nil? | ||
12 | + response = [response] if response.is_a?(Hash) | ||
13 | + response.map {|module_result| Kalibro::ModuleResult.new module_result} | ||
25 | end | 14 | end |
26 | 15 | ||
27 | - def module=(value) | ||
28 | - @module = Kalibro::Module.to_object value | 16 | + def parents |
17 | + if parent_id.nil? | ||
18 | + [] | ||
19 | + else | ||
20 | + parent = self.class.find(parent_id) | ||
21 | + parent.parents << parent | ||
22 | + end | ||
29 | end | 23 | end |
30 | 24 | ||
31 | - def date=(value) | ||
32 | - @date = value.is_a?(String) ? DateTime.parse(value) : value | ||
33 | - end | ||
34 | - | ||
35 | - def grade=(value) | ||
36 | - @grade = value.to_f | 25 | + def id=(value) |
26 | + @id = value.to_i | ||
37 | end | 27 | end |
38 | 28 | ||
39 | - def metric_result=(value) | ||
40 | - @metric_result = Kalibro::MetricResult.to_objects_array value | ||
41 | - end | ||
42 | - | ||
43 | - def metric_results | ||
44 | - @metric_result | ||
45 | - end | ||
46 | - | ||
47 | - def metric_results=(metric_results) | ||
48 | - @metric_result = metric_results | 29 | + def module=(value) |
30 | + @module = Kalibro::Module.to_object value | ||
49 | end | 31 | end |
50 | 32 | ||
51 | - def compound_metric_with_error=(value) | ||
52 | - @compound_metric_with_error = Kalibro::CompoundMetricWithError.to_objects_array value | 33 | + def grade=(value) |
34 | + @grade = value.to_f | ||
53 | end | 35 | end |
54 | 36 | ||
55 | - def compound_metrics_with_error | ||
56 | - @compound_metric_with_error | 37 | + def parent_id=(value) |
38 | + @parent_id = value.to_i | ||
57 | end | 39 | end |
58 | 40 | ||
59 | - def compound_metrics_with_error=(compound_metrics_with_error) | ||
60 | - @compound_metric_with_error = compound_metrics_with_error | 41 | + def self.history_of(module_result_id) |
42 | + response = self.request(:history_of_module, {:module_result_id => module_result_id})[:date_module_result] | ||
43 | + response = [] if response.nil? | ||
44 | + response = [response] if response.is_a?(Hash) | ||
45 | + response.map {|date_module_result| Kalibro::DateModuleResult.new date_module_result} | ||
61 | end | 46 | end |
62 | 47 | ||
63 | end | 48 | end |
plugins/mezuro/lib/kalibro/native_metric.rb
@@ -1,17 +0,0 @@ | @@ -1,17 +0,0 @@ | ||
1 | -class Kalibro::NativeMetric < Kalibro::Metric | ||
2 | - | ||
3 | - attr_accessor :origin, :language | ||
4 | - | ||
5 | - def languages | ||
6 | - @language | ||
7 | - end | ||
8 | - | ||
9 | - def languages=(languages) | ||
10 | - @language = languages | ||
11 | - end | ||
12 | - | ||
13 | - def language=(value) | ||
14 | - @language = Kalibro::Model.to_objects_array value | ||
15 | - end | ||
16 | - | ||
17 | -end |
@@ -0,0 +1,94 @@ | @@ -0,0 +1,94 @@ | ||
1 | +class Kalibro::Processing < Kalibro::Model | ||
2 | + | ||
3 | + attr_accessor :id, :date, :state, :error, :process_time, :results_root_id | ||
4 | + | ||
5 | + def self.processing_of(repository_id) | ||
6 | + if has_ready_processing(repository_id) | ||
7 | + last_ready_processing_of(repository_id) | ||
8 | + else #always exists a processing, we send a requisition to kalibro to process repository | ||
9 | + last_processing_of(repository_id) | ||
10 | + end | ||
11 | + end | ||
12 | + | ||
13 | + def self.processing_with_date_of(repository_id, date) | ||
14 | + date = date.is_a?(String) ? DateTime.parse(date) : date | ||
15 | + if has_processing_after(repository_id, date) | ||
16 | + first_processing_after(repository_id, date) | ||
17 | + elsif has_processing_before(repository_id, date) | ||
18 | + last_processing_before(repository_id, date) | ||
19 | + else | ||
20 | + last_processing_of(repository_id) | ||
21 | + end | ||
22 | + end | ||
23 | + | ||
24 | + def id=(value) | ||
25 | + @id = value.to_i | ||
26 | + end | ||
27 | + | ||
28 | + def date=(value) | ||
29 | + @date = value.is_a?(String) ? DateTime.parse(value) : value | ||
30 | + end | ||
31 | + | ||
32 | + def process_times=(value) | ||
33 | + process_time=value | ||
34 | + end | ||
35 | + | ||
36 | + def process_time=(value) | ||
37 | + @process_time = Kalibro::ProcessTime.to_objects_array value | ||
38 | + end | ||
39 | + | ||
40 | + def process_times | ||
41 | + process_time | ||
42 | + end | ||
43 | + | ||
44 | + def error=(value) | ||
45 | + @error = Kalibro::Throwable.to_object value | ||
46 | + end | ||
47 | + | ||
48 | + def results_root_id=(value) | ||
49 | + @results_root_id = value.to_i | ||
50 | + end | ||
51 | + | ||
52 | + private | ||
53 | + | ||
54 | + def self.has_processing(repository_id) | ||
55 | + request(:has_processing, {:repository_id => repository_id})[:exists] | ||
56 | + end | ||
57 | + | ||
58 | + def self.has_ready_processing(repository_id) | ||
59 | + request(:has_ready_processing, {:repository_id => repository_id})[:exists] | ||
60 | + end | ||
61 | + | ||
62 | + def self.has_processing_after(repository_id, date) | ||
63 | + request(:has_processing_after, {:repository_id => repository_id, :date => date})[:exists] | ||
64 | + end | ||
65 | + | ||
66 | + def self.has_processing_before(repository_id, date) | ||
67 | + request(:has_processing_before, {:repository_id => repository_id, :date => date})[:exists] | ||
68 | + end | ||
69 | + | ||
70 | + def self.last_processing_state_of(repository_id) | ||
71 | + request(:last_processing_state, {:repository_id => repository_id})[:process_state] | ||
72 | + end | ||
73 | + | ||
74 | + def self.last_ready_processing_of(repository_id) | ||
75 | + new request(:last_ready_processing, {:repository_id => repository_id})[:processing] | ||
76 | + end | ||
77 | + | ||
78 | + def self.first_processing_of(repository_id) | ||
79 | + new request(:first_processing, {:repository_id => repository_id})[:processing] | ||
80 | + end | ||
81 | + | ||
82 | + def self.last_processing_of(repository_id) | ||
83 | + new request(:last_processing, {:repository_id => repository_id})[:processing] | ||
84 | + end | ||
85 | + | ||
86 | + def self.first_processing_after(repository_id, date) | ||
87 | + new request(:first_processing_after, {:repository_id => repository_id, :date => date})[:processing] | ||
88 | + end | ||
89 | + | ||
90 | + def self.last_processing_before(repository_id, date) | ||
91 | + new request(:last_processing_before, {:repository_id => repository_id, :date => date})[:processing] | ||
92 | + end | ||
93 | + | ||
94 | +end |
plugins/mezuro/lib/kalibro/project.rb
1 | class Kalibro::Project < Kalibro::Model | 1 | class Kalibro::Project < Kalibro::Model |
2 | 2 | ||
3 | - attr_accessor :name, :license, :description, :repository, :configuration_name, :state, :kalibro_error | 3 | + attr_accessor :id, :name, :description |
4 | 4 | ||
5 | - def self.all_names | ||
6 | - response = request("Project", :get_project_names)[:project_name] | ||
7 | - response = [] if response.nil? | ||
8 | - response | ||
9 | - end | ||
10 | - | ||
11 | - def self.find_by_name(project_name) | ||
12 | - new request("Project", :get_project, :project_name => project_name)[:project] | ||
13 | - end | ||
14 | - | ||
15 | - def repository=(value) | ||
16 | - @repository = Kalibro::Repository.to_object value | 5 | + def id=(value) |
6 | + @id = value.to_i | ||
17 | end | 7 | end |
18 | 8 | ||
19 | - def error=(value) | ||
20 | - @kalibro_error = Kalibro::Error.to_object value | ||
21 | - end | ||
22 | - | ||
23 | - def process_project(days = '0') | ||
24 | - begin | ||
25 | - if days.to_i.zero? | ||
26 | - self.class.request("Kalibro", :process_project, {:project_name => name}) | ||
27 | - else | ||
28 | - self.class.request("Kalibro", :process_periodically, {:project_name => name, :period_in_days => days}) | ||
29 | - end | ||
30 | - rescue Exception => exception | ||
31 | - add_error exception | ||
32 | - end | ||
33 | - end | ||
34 | - | ||
35 | - def process_period | ||
36 | - begin | ||
37 | - self.class.request("Kalibro", :get_process_period, {:project_name => name})[:period] | ||
38 | - rescue Exception => exception | ||
39 | - add_error exception | ||
40 | - end | 9 | + def self.all |
10 | + response = request(:all_projects)[:project] | ||
11 | + response = [] if response.nil? | ||
12 | + response = [response] if response.is_a?(Hash) | ||
13 | + response.map {|project| new project} | ||
41 | end | 14 | end |
42 | 15 | ||
43 | - def cancel_periodic_process | ||
44 | - begin | ||
45 | - self.class.request("Kalibro", :cancel_periodic_process, {:project_name => name}) | ||
46 | - rescue Exception => exception | ||
47 | - add_error exception | ||
48 | - end | 16 | + def self.project_of(repository_id) |
17 | + new request(:project_of, :repository_id => repository_id)[:project] | ||
49 | end | 18 | end |
50 | 19 | ||
51 | end | 20 | end |
plugins/mezuro/lib/kalibro/project_result.rb
@@ -1,100 +0,0 @@ | @@ -1,100 +0,0 @@ | ||
1 | -class Kalibro::ProjectResult < Kalibro::Model | ||
2 | - | ||
3 | - attr_accessor :project, :date, :load_time, :analysis_time, :source_tree, :collect_time | ||
4 | - | ||
5 | - def self.last_result(project_name) | ||
6 | - new request('ProjectResult', :get_last_result_of, {:project_name => project_name})[:project_result] | ||
7 | - end | ||
8 | - | ||
9 | - def self.first_result(project_name) | ||
10 | - new request('ProjectResult', :get_first_result_of, {:project_name => project_name})[:project_result] | ||
11 | - end | ||
12 | - | ||
13 | - def self.first_result_after(project_name, date) | ||
14 | - new request('ProjectResult', :get_first_result_after, {:project_name => project_name, :date => date})[:project_result] | ||
15 | - end | ||
16 | - | ||
17 | - def self.last_result_before(project_name, date) | ||
18 | - new request('ProjectResult', :get_last_result_before, {:project_name => project_name, :date => date})[:project_result] | ||
19 | - end | ||
20 | - | ||
21 | - def self.has_results?(project_name) | ||
22 | - request('ProjectResult', :has_results_for, {:project_name => project_name})[:has_results] | ||
23 | - end | ||
24 | - | ||
25 | - def self.has_results_before?(project_name, date) | ||
26 | - request('ProjectResult', :has_results_before, {:project_name => project_name, :date => date})[:has_results] | ||
27 | - end | ||
28 | - | ||
29 | - def self.has_results_after?(project_name, date) | ||
30 | - request('ProjectResult', :has_results_after, {:project_name => project_name, :date => date})[:has_results] | ||
31 | - end | ||
32 | - | ||
33 | - def project=(value) | ||
34 | - @project = (value.kind_of?(Hash)) ? Kalibro::Project.new(value) : value | ||
35 | - end | ||
36 | - | ||
37 | - def date=(value) | ||
38 | - @date = value.is_a?(String) ? DateTime.parse(value) : value | ||
39 | - end | ||
40 | - | ||
41 | - def load_time=(value) | ||
42 | - @load_time = value.to_i | ||
43 | - end | ||
44 | - | ||
45 | - def collect_time=(value) | ||
46 | - @collect_time = value.to_i | ||
47 | - end | ||
48 | - | ||
49 | - def analysis_time=(value) | ||
50 | - @analysis_time = value.to_i | ||
51 | - end | ||
52 | - | ||
53 | - def source_tree=(value) | ||
54 | - @source_tree = value.kind_of?(Hash) ? Kalibro::ModuleNode.new(value) : value | ||
55 | - end | ||
56 | - | ||
57 | - def formatted_load_time | ||
58 | - format_milliseconds(@load_time) | ||
59 | - end | ||
60 | - | ||
61 | - def formatted_analysis_time | ||
62 | - format_milliseconds(@analysis_time) | ||
63 | - end | ||
64 | - | ||
65 | - def format_milliseconds(value) | ||
66 | - seconds = value.to_i/1000 | ||
67 | - hours = seconds/3600 | ||
68 | - seconds -= hours * 3600 | ||
69 | - minutes = seconds/60 | ||
70 | - seconds -= minutes * 60 | ||
71 | - "#{format(hours)}:#{format(minutes)}:#{format(seconds)}" | ||
72 | - end | ||
73 | - | ||
74 | - def format(amount) | ||
75 | - ('%2d' % amount).sub(/\s/, '0') | ||
76 | - end | ||
77 | - | ||
78 | - def node(module_name) | ||
79 | - if module_name.nil? or module_name == project.name | ||
80 | - node = source_tree | ||
81 | - else | ||
82 | - path = Kalibro::Module.parent_names(module_name) | ||
83 | - parent = @source_tree | ||
84 | - path.each do |node_name| | ||
85 | - parent = get_leaf_from(parent, node_name) | ||
86 | - end | ||
87 | - parent | ||
88 | - end | ||
89 | - end | ||
90 | - | ||
91 | - private | ||
92 | - | ||
93 | - def get_leaf_from(node, module_name) | ||
94 | - node.children.each do |child_node| | ||
95 | - return child_node if child_node.module.name == module_name | ||
96 | - end | ||
97 | - nil | ||
98 | - end | ||
99 | - | ||
100 | -end |
plugins/mezuro/lib/kalibro/range.rb
1 | class Kalibro::Range < Kalibro::Model | 1 | class Kalibro::Range < Kalibro::Model |
2 | 2 | ||
3 | - attr_accessor :beginning, :end, :label, :grade, :color, :comments | 3 | + attr_accessor :id, :beginning, :end, :reading_id, :comments |
4 | + | ||
5 | + def id=(value) | ||
6 | + @id = value.to_i | ||
7 | + end | ||
4 | 8 | ||
5 | def beginning=(value) | 9 | def beginning=(value) |
6 | @beginning = value.to_f | 10 | @beginning = value.to_f |
@@ -30,12 +34,45 @@ class Kalibro::Range < Kalibro::Model | @@ -30,12 +34,45 @@ class Kalibro::Range < Kalibro::Model | ||
30 | end | 34 | end |
31 | end | 35 | end |
32 | 36 | ||
33 | - def grade=(value) | ||
34 | - @grade = value.to_f | 37 | + def reading_id=(value) |
38 | + @reading_id = value.to_i | ||
39 | + end | ||
40 | + | ||
41 | + def label | ||
42 | + reading.label | ||
35 | end | 43 | end |
36 | 44 | ||
37 | - def mezuro_color | ||
38 | - @color.nil? ? "e4ca2d" : @color.gsub(/^ff/, "") | ||
39 | - end | 45 | + def grade |
46 | + reading.grade | ||
47 | + end | ||
48 | + | ||
49 | + def color | ||
50 | + reading.color | ||
51 | + end | ||
52 | + | ||
53 | + def self.ranges_of( metric_configuration_id ) | ||
54 | + response = request(:ranges_of, {:metric_configuration_id => metric_configuration_id} )[:range] | ||
55 | + response = [] if response.nil? | ||
56 | + response = [response] if response.is_a?(Hash) | ||
57 | + response.map { |range| new range } | ||
58 | + end | ||
59 | + | ||
60 | + def save( metric_configuration_id ) | ||
61 | + begin | ||
62 | + self.id = self.class.request(:save_range, {:range => self.to_hash, :metric_configuration_id => metric_configuration_id})[:range_id] | ||
63 | + true | ||
64 | + rescue Exception => exception | ||
65 | + add_error exception | ||
66 | + false | ||
67 | + end | ||
68 | + end | ||
69 | + | ||
70 | + private | ||
71 | + | ||
72 | + def reading | ||
73 | + @reading ||= Kalibro::Reading.find(reading_id) | ||
74 | + @reading | ||
75 | + end | ||
40 | 76 | ||
41 | end | 77 | end |
78 | + |
@@ -0,0 +1,17 @@ | @@ -0,0 +1,17 @@ | ||
1 | +class Kalibro::RangeSnapshot < Kalibro::Model | ||
2 | + | ||
3 | + attr_accessor :beginning, :end, :label, :grade, :color, :comments | ||
4 | + | ||
5 | + def beginning=(value) | ||
6 | + @beginning = ((value == "-INF") ? -1.0/0 : value.to_f) | ||
7 | + end | ||
8 | + | ||
9 | + def end=(value) | ||
10 | + @end = ((value == "INF") ? 1.0/0 : value.to_f) | ||
11 | + end | ||
12 | + | ||
13 | + def grade=(value) | ||
14 | + @grade = value.to_f | ||
15 | + end | ||
16 | + | ||
17 | +end |
@@ -0,0 +1,38 @@ | @@ -0,0 +1,38 @@ | ||
1 | +class Kalibro::Reading < Kalibro::Model | ||
2 | + | ||
3 | + attr_accessor :id, :label, :grade, :color | ||
4 | + | ||
5 | + def self.find(id) | ||
6 | + new request(:get_reading, {:reading_id => id})[:reading] | ||
7 | + end | ||
8 | + | ||
9 | + def self.readings_of( group_id ) | ||
10 | + response = request(:readings_of, {:group_id => group_id})[:reading] | ||
11 | + response = [] if response.nil? | ||
12 | + response = [response] if response.is_a?(Hash) | ||
13 | + response.map { |reading| new reading } | ||
14 | + end | ||
15 | + | ||
16 | + def self.reading_of( range_id ) | ||
17 | + new request(:reading_of, {:range_id => range_id} )[:reading] | ||
18 | + end | ||
19 | + | ||
20 | + def id=(value) | ||
21 | + @id = value.to_i | ||
22 | + end | ||
23 | + | ||
24 | + def grade=(value) | ||
25 | + @grade = value.to_f | ||
26 | + end | ||
27 | + | ||
28 | + def save(reading_group_id) | ||
29 | + begin | ||
30 | + self.id = self.class.request(:save_reading, {:reading => self.to_hash, :group_id => reading_group_id})[:reading_id] | ||
31 | + true | ||
32 | + rescue Exception => exception | ||
33 | + add_error exception | ||
34 | + false | ||
35 | + end | ||
36 | + end | ||
37 | + | ||
38 | +end |
@@ -0,0 +1,30 @@ | @@ -0,0 +1,30 @@ | ||
1 | +class Kalibro::ReadingGroup < Kalibro::Model | ||
2 | + | ||
3 | + attr_accessor :id, :name, :description | ||
4 | + | ||
5 | + def id=(value) | ||
6 | + @id = value.to_i | ||
7 | + end | ||
8 | + | ||
9 | + def self.all | ||
10 | + response = request(:all_reading_groups)[:reading_group] | ||
11 | + response = [] if response.nil? | ||
12 | + response = [response] if response.is_a?(Hash) | ||
13 | + response.map { |reading_group| new reading_group } | ||
14 | + end | ||
15 | + | ||
16 | + def self.reading_group_of( metric_configuration_id ) | ||
17 | + new request(:reading_group_of, {:metric_configuration_id => metric_configuration_id} )[:reading_group] | ||
18 | + end | ||
19 | + | ||
20 | + private | ||
21 | + | ||
22 | + def self.id_params(id) | ||
23 | + {:group_id => id} | ||
24 | + end | ||
25 | + | ||
26 | + def destroy_params | ||
27 | + {:group_id => self.id} | ||
28 | + end | ||
29 | + | ||
30 | +end |
plugins/mezuro/lib/kalibro/repository.rb
1 | class Kalibro::Repository < Kalibro::Model | 1 | class Kalibro::Repository < Kalibro::Model |
2 | 2 | ||
3 | - attr_accessor :type, :address, :username, :password | 3 | + attr_accessor :id, :name, :description, :license, :process_period, :type, :address, :configuration_id |
4 | 4 | ||
5 | def self.repository_types | 5 | def self.repository_types |
6 | - request("Kalibro", :get_supported_repository_types)[:repository_type].to_a | 6 | + request(:supported_repository_types)[:supported_type].to_a |
7 | + end | ||
8 | + | ||
9 | + def self.repository_of(processing_id) | ||
10 | + new request(:repository_of, {:processing_id => processing_id})[:repository] | ||
11 | + end | ||
12 | + | ||
13 | + def self.repositories_of(project_id) | ||
14 | + response = request(:repositories_of, {:project_id => project_id})[:repository] | ||
15 | + response = [] if response.nil? | ||
16 | + response = [response] if response.is_a?(Hash) | ||
17 | + response.map {|repository| new repository} | ||
18 | + end | ||
19 | + | ||
20 | + def id=(value) | ||
21 | + @id = value.to_i | ||
22 | + end | ||
23 | + | ||
24 | + def process_period=(value) | ||
25 | + @process_period = value.to_i | ||
26 | + end | ||
27 | + | ||
28 | + def configuration_id=(value) | ||
29 | + @configuration_id = value.to_i | ||
30 | + end | ||
31 | + | ||
32 | + def process | ||
33 | + self.class.request(:process_repository, {:repository_id => self.id}) | ||
34 | + end | ||
35 | + | ||
36 | + def cancel_processing_of_repository | ||
37 | + self.class.request(:cancel_processing_of_repository, {:repository_id => self.id}) | ||
38 | + end | ||
39 | + | ||
40 | + def save(project_id) | ||
41 | + begin | ||
42 | + self.id = self.class.request(:save_repository, {:repository => self.to_hash, :project_id => project_id})[:repository_id] | ||
43 | + true | ||
44 | + rescue Exception => exception | ||
45 | + add_error exception | ||
46 | + false | ||
47 | + end | ||
7 | end | 48 | end |
8 | 49 | ||
9 | end | 50 | end |
@@ -0,0 +1,21 @@ | @@ -0,0 +1,21 @@ | ||
1 | +class Kalibro::Throwable < Kalibro::Model | ||
2 | + | ||
3 | + attr_accessor :target_string, :message, :cause, :stack_trace_element | ||
4 | + | ||
5 | + def stack_trace_element=(value) | ||
6 | + @stack_trace_element = Kalibro::StackTraceElement.to_objects_array value | ||
7 | + end | ||
8 | + | ||
9 | + def stack_trace | ||
10 | + @stack_trace_element | ||
11 | + end | ||
12 | + | ||
13 | + def stack_trace=(stack_trace) | ||
14 | + @stack_trace_element = stack_trace | ||
15 | + end | ||
16 | + | ||
17 | + def cause=(cause_value) | ||
18 | + @cause = Kalibro::Throwable.to_object cause_value | ||
19 | + end | ||
20 | + | ||
21 | +end |
plugins/mezuro/lib/mezuro_plugin.rb
@@ -18,7 +18,8 @@ class MezuroPlugin < Noosfero::Plugin | @@ -18,7 +18,8 @@ class MezuroPlugin < Noosfero::Plugin | ||
18 | if context.profile.is_a?(Community) | 18 | if context.profile.is_a?(Community) |
19 | MezuroPlugin::ProjectContent | 19 | MezuroPlugin::ProjectContent |
20 | else | 20 | else |
21 | - MezuroPlugin::ConfigurationContent | 21 | + [MezuroPlugin::ConfigurationContent, |
22 | + MezuroPlugin::ReadingGroupContent] | ||
22 | end | 23 | end |
23 | end | 24 | end |
24 | 25 | ||
@@ -26,7 +27,8 @@ class MezuroPlugin < Noosfero::Plugin | @@ -26,7 +27,8 @@ class MezuroPlugin < Noosfero::Plugin | ||
26 | if context.profile.is_a?(Community) | 27 | if context.profile.is_a?(Community) |
27 | {:title => _('Mezuro project'), :url => {:controller => 'cms', :action => 'new', :profile => context.profile.identifier, :type => 'MezuroPlugin::ProjectContent'}, :icon => 'mezuro' } | 28 | {:title => _('Mezuro project'), :url => {:controller => 'cms', :action => 'new', :profile => context.profile.identifier, :type => 'MezuroPlugin::ProjectContent'}, :icon => 'mezuro' } |
28 | else | 29 | else |
29 | - {:title => _('Mezuro configuration'), :url => {:controller => 'cms', :action => 'new', :profile => context.profile.identifier, :type => 'MezuroPlugin::ConfigurationContent'}, :icon => 'mezuro' } | 30 | + [{:title => _('Mezuro configuration'), :url => {:controller => 'cms', :action => 'new', :profile => context.profile.identifier, :type => 'MezuroPlugin::ConfigurationContent'}, :icon => 'mezuro' }, |
31 | + {:title => _('Mezuro Reading Group'), :url => {:controller => 'cms', :action => 'new', :profile => context.profile.identifier, :type => 'MezuroPlugin::ReadingGroupContent'}, :icon => 'mezuro' }] | ||
30 | end | 32 | end |
31 | end | 33 | end |
32 | 34 |
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 | + validate_on_create :validate_configuration_name |
3 | 3 | ||
4 | - settings_items :description, :configuration_to_clone_name | 4 | + settings_items :configuration_id |
5 | 5 | ||
6 | - after_save :send_kalibro_configuration_to_service | ||
7 | - after_destroy :remove_kalibro_configuration_from_service | 6 | + before_save :send_configuration_to_service |
7 | + after_destroy :remove_configuration_from_service | ||
8 | 8 | ||
9 | def self.short_description | 9 | def self.short_description |
10 | 'Mezuro configuration' | 10 | 'Mezuro configuration' |
11 | end | 11 | end |
12 | 12 | ||
13 | def self.description | 13 | def self.description |
14 | - 'Sets of thresholds to interpret metrics' | 14 | + 'Set of metric configurations to interpret a Kalibro project' |
15 | end | 15 | end |
16 | 16 | ||
17 | include ActionView::Helpers::TagHelper | 17 | include ActionView::Helpers::TagHelper |
@@ -21,77 +21,118 @@ class MezuroPlugin::ConfigurationContent < Article | @@ -21,77 +21,118 @@ class MezuroPlugin::ConfigurationContent < Article | ||
21 | end | 21 | end |
22 | end | 22 | end |
23 | 23 | ||
24 | - def kalibro_configuration | 24 | + def kalibro_configuration #Can't be just "configuration", method name exists somewhere in noosfero |
25 | begin | 25 | begin |
26 | - @kalibro_configuration ||= Kalibro::Configuration.find_by_name(self.name) | 26 | + @configuration ||= Kalibro::Configuration.find(self.configuration_id) |
27 | rescue Exception => exception | 27 | rescue Exception => exception |
28 | errors.add_to_base(exception.message) | 28 | errors.add_to_base(exception.message) |
29 | + @configuration = nil | ||
29 | end | 30 | end |
30 | - @kalibro_configuration | 31 | + @configuration |
31 | end | 32 | end |
32 | 33 | ||
33 | - def metric_configurations | ||
34 | - kalibro_configuration.metric_configurations | 34 | + def configuration_names_and_ids |
35 | + begin | ||
36 | + all_configurations = Kalibro::Configuration.all | ||
37 | + all_names_and_ids = all_configurations.map { |configuration| [configuration.name, configuration.id] } | ||
38 | + [["None", -1]] + (all_names_and_ids.sort { |x,y| x.first.downcase <=> y.first.downcase }) | ||
39 | + rescue Exception => exception | ||
40 | + errors.add_to_base(exception.message) | ||
41 | + [["None", -1]] | ||
42 | + end | ||
43 | + | ||
35 | end | 44 | end |
36 | 45 | ||
37 | - def kalibro_configuration_names | 46 | + def description=(value) |
47 | + @description=value | ||
48 | + end | ||
49 | + | ||
50 | + def description | ||
38 | begin | 51 | begin |
39 | - all_configuration_names = Kalibro::Configuration.all_names | ||
40 | - if all_configuration_names.nil? | ||
41 | - ["None"] | ||
42 | - else | ||
43 | - ["None"] + all_configuration_names.sort | ||
44 | - end | 52 | + @description ||= kalibro_configuration.description |
53 | + rescue | ||
54 | + @description = "" | ||
55 | + end | ||
56 | + @description | ||
57 | + end | ||
58 | + | ||
59 | + def configuration_to_clone_id | ||
60 | + begin | ||
61 | + @configuration_to_clone_id | ||
45 | rescue Exception => exception | 62 | rescue Exception => exception |
46 | - errors.add_to_base(exception.message) | ||
47 | - ["None"] | 63 | + nil |
64 | + end | ||
65 | + end | ||
66 | + | ||
67 | + def configuration_to_clone_id=(value) | ||
68 | + @configuration_to_clone_id = (value == -1) ? nil : value | ||
69 | + end | ||
70 | + | ||
71 | + def metric_configurations | ||
72 | + begin | ||
73 | + @metric_configurations ||= Kalibro::MetricConfiguration.metric_configurations_of(configuration_id) | ||
74 | + rescue Exception => error | ||
75 | + errors.add_to_base(error.message) | ||
76 | + @metric_configurations = [] | ||
48 | end | 77 | end |
78 | + @metric_configurations | ||
79 | + end | ||
80 | + | ||
81 | + def metric_configurations=(value) | ||
82 | + @metric_configurations = value.kind_of?(Array) ? value : [value] | ||
83 | + @metric_configurations = @metric_configurations.map { |element| to_metric_configuration(element) } | ||
49 | end | 84 | end |
50 | 85 | ||
51 | private | 86 | private |
52 | 87 | ||
53 | - def validate_kalibro_configuration_name | ||
54 | - existing = kalibro_configuration_names.map { |a| a.downcase} | 88 | + def self.to_metric_configuration value |
89 | + value.kind_of?(Hash) ? Kalibro::MetricConfiguration.new(value) : value | ||
90 | + end | ||
91 | + | ||
92 | + def validate_configuration_name | ||
93 | + existing = configuration_names_and_ids.map { |a| a.first.downcase} | ||
55 | 94 | ||
56 | if existing.include?(name.downcase) | 95 | if existing.include?(name.downcase) |
57 | errors.add_to_base("Configuration name already exists in Kalibro") | 96 | errors.add_to_base("Configuration name already exists in Kalibro") |
58 | end | 97 | end |
59 | end | 98 | end |
60 | 99 | ||
61 | - def send_kalibro_configuration_to_service | ||
62 | - if editing_kalibro_configuration? | ||
63 | - kalibro_configuration.update_attributes({:description => description}) | ||
64 | - else | ||
65 | - create_kalibro_configuration | ||
66 | - end | ||
67 | - end | ||
68 | - | ||
69 | - def remove_kalibro_configuration_from_service | 100 | + def remove_configuration_from_service |
70 | kalibro_configuration.destroy unless kalibro_configuration.nil? | 101 | kalibro_configuration.destroy unless kalibro_configuration.nil? |
71 | end | 102 | end |
72 | 103 | ||
73 | - def create_kalibro_configuration | ||
74 | - attributes = {:name => name, :description => description} | ||
75 | - if cloning_kalibro_configuration? | ||
76 | - attributes[:metric_configuration] = configuration_to_clone.metric_configurations_hash | ||
77 | - end | ||
78 | - Kalibro::Configuration.create attributes | 104 | + def send_configuration_to_service |
105 | + attributes = {:id => configuration_id, :name => name, :description => description} | ||
106 | + created_configuration = Kalibro::Configuration.create attributes | ||
107 | + self.configuration_id = created_configuration.id | ||
108 | + clone_configuration if cloning_configuration? | ||
79 | end | 109 | end |
80 | - | ||
81 | - def editing_kalibro_configuration? | ||
82 | - kalibro_configuration.present? | 110 | + |
111 | + def cloning_configuration? | ||
112 | + !configuration_to_clone_id.nil? | ||
83 | end | 113 | end |
84 | - | ||
85 | - def configuration_to_clone | ||
86 | - @configuration_to_clone ||= find_configuration_to_clone | 114 | + |
115 | + def clone_configuration | ||
116 | + metric_configurations_to_clone ||= Kalibro::MetricConfiguration.metric_configurations_of(configuration_to_clone_id) | ||
117 | + clone_metric_configurations metric_configurations_to_clone | ||
87 | end | 118 | end |
88 | - | ||
89 | - def find_configuration_to_clone | ||
90 | - (configuration_to_clone_name == "None") ? nil : Kalibro::Configuration.find_by_name(configuration_to_clone_name) | 119 | + |
120 | + def clone_metric_configurations metric_configurations_to_clone | ||
121 | + metric_configurations_to_clone.each do |metric_configuration| | ||
122 | + clonned_metric_configuration_id = metric_configuration.id | ||
123 | + metric_configuration.id = nil | ||
124 | + metric_configuration.configuration_id = self.configuration_id | ||
125 | + metric_configuration.save | ||
126 | + clone_ranges clonned_metric_configuration_id, metric_configuration.id | ||
127 | + end | ||
91 | end | 128 | end |
92 | - | ||
93 | - def cloning_kalibro_configuration? | ||
94 | - configuration_to_clone.present? | 129 | + |
130 | + def clone_ranges clonned_metric_configuration_id, new_metric_configuration_id | ||
131 | + Kalibro::Range.ranges_of(clonned_metric_configuration_id).each do |range| | ||
132 | + range.id = nil | ||
133 | + range.save new_metric_configuration_id | ||
134 | + end | ||
95 | end | 135 | end |
96 | 136 | ||
97 | end | 137 | end |
138 | + |
plugins/mezuro/lib/mezuro_plugin/helpers/content_viewer_helper.rb
@@ -6,24 +6,26 @@ class MezuroPlugin::Helpers::ContentViewerHelper | @@ -6,24 +6,26 @@ class MezuroPlugin::Helpers::ContentViewerHelper | ||
6 | sprintf("%.2f", grade.to_f) | 6 | sprintf("%.2f", grade.to_f) |
7 | end | 7 | end |
8 | 8 | ||
9 | - def self.create_periodicity_options | ||
10 | - [["Not Periodically", 0], ["1 day", 1], ["2 days", 2], ["Weekly", 7], ["Biweeky", 15], ["Monthly", 30]] | 9 | + def self.periodicity_options |
10 | + [["Not Periodically", 0], ["1 day", 1], ["2 days", 2], ["Weekly", 7], ["Biweekly", 15], ["Monthly", 30]] | ||
11 | end | 11 | end |
12 | 12 | ||
13 | - def self.create_license_options | 13 | + def self.periodicity_option(periodicity) |
14 | + periodicity_options.select {|x| x.last == periodicity}.first.first | ||
15 | + end | ||
16 | + | ||
17 | + def self.license_options | ||
14 | options = YAML.load_file("#{RAILS_ROOT}/plugins/mezuro/licenses.yml") | 18 | options = YAML.load_file("#{RAILS_ROOT}/plugins/mezuro/licenses.yml") |
15 | options = options.split(";") | 19 | options = options.split(";") |
16 | - formated_options = [] | ||
17 | - options.each { |option| formated_options << [option, option] } | ||
18 | - formated_options | 20 | + options |
19 | end | 21 | end |
20 | 22 | ||
21 | def self.generate_chart(score_history) | 23 | def self.generate_chart(score_history) |
22 | values = [] | 24 | values = [] |
23 | labels = [] | 25 | labels = [] |
24 | score_history.each do |score_data| | 26 | score_history.each do |score_data| |
25 | - values << score_data.first | ||
26 | - labels << score_data.last | 27 | + values << score_data.result |
28 | + labels << score_data.date | ||
27 | end | 29 | end |
28 | labels = discretize_array labels | 30 | labels = discretize_array labels |
29 | Gchart.line( | 31 | Gchart.line( |
@@ -39,20 +41,22 @@ class MezuroPlugin::Helpers::ContentViewerHelper | @@ -39,20 +41,22 @@ class MezuroPlugin::Helpers::ContentViewerHelper | ||
39 | ) | 41 | ) |
40 | end | 42 | end |
41 | 43 | ||
42 | - def self.get_periodicity_option(index) | ||
43 | - options = [["Not Periodically", 0], ["1 day", 1], ["2 days", 2], ["Weekly", 7], ["Biweeky", 15], ["Monthly", 30]] | ||
44 | - selected_option = options.find { |option| option.last == index.to_i } | ||
45 | - selected_option.first | 44 | + def self.format_name(metric_configuration_snapshot) |
45 | + metric_configuration_snapshot.metric.name.delete("() ") | ||
46 | + end | ||
47 | + | ||
48 | + def self.format_time(miliseconds) | ||
49 | + seconds = miliseconds/1000 | ||
50 | + MezuroPluginModuleResultController.helpers.distance_of_time_in_words(0, seconds, include_seconds = true) | ||
46 | end | 51 | end |
47 | 52 | ||
48 | - def self.format_name(metric_result) | ||
49 | - metric_result.metric.name.delete("() ") | 53 | + def self.aggregation_options |
54 | + [["Average","AVERAGE"], ["Median", "MEDIAN"], ["Maximum", "MAXIMUM"], ["Minimum", "MINIMUM"], | ||
55 | + ["Count", "COUNT"], ["Standard Deviation", "STANDARD_DEVIATION"]] | ||
50 | end | 56 | end |
51 | 57 | ||
52 | - def self.get_license_option(selected) | ||
53 | - options = YAML.load_file("#{RAILS_ROOT}/plugins/mezuro/licenses.yml") | ||
54 | - options.split(";") | ||
55 | - selected_option = options.find { |license| license == selected } | 58 | + def self.scope_options |
59 | + [["Software", "SOFTWARE"], ["Package", "PACKAGE"], ["Class", "CLASS"], ["Method", "METHOD"]] | ||
56 | end | 60 | end |
57 | 61 | ||
58 | private | 62 | private |
plugins/mezuro/lib/mezuro_plugin/helpers/module_result_helper.rb
0 → 100644
plugins/mezuro/lib/mezuro_plugin/project_content.rb
1 | class MezuroPlugin::ProjectContent < Article | 1 | class MezuroPlugin::ProjectContent < Article |
2 | include ActionView::Helpers::TagHelper | 2 | include ActionView::Helpers::TagHelper |
3 | 3 | ||
4 | - settings_items :project_license, :description, :repository_type, :repository_url, :configuration_name, :periodicity_in_days | 4 | + settings_items :project_id |
5 | 5 | ||
6 | - validate_on_create :validate_kalibro_project_name | ||
7 | - validate_on_create :validate_repository_url | 6 | + before_save :send_project_to_service |
7 | + after_destroy :destroy_project_from_service | ||
8 | 8 | ||
9 | def self.short_description | 9 | def self.short_description |
10 | 'Mezuro project' | 10 | 'Mezuro project' |
@@ -22,90 +22,70 @@ class MezuroPlugin::ProjectContent < Article | @@ -22,90 +22,70 @@ class MezuroPlugin::ProjectContent < Article | ||
22 | 22 | ||
23 | def project | 23 | def project |
24 | begin | 24 | begin |
25 | - @project ||= Kalibro::Project.find_by_name(name) | 25 | + @project ||= Kalibro::Project.find(project_id) |
26 | rescue Exception => error | 26 | rescue Exception => error |
27 | errors.add_to_base(error.message) | 27 | errors.add_to_base(error.message) |
28 | end | 28 | end |
29 | @project | 29 | @project |
30 | end | 30 | end |
31 | 31 | ||
32 | - def project_result | ||
33 | - begin | ||
34 | - @project_result ||= Kalibro::ProjectResult.last_result(name) | ||
35 | - rescue Exception => error | ||
36 | - errors.add_to_base(error.message) | ||
37 | - end | ||
38 | - @project_result | ||
39 | - end | ||
40 | - | ||
41 | - def project_result_with_date(date) | 32 | + def repositories |
42 | begin | 33 | begin |
43 | - @project_result ||= Kalibro::ProjectResult.has_results_before?(name, date) ? Kalibro::ProjectResult.last_result_before(name, date) : | ||
44 | -Kalibro::ProjectResult.first_result_after(name, date) | 34 | + @repositories ||= Kalibro::Repository.repositories_of(project_id) |
45 | rescue Exception => error | 35 | rescue Exception => error |
46 | errors.add_to_base(error.message) | 36 | errors.add_to_base(error.message) |
37 | + @repositories = [] | ||
47 | end | 38 | end |
48 | - @project_result | 39 | + @repositories |
49 | end | 40 | end |
50 | 41 | ||
51 | - def module_result(attributes) | ||
52 | - module_name = attributes[:module_name].nil? ? project.name : attributes[:module_name] | ||
53 | - date = attributes[:date].nil? ? project_result.date : project_result_with_date(attributes[:date]).date | ||
54 | - begin | ||
55 | - @module_result ||= Kalibro::ModuleResult.find_by_project_name_and_module_name_and_date(name, module_name, date) | ||
56 | - rescue Exception => error | ||
57 | - errors.add_to_base(error.message) | ||
58 | - end | ||
59 | - @module_result | 42 | + def description=(value) |
43 | + @description=value | ||
60 | end | 44 | end |
61 | - | ||
62 | - def result_history(module_name) | 45 | + |
46 | + def description | ||
63 | begin | 47 | begin |
64 | - @result_history ||= Kalibro::ModuleResult.all_by_project_name_and_module_name(name, module_name) | ||
65 | - rescue Exception => error | ||
66 | - errors.add_to_base(error.message) | 48 | + @description ||= project.description |
49 | + rescue | ||
50 | + @description = "" | ||
67 | end | 51 | end |
52 | + @description | ||
68 | end | 53 | end |
69 | 54 | ||
70 | - after_save :send_project_to_service | ||
71 | - after_destroy :destroy_project_from_service | 55 | + def repositories=(value) |
56 | + @repositories = value.kind_of?(Array) ? value : [value] | ||
57 | + @repositories = @repositories.map { |element| to_repository(element) } | ||
58 | + end | ||
72 | 59 | ||
73 | private | 60 | private |
74 | - | ||
75 | - def validate_kalibro_project_name | ||
76 | - begin | ||
77 | - existing = Kalibro::Project.all_names | ||
78 | - rescue Exception => error | ||
79 | - errors.add_to_base(error.message) | ||
80 | - existing = [] | ||
81 | - end | ||
82 | - | ||
83 | - if existing.any?{|existing_name| existing_name.casecmp(name)==0} # existing.include?(name) + case insensitive | ||
84 | - errors.add_to_base("Project name already exists in Kalibro") | ||
85 | - end | ||
86 | - end | ||
87 | 61 | ||
88 | - def validate_repository_url | ||
89 | - if(repository_url.nil? || repository_url == "") | ||
90 | - errors.add_to_base("Repository URL is mandatory") | 62 | + def self.to_repository value |
63 | + value.kind_of?(Hash) ? Kalibro::Repository.new(value) : value | ||
64 | + end | ||
65 | + | ||
66 | + def validate_repository_address | ||
67 | + repositories.each do |repository| | ||
68 | + if (!repository.nil?) | ||
69 | + address = repository.address | ||
70 | + if(address.nil? || address == "") | ||
71 | + errors.add_to_base("Repository Address is mandatory") | ||
72 | + end | ||
73 | + else | ||
74 | + errors.add_to_base("Repository is mandatory") | ||
75 | + end | ||
91 | end | 76 | end |
92 | end | 77 | end |
93 | - | 78 | + |
94 | def send_project_to_service | 79 | def send_project_to_service |
95 | created_project = create_kalibro_project | 80 | created_project = create_kalibro_project |
96 | - created_project.process_project(periodicity_in_days) | 81 | + self.project_id = created_project.id |
97 | end | 82 | end |
98 | 83 | ||
99 | def create_kalibro_project | 84 | def create_kalibro_project |
100 | Kalibro::Project.create( | 85 | Kalibro::Project.create( |
101 | :name => name, | 86 | :name => name, |
102 | - :license => project_license, | ||
103 | :description => description, | 87 | :description => description, |
104 | - :repository => { | ||
105 | - :type => repository_type, | ||
106 | - :address => repository_url | ||
107 | - }, | ||
108 | - :configuration_name => configuration_name | 88 | + :id => self.project_id |
109 | ) | 89 | ) |
110 | end | 90 | end |
111 | 91 |
plugins/mezuro/lib/mezuro_plugin/reading_group_content.rb
0 → 100644
@@ -0,0 +1,83 @@ | @@ -0,0 +1,83 @@ | ||
1 | +class MezuroPlugin::ReadingGroupContent < Article | ||
2 | + include ActionView::Helpers::TagHelper | ||
3 | + | ||
4 | + settings_items :reading_group_id | ||
5 | + | ||
6 | + before_save :send_reading_group_to_service | ||
7 | + after_destroy :destroy_reading_group_from_service | ||
8 | + | ||
9 | + def self.short_description | ||
10 | + 'Mezuro reading group' | ||
11 | + end | ||
12 | + | ||
13 | + def self.description | ||
14 | + 'Set of thresholds to interpret metric results' | ||
15 | + end | ||
16 | + | ||
17 | + def to_html(options = {}) | ||
18 | + lambda do | ||
19 | + render :file => 'content_viewer/show_reading_group.rhtml' | ||
20 | + end | ||
21 | + end | ||
22 | + | ||
23 | + def reading_group | ||
24 | + begin | ||
25 | + @reading_group ||= Kalibro::ReadingGroup.find(reading_group_id) | ||
26 | + rescue Exception => error | ||
27 | + errors.add_to_base(error.message) | ||
28 | + end | ||
29 | + @reading_group | ||
30 | + end | ||
31 | + | ||
32 | + def readings | ||
33 | + begin | ||
34 | + @readings ||= Kalibro::Reading.readings_of(reading_group_id) | ||
35 | + rescue Exception => error | ||
36 | + errors.add_to_base(error.message) | ||
37 | + @readings = [] | ||
38 | + end | ||
39 | + @readings | ||
40 | + end | ||
41 | + | ||
42 | + def description=(value) | ||
43 | + @description=value | ||
44 | + end | ||
45 | + | ||
46 | + def description | ||
47 | + begin | ||
48 | + @description ||= reading_group.description | ||
49 | + rescue | ||
50 | + @description = "" | ||
51 | + end | ||
52 | + @description | ||
53 | + end | ||
54 | + | ||
55 | + def readings=(value) | ||
56 | + @readings = value.kind_of?(Array) ? value : [value] | ||
57 | + @readings = @readings.map { |element| to_reading(element) } | ||
58 | + end | ||
59 | + | ||
60 | + private | ||
61 | + | ||
62 | + def self.to_reading value | ||
63 | + value.kind_of?(Hash) ? Kalibro::Reading.new(value) : value | ||
64 | + end | ||
65 | + | ||
66 | + def send_reading_group_to_service | ||
67 | + created_reading_group = create_kalibro_reading_group | ||
68 | + self.reading_group_id = created_reading_group.id | ||
69 | + end | ||
70 | + | ||
71 | + def create_kalibro_reading_group | ||
72 | + Kalibro::ReadingGroup.create( | ||
73 | + :name => name, | ||
74 | + :description => description, | ||
75 | + :id => self.reading_group_id | ||
76 | + ) | ||
77 | + end | ||
78 | + | ||
79 | + def destroy_reading_group_from_service | ||
80 | + reading_group.destroy unless reading_group.nil? | ||
81 | + end | ||
82 | + | ||
83 | +end |
plugins/mezuro/public/javascripts/colorPicker/LICENSE
@@ -1,22 +0,0 @@ | @@ -1,22 +0,0 @@ | ||
1 | -Copyright (c) 2012 Lakshan Perera | ||
2 | - | ||
3 | -Permission is hereby granted, free of charge, to any person | ||
4 | -obtaining a copy of this software and associated documentation | ||
5 | -files (the "Software"), to deal in the Software without | ||
6 | -restriction, including without limitation the rights to use, | ||
7 | -copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
8 | -copies of the Software, and to permit persons to whom the | ||
9 | -Software is furnished to do so, subject to the following | ||
10 | -conditions: | ||
11 | - | ||
12 | -The above copyright notice and this permission notice shall be | ||
13 | -included in all copies or substantial portions of the Software. | ||
14 | - | ||
15 | -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
16 | -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES | ||
17 | -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||
18 | -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT | ||
19 | -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | ||
20 | -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
21 | -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
22 | -OTHER DEALINGS IN THE SOFTWARE. |
plugins/mezuro/public/javascripts/colorPicker/jquery.colorPicker.js
@@ -1,328 +0,0 @@ | @@ -1,328 +0,0 @@ | ||
1 | -/** | ||
2 | - * Really Simple Color Picker in jQuery | ||
3 | - * | ||
4 | - * Licensed under the MIT (MIT-LICENSE.txt) licenses. | ||
5 | - * | ||
6 | - * Copyright (c) 2008-2012 | ||
7 | - * Lakshan Perera (www.laktek.com) & Daniel Lacy (daniellacy.com) | ||
8 | - * | ||
9 | - * Permission is hereby granted, free of charge, to any person obtaining a copy | ||
10 | - * of this software and associated documentation files (the "Software"), to | ||
11 | - * deal in the Software without restriction, including without limitation the | ||
12 | - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or | ||
13 | - * sell copies of the Software, and to permit persons to whom the Software is | ||
14 | - * furnished to do so, subject to the following conditions: | ||
15 | - * | ||
16 | - * The above copyright notice and this permission notice shall be included in | ||
17 | - * all copies or substantial portions of the Software. | ||
18 | - * | ||
19 | - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
20 | - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
21 | - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
22 | - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
23 | - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
24 | - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS | ||
25 | - * IN THE SOFTWARE. | ||
26 | - */ | ||
27 | - | ||
28 | -(function ($) { | ||
29 | - /** | ||
30 | - * Create a couple private variables. | ||
31 | - **/ | ||
32 | - var selectorOwner, | ||
33 | - activePalette, | ||
34 | - cItterate = 0, | ||
35 | - templates = { | ||
36 | - control : $('<div class="colorPicker-picker"> </div>'), | ||
37 | - palette : $('<div id="colorPicker_palette" class="colorPicker-palette" />'), | ||
38 | - swatch : $('<div class="colorPicker-swatch"> </div>'), | ||
39 | - hexLabel: $('<label for="colorPicker_hex">Hex</label>'), | ||
40 | - hexField: $('<input type="text" id="colorPicker_hex" />') | ||
41 | - }, | ||
42 | - transparent = "transparent", | ||
43 | - lastColor; | ||
44 | - | ||
45 | - /** | ||
46 | - * Create our colorPicker function | ||
47 | - **/ | ||
48 | - $.fn.colorPicker = function (options) { | ||
49 | - | ||
50 | - return this.each(function () { | ||
51 | - // Setup time. Clone new elements from our templates, set some IDs, make shortcuts, jazzercise. | ||
52 | - var element = $(this), | ||
53 | - opts = $.extend({}, $.fn.colorPicker.defaults, options), | ||
54 | - defaultColor = $.fn.colorPicker.toHex( | ||
55 | - (element.val().length > 0) ? element.val() : opts.pickerDefault | ||
56 | - ), | ||
57 | - newControl = templates.control.clone(), | ||
58 | - newPalette = templates.palette.clone().attr('id', 'colorPicker_palette-' + cItterate), | ||
59 | - newHexLabel = templates.hexLabel.clone(), | ||
60 | - newHexField = templates.hexField.clone(), | ||
61 | - paletteId = newPalette[0].id, | ||
62 | - swatch; | ||
63 | - | ||
64 | - | ||
65 | - /** | ||
66 | - * Build a color palette. | ||
67 | - **/ | ||
68 | - $.each(opts.colors, function (i) { | ||
69 | - swatch = templates.swatch.clone(); | ||
70 | - | ||
71 | - if (opts.colors[i] === transparent) { | ||
72 | - swatch.addClass(transparent).text('X'); | ||
73 | - $.fn.colorPicker.bindPalette(newHexField, swatch, transparent); | ||
74 | - } else { | ||
75 | - swatch.css("background-color", "#" + this); | ||
76 | - $.fn.colorPicker.bindPalette(newHexField, swatch); | ||
77 | - } | ||
78 | - swatch.appendTo(newPalette); | ||
79 | - }); | ||
80 | - | ||
81 | - newHexLabel.attr('for', 'colorPicker_hex-' + cItterate); | ||
82 | - | ||
83 | - newHexField.attr({ | ||
84 | - 'id' : 'colorPicker_hex-' + cItterate, | ||
85 | - 'value' : defaultColor | ||
86 | - }); | ||
87 | - | ||
88 | - newHexField.bind("keydown", function (event) { | ||
89 | - if (event.keyCode === 13) { | ||
90 | - var hexColor = $.fn.colorPicker.toHex($(this).val()); | ||
91 | - $.fn.colorPicker.changeColor(hexColor ? hexColor : element.val()); | ||
92 | - } | ||
93 | - if (event.keyCode === 27) { | ||
94 | - $.fn.colorPicker.hidePalette(); | ||
95 | - } | ||
96 | - }); | ||
97 | - | ||
98 | - newHexField.bind("keyup", function (event) { | ||
99 | - var hexColor = $.fn.colorPicker.toHex($(event.target).val()); | ||
100 | - $.fn.colorPicker.previewColor(hexColor ? hexColor : element.val()); | ||
101 | - }); | ||
102 | - | ||
103 | - $('<div class="colorPicker_hexWrap" />').append(newHexLabel).appendTo(newPalette); | ||
104 | - | ||
105 | - newPalette.find('.colorPicker_hexWrap').append(newHexField); | ||
106 | - | ||
107 | - $("body").append(newPalette); | ||
108 | - | ||
109 | - newPalette.hide(); | ||
110 | - | ||
111 | - | ||
112 | - /** | ||
113 | - * Build replacement interface for original color input. | ||
114 | - **/ | ||
115 | - newControl.css("background-color", defaultColor); | ||
116 | - | ||
117 | - newControl.bind("click", function () { | ||
118 | - $.fn.colorPicker.togglePalette($('#' + paletteId), $(this)); | ||
119 | - }); | ||
120 | - | ||
121 | - if( options && options.onColorChange ) { | ||
122 | - newControl.data('onColorChange', options.onColorChange); | ||
123 | - } else { | ||
124 | - newControl.data('onColorChange', function() {} ); | ||
125 | - } | ||
126 | - element.after(newControl); | ||
127 | - | ||
128 | - element.bind("change", function () { | ||
129 | - element.next(".colorPicker-picker").css( | ||
130 | - "background-color", $.fn.colorPicker.toHex($(this).val()) | ||
131 | - ); | ||
132 | - }); | ||
133 | - | ||
134 | - // Hide the original input. | ||
135 | - element.val(defaultColor).hide(); | ||
136 | - | ||
137 | - cItterate++; | ||
138 | - }); | ||
139 | - }; | ||
140 | - | ||
141 | - /** | ||
142 | - * Extend colorPicker with... all our functionality. | ||
143 | - **/ | ||
144 | - $.extend(true, $.fn.colorPicker, { | ||
145 | - /** | ||
146 | - * Return a Hex color, convert an RGB value and return Hex, or return false. | ||
147 | - * | ||
148 | - * Inspired by http://code.google.com/p/jquery-color-utils | ||
149 | - **/ | ||
150 | - toHex : function (color) { | ||
151 | - // If we have a standard or shorthand Hex color, return that value. | ||
152 | - if (color.match(/[0-9A-F]{6}|[0-9A-F]{3}$/i)) { | ||
153 | - return (color.charAt(0) === "#") ? color : ("#" + color); | ||
154 | - | ||
155 | - // Alternatively, check for RGB color, then convert and return it as Hex. | ||
156 | - } else if (color.match(/^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/)) { | ||
157 | - var c = ([parseInt(RegExp.$1, 10), parseInt(RegExp.$2, 10), parseInt(RegExp.$3, 10)]), | ||
158 | - pad = function (str) { | ||
159 | - if (str.length < 2) { | ||
160 | - for (var i = 0, len = 2 - str.length; i < len; i++) { | ||
161 | - str = '0' + str; | ||
162 | - } | ||
163 | - } | ||
164 | - | ||
165 | - return str; | ||
166 | - }; | ||
167 | - | ||
168 | - if (c.length === 3) { | ||
169 | - var r = pad(c[0].toString(16)), | ||
170 | - g = pad(c[1].toString(16)), | ||
171 | - b = pad(c[2].toString(16)); | ||
172 | - | ||
173 | - return '#' + r + g + b; | ||
174 | - } | ||
175 | - | ||
176 | - // Otherwise we wont do anything. | ||
177 | - } else { | ||
178 | - return false; | ||
179 | - | ||
180 | - } | ||
181 | - }, | ||
182 | - | ||
183 | - /** | ||
184 | - * Check whether user clicked on the selector or owner. | ||
185 | - **/ | ||
186 | - checkMouse : function (event, paletteId) { | ||
187 | - var selector = activePalette, | ||
188 | - selectorParent = $(event.target).parents("#" + selector.attr('id')).length; | ||
189 | - | ||
190 | - if (event.target === $(selector)[0] || event.target === selectorOwner[0] || selectorParent > 0) { | ||
191 | - return; | ||
192 | - } | ||
193 | - | ||
194 | - $.fn.colorPicker.hidePalette(); | ||
195 | - }, | ||
196 | - | ||
197 | - /** | ||
198 | - * Hide the color palette modal. | ||
199 | - **/ | ||
200 | - hidePalette : function () { | ||
201 | - $(document).unbind("mousedown", $.fn.colorPicker.checkMouse); | ||
202 | - | ||
203 | - $('.colorPicker-palette').hide(); | ||
204 | - }, | ||
205 | - | ||
206 | - /** | ||
207 | - * Show the color palette modal. | ||
208 | - **/ | ||
209 | - showPalette : function (palette) { | ||
210 | - var hexColor = selectorOwner.prev("input").val(); | ||
211 | - | ||
212 | - palette.css({ | ||
213 | - top: selectorOwner.offset().top + (selectorOwner.outerHeight()), | ||
214 | - left: selectorOwner.offset().left | ||
215 | - }); | ||
216 | - | ||
217 | - $("#color_value").val(hexColor); | ||
218 | - | ||
219 | - palette.show(); | ||
220 | - | ||
221 | - $(document).bind("mousedown", $.fn.colorPicker.checkMouse); | ||
222 | - }, | ||
223 | - | ||
224 | - /** | ||
225 | - * Toggle visibility of the colorPicker palette. | ||
226 | - **/ | ||
227 | - togglePalette : function (palette, origin) { | ||
228 | - // selectorOwner is the clicked .colorPicker-picker. | ||
229 | - if (origin) { | ||
230 | - selectorOwner = origin; | ||
231 | - } | ||
232 | - | ||
233 | - activePalette = palette; | ||
234 | - | ||
235 | - if (activePalette.is(':visible')) { | ||
236 | - $.fn.colorPicker.hidePalette(); | ||
237 | - | ||
238 | - } else { | ||
239 | - $.fn.colorPicker.showPalette(palette); | ||
240 | - | ||
241 | - } | ||
242 | - }, | ||
243 | - | ||
244 | - /** | ||
245 | - * Update the input with a newly selected color. | ||
246 | - **/ | ||
247 | - changeColor : function (value) { | ||
248 | - selectorOwner.css("background-color", value); | ||
249 | - selectorOwner.prev("input").val(value).change(); | ||
250 | - | ||
251 | - $.fn.colorPicker.hidePalette(); | ||
252 | - | ||
253 | - selectorOwner.data('onColorChange').call(selectorOwner, $(selectorOwner).prev("input").attr("id"), value); | ||
254 | - }, | ||
255 | - | ||
256 | - | ||
257 | - /** | ||
258 | - * Preview the input with a newly selected color. | ||
259 | - **/ | ||
260 | - previewColor : function (value) { | ||
261 | - selectorOwner.css("background-color", value); | ||
262 | - }, | ||
263 | - | ||
264 | - /** | ||
265 | - * Bind events to the color palette swatches. | ||
266 | - */ | ||
267 | - bindPalette : function (paletteInput, element, color) { | ||
268 | - color = color ? color : $.fn.colorPicker.toHex(element.css("background-color")); | ||
269 | - | ||
270 | - element.bind({ | ||
271 | - click : function (ev) { | ||
272 | - lastColor = color; | ||
273 | - | ||
274 | - $.fn.colorPicker.changeColor(color); | ||
275 | - }, | ||
276 | - mouseover : function (ev) { | ||
277 | - lastColor = paletteInput.val(); | ||
278 | - | ||
279 | - $(this).css("border-color", "#598FEF"); | ||
280 | - | ||
281 | - paletteInput.val(color); | ||
282 | - | ||
283 | - $.fn.colorPicker.previewColor(color); | ||
284 | - }, | ||
285 | - mouseout : function (ev) { | ||
286 | - $(this).css("border-color", "#000"); | ||
287 | - | ||
288 | - paletteInput.val(selectorOwner.css("background-color")); | ||
289 | - | ||
290 | - paletteInput.val(lastColor); | ||
291 | - | ||
292 | - $.fn.colorPicker.previewColor(lastColor); | ||
293 | - } | ||
294 | - }); | ||
295 | - } | ||
296 | - }); | ||
297 | - | ||
298 | - /** | ||
299 | - * Default colorPicker options. | ||
300 | - * | ||
301 | - * These are publibly available for global modification using a setting such as: | ||
302 | - * | ||
303 | - * $.fn.colorPicker.defaults.colors = ['151337', '111111'] | ||
304 | - * | ||
305 | - * They can also be applied on a per-bound element basis like so: | ||
306 | - * | ||
307 | - * $('#element1').colorPicker({pickerDefault: 'efefef', transparency: true}); | ||
308 | - * $('#element2').colorPicker({pickerDefault: '333333', colors: ['333333', '111111']}); | ||
309 | - * | ||
310 | - **/ | ||
311 | - $.fn.colorPicker.defaults = { | ||
312 | - // colorPicker default selected color. | ||
313 | - pickerDefault : "FFFFFF", | ||
314 | - | ||
315 | - // Default color set. | ||
316 | - colors : [ | ||
317 | - '000000', '993300', '333300', '000080', '333399', '333333', '800000', 'FF6600', | ||
318 | - '808000', '008000', '008080', '0000FF', '666699', '808080', 'FF0000', 'FF9900', | ||
319 | - '99CC00', '339966', '33CCCC', '3366FF', '800080', '999999', 'FF00FF', 'FFCC00', | ||
320 | - 'FFFF00', '00FF00', '00FFFF', '00CCFF', '993366', 'C0C0C0', 'FF99CC', 'FFCC99', | ||
321 | - 'FFFF99', 'CCFFFF', '99CCFF', 'FFFFFF' | ||
322 | - ], | ||
323 | - | ||
324 | - // If we want to simply add more colors to the default set, use addColors. | ||
325 | - addColors : [] | ||
326 | - }; | ||
327 | - | ||
328 | -})(jQuery); |
plugins/mezuro/public/javascripts/colorPicker/jquery.colorPicker.min.js
@@ -1,26 +0,0 @@ | @@ -1,26 +0,0 @@ | ||
1 | -/** | ||
2 | - * Really Simple Color Picker in jQuery | ||
3 | - * | ||
4 | - * Licensed under the MIT (MIT-LICENSE.txt) licenses. | ||
5 | - * | ||
6 | - * Copyright (c) 2008-2012 | ||
7 | - * Lakshan Perera (www.laktek.com) & Daniel Lacy (daniellacy.com) | ||
8 | - * | ||
9 | - * Permission is hereby granted, free of charge, to any person obtaining a copy | ||
10 | - * of this software and associated documentation files (the "Software"), to | ||
11 | - * deal in the Software without restriction, including without limitation the | ||
12 | - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or | ||
13 | - * sell copies of the Software, and to permit persons to whom the Software is | ||
14 | - * furnished to do so, subject to the following conditions: | ||
15 | - * | ||
16 | - * The above copyright notice and this permission notice shall be included in | ||
17 | - * all copies or substantial portions of the Software. | ||
18 | - * | ||
19 | - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
20 | - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
21 | - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
22 | - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
23 | - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||
24 | - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS | ||
25 | - * IN THE SOFTWARE. | ||
26 | - */(function(a){var b,c,d=0,e={control:a('<div class="colorPicker-picker"> </div>'),palette:a('<div id="colorPicker_palette" class="colorPicker-palette" />'),swatch:a('<div class="colorPicker-swatch"> </div>'),hexLabel:a('<label for="colorPicker_hex">Hex</label>'),hexField:a('<input type="text" id="colorPicker_hex" />')},f="transparent",g;a.fn.colorPicker=function(b){return this.each(function(){var c=a(this),g=a.extend({},a.fn.colorPicker.defaults,b),h=a.fn.colorPicker.toHex(c.val().length>0?c.val():g.pickerDefault),i=e.control.clone(),j=e.palette.clone().attr("id","colorPicker_palette-"+d),k=e.hexLabel.clone(),l=e.hexField.clone(),m=j[0].id,n;a.each(g.colors,function(b){n=e.swatch.clone(),g.colors[b]===f?(n.addClass(f).text("X"),a.fn.colorPicker.bindPalette(l,n,f)):(n.css("background-color","#"+this),a.fn.colorPicker.bindPalette(l,n)),n.appendTo(j)}),k.attr("for","colorPicker_hex-"+d),l.attr({id:"colorPicker_hex-"+d,value:h}),l.bind("keydown",function(b){if(b.keyCode===13){var d=a.fn.colorPicker.toHex(a(this).val());a.fn.colorPicker.changeColor(d?d:c.val())}b.keyCode===27&&a.fn.colorPicker.hidePalette()}),l.bind("keyup",function(b){var d=a.fn.colorPicker.toHex(a(b.target).val());a.fn.colorPicker.previewColor(d?d:c.val())}),a('<div class="colorPicker_hexWrap" />').append(k).appendTo(j),j.find(".colorPicker_hexWrap").append(l),a("body").append(j),j.hide(),i.css("background-color",h),i.bind("click",function(){a.fn.colorPicker.togglePalette(a("#"+m),a(this))}),b&&b.onColorChange?i.data("onColorChange",b.onColorChange):i.data("onColorChange",function(){}),c.after(i),c.bind("change",function(){c.next(".colorPicker-picker").css("background-color",a.fn.colorPicker.toHex(a(this).val()))}),c.val(h).hide(),d++})},a.extend(!0,a.fn.colorPicker,{toHex:function(a){if(a.match(/[0-9A-F]{6}|[0-9A-F]{3}$/i))return a.charAt(0)==="#"?a:"#"+a;if(!a.match(/^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/))return!1;var b=[parseInt(RegExp.$1,10),parseInt(RegExp.$2,10),parseInt(RegExp.$3,10)],c=function(a){if(a.length<2)for(var b=0,c=2-a.length;b<c;b++)a="0"+a;return a};if(b.length===3){var d=c(b[0].toString(16)),e=c(b[1].toString(16)),f=c(b[2].toString(16));return"#"+d+e+f}},checkMouse:function(d,e){var f=c,g=a(d.target).parents("#"+f.attr("id")).length;if(d.target===a(f)[0]||d.target===b[0]||g>0)return;a.fn.colorPicker.hidePalette()},hidePalette:function(){a(document).unbind("mousedown",a.fn.colorPicker.checkMouse),a(".colorPicker-palette").hide()},showPalette:function(c){var d=b.prev("input").val();c.css({top:b.offset().top+b.outerHeight(),left:b.offset().left}),a("#color_value").val(d),c.show(),a(document).bind("mousedown",a.fn.colorPicker.checkMouse)},togglePalette:function(d,e){e&&(b=e),c=d,c.is(":visible")?a.fn.colorPicker.hidePalette():a.fn.colorPicker.showPalette(d)},changeColor:function(c){b.css("background-color",c),b.prev("input").val(c).change(),a.fn.colorPicker.hidePalette(),b.data("onColorChange").call(b,a(b).prev("input").attr("id"),c)},previewColor:function(a){b.css("background-color",a)},bindPalette:function(c,d,e){e=e?e:a.fn.colorPicker.toHex(d.css("background-color")),d.bind({click:function(b){g=e,a.fn.colorPicker.changeColor(e)},mouseover:function(b){g=c.val(),a(this).css("border-color","#598FEF"),c.val(e),a.fn.colorPicker.previewColor(e)},mouseout:function(d){a(this).css("border-color","#000"),c.val(b.css("background-color")),c.val(g),a.fn.colorPicker.previewColor(g)}})}}),a.fn.colorPicker.defaults={pickerDefault:"FFFFFF",colors:["000000","993300","333300","000080","333399","333333","800000","FF6600","808000","008000","008080","0000FF","666699","808080","FF0000","FF9900","99CC00","339966","33CCCC","3366FF","800080","999999","FF00FF","FFCC00","FFFF00","00FF00","00FFFF","00CCFF","993366","C0C0C0","FF99CC","FFCC99","FFFF99","CCFFFF","99CCFF","FFFFFF"],addColors:[]}})(jQuery) | ||
27 | \ No newline at end of file | 0 | \ No newline at end of file |
@@ -0,0 +1,133 @@ | @@ -0,0 +1,133 @@ | ||
1 | +var processingTree = false; | ||
2 | +var metricName; | ||
3 | +jQuery(function (){ | ||
4 | + jQuery('.source-tree-link').live("click", reloadModule); | ||
5 | + jQuery('[show-metric-history]').live("click", display_metric_history); | ||
6 | + jQuery('[show-grade-history]').live("click", display_grade_history); | ||
7 | + jQuery('#project_date_submit').live("click", reloadProcessingWithDate); | ||
8 | + showLoadingProcess(true); | ||
9 | + showProcessing(); | ||
10 | +}); | ||
11 | + | ||
12 | +function showProcessing() { | ||
13 | + repository_id = processingData('repository-id'); | ||
14 | + callAction('processing', 'state', {repository_id: repository_id}, showProcessingFor); | ||
15 | +} | ||
16 | + | ||
17 | +function display_metric_history() { | ||
18 | + var module_result_id = jQuery(this).attr('data-module-id'); | ||
19 | + var formatted_name = jQuery(this).attr('show-metric-history'); | ||
20 | + var metric_name = jQuery(this).attr('data-metric-name'); | ||
21 | + toggle_mezuro("." + formatted_name); | ||
22 | + metricName = formatted_name; | ||
23 | + callAction('module_result', 'metric_result_history', {metric_name: metric_name, module_result_id: module_result_id}, show_metrics); | ||
24 | + return false; | ||
25 | +} | ||
26 | + | ||
27 | +function display_grade_history() { | ||
28 | + var module_result_id = jQuery(this).attr('data-module-id'); | ||
29 | + toggle_mezuro("#historical-grade"); | ||
30 | + callAction('module_result', 'module_result_history', {module_result_id: module_result_id}, show_grades); | ||
31 | + return false; | ||
32 | +} | ||
33 | + | ||
34 | +function show_metrics(content) { | ||
35 | + jQuery('#historical-' + metricName).html(content); | ||
36 | +} | ||
37 | + | ||
38 | +function show_grades(content) { | ||
39 | + jQuery('#historical-grade').html(content); | ||
40 | +} | ||
41 | + | ||
42 | +function toggle_mezuro(element){ | ||
43 | + jQuery(element).toggle(); | ||
44 | + return false; | ||
45 | +} | ||
46 | + | ||
47 | +function reloadModule(){ | ||
48 | + var module_result_id = jQuery(this).attr('data-module-id'); | ||
49 | + showLoadingProcess(false); | ||
50 | + processingTree = true; | ||
51 | + callAction('module_result', 'module_result', {module_result_id: module_result_id}, showModuleResult); | ||
52 | + return false; | ||
53 | +} | ||
54 | + | ||
55 | +function reloadProcessingWithDate(date){ | ||
56 | + reloadProcessing(date + "T00:00:00+00:00"); | ||
57 | + return false; | ||
58 | +} | ||
59 | + | ||
60 | +function reloadProcessing(date){ | ||
61 | + repository_id = processingData('repository-id'); | ||
62 | + showLoadingProcess(true); | ||
63 | + | ||
64 | + callAction('processing', 'processing', {date: date, repository_id: repository_id}, function(content){ | ||
65 | + showReadyProcessing(content); | ||
66 | + var module_result_id = jQuery("#module_result_root_id").attr('module_result_root_id'); | ||
67 | + callAction('module_result', 'module_result', {module_result_id: module_result_id}, showModuleResult); | ||
68 | + } | ||
69 | + ); | ||
70 | +} | ||
71 | + | ||
72 | +function showProcessingFor(state){ | ||
73 | + repository_id = processingData('repository-id'); | ||
74 | + if (state == 'ERROR') { | ||
75 | + jQuery('#processing-state').html('<div style="color:Red">ERROR</div>'); | ||
76 | + callAction('processing', 'processing', {repository_id: repository_id}, showReadyProcessing); | ||
77 | + showModuleResult(''); | ||
78 | + } | ||
79 | + else if (state == 'READY') { | ||
80 | + jQuery('#msg-time').html(''); | ||
81 | + jQuery('#processing-state').html('<div style="color:Green">READY</div>'); | ||
82 | + callAction('processing', 'processing', {repository_id: repository_id}, function(content){ | ||
83 | + showReadyProcessing(content); | ||
84 | + var module_result_id = jQuery("#module_result_root_id").attr('module_result_root_id'); | ||
85 | + callAction('module_result', 'module_result', {module_result_id: module_result_id}, showModuleResult); | ||
86 | + } | ||
87 | + ); | ||
88 | + } | ||
89 | + else if (state.endsWith("ING")) { | ||
90 | + jQuery('#processing-state').html('<div style="color:DarkGoldenRod">'+ state +'</div>'); | ||
91 | + jQuery('#msg-time').html("The project analysis may take long. <br/> You'll receive an e-mail when it's ready!"); | ||
92 | + showProcessingAfter(20); | ||
93 | + } | ||
94 | +} | ||
95 | + | ||
96 | +function showProcessingAfter(seconds){ | ||
97 | + if (seconds > 0){ | ||
98 | + setTimeout(function() { showProcessingAfter(seconds - 10);}, 10000); | ||
99 | + } else { | ||
100 | + showProcessing(); | ||
101 | + } | ||
102 | +} | ||
103 | + | ||
104 | +function showReadyProcessing(content) { | ||
105 | + jQuery('#processing').html(content); | ||
106 | +} | ||
107 | + | ||
108 | +function showModuleResult(content){ | ||
109 | + jQuery('#module-result').html(content); | ||
110 | +} | ||
111 | + | ||
112 | +function callAction(controller, action, params, callback){ | ||
113 | + var profile = processingData('profile'); | ||
114 | + var content = processingData('content'); | ||
115 | + var endpoint = '/profile/' + profile + '/plugin/mezuro/' + controller + '/' + action + '/' + content; | ||
116 | + jQuery.get(endpoint, params, callback); | ||
117 | +} | ||
118 | + | ||
119 | +function processingData(data){ | ||
120 | + return jQuery('#processing').attr('data-' + data); | ||
121 | +} | ||
122 | + | ||
123 | +function showLoadingProcess(firstLoad){ | ||
124 | + if(firstLoad) | ||
125 | + showReadyProcessing("<img src='/images/loading-small.gif'/>"); | ||
126 | + showModuleResult("<img src='/images/loading-small.gif'/>"); | ||
127 | +} | ||
128 | + | ||
129 | +function sourceNodeToggle(id){ | ||
130 | + var suffixes = ['_hidden', '_plus', '_minus']; | ||
131 | + for (var i in suffixes) | ||
132 | + jQuery('#' + id + suffixes[i]).toggle(); | ||
133 | +} |
plugins/mezuro/public/javascripts/validations.js
@@ -40,18 +40,15 @@ function IsNotInfinite(value){ | @@ -40,18 +40,15 @@ function IsNotInfinite(value){ | ||
40 | } | 40 | } |
41 | 41 | ||
42 | function validate_new_range_configuration(event){ | 42 | function validate_new_range_configuration(event){ |
43 | - var label = jQuery("#range_label").val(); | ||
44 | var beginning = jQuery("#range_beginning").val(); | 43 | var beginning = jQuery("#range_beginning").val(); |
45 | var end = jQuery("#range_end").val(); | 44 | var end = jQuery("#range_end").val(); |
46 | - var color = jQuery("#range_color").val(); | ||
47 | - var grade = jQuery("#range_grade").val(); | ||
48 | 45 | ||
49 | - if (is_null(label) || is_null(beginning) || is_null(end) || is_null(color) || is_null(grade)) | 46 | + if (is_null(beginning) || is_null(end)) |
50 | { | 47 | { |
51 | alert("Please fill all fields marked with (*)."); | 48 | alert("Please fill all fields marked with (*)."); |
52 | return false; | 49 | return false; |
53 | } | 50 | } |
54 | - if ( (IsNotNumeric(beginning) && IsNotInfinite(beginning)) || (IsNotNumeric(end) && IsNotInfinite(end)) || IsNotNumeric(grade)) | 51 | + if ( (IsNotNumeric(beginning) && IsNotInfinite(beginning)) || (IsNotNumeric(end) && IsNotInfinite(end))) |
55 | { | 52 | { |
56 | alert("Beginning, End and Grade must be numeric values."); | 53 | alert("Beginning, End and Grade must be numeric values."); |
57 | return false; | 54 | return false; |
plugins/mezuro/test/fixtures/base_tool_fixtures.rb
1 | -require File.dirname(__FILE__) + '/native_metric_fixtures' | 1 | +require File.dirname(__FILE__) + '/metric_fixtures' |
2 | 2 | ||
3 | class BaseToolFixtures | 3 | class BaseToolFixtures |
4 | 4 | ||
@@ -6,10 +6,14 @@ class BaseToolFixtures | @@ -6,10 +6,14 @@ class BaseToolFixtures | ||
6 | Kalibro::BaseTool.new base_tool_hash | 6 | Kalibro::BaseTool.new base_tool_hash |
7 | end | 7 | end |
8 | 8 | ||
9 | - def self.base_tool_hash | ||
10 | - {:name => 'Analizo', :supported_metric => [ | ||
11 | - NativeMetricFixtures.total_cof_hash, | ||
12 | - NativeMetricFixtures.amloc_hash]} | 9 | + def self.base_tool_hash |
10 | + { | ||
11 | + :name => 'Analizo', | ||
12 | + :supported_metric => [ | ||
13 | + MetricFixtures.total_cof_hash, | ||
14 | + MetricFixtures.amloc_hash], | ||
15 | + :collector_class_name => "org.analizo.AnalizoMetricCollector" | ||
16 | + } | ||
13 | end | 17 | end |
14 | 18 | ||
15 | end | 19 | end |
plugins/mezuro/test/fixtures/compound_metric_fixtures.rb
@@ -1,11 +0,0 @@ | @@ -1,11 +0,0 @@ | ||
1 | -class CompoundMetricFixtures | ||
2 | - | ||
3 | - def self.compound_metric | ||
4 | - Kalibro::CompoundMetric.new compound_metric_hash | ||
5 | - end | ||
6 | - | ||
7 | - def self.compound_metric_hash | ||
8 | - {:name => 'Structural Complexity', :scope => 'CLASS', :script => 'return 42;', :description => 'Calculate the Structural Complexity of the Code'} | ||
9 | - end | ||
10 | - | ||
11 | -end |
plugins/mezuro/test/fixtures/compound_metric_with_error_fixtures.rb
@@ -1,20 +0,0 @@ | @@ -1,20 +0,0 @@ | ||
1 | -require File.dirname(__FILE__) + '/error_fixtures' | ||
2 | -require File.dirname(__FILE__) + '/compound_metric_fixtures' | ||
3 | - | ||
4 | -class CompoundMetricWithErrorFixtures | ||
5 | - | ||
6 | - def self.compound_metric_with_error | ||
7 | - Kalibro::CompoundMetricWithError.new compound_metric_with_error_hash | ||
8 | - end | ||
9 | - | ||
10 | - def self.compound_metric_with_error_hash | ||
11 | - {:metric => CompoundMetricFixtures.compound_metric_hash, :error => ErrorFixtures.error_hash, | ||
12 | - :attributes! => {:metric => { | ||
13 | - 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', | ||
14 | - 'xsi:type' => 'kalibro:compoundMetricXml' }, | ||
15 | - :error => { | ||
16 | - 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', | ||
17 | - 'xsi:type' => 'kalibro:errorXml' }}} | ||
18 | - end | ||
19 | - | ||
20 | -end |
plugins/mezuro/test/fixtures/configuration_content_fixtures.rb
0 → 100644
@@ -0,0 +1,23 @@ | @@ -0,0 +1,23 @@ | ||
1 | +class ConfigurationContentFixtures | ||
2 | + | ||
3 | + def self.configuration_content | ||
4 | + MezuroPlugin::ConfigurationContent.new configuration_content_hash | ||
5 | + end | ||
6 | + | ||
7 | + def self.created_configuration_content | ||
8 | + MezuroPlugin::ConfigurationContent.new( { | ||
9 | + :name => 'Sample Configuration', | ||
10 | + :description => 'Kalibro configuration for Java projects.', | ||
11 | + :configuration_id => nil | ||
12 | + } ) | ||
13 | + end | ||
14 | + | ||
15 | + def self.configuration_content_hash | ||
16 | + { | ||
17 | + :name => 'Sample Configuration', | ||
18 | + :description => 'Kalibro configuration for Java projects.', | ||
19 | + :configuration_id => "42" | ||
20 | + } | ||
21 | + end | ||
22 | + | ||
23 | +end |
plugins/mezuro/test/fixtures/configuration_fixtures.rb
@@ -6,23 +6,23 @@ class ConfigurationFixtures | @@ -6,23 +6,23 @@ class ConfigurationFixtures | ||
6 | Kalibro::Configuration.new configuration_hash | 6 | Kalibro::Configuration.new configuration_hash |
7 | end | 7 | end |
8 | 8 | ||
9 | + def self.created_configuration | ||
10 | + Kalibro::Configuration.new({ | ||
11 | + :name => 'Created Sample Configuration', | ||
12 | + :description => 'Kalibro configuration for Java projects.' | ||
13 | + }) | ||
14 | + end | ||
15 | + | ||
9 | def self.configuration_hash | 16 | def self.configuration_hash |
10 | { | 17 | { |
18 | + :id => "42", | ||
11 | :name => 'Sample Configuration', | 19 | :name => 'Sample Configuration', |
12 | - :description => 'Kalibro configuration for Java projects.', | ||
13 | - :metric_configuration => [ | ||
14 | - MetricConfigurationFixtures.amloc_metric_configuration_hash, | ||
15 | - MetricConfigurationFixtures.sc_metric_configuration_hash | ||
16 | - ] | 20 | + :description => 'Kalibro configuration for Java projects.' |
17 | } | 21 | } |
18 | end | 22 | end |
19 | 23 | ||
20 | - def self.configuration_content(clone_configuration) | ||
21 | - MezuroPlugin::ConfigurationContent.new({ | ||
22 | - :name => 'Sample Configuration', | ||
23 | - :description => 'Kalibro configuration for Java projects.', | ||
24 | - :configuration_to_clone_name => clone_configuration | ||
25 | - }) | 24 | + def self.all |
25 | + [configuration] | ||
26 | end | 26 | end |
27 | 27 | ||
28 | end | 28 | end |
plugins/mezuro/test/fixtures/date_metric_result_fixtures.rb
0 → 100644
@@ -0,0 +1,33 @@ | @@ -0,0 +1,33 @@ | ||
1 | +require File.dirname(__FILE__) + '/metric_result_fixtures' | ||
2 | + | ||
3 | +class DateMetricResultFixtures | ||
4 | + | ||
5 | + def self.date_metric_result | ||
6 | + Kalibro::DateMetricResult.new date_metric_result_hash | ||
7 | + end | ||
8 | + | ||
9 | + def self.date_metric_result_hash | ||
10 | + { | ||
11 | + :date => '2011-10-20T18:26:43.151+00:00', | ||
12 | + :metric_result => MetricResultFixtures.native_metric_result_hash, | ||
13 | + :attributes! => | ||
14 | + { | ||
15 | + :metric_result => | ||
16 | + { | ||
17 | + "xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance", | ||
18 | + "xsi:type"=>"kalibro:metricResultXml" | ||
19 | + } | ||
20 | + } | ||
21 | + } | ||
22 | + end | ||
23 | + | ||
24 | + def self.score_history | ||
25 | + result = [] | ||
26 | + result << date_metric_result | ||
27 | + newer_date_metric_result = date_metric_result | ||
28 | + newer_date_metric_result.date = '2011-10-25T18:26:43.151+00:00' | ||
29 | + newer_date_metric_result.metric_result.value = 5.0 | ||
30 | + result << newer_date_metric_result | ||
31 | + end | ||
32 | + | ||
33 | +end |
plugins/mezuro/test/fixtures/date_module_result_fixtures.rb
0 → 100644
@@ -0,0 +1,24 @@ | @@ -0,0 +1,24 @@ | ||
1 | +require File.dirname(__FILE__) + '/module_result_fixtures' | ||
2 | + | ||
3 | +class DateModuleResultFixtures | ||
4 | + | ||
5 | + def self.date_module_result | ||
6 | + Kalibro::DateModuleResult.new date_module_result_hash | ||
7 | + end | ||
8 | + | ||
9 | + def self.date_module_result_hash | ||
10 | + { | ||
11 | + :date => '2011-10-20T18:26:43.151+00:00', | ||
12 | + :module_result => ModuleResultFixtures.module_result_hash, | ||
13 | + :attributes! => | ||
14 | + { | ||
15 | + :module_result => | ||
16 | + { | ||
17 | + "xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance", | ||
18 | + "xsi:type"=>"kalibro:moduleResultXml" | ||
19 | + } | ||
20 | + } | ||
21 | + } | ||
22 | + end | ||
23 | + | ||
24 | +end |
plugins/mezuro/test/fixtures/error_fixtures.rb
@@ -1,20 +0,0 @@ | @@ -1,20 +0,0 @@ | ||
1 | -require File.dirname(__FILE__) + '/stack_trace_element_fixtures' | ||
2 | - | ||
3 | -class ErrorFixtures | ||
4 | - | ||
5 | - def self.error | ||
6 | - Kalibro::Error.new error_hash | ||
7 | - end | ||
8 | - | ||
9 | - def self.error_hash | ||
10 | - { | ||
11 | - :error_class => 'java.lang.Exception', | ||
12 | - :message => 'Error message from ErrorTest', | ||
13 | - :stack_trace_element => [ | ||
14 | - StackTraceElementFixtures.stack_trace_element_hash('my method 1', 42), | ||
15 | - StackTraceElementFixtures.stack_trace_element_hash('my method 2', 84) | ||
16 | - ] | ||
17 | - } | ||
18 | - end | ||
19 | - | ||
20 | -end |
plugins/mezuro/test/fixtures/metric_configuration_fixtures.rb
1 | -require File.dirname(__FILE__) + '/compound_metric_fixtures' | ||
2 | -require File.dirname(__FILE__) + '/native_metric_fixtures' | ||
3 | -require File.dirname(__FILE__) + '/range_fixtures' | 1 | +require File.dirname(__FILE__) + '/metric_fixtures' |
4 | 2 | ||
5 | class MetricConfigurationFixtures | 3 | class MetricConfigurationFixtures |
6 | 4 | ||
7 | def self.amloc_metric_configuration | 5 | def self.amloc_metric_configuration |
8 | amloc = Kalibro::MetricConfiguration.new amloc_metric_configuration_hash | 6 | amloc = Kalibro::MetricConfiguration.new amloc_metric_configuration_hash |
9 | - amloc.configuration_name = "Sample Configuration" | ||
10 | - amloc | ||
11 | - end | ||
12 | - | ||
13 | - def self.metric_configuration_without_ranges | ||
14 | - amloc = Kalibro::MetricConfiguration.new | ||
15 | - { | ||
16 | - :metric => NativeMetricFixtures.amloc_hash, | ||
17 | - :code => 'amloc', | ||
18 | - :weight => 1.0, | ||
19 | - :aggregation_form => 'AVERAGE' | ||
20 | - } | ||
21 | - amloc.configuration_name = "Sample Configuration" | 7 | + amloc.configuration_id = "13" |
22 | amloc | 8 | amloc |
23 | end | 9 | end |
24 | 10 | ||
25 | def self.sc_metric_configuration | 11 | def self.sc_metric_configuration |
26 | sc = Kalibro::MetricConfiguration.new sc_metric_configuration_hash | 12 | sc = Kalibro::MetricConfiguration.new sc_metric_configuration_hash |
27 | - sc.configuration_name = "Sample Configuration" | 13 | + sc.configuration_id = "13" |
28 | sc | 14 | sc |
29 | end | 15 | end |
16 | + | ||
17 | + def self.created_metric_configuration | ||
18 | + Kalibro::MetricConfiguration.new({ | ||
19 | + :code => 'amloc', | ||
20 | + :metric => MetricFixtures.amloc_hash, | ||
21 | + :base_tool_name => "Analizo", | ||
22 | + :weight => "1.0", | ||
23 | + :aggregation_form => 'AVERAGE', | ||
24 | + :reading_group_id => "31", | ||
25 | + :configuration_id => "13" | ||
26 | + }) | ||
27 | + end | ||
30 | 28 | ||
31 | def self.amloc_metric_configuration_hash | 29 | def self.amloc_metric_configuration_hash |
32 | - {:metric => NativeMetricFixtures.amloc_hash, :code => 'amloc', :weight => 1.0, | 30 | + { |
31 | + :id => "42", | ||
32 | + :code => 'amloc', | ||
33 | + :metric => MetricFixtures.amloc_hash, | ||
34 | + :base_tool_name => "Analizo", | ||
35 | + :weight => "1.0", | ||
33 | :aggregation_form => 'AVERAGE', | 36 | :aggregation_form => 'AVERAGE', |
34 | - :range => [RangeFixtures.range_excellent_hash, RangeFixtures.range_bad_hash], | 37 | + :reading_group_id => "31", |
35 | :attributes! => {:metric => { | 38 | :attributes! => {:metric => { |
36 | 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', | 39 | 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', |
37 | - 'xsi:type' => 'kalibro:nativeMetricXml' }}} | 40 | + 'xsi:type' => 'kalibro:metricXml' }} |
41 | + } | ||
38 | end | 42 | end |
39 | 43 | ||
40 | def self.sc_metric_configuration_hash | 44 | def self.sc_metric_configuration_hash |
41 | - {:metric => CompoundMetricFixtures.compound_metric_hash, :code => 'sc', :weight => 1.0, :aggregation_form => 'AVERAGE', | 45 | + { |
46 | + :id => "42", | ||
47 | + :code => 'sc', | ||
48 | + :metric => MetricFixtures.compound_metric_hash, | ||
49 | + :weight => "1.0", | ||
50 | + :aggregation_form => 'AVERAGE', | ||
51 | + :reading_group_id => "31", | ||
42 | :attributes! => {:metric => { | 52 | :attributes! => {:metric => { |
43 | 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', | 53 | 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', |
44 | - 'xsi:type' => 'kalibro:compoundMetricXml' }}} | 54 | + 'xsi:type' => 'kalibro:metricXml' }} |
55 | + } | ||
45 | end | 56 | end |
46 | 57 | ||
47 | end | 58 | end |
plugins/mezuro/test/fixtures/metric_configuration_snapshot_fixtures.rb
0 → 100644
@@ -0,0 +1,62 @@ | @@ -0,0 +1,62 @@ | ||
1 | +require File.dirname(__FILE__) + '/metric_fixtures' | ||
2 | +require File.dirname(__FILE__) + '/range_snapshot_fixtures' | ||
3 | + | ||
4 | +class MetricConfigurationSnapshotFixtures | ||
5 | + | ||
6 | + def self.metric_configuration_snapshot | ||
7 | + Kalibro::MetricConfigurationSnapshot.new metric_configuration_snapshot_hash | ||
8 | + end | ||
9 | + | ||
10 | + def self.metric_configuration_snapshot_hash | ||
11 | + { | ||
12 | + :code => "code", | ||
13 | + :weight => "1.0", | ||
14 | + :aggregation_form => 'AVERAGE', | ||
15 | + :metric => MetricFixtures.amloc_hash, | ||
16 | + :base_tool_name => "Analizo", | ||
17 | + :range => [RangeSnapshotFixtures.range_snapshot_hash], | ||
18 | + :attributes! => { | ||
19 | + :metric => { | ||
20 | + 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', | ||
21 | + 'xsi:type' => 'kalibro:metricXml' }, | ||
22 | + :range => { | ||
23 | + 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', | ||
24 | + 'xsi:type' => 'kalibro:rangeSnapshotXml' } | ||
25 | + } | ||
26 | + } | ||
27 | + end | ||
28 | + | ||
29 | + def self.metric_configuration_snapshot_with_2_elements | ||
30 | + Kalibro::MetricConfigurationSnapshot.new metric_configuration_snapshot_hash_with_2_elements | ||
31 | + end | ||
32 | + | ||
33 | + def self.metric_configuration_snapshot_hash_with_2_elements | ||
34 | + hash = self.metric_configuration_snapshot_hash | ||
35 | + hash[:range] << RangeSnapshotFixtures.range_snapshot_hash | ||
36 | + hash | ||
37 | + end | ||
38 | + | ||
39 | + def self.compound_metric_configuration_snapshot | ||
40 | + Kalibro::MetricConfigurationSnapshot.new compound_metric_configuration_snapshot_hash | ||
41 | + end | ||
42 | + | ||
43 | + def self.compound_metric_configuration_snapshot_hash | ||
44 | + { | ||
45 | + :code => "code", | ||
46 | + :weight => "1.0", | ||
47 | + :aggregation_form => 'AVERAGE', | ||
48 | + :metric => MetricFixtures.compound_metric, | ||
49 | + :base_tool_name => "Analizo", | ||
50 | + :range => [RangeSnapshotFixtures.range_snapshot_hash], | ||
51 | + :attributes! => { | ||
52 | + :metric => { | ||
53 | + 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', | ||
54 | + 'xsi:type' => 'kalibro:metricXml' }, | ||
55 | + :range => { | ||
56 | + 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', | ||
57 | + 'xsi:type' => 'kalibro:rangeSnapshotXml' } | ||
58 | + } | ||
59 | + } | ||
60 | + end | ||
61 | + | ||
62 | +end |
@@ -0,0 +1,27 @@ | @@ -0,0 +1,27 @@ | ||
1 | +class MetricFixtures | ||
2 | + | ||
3 | + def self.compound_metric | ||
4 | + Kalibro::Metric.new compound_metric_hash | ||
5 | + end | ||
6 | + | ||
7 | + def self.compound_metric_hash | ||
8 | + {:name => 'Structural Complexity', :compound => "true", :scope => 'CLASS', :script => 'return 42;', :description => 'Calculate the Structural Complexity of the Code'} | ||
9 | + end | ||
10 | + | ||
11 | + def self.total_cof | ||
12 | + Kalibro::Metric.new total_cof_hash | ||
13 | + end | ||
14 | + | ||
15 | + def self.total_cof_hash | ||
16 | + {:name => 'Total Coupling Factor', :compound => "false", :scope => 'APPLICATION', :language => ['JAVA']} | ||
17 | + end | ||
18 | + | ||
19 | + def self.amloc | ||
20 | + Kalibro::Metric.new amloc_hash | ||
21 | + end | ||
22 | + | ||
23 | + def self.amloc_hash | ||
24 | + {:name => 'Average Method LOC', :compound => "false", :scope => 'CLASS', :language => ['JAVA']} | ||
25 | + end | ||
26 | + | ||
27 | +end |
plugins/mezuro/test/fixtures/metric_result_fixtures.rb
1 | -require File.dirname(__FILE__) + '/compound_metric_fixtures' | ||
2 | -require File.dirname(__FILE__) + '/native_metric_fixtures' | ||
3 | -require File.dirname(__FILE__) + '/range_fixtures' | 1 | +require File.dirname(__FILE__) + '/metric_configuration_snapshot_fixtures' |
2 | +require File.dirname(__FILE__) + '/throwable_fixtures' | ||
4 | 3 | ||
5 | class MetricResultFixtures | 4 | class MetricResultFixtures |
6 | 5 | ||
@@ -12,32 +11,42 @@ class MetricResultFixtures | @@ -12,32 +11,42 @@ class MetricResultFixtures | ||
12 | Kalibro::MetricResult.new compound_metric_result_hash | 11 | Kalibro::MetricResult.new compound_metric_result_hash |
13 | end | 12 | end |
14 | 13 | ||
14 | + def self.metric_result_with_error_hash | ||
15 | + { | ||
16 | + :id => "41", | ||
17 | + :configuration => MetricConfigurationSnapshotFixtures.metric_configuration_snapshot_hash, | ||
18 | + :error => ThrowableFixtures.throwable_hash | ||
19 | + } | ||
20 | + end | ||
21 | + | ||
15 | def self.native_metric_result_hash | 22 | def self.native_metric_result_hash |
16 | { | 23 | { |
17 | - :metric => NativeMetricFixtures.amloc_hash, | ||
18 | - :value => 0.0, | ||
19 | - :descendent_result => [40.0, 42.0], | ||
20 | - :range => RangeFixtures.range_excellent_hash, | ||
21 | - :attributes! => { | ||
22 | - :metric => { | ||
23 | - 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', | ||
24 | - 'xsi:type' => 'kalibro:nativeMetricXml' }, | ||
25 | - :range => { | ||
26 | - 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', | ||
27 | - 'xsi:type' => 'kalibro:rangeXml' } | 24 | + :id => "42", |
25 | + :configuration => MetricConfigurationSnapshotFixtures.metric_configuration_snapshot_hash, | ||
26 | + :value => "0.0", | ||
27 | + :attributes! => | ||
28 | + { | ||
29 | + :configuration => | ||
30 | + { | ||
31 | + "xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance", | ||
32 | + "xsi:type"=>"kalibro:metricConfigurationSnapshotXml" | ||
33 | + } | ||
28 | } | 34 | } |
29 | } | 35 | } |
30 | end | 36 | end |
31 | 37 | ||
32 | def self.compound_metric_result_hash | 38 | def self.compound_metric_result_hash |
33 | { | 39 | { |
34 | - :metric => CompoundMetricFixtures.compound_metric_hash, | ||
35 | - :value => 1.0, | ||
36 | - :descendent_result => [2.0, 42.0], | ||
37 | - :attributes! => { | ||
38 | - :metric => { | ||
39 | - 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', | ||
40 | - 'xsi:type' => 'kalibro:compoundMetricXml' } | 40 | + :id => "43", |
41 | + :configuration => MetricConfigurationSnapshotFixtures.compound_metric_configuration_snapshot_hash, | ||
42 | + :value => "1.0", | ||
43 | + :attributes! => | ||
44 | + { | ||
45 | + :configuration => | ||
46 | + { | ||
47 | + "xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance", | ||
48 | + "xsi:type"=>"kalibro:metricConfigurationSnapshotXml" | ||
49 | + } | ||
41 | } | 50 | } |
42 | } | 51 | } |
43 | end | 52 | end |
plugins/mezuro/test/fixtures/module_node_fixtures.rb
@@ -1,47 +0,0 @@ | @@ -1,47 +0,0 @@ | ||
1 | -require File.dirname(__FILE__) + '/module_fixtures' | ||
2 | - | ||
3 | -class ModuleNodeFixtures | ||
4 | - | ||
5 | - def self.module_node | ||
6 | - Kalibro::ModuleNode.new module_node_hash | ||
7 | - end | ||
8 | - | ||
9 | - def self.module_node_hash | ||
10 | - { | ||
11 | - :module => ModuleFixtures.module_hash,:attributes! => {:module => { | ||
12 | - 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', | ||
13 | - 'xsi:type' => 'kalibro:moduleXml' }}, | ||
14 | - :child => [{ | ||
15 | - :module => { | ||
16 | - :name => 'org', | ||
17 | - :granularity => 'PACKAGE' | ||
18 | - },:attributes! => {:module => { | ||
19 | - 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', | ||
20 | - 'xsi:type' => 'kalibro:moduleXml' }}, | ||
21 | - :child => [{ | ||
22 | - :module => { | ||
23 | - :name => 'org.Window', | ||
24 | - :granularity => 'CLASS' | ||
25 | - },:attributes! => {:module => { | ||
26 | - 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', | ||
27 | - 'xsi:type' => 'kalibro:moduleXml' }} | ||
28 | - }] | ||
29 | - },{ | ||
30 | - :module => { | ||
31 | - :name => 'Dialog', | ||
32 | - :granularity => 'CLASS' | ||
33 | - },:attributes! => {:module => { | ||
34 | - 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', | ||
35 | - 'xsi:type' => 'kalibro:moduleXml' }} | ||
36 | - },{ | ||
37 | - :module => { | ||
38 | - :name => 'main', | ||
39 | - :granularity => 'CLASS' | ||
40 | - },:attributes! => {:module => { | ||
41 | - 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', | ||
42 | - 'xsi:type' => 'kalibro:moduleXml' }} | ||
43 | - }] | ||
44 | - } | ||
45 | - end | ||
46 | - | ||
47 | -end |
plugins/mezuro/test/fixtures/module_result_fixtures.rb
1 | require File.dirname(__FILE__) + '/module_fixtures' | 1 | require File.dirname(__FILE__) + '/module_fixtures' |
2 | -require File.dirname(__FILE__) + '/metric_result_fixtures' | ||
3 | -require File.dirname(__FILE__) + '/compound_metric_with_error_fixtures' | ||
4 | 2 | ||
5 | class ModuleResultFixtures | 3 | class ModuleResultFixtures |
6 | 4 | ||
@@ -10,19 +8,37 @@ class ModuleResultFixtures | @@ -10,19 +8,37 @@ class ModuleResultFixtures | ||
10 | 8 | ||
11 | def self.module_result_hash | 9 | def self.module_result_hash |
12 | { | 10 | { |
11 | + :id => "42", | ||
13 | :module => ModuleFixtures.module_hash, | 12 | :module => ModuleFixtures.module_hash, |
14 | - :date => '2011-10-20T18:26:43.151+00:00', | ||
15 | - :grade => 10.0, | ||
16 | - :metric_result => [ | ||
17 | - MetricResultFixtures.native_metric_result_hash, | ||
18 | - MetricResultFixtures.compound_metric_result_hash], | ||
19 | - :compound_metric_with_error => [CompoundMetricWithErrorFixtures.compound_metric_with_error_hash], | ||
20 | - :attributes! => { | ||
21 | - :module => { | ||
22 | - 'xmlns:xsi'=> 'http://www.w3.org/2001/XMLSchema-instance', | ||
23 | - 'xsi:type' => 'kalibro:moduleXml' } | 13 | + :grade => "10.0", |
14 | + :parent_id => "31", | ||
15 | + :attributes! => | ||
16 | + { | ||
17 | + :module => | ||
18 | + { | ||
19 | + "xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance", | ||
20 | + "xsi:type"=>"kalibro:moduleXml" | ||
21 | + } | ||
24 | } | 22 | } |
25 | } | 23 | } |
26 | end | 24 | end |
27 | 25 | ||
26 | + def self.parent_module_result_hash | ||
27 | + { | ||
28 | + :id => "31", | ||
29 | + :module => { | ||
30 | + :name => 'Qt-Calculator Parent', | ||
31 | + :granularity => 'APPLICATION' | ||
32 | + }, | ||
33 | + :grade => "10.0", | ||
34 | + :attributes! => | ||
35 | + { | ||
36 | + :module => | ||
37 | + { | ||
38 | + "xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance", | ||
39 | + "xsi:type"=>"kalibro:moduleXml" | ||
40 | + } | ||
41 | + } | ||
42 | + } | ||
43 | + end | ||
28 | end | 44 | end |
plugins/mezuro/test/fixtures/native_metric_fixtures.rb
@@ -1,19 +0,0 @@ | @@ -1,19 +0,0 @@ | ||
1 | -class NativeMetricFixtures | ||
2 | - | ||
3 | - def self.total_cof | ||
4 | - Kalibro::NativeMetric.new total_cof_hash | ||
5 | - end | ||
6 | - | ||
7 | - def self.total_cof_hash | ||
8 | - {:name => 'Total Coupling Factor', :scope => 'APPLICATION', :origin => 'Analizo', :language => ['JAVA']} | ||
9 | - end | ||
10 | - | ||
11 | - def self.amloc | ||
12 | - Kalibro::NativeMetric.new amloc_hash | ||
13 | - end | ||
14 | - | ||
15 | - def self.amloc_hash | ||
16 | - {:name => 'Average Method LOC', :scope => 'CLASS', :origin => 'Analizo', :language => ['JAVA']} | ||
17 | - end | ||
18 | - | ||
19 | -end |
@@ -0,0 +1,30 @@ | @@ -0,0 +1,30 @@ | ||
1 | +require File.dirname(__FILE__) + '/process_time_fixtures' | ||
2 | +require File.dirname(__FILE__) + '/throwable_fixtures' | ||
3 | + | ||
4 | +class ProcessingFixtures | ||
5 | + | ||
6 | + def self.processing | ||
7 | + Kalibro::Processing.new processing_hash | ||
8 | + end | ||
9 | + | ||
10 | + def self.processing_hash | ||
11 | + { | ||
12 | + :id => "31", | ||
13 | + :date => '2011-10-20T18:26:43.151+00:00', | ||
14 | + :state => 'READY', | ||
15 | + :process_time => [ProcessTimeFixtures.process_time_hash], | ||
16 | + :results_root_id => "13" | ||
17 | + } | ||
18 | + end | ||
19 | + | ||
20 | + def self.processing_with_error_hash | ||
21 | + { | ||
22 | + :id => "31", | ||
23 | + :date => '2011-10-20T18:26:43.151+00:00', | ||
24 | + :state => 'ERROR', | ||
25 | + :process_time => [ProcessTimeFixtures.process_time_hash], | ||
26 | + :error => ThrowableFixtures.throwable_hash | ||
27 | + } | ||
28 | + end | ||
29 | + | ||
30 | +end |
plugins/mezuro/test/fixtures/project_content_fixtures.rb
0 → 100644
plugins/mezuro/test/fixtures/project_fixtures.rb
@@ -6,35 +6,15 @@ class ProjectFixtures | @@ -6,35 +6,15 @@ class ProjectFixtures | ||
6 | Kalibro::Project.new project_hash | 6 | Kalibro::Project.new project_hash |
7 | end | 7 | end |
8 | 8 | ||
9 | + def self.created_project | ||
10 | + Kalibro::Project.new :name => 'Qt-Calculator', :description => 'Calculator for Qt' | ||
11 | + end | ||
12 | + | ||
9 | def self.project_hash | 13 | def self.project_hash |
10 | { | 14 | { |
15 | + :id => "42", | ||
11 | :name => 'Qt-Calculator', | 16 | :name => 'Qt-Calculator', |
12 | - :license => 'GPL', | ||
13 | - :description => 'Calculator for Qt', | ||
14 | - :repository => RepositoryFixtures.repository_hash, | ||
15 | - :configuration_name => 'Kalibro for Java', | ||
16 | - :state => 'READY', | ||
17 | - :attributes! => | ||
18 | - { | ||
19 | - :repository=> | ||
20 | - { | ||
21 | - "xsi:type"=>"kalibro:repositoryXml", | ||
22 | - "xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance" | ||
23 | - } | ||
24 | - } | 17 | + :description => 'Calculator for Qt' |
25 | } | 18 | } |
26 | end | 19 | end |
27 | - | ||
28 | - def self.project_content | ||
29 | - content = MezuroPlugin::ProjectContent.new | ||
30 | - content.name = 'Qt-Calculator' | ||
31 | - content.project_license = 'GPL' | ||
32 | - content.description = 'Calculator for Qt' | ||
33 | - content.repository_type = RepositoryFixtures.repository_hash[:type] | ||
34 | - content.repository_url = RepositoryFixtures.repository_hash[:address] | ||
35 | - content.configuration_name = 'Kalibro for Java' | ||
36 | - content.periodicity_in_days = 1 | ||
37 | - content | ||
38 | - end | ||
39 | - | ||
40 | end | 20 | end |
plugins/mezuro/test/fixtures/project_result_fixtures.rb
@@ -1,35 +0,0 @@ | @@ -1,35 +0,0 @@ | ||
1 | -require File.dirname(__FILE__) + '/project_fixtures' | ||
2 | -require File.dirname(__FILE__) + '/module_node_fixtures' | ||
3 | -require File.dirname(__FILE__) + '/module_result_fixtures' | ||
4 | - | ||
5 | -class ProjectResultFixtures | ||
6 | - | ||
7 | - def self.project_result | ||
8 | - Kalibro::ProjectResult.new project_result_hash | ||
9 | - end | ||
10 | - | ||
11 | - def self.project_result_hash | ||
12 | - { | ||
13 | - :project => ProjectFixtures.project_hash, | ||
14 | - :date => ModuleResultFixtures.module_result_hash[:date], | ||
15 | - :load_time => 14878, | ||
16 | - :analysis_time => 1022, | ||
17 | - :source_tree => ModuleNodeFixtures.module_node_hash, | ||
18 | - :collect_time => 14878, | ||
19 | - :attributes! => | ||
20 | - { | ||
21 | - :source_tree => | ||
22 | - { | ||
23 | - "xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance", | ||
24 | - "xsi:type"=>"kalibro:moduleNodeXml" | ||
25 | - }, | ||
26 | - :project => | ||
27 | - { | ||
28 | - "xmlns:xsi"=>"http://www.w3.org/2001/XMLSchema-instance", | ||
29 | - "xsi:type"=>"kalibro:projectXml" | ||
30 | - } | ||
31 | - } | ||
32 | - } | ||
33 | - end | ||
34 | - | ||
35 | -end |
plugins/mezuro/test/fixtures/range_fixtures.rb
1 | class RangeFixtures | 1 | class RangeFixtures |
2 | 2 | ||
3 | - Infinity = 1.0/0.0 | ||
4 | - | ||
5 | - def self.range_excellent | ||
6 | - Kalibro::Range.new range_excellent_hash | 3 | + def self.range |
4 | + Kalibro::Range.new range_hash | ||
7 | end | 5 | end |
8 | 6 | ||
9 | - def self.range_bad | ||
10 | - Kalibro::Range.new range_bad_hash | 7 | + def self.created_range |
8 | + Kalibro::Range.new created_range_hash | ||
11 | end | 9 | end |
12 | - | ||
13 | - def self.range_excellent_hash | ||
14 | - {:beginning => 0.0, :end => 7.0, :label => 'Excellent', :grade => 10.0, :color => 'ff00ff00'} | 10 | + |
11 | + def self.created_range_hash | ||
12 | + {:beginning => "19.5", :end => "INF", :reading_id => "1", :comments => "Test range 1"} | ||
15 | end | 13 | end |
16 | 14 | ||
17 | - def self.range_bad_hash | ||
18 | - {:beginning => 19.5, :end => "INF", :label => 'Bad',:grade => 0.0, :color => 'ffff0000'} | 15 | + def self.range_hash |
16 | + {:id => "1", :beginning => "19.5", :end => "INF", :reading_id => "1", :comments => "Test range 1"} | ||
19 | end | 17 | end |
20 | 18 | ||
21 | end | 19 | end |
@@ -0,0 +1,19 @@ | @@ -0,0 +1,19 @@ | ||
1 | +class RangeSnapshotFixtures | ||
2 | + | ||
3 | + def self.range_snapshot | ||
4 | + Kalibro::RangeSnapshot.new range_snapshot_hash | ||
5 | + end | ||
6 | + | ||
7 | + def self.range_snapshot_with_infinite_range | ||
8 | + Kalibro::RangeSnapshot.new range_snapshot_with_infinite_range_hash | ||
9 | + end | ||
10 | + | ||
11 | + def self.range_snapshot_hash | ||
12 | + { :beginning => "1.1", :end => "5.1", :label => "snapshot", :grade => "10.1", :color => "FF2284", :comments => "comment" } | ||
13 | + end | ||
14 | + | ||
15 | + def self.range_snapshot_with_infinite_range_hash | ||
16 | + { :beginning => "-INF", :end => "INF", :label => "snapshot", :grade => "10.1", :color => "FF2284", :comments => "comment" } | ||
17 | + end | ||
18 | + | ||
19 | +end |
@@ -0,0 +1,16 @@ | @@ -0,0 +1,16 @@ | ||
1 | +class ReadingFixtures | ||
2 | + | ||
3 | + def self.reading | ||
4 | + Kalibro::Reading.new reading_hash | ||
5 | + end | ||
6 | + | ||
7 | + def self.created_reading # A created object has no id before being sent to kalibro | ||
8 | + Kalibro::Reading.new :label => "Reading Test Label", :grade => "10.5", :color => "AABBCC" | ||
9 | + end | ||
10 | + | ||
11 | + def self.reading_hash | ||
12 | + {:id => "42", :label => "Reading Test Label", :grade => "10.5", :color => "AABBCC" } | ||
13 | + end | ||
14 | + | ||
15 | +end | ||
16 | + |
plugins/mezuro/test/fixtures/reading_group_content_fixtures.rb
0 → 100644
@@ -0,0 +1,15 @@ | @@ -0,0 +1,15 @@ | ||
1 | +class ReadingGroupFixtures | ||
2 | + | ||
3 | + def self.reading_group | ||
4 | + Kalibro::ReadingGroup.new reading_group_hash | ||
5 | + end | ||
6 | + | ||
7 | + def self.created_reading_group # A created object has no id before being sent to kalibro | ||
8 | + Kalibro::ReadingGroup.new :name => "Reading Group Test", :description => "Reading group in the fixtures" | ||
9 | + end | ||
10 | + | ||
11 | + def self.reading_group_hash | ||
12 | + {:id => "42", :name => "Reading Group Test", :description => "Reading group in the fixtures"} | ||
13 | + end | ||
14 | + | ||
15 | +end |
plugins/mezuro/test/fixtures/repository_fixtures.rb
@@ -4,8 +4,24 @@ class RepositoryFixtures | @@ -4,8 +4,24 @@ class RepositoryFixtures | ||
4 | Kalibro::Repository.new repository_hash | 4 | Kalibro::Repository.new repository_hash |
5 | end | 5 | end |
6 | 6 | ||
7 | + def self.created_repository | ||
8 | + Kalibro::Repository.new({ | ||
9 | + :name => "test created repository", | ||
10 | + :description => "test description", | ||
11 | + :license => "GPL", | ||
12 | + :process_period => "1", | ||
13 | + :type => 'SUBVERSION', | ||
14 | + :address => 'https://qt-calculator.svn.sourceforge.net/svnroot/qt-calculator', | ||
15 | + :configuration_id => "31" | ||
16 | + }) | ||
17 | + end | ||
18 | + | ||
7 | def self.repository_hash | 19 | def self.repository_hash |
8 | - {:type => 'SUBVERSION', :address => 'https://qt-calculator.svn.sourceforge.net/svnroot/qt-calculator'} | 20 | + {:id => "42", :name => "test repository", :description => "test description", :license => "GPL", :process_period => "1", :type => 'SUBVERSION', :address => "https://qt-calculator.svn.sourceforge.net/svnroot/qt-calculator", :configuration_id => "31"} |
21 | + end | ||
22 | + | ||
23 | + def self.types | ||
24 | + ["SUBVERSION", "GIT"] | ||
9 | end | 25 | end |
10 | 26 | ||
11 | end | 27 | end |
plugins/mezuro/test/fixtures/stack_trace_element_fixtures.rb
1 | class StackTraceElementFixtures | 1 | class StackTraceElementFixtures |
2 | 2 | ||
3 | - def self.stack_trace_element(method_name = 'my method name', line_number = 42) | ||
4 | - Kalibro::StackTraceElement.new stack_trace_element_hash(method_name, line_number) | 3 | + def self.stack_trace_element |
4 | + Kalibro::StackTraceElement.new stack_trace_element_hash | ||
5 | end | 5 | end |
6 | 6 | ||
7 | - def self.stack_trace_element_hash(method_name = 'my method name', line_number = 42) | 7 | + def self.stack_trace_element_hash |
8 | { | 8 | { |
9 | :declaring_class => 'my.declaring.Class', | 9 | :declaring_class => 'my.declaring.Class', |
10 | - :method_name => method_name, | 10 | + :method_name => 'my method name', |
11 | :file_name => 'MyFile.java', | 11 | :file_name => 'MyFile.java', |
12 | - :line_number => line_number | 12 | + :line_number => '42' |
13 | } | 13 | } |
14 | end | 14 | end |
15 | 15 |
@@ -0,0 +1,19 @@ | @@ -0,0 +1,19 @@ | ||
1 | +require File.dirname(__FILE__) + '/stack_trace_element_fixtures' | ||
2 | + | ||
3 | +class ThrowableFixtures | ||
4 | + | ||
5 | + def self.throwable | ||
6 | + Kalibro::Throwable.new throwable_hash | ||
7 | + end | ||
8 | + | ||
9 | + def self.throwable_hash | ||
10 | + { | ||
11 | + :target_string => 'Target String', | ||
12 | + :message => 'Throwable message from ThrowableTest', | ||
13 | + :stack_trace_element => [ | ||
14 | + StackTraceElementFixtures.stack_trace_element_hash, StackTraceElementFixtures.stack_trace_element_hash | ||
15 | + ] | ||
16 | + } | ||
17 | + end | ||
18 | + | ||
19 | +end |
plugins/mezuro/test/functional/mezuro_plugin_myprofile_controller_test.rb
@@ -1,56 +0,0 @@ | @@ -1,56 +0,0 @@ | ||
1 | -require 'test_helper' | ||
2 | - | ||
3 | -require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/error_fixtures" | ||
4 | -require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/base_tool_fixtures" | ||
5 | -require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/native_metric_fixtures" | ||
6 | -require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/metric_configuration_fixtures" | ||
7 | -require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/configuration_fixtures" | ||
8 | - | ||
9 | -class MezuroPluginMyprofileControllerTest < ActionController::TestCase | ||
10 | - | ||
11 | - def setup | ||
12 | - @controller = MezuroPluginMyprofileController.new | ||
13 | - @request = ActionController::TestRequest.new | ||
14 | - @response = ActionController::TestResponse.new | ||
15 | - @profile = fast_create(Community) | ||
16 | - | ||
17 | - @base_tool = BaseToolFixtures.base_tool | ||
18 | - @base_tool_hash = BaseToolFixtures.base_tool_hash | ||
19 | - @metric = NativeMetricFixtures.amloc | ||
20 | - @metric_configuration = MetricConfigurationFixtures.amloc_metric_configuration | ||
21 | - @metric_configuration_hash = MetricConfigurationFixtures.amloc_metric_configuration_hash | ||
22 | - @compound_metric_configuration = MetricConfigurationFixtures.sc_metric_configuration | ||
23 | - @compound_metric_configuration_hash = MetricConfigurationFixtures.sc_metric_configuration_hash | ||
24 | - @configuration = ConfigurationFixtures.configuration | ||
25 | - @configuration_hash = ConfigurationFixtures.configuration_hash | ||
26 | - | ||
27 | - Kalibro::Configuration.expects(:all_names).returns([]) | ||
28 | - @content = MezuroPlugin::ConfigurationContent.new(:profile => @profile, :name => @configuration.name) | ||
29 | - @content.expects(:send_kalibro_configuration_to_service).returns(nil) | ||
30 | - @content.stubs(:solr_save) | ||
31 | - @content.save | ||
32 | - | ||
33 | - @native_hash = @metric_configuration.to_hash.merge({:configuration_name => @metric_configuration.configuration_name}) | ||
34 | - @native_hash.delete :attributes! | ||
35 | - @compound_hash = @compound_metric_configuration.to_hash.merge({:configuration_name => @compound_metric_configuration.configuration_name}) | ||
36 | - @compound_hash.delete :attributes! | ||
37 | - end | ||
38 | - | ||
39 | - should 'test choose base tool' do | ||
40 | - Kalibro::BaseTool.expects(:request).with("BaseTool", :get_base_tool_names).returns({:base_tool_name => @base_tool.name}) | ||
41 | - get :choose_base_tool, :profile => @profile.identifier, :id => @content.id | ||
42 | - assert_equal [@base_tool.name], assigns(:base_tools) | ||
43 | - assert_equal @content, assigns(:configuration_content) | ||
44 | - assert_response 200 | ||
45 | - end | ||
46 | - | ||
47 | - should 'test choose metric' do | ||
48 | - Kalibro::BaseTool.expects(:request).with("BaseTool", :get_base_tool, {:base_tool_name => @base_tool.name}).returns({:base_tool => @base_tool_hash}) | ||
49 | - get :choose_metric, :profile => @profile.identifier, :id => @content.id, :base_tool => @base_tool.name | ||
50 | - assert_equal @content, assigns(:configuration_content) | ||
51 | - assert_equal @base_tool.name, assigns(:base_tool) | ||
52 | - assert_equal @base_tool.supported_metric[0].name, assigns(:supported_metrics)[0].name | ||
53 | - assert_response 200 | ||
54 | - end | ||
55 | - | ||
56 | -end |
plugins/mezuro/test/functional/myprofile/mezuro_plugin_base_tool_controller_test.rb
@@ -1,34 +0,0 @@ | @@ -1,34 +0,0 @@ | ||
1 | -require 'test_helper' | ||
2 | - | ||
3 | -require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/base_tool_fixtures" | ||
4 | -require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/configuration_fixtures" | ||
5 | - | ||
6 | -class MezuroPluginBaseToolControllerTest < ActionController::TestCase | ||
7 | - | ||
8 | - def setup | ||
9 | - @controller = MezuroPluginBaseToolController.new | ||
10 | - @request = ActionController::TestRequest.new | ||
11 | - @response = ActionController::TestResponse.new | ||
12 | - @profile = fast_create(Community) | ||
13 | - | ||
14 | - @base_tool = BaseToolFixtures.base_tool | ||
15 | - @base_tool_hash = BaseToolFixtures.base_tool_hash | ||
16 | - @configuration = ConfigurationFixtures.configuration | ||
17 | - | ||
18 | - Kalibro::Configuration.expects(:all_names).returns([]) | ||
19 | - @content = MezuroPlugin::ConfigurationContent.new(:profile => @profile, :name => @configuration.name) | ||
20 | - @content.expects(:send_kalibro_configuration_to_service).returns(nil) | ||
21 | - @content.stubs(:solr_save) | ||
22 | - @content.save | ||
23 | - end | ||
24 | - | ||
25 | - should 'test choose metric' do | ||
26 | - Kalibro::BaseTool.expects(:request).with("BaseTool", :get_base_tool_names).returns({:base_tool_name => @base_tool.name}) | ||
27 | - Kalibro::BaseTool.expects(:request).with("BaseTool", :get_base_tool, {:base_tool_name => @base_tool.name}).returns({:base_tool => @base_tool_hash}) | ||
28 | - get :choose_metric, :profile => @profile.identifier, :id => @content.id | ||
29 | - assert_equal @base_tool.name, assigns(:base_tools).first.name | ||
30 | - assert_equal @content, assigns(:configuration_content) | ||
31 | - assert_response 200 | ||
32 | - end | ||
33 | - | ||
34 | -end |
plugins/mezuro/test/functional/myprofile/mezuro_plugin_metric_configuration_controller_test.rb
1 | require 'test_helper' | 1 | require 'test_helper' |
2 | 2 | ||
3 | require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/base_tool_fixtures" | 3 | require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/base_tool_fixtures" |
4 | -require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/native_metric_fixtures" | 4 | +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/metric_fixtures" |
5 | require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/metric_configuration_fixtures" | 5 | require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/metric_configuration_fixtures" |
6 | require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/configuration_fixtures" | 6 | require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/configuration_fixtures" |
7 | +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/reading_group_fixtures" | ||
8 | +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/range_fixtures" | ||
9 | +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/reading_fixtures" | ||
7 | 10 | ||
8 | class MezuroPluginMetricConfigurationControllerTest < ActionController::TestCase | 11 | class MezuroPluginMetricConfigurationControllerTest < ActionController::TestCase |
9 | 12 | ||
@@ -11,131 +14,111 @@ class MezuroPluginMetricConfigurationControllerTest < ActionController::TestCase | @@ -11,131 +14,111 @@ class MezuroPluginMetricConfigurationControllerTest < ActionController::TestCase | ||
11 | @controller = MezuroPluginMetricConfigurationController.new | 14 | @controller = MezuroPluginMetricConfigurationController.new |
12 | @request = ActionController::TestRequest.new | 15 | @request = ActionController::TestRequest.new |
13 | @response = ActionController::TestResponse.new | 16 | @response = ActionController::TestResponse.new |
14 | - @profile = fast_create(Community) | 17 | + @profile = fast_create(Profile) |
18 | + | ||
19 | + @configuration = ConfigurationFixtures.configuration | ||
20 | + @created_configuration = ConfigurationFixtures.created_configuration | ||
21 | + @configuration_hash = ConfigurationFixtures.configuration_hash | ||
22 | + | ||
23 | + @configuration_content = MezuroPlugin::ConfigurationContent.new(:profile => @profile, :name => @configuration.name, :configuration_id => 42) | ||
24 | + @configuration_content.expects(:send_configuration_to_service).returns(nil) | ||
25 | + @configuration_content.expects(:validate_configuration_name).returns(true) | ||
26 | + @configuration_content.stubs(:solr_save) | ||
27 | + @configuration_content.save | ||
15 | 28 | ||
16 | @base_tool = BaseToolFixtures.base_tool | 29 | @base_tool = BaseToolFixtures.base_tool |
17 | @base_tool_hash = BaseToolFixtures.base_tool_hash | 30 | @base_tool_hash = BaseToolFixtures.base_tool_hash |
18 | - @metric = NativeMetricFixtures.amloc | ||
19 | - @metric_configuration = MetricConfigurationFixtures.amloc_metric_configuration | ||
20 | - @metric_configuration_hash = MetricConfigurationFixtures.amloc_metric_configuration_hash | 31 | + |
32 | + @metric = MetricFixtures.amloc | ||
33 | + | ||
34 | + @reading_group = ReadingGroupFixtures.reading_group | ||
35 | + @range = RangeFixtures.range | ||
36 | + @reading = ReadingFixtures.reading | ||
37 | + | ||
38 | + @native_metric_configuration = MetricConfigurationFixtures.amloc_metric_configuration | ||
39 | + @native_metric_configuration_hash = MetricConfigurationFixtures.amloc_metric_configuration_hash | ||
40 | + @created_metric_configuration = MetricConfigurationFixtures.created_metric_configuration | ||
21 | @compound_metric_configuration = MetricConfigurationFixtures.sc_metric_configuration | 41 | @compound_metric_configuration = MetricConfigurationFixtures.sc_metric_configuration |
22 | @compound_metric_configuration_hash = MetricConfigurationFixtures.sc_metric_configuration_hash | 42 | @compound_metric_configuration_hash = MetricConfigurationFixtures.sc_metric_configuration_hash |
23 | - @configuration = ConfigurationFixtures.configuration | ||
24 | - @configuration_hash = ConfigurationFixtures.configuration_hash | 43 | + end |
25 | 44 | ||
26 | - Kalibro::Configuration.expects(:all_names).returns([]) | ||
27 | - @content = MezuroPlugin::ConfigurationContent.new(:profile => @profile, :name => @configuration.name) | ||
28 | - @content.expects(:send_kalibro_configuration_to_service).returns(nil) | ||
29 | - @content.stubs(:solr_save) | ||
30 | - @content.save | ||
31 | - | ||
32 | - @native_hash = @metric_configuration.to_hash.merge({:configuration_name => @metric_configuration.configuration_name}) | ||
33 | - @native_hash.delete :attributes! | ||
34 | - @compound_hash = @compound_metric_configuration.to_hash.merge({:configuration_name => @compound_metric_configuration.configuration_name}) | ||
35 | - @compound_hash.delete :attributes! | ||
36 | - | 45 | + should 'choose metric' do |
46 | + Kalibro::BaseTool.expects(:all).returns([@base_tool]) | ||
47 | + get :choose_metric, :profile => @profile.identifier, :id => @configuration_content.id | ||
48 | + assert_equal @configuration_content, assigns(:configuration_content) | ||
49 | + assert_equal [@base_tool], assigns(:base_tools) | ||
50 | + assert_response :success | ||
37 | end | 51 | end |
38 | - | ||
39 | - should 'test new metric configuration' do | ||
40 | - Kalibro::BaseTool.expects(:request).with("BaseTool", :get_base_tool, {:base_tool_name => @base_tool.name}).returns({:base_tool => @base_tool_hash}) | ||
41 | - get :new_metric_configuration, :profile => @profile.identifier, :id => @content.id, :base_tool => @base_tool.name, :metric_name => @metric.name | ||
42 | - assert_equal @content, assigns(:configuration_content) | 52 | + |
53 | + should 'initialize native' do | ||
54 | + Kalibro::BaseTool.expects(:find_by_name).with(@base_tool.name).returns(@base_tool) | ||
55 | + Kalibro::ReadingGroup.expects(:all).returns([@reading_group]) | ||
56 | + get :new_native, :profile => @profile.identifier, :id => @configuration_content.id, :base_tool_name => @base_tool.name, :metric_name => @metric.name | ||
57 | + assert_equal @configuration_content, assigns(:configuration_content) | ||
43 | assert_equal @metric.name, assigns(:metric).name | 58 | assert_equal @metric.name, assigns(:metric).name |
44 | - assert_response 200 | 59 | + assert_equal @base_tool.name, assigns(:metric_configuration).base_tool_name |
60 | + assert_equal [[@reading_group.name,@reading_group.id]], assigns(:reading_group_names_and_ids) | ||
61 | + assert_response :success | ||
45 | end | 62 | end |
46 | - | ||
47 | - | ||
48 | - should 'test new compound metric configuration' do | ||
49 | - Kalibro::Configuration.expects(:request).with("Configuration", :get_configuration, { | ||
50 | - :configuration_name => @content.name}).returns({:configuration => @configuration_hash}) | ||
51 | - get :new_compound_metric_configuration, :profile => @profile.identifier, :id => @content.id | ||
52 | - assert_equal @content, assigns(:configuration_content) | ||
53 | - assert_equal @configuration.metric_configuration[0].code, assigns(:metric_configurations)[0].code | ||
54 | - assert_response 200 | 63 | + |
64 | + should 'edit native' do | ||
65 | + Kalibro::MetricConfiguration.expects(:metric_configurations_of).with(@configuration.id).returns([@native_metric_configuration]) | ||
66 | + Kalibro::ReadingGroup.expects(:all).returns([@reading_group]) | ||
67 | + Kalibro::Range.expects(:ranges_of).with(@native_metric_configuration.id).returns([@range]) | ||
68 | + Kalibro::Reading.expects(:find).with(@range.reading_id).returns(@reading) | ||
69 | + get :edit_native, :profile => @profile.identifier, :id => @configuration_content.id, :metric_configuration_id => @native_metric_configuration.id | ||
70 | + assert_equal @configuration_content, assigns(:configuration_content) | ||
71 | + assert_equal @native_metric_configuration.code, assigns(:metric_configuration).code | ||
72 | + assert_equal @native_metric_configuration.metric.name, assigns(:metric).name | ||
73 | + assert_equal [[@reading_group.name,@reading_group.id]], assigns(:reading_group_names_and_ids) | ||
74 | + assert_equal [@range], assigns(:ranges) | ||
75 | + assert_response :success | ||
55 | end | 76 | end |
56 | 77 | ||
57 | - should 'test edit metric configuration' do | ||
58 | - Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :get_metric_configuration, { | ||
59 | - :configuration_name => @content.name, | ||
60 | - :metric_name => @metric_configuration.metric.name}).returns({:metric_configuration => @metric_configuration_hash}) | ||
61 | - get :edit_metric_configuration, :profile => @profile.identifier, :id => @content.id, :metric_name => @metric.name | ||
62 | - assert_equal @content, assigns(:configuration_content) | ||
63 | - assert_equal @metric_configuration.code, assigns(:metric_configuration).code | ||
64 | - assert_equal @metric_configuration.metric.name, assigns(:metric).name | ||
65 | - assert_response 200 | 78 | + should 'initialize compound' do |
79 | + Kalibro::ReadingGroup.expects(:all).returns([@reading_group]) | ||
80 | + Kalibro::MetricConfiguration.expects(:metric_configurations_of).with(@configuration_content.configuration_id).returns([@compound_metric_configuration]) | ||
81 | + get :new_compound, :profile => @profile.identifier, :id => @configuration_content.id | ||
82 | + assert_equal @configuration_content, assigns(:configuration_content) | ||
83 | + assert_equal @compound_metric_configuration.code, assigns(:metric_configurations).first.code | ||
84 | + assert_equal [[@reading_group.name,@reading_group.id]], assigns(:reading_group_names_and_ids) | ||
85 | + assert_response :success | ||
66 | end | 86 | end |
67 | - | ||
68 | - should 'test edit compound metric configuration' do | ||
69 | - Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :get_metric_configuration, { | ||
70 | - :configuration_name => @content.name, | ||
71 | - :metric_name => @compound_metric_configuration.metric.name}).returns({:metric_configuration => @compound_metric_configuration_hash}) | ||
72 | - Kalibro::Configuration.expects(:request).with("Configuration", :get_configuration, {:configuration_name => @content.name}).returns({:configuration => @configuration_hash}) | ||
73 | - get :edit_compound_metric_configuration, | ||
74 | - :profile => @profile.identifier, | ||
75 | - :id => @content.id, | ||
76 | - :metric_name => @compound_metric_configuration.metric.name | ||
77 | - assert_equal @content, assigns(:configuration_content) | 87 | + |
88 | + should 'edit compound' do | ||
89 | + Kalibro::MetricConfiguration.expects(:metric_configurations_of).with(@configuration.id).returns([@compound_metric_configuration]) | ||
90 | + Kalibro::ReadingGroup.expects(:all).returns([@reading_group]) | ||
91 | + Kalibro::Range.expects(:ranges_of).with(@compound_metric_configuration.id).returns([@range]) | ||
92 | + Kalibro::Reading.expects(:find).with(@range.reading_id).returns(@reading) | ||
93 | + get :edit_compound, :profile => @profile.identifier, :id => @configuration_content.id, :metric_configuration_id => @compound_metric_configuration.id | ||
94 | + assert_equal @configuration_content, assigns(:configuration_content) | ||
78 | assert_equal @compound_metric_configuration.code, assigns(:metric_configuration).code | 95 | assert_equal @compound_metric_configuration.code, assigns(:metric_configuration).code |
79 | assert_equal @compound_metric_configuration.metric.name, assigns(:metric).name | 96 | assert_equal @compound_metric_configuration.metric.name, assigns(:metric).name |
80 | - assert_equal @configuration.metric_configuration[0].code, assigns(:metric_configurations)[0].code | ||
81 | - assert_response 200 | ||
82 | - end | ||
83 | - | ||
84 | - should 'test create native metric configuration' do | ||
85 | - Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :save_metric_configuration, { | ||
86 | - :metric_configuration => @metric_configuration.to_hash, | ||
87 | - :configuration_name => @metric_configuration.configuration_name}) | ||
88 | - get :create_metric_configuration, | ||
89 | - :profile => @profile.identifier, | ||
90 | - :id => @content.id, | ||
91 | - :metric_configuration => @native_hash | ||
92 | - assert_response 302 | ||
93 | - end | ||
94 | - | ||
95 | - should 'test compound metric creation' do | ||
96 | - Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :save_metric_configuration, { | ||
97 | - :metric_configuration => @compound_metric_configuration.to_hash, | ||
98 | - :configuration_name => @compound_metric_configuration.configuration_name}) | ||
99 | - get :create_compound_metric_configuration, :profile => @profile.identifier, :id => @content.id, | ||
100 | - :metric_configuration => @compound_hash | ||
101 | - assert_response 302 | 97 | + assert_equal [@compound_metric_configuration], assigns(:metric_configurations) |
98 | + assert_equal [[@reading_group.name,@reading_group.id]], assigns(:reading_group_names_and_ids) | ||
99 | + assert_equal [@range], assigns(:ranges) | ||
100 | + assert_response :success | ||
102 | end | 101 | end |
103 | 102 | ||
104 | - should 'test update native metric configuration' do | ||
105 | - Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :get_metric_configuration, { | ||
106 | - :configuration_name => @content.name, | ||
107 | - :metric_name => @metric_configuration.metric.name}).returns({:metric_configuration => @metric_configuration_hash}) | ||
108 | - Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :save_metric_configuration, { | ||
109 | - :metric_configuration => @metric_configuration.to_hash, | ||
110 | - :configuration_name => @metric_configuration.configuration_name}) | ||
111 | - get :update_metric_configuration, :profile => @profile.identifier, :id => @content.id, | ||
112 | - :metric_configuration => @native_hash | ||
113 | - assert_equal @content, assigns(:configuration_content) | ||
114 | - assert_response 302 | 103 | + should 'create' do |
104 | + Kalibro::MetricConfiguration.expects(:create).returns(@compound_metric_configuration) #FIXME need .with(some_hash), should it mock the request?. | ||
105 | + get :create, :profile => @profile.identifier, :id => @configuration_content.id, :metric_configuration => @compound_metric_configuration_hash | ||
106 | + assert_response :redirect | ||
115 | end | 107 | end |
116 | 108 | ||
117 | - should 'test update compound metric configuration' do | ||
118 | - Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :get_metric_configuration, { | ||
119 | - :configuration_name => @content.name, | ||
120 | - :metric_name => @compound_metric_configuration.metric.name}).returns({:metric_configuration => @compound_metric_configuration_hash}) | ||
121 | - Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :save_metric_configuration, { | ||
122 | - :metric_configuration => @compound_metric_configuration.to_hash, | ||
123 | - :configuration_name => @compound_metric_configuration.configuration_name}) | ||
124 | - get :update_compound_metric_configuration, :profile => @profile.identifier, :id => @content.id, | ||
125 | - :metric_configuration => @compound_hash | ||
126 | - assert_equal @content, assigns(:configuration_content) | ||
127 | - assert_response 302 | 109 | + should 'update' do |
110 | + Kalibro::MetricConfiguration.expects(:metric_configurations_of).with(@configuration_content.configuration_id).returns([@native_metric_configuration]) | ||
111 | + @native_metric_configuration.expects(:update_attributes).returns(true) #FIXME need .with(some_hash), should it mock the request?. | ||
112 | + get :update, :profile => @profile.identifier, :id => @configuration_content.id, :metric_configuration => @native_metric_configuration_hash | ||
113 | + assert_equal @configuration_content, assigns(:configuration_content) | ||
114 | + assert_response :redirect | ||
128 | end | 115 | end |
129 | 116 | ||
130 | - should 'test remove metric configuration' do | ||
131 | - Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :get_metric_configuration, { | ||
132 | - :configuration_name => @content.name, | ||
133 | - :metric_name => @metric.name}).returns({:metric_configuration => @metric_configuration_hash}) | ||
134 | - Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :remove_metric_configuration, { | ||
135 | - :metric_name => @metric.name, | ||
136 | - :configuration_name => @metric_configuration.configuration_name}) | ||
137 | - get :remove_metric_configuration, :profile => @profile.identifier, :id => @content.id, :metric_name => @metric.name | ||
138 | - assert_response 302 | 117 | + should 'remove' do |
118 | + Kalibro::MetricConfiguration.expects(:new).with({:id => @native_metric_configuration.id}).returns(@native_metric_configuration) | ||
119 | + @native_metric_configuration.expects(:destroy).returns() | ||
120 | + get :remove, :profile => @profile.identifier, :id => @configuration_content.id, :metric_configuration_id => @native_metric_configuration.id | ||
121 | + assert_response :redirect | ||
139 | end | 122 | end |
140 | 123 | ||
141 | end | 124 | end |
plugins/mezuro/test/functional/myprofile/mezuro_plugin_range_controller_test.rb
1 | require 'test_helper' | 1 | require 'test_helper' |
2 | 2 | ||
3 | -require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/native_metric_fixtures" | 3 | +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/metric_fixtures" |
4 | require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/metric_configuration_fixtures" | 4 | require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/metric_configuration_fixtures" |
5 | require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/configuration_fixtures" | 5 | require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/configuration_fixtures" |
6 | require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/range_fixtures" | 6 | require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/range_fixtures" |
7 | +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/reading_fixtures" | ||
7 | 8 | ||
8 | class MezuroPluginRangeControllerTest < ActionController::TestCase | 9 | class MezuroPluginRangeControllerTest < ActionController::TestCase |
9 | 10 | ||
@@ -11,87 +12,73 @@ class MezuroPluginRangeControllerTest < ActionController::TestCase | @@ -11,87 +12,73 @@ class MezuroPluginRangeControllerTest < ActionController::TestCase | ||
11 | @controller = MezuroPluginRangeController.new | 12 | @controller = MezuroPluginRangeController.new |
12 | @request = ActionController::TestRequest.new | 13 | @request = ActionController::TestRequest.new |
13 | @response = ActionController::TestResponse.new | 14 | @response = ActionController::TestResponse.new |
14 | - @profile = fast_create(Community) | 15 | + @profile = fast_create(Profile) |
15 | 16 | ||
16 | - @metric = NativeMetricFixtures.amloc | ||
17 | @metric_configuration = MetricConfigurationFixtures.amloc_metric_configuration | 17 | @metric_configuration = MetricConfigurationFixtures.amloc_metric_configuration |
18 | @metric_configuration_hash = MetricConfigurationFixtures.amloc_metric_configuration_hash | 18 | @metric_configuration_hash = MetricConfigurationFixtures.amloc_metric_configuration_hash |
19 | @configuration = ConfigurationFixtures.configuration | 19 | @configuration = ConfigurationFixtures.configuration |
20 | 20 | ||
21 | - Kalibro::Configuration.expects(:all_names).returns([]) | ||
22 | - @content = MezuroPlugin::ConfigurationContent.new(:profile => @profile, :name => @configuration.name) | ||
23 | - @content.expects(:send_kalibro_configuration_to_service).returns(nil) | 21 | + @content = MezuroPlugin::ConfigurationContent.new(:profile => @profile, :name => @configuration.name, :configuration_id => 42) |
22 | + @content.expects(:send_configuration_to_service).returns(nil) | ||
23 | + @content.expects(:validate_configuration_name).returns(true) | ||
24 | @content.stubs(:solr_save) | 24 | @content.stubs(:solr_save) |
25 | @content.save | 25 | @content.save |
26 | 26 | ||
27 | - @range = RangeFixtures.range_excellent | ||
28 | - @range_hash = RangeFixtures.range_excellent_hash | 27 | + @created_range = RangeFixtures.created_range |
28 | + @range = RangeFixtures.range | ||
29 | + @created_range_hash = RangeFixtures.created_range_hash | ||
30 | + @range_hash = RangeFixtures.range_hash | ||
31 | + | ||
32 | + @reading = ReadingFixtures.reading | ||
29 | end | 33 | end |
30 | 34 | ||
31 | - should 'test new range' do | ||
32 | - get :new_range, :profile => @profile.identifier, :id => @content.id, :metric_name => @metric.name | ||
33 | - assert_equal @content.id.to_s, assigns(:content_id) | ||
34 | - assert_equal @metric.name, assigns(:metric_name) | ||
35 | - assert_response 200 | 35 | + should 'set correct attributes to create a new range' do |
36 | + Kalibro::Reading.expects(:readings_of).with(@metric_configuration.reading_group_id).returns([@reading]) | ||
37 | + get :new, :profile => @profile.identifier, :id => @content.id, :metric_configuration_id => @metric_configuration.id, :reading_group_id => @metric_configuration.reading_group_id, :compound => @metric_configuration.metric.compound | ||
38 | + assert_equal @content.id, assigns(:content_id) | ||
39 | + assert_equal @metric_configuration.id, assigns(:metric_configuration_id) | ||
40 | + assert_equal [[@reading.label,@reading.id]], assigns(:reading_labels_and_ids) | ||
41 | + assert_equal @metric_configuration.reading_group_id, assigns(:reading_group_id) | ||
42 | + assert_equal @metric_configuration.metric.compound, assigns(:compound) | ||
43 | + assert_response :success | ||
36 | end | 44 | end |
37 | 45 | ||
38 | - should 'test edit range' do | ||
39 | - Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :get_metric_configuration, { | ||
40 | - :configuration_name => @content.name, | ||
41 | - :metric_name => @metric.name}).returns({:metric_configuration => @metric_configuration_hash}) | ||
42 | - get :edit_range, :profile => @profile.identifier, :id => @content.id, :metric_name => @metric.name, :beginning_id => @range.beginning | ||
43 | - assert_equal @content.id.to_s, assigns(:content_id) | ||
44 | - assert_equal @metric.name, assigns(:metric_name) | ||
45 | - assert_equal @range.beginning, assigns(:beginning_id) | ||
46 | - assert_equal @range.end, assigns(:range).end | ||
47 | - assert_response 200 | 46 | + should 'set correct attributes to edit a range' do |
47 | + Kalibro::Reading.expects(:readings_of).with(@metric_configuration.reading_group_id).returns([@reading]) | ||
48 | + Kalibro::Range.expects(:ranges_of).with(@metric_configuration.id).returns([@range]) | ||
49 | + get :edit, :profile => @profile.identifier, :id => @content.id, :metric_configuration_id => @metric_configuration.id, :range_id => @range.id, :reading_group_id => @metric_configuration.reading_group_id | ||
50 | + assert_equal @content.id, assigns(:content_id) | ||
51 | + assert_equal @metric_configuration.id, assigns(:metric_configuration_id) | ||
52 | + assert_equal [[@reading.label,@reading.id]], assigns(:reading_labels_and_ids) | ||
53 | + assert_equal @range, assigns(:range) | ||
54 | + assert_response :success | ||
48 | end | 55 | end |
49 | 56 | ||
50 | should 'test create instance range' do | 57 | should 'test create instance range' do |
51 | - metric_configuration = @metric_configuration | ||
52 | - metric_configuration.add_range(@range) | ||
53 | - Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :get_metric_configuration, { | ||
54 | - :configuration_name => @content.name, | ||
55 | - :metric_name => @metric.name}).returns({:metric_configuration => @metric_configuration_hash}) | ||
56 | - Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :save_metric_configuration, { | ||
57 | - :metric_configuration => metric_configuration.to_hash, | ||
58 | - :configuration_name => metric_configuration.configuration_name}) | ||
59 | - get :create_range, :profile => @profile.identifier, :range => @range_hash, :id => @content.id, :metric_name => @metric.name | ||
60 | - assert_equal @content, assigns(:configuration_content) | ||
61 | - assert_equal @range.end, assigns(:range).end | ||
62 | - assert_response 200 | 58 | + Kalibro::Range.expects(:request).with(:save_range, { |
59 | + :metric_configuration_id => @metric_configuration.id, | ||
60 | + :range => @created_range.to_hash}).returns(:range_id => @range.id) | ||
61 | + Kalibro::Reading.expects(:find).with(@created_range.reading_id).returns(@reading) | ||
62 | + get :create, :profile => @profile.identifier, :range => @created_range_hash, :metric_configuration_id => @metric_configuration.id, :reading_group_id => @metric_configuration.reading_group_id, :compound => @metric_configuration.metric.compound | ||
63 | + assert_equal @range.id, assigns(:range).id | ||
64 | + assert_equal @metric_configuration.reading_group_id, assigns(:reading_group_id) | ||
65 | + assert_equal @metric_configuration.metric.compound, assigns(:compound) | ||
66 | + assert_response :success | ||
63 | end | 67 | end |
64 | 68 | ||
65 | should 'test update range' do | 69 | should 'test update range' do |
66 | - Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :get_metric_configuration, { | ||
67 | - :configuration_name => @content.name, | ||
68 | - :metric_name => @metric.name}).returns({:metric_configuration => @metric_configuration_hash}) | ||
69 | - Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :save_metric_configuration, { | ||
70 | - :metric_configuration => @metric_configuration.to_hash, | ||
71 | - :configuration_name => @metric_configuration.configuration_name}) | ||
72 | - get :update_range, | ||
73 | - :profile => @profile.identifier, | ||
74 | - :range => @range_hash, | ||
75 | - :id => @content.id, | ||
76 | - :metric_name => @metric.name, | ||
77 | - :beginning_id => @range.beginning | ||
78 | - assert_response 200 | 70 | + Kalibro::Range.expects(:request).with(:save_range, { |
71 | + :metric_configuration_id => @metric_configuration.id, | ||
72 | + :range => @range.to_hash}).returns(:range_id => @range.id) | ||
73 | + get :update, :profile => @profile.identifier, :range => @range_hash, :metric_configuration_id => @metric_configuration.id | ||
74 | + assert_equal @range.id, assigns(:range).id | ||
75 | + assert_response :success | ||
79 | end | 76 | end |
80 | 77 | ||
81 | - should 'test remove range' do | ||
82 | - metric_configuration = @metric_configuration | ||
83 | - metric_configuration.ranges.delete_if { |range| range.beginning == @range.beginning.to_f } | ||
84 | - Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :get_metric_configuration, { | ||
85 | - :configuration_name => @content.name, | ||
86 | - :metric_name => @metric.name}).returns({:metric_configuration => @metric_configuration_hash}) | ||
87 | - Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :save_metric_configuration, { | ||
88 | - :metric_configuration => metric_configuration.to_hash, | ||
89 | - :configuration_name => metric_configuration.configuration_name}) | ||
90 | - get :remove_range, | ||
91 | - :profile => @profile.identifier, | ||
92 | - :id => @content.id, | ||
93 | - :metric_name => @metric.name, | ||
94 | - :beginning_id => @range.beginning | ||
95 | - assert_response 302 | 78 | + should 'test remove range in native metric configuration' do |
79 | + Kalibro::Range.expects(:new).with({:id => @range.id}).returns(@range) | ||
80 | + @range.expects(:destroy).with().returns() | ||
81 | + get :remove, :profile => @profile.identifier, :id => @content.id, :metric_configuration_id => @metric_configuration.id, :range_id => @range.id, :compound => false | ||
82 | + assert_response :redirect | ||
96 | end | 83 | end |
97 | end | 84 | end |
plugins/mezuro/test/functional/myprofile/mezuro_plugin_reading_controller_test.rb
0 → 100644
@@ -0,0 +1,74 @@ | @@ -0,0 +1,74 @@ | ||
1 | +require 'test_helper' | ||
2 | + | ||
3 | +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/reading_fixtures" | ||
4 | +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/reading_group_content_fixtures" | ||
5 | + | ||
6 | +class MezuroPluginReadingControllerTest < ActionController::TestCase | ||
7 | + | ||
8 | + def setup | ||
9 | + @controller = MezuroPluginReadingController.new | ||
10 | + @request = ActionController::TestRequest.new | ||
11 | + @response = ActionController::TestResponse.new | ||
12 | + @profile = fast_create(Profile) | ||
13 | + | ||
14 | + @reading = ReadingFixtures.reading | ||
15 | + @created_reading = ReadingFixtures.created_reading | ||
16 | + @reading_hash = ReadingFixtures.hash | ||
17 | + @content = MezuroPlugin::ReadingGroupContent.new(:profile => @profile, :name => name) | ||
18 | + @content.expects(:send_reading_group_to_service).returns(nil) | ||
19 | + @content.stubs(:solr_save) | ||
20 | + @content.save | ||
21 | + end | ||
22 | + | ||
23 | + should 'set variables to create a new reading' do | ||
24 | + get :new, :profile => @profile.identifier, :id => @content.id | ||
25 | + assert_equal @content.id, assigns(:reading_group_content).id | ||
26 | + assert_response :success | ||
27 | + end | ||
28 | + | ||
29 | + should 'create a reading' do | ||
30 | + Kalibro::Reading.expects(:new).with(@reading_hash.to_s).returns(@created_reading) | ||
31 | + @created_reading.expects(:save).with(@content.reading_group_id).returns(true) | ||
32 | + get :save, :profile => @profile.identifier, :id => @content.id, :reading => @reading_hash | ||
33 | + assert @created_reading.errors.empty? | ||
34 | + assert_response :redirect | ||
35 | + end | ||
36 | + | ||
37 | + should 'put an Exception in reading when an error occurs in create action' do | ||
38 | + @created_reading.errors = [Exception.new] | ||
39 | + Kalibro::Reading.expects(:new).with(@reading_hash.to_s).returns(@created_reading) | ||
40 | + @created_reading.expects(:save).with(@content.reading_group_id).returns(false) | ||
41 | + get :save, :profile => @profile.identifier, :id => @content.id, :reading => @reading_hash | ||
42 | + assert !@created_reading.errors.empty? | ||
43 | + assert_response :redirect | ||
44 | + end | ||
45 | + | ||
46 | + should 'set variables to edit a reading' do | ||
47 | + Kalibro::Reading.expects(:find).with(@reading.id.to_s).returns(@reading) | ||
48 | + get :edit, :profile => @profile.identifier, :id => @content.id, :reading_id => @reading.id | ||
49 | + assert_equal @content.id, assigns(:reading_group_content).id | ||
50 | + assert_equal @reading, assigns(:reading) | ||
51 | + assert_response :success | ||
52 | + end | ||
53 | + | ||
54 | + should 'destroy a reading' do | ||
55 | + @reading.expects(:destroy) | ||
56 | + Kalibro::Reading.expects(:find).with(@reading.id.to_s).returns(@reading) | ||
57 | + | ||
58 | + get :destroy, :profile => @profile.identifier, :id => @content.id, :reading_id => @reading.id | ||
59 | + | ||
60 | + assert @reading.errors.empty? | ||
61 | + assert_response :redirect | ||
62 | + end | ||
63 | + | ||
64 | + should 'put an Exception in reading when an error occurs in destroy action' do | ||
65 | + @reading.errors = [Exception.new] | ||
66 | + @reading.expects(:destroy) | ||
67 | + Kalibro::Reading.expects(:find).with(@reading.id.to_s).returns(@reading) | ||
68 | + | ||
69 | + get :destroy, :profile => @profile.identifier, :id => @content.id, :reading_id => @reading.id | ||
70 | + | ||
71 | + assert !@reading.errors.empty? | ||
72 | + assert_response :redirect | ||
73 | + end | ||
74 | +end |
plugins/mezuro/test/functional/profile/mezuro_plugin_module_controller_test.rb
@@ -1,74 +0,0 @@ | @@ -1,74 +0,0 @@ | ||
1 | -require 'test_helper' | ||
2 | - | ||
3 | -require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/module_result_fixtures" | ||
4 | -require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/project_result_fixtures" | ||
5 | -require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/error_fixtures" | ||
6 | -require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/repository_fixtures" | ||
7 | - | ||
8 | -class MezuroPluginModuleControllerTest < ActionController::TestCase | ||
9 | - | ||
10 | - def setup | ||
11 | - @controller = MezuroPluginModuleController.new | ||
12 | - @request = ActionController::TestRequest.new | ||
13 | - @response = ActionController::TestResponse.new | ||
14 | - @profile = fast_create(Community) | ||
15 | - | ||
16 | - @project_result = ProjectResultFixtures.project_result | ||
17 | - @module_result = ModuleResultFixtures.module_result | ||
18 | - @repository_url = RepositoryFixtures.repository.address | ||
19 | - @project = @project_result.project | ||
20 | - @date = "2012-04-13T20:39:41+04:00" | ||
21 | - | ||
22 | - Kalibro::Project.expects(:all_names).returns([]) | ||
23 | - @content = MezuroPlugin::ProjectContent.new(:profile => @profile, :name => @project.name, :repository_url => @repository_url) | ||
24 | - @content.expects(:send_project_to_service).returns(nil) | ||
25 | - @content.save | ||
26 | - end | ||
27 | - | ||
28 | - | ||
29 | - should 'get module result without date' do | ||
30 | - date_with_milliseconds = Kalibro::ProjectResult.date_with_milliseconds(@project_result.date) | ||
31 | - Kalibro::ProjectResult.expects(:request). | ||
32 | - with("ProjectResult", :get_last_result_of, {:project_name => @project.name}). | ||
33 | - returns({:project_result => @project_result.to_hash}) | ||
34 | - Kalibro::ModuleResult.expects(:request). | ||
35 | - with("ModuleResult", :get_module_result, {:project_name => @project.name, :module_name => @project.name, :date => date_with_milliseconds}). | ||
36 | - returns({:module_result => @module_result.to_hash}) | ||
37 | - get :module_result, :profile => @profile.identifier, :id => @content.id, :module_name => @project.name, :date => nil | ||
38 | - assert_equal @content, assigns(:content) | ||
39 | - assert_equal @module_result.grade, assigns(:module_result).grade | ||
40 | - assert_response 200 | ||
41 | - assert_select('h5', 'Metric results for: Qt-Calculator (APPLICATION)') | ||
42 | - end | ||
43 | - | ||
44 | - should 'get module result with a specific date' do | ||
45 | - date_with_milliseconds = Kalibro::ProjectResult.date_with_milliseconds(@project_result.date) | ||
46 | - request_body = {:project_name => @project.name, :date => @project_result.date} | ||
47 | - Kalibro::ProjectResult.expects(:request).with("ProjectResult", :has_results_before, request_body).returns({:has_results => true}) | ||
48 | - Kalibro::ProjectResult.expects(:request).with("ProjectResult", :get_last_result_before, request_body).returns({:project_result => @project_result.to_hash}) | ||
49 | - Kalibro::ModuleResult.expects(:request).with("ModuleResult", :get_module_result, {:project_name => @project.name, :module_name => @project.name, :date => date_with_milliseconds}).returns({:module_result => @module_result.to_hash}) | ||
50 | - get :module_result, :profile => @profile.identifier, :id => @content.id, :module_name => @project.name, :date => @project_result.date | ||
51 | - assert_equal @content, assigns(:content) | ||
52 | - assert_equal @module_result.grade, assigns(:module_result).grade | ||
53 | - assert_response 200 | ||
54 | - assert_select('h5', 'Metric results for: Qt-Calculator (APPLICATION)') | ||
55 | - end | ||
56 | - | ||
57 | - should 'test module metrics history' do | ||
58 | - Kalibro::ModuleResult.expects(:request).with("ModuleResult", :get_result_history, {:project_name => @project.name, :module_name => @project.name}).returns({:module_result => @module_result}) | ||
59 | - get :module_metrics_history, :profile => @profile.identifier, :id => @content.id, :module_name => @project.name, | ||
60 | - :metric_name => @module_result.metric_result.first.metric.name.delete("() ") | ||
61 | - assert_equal @content, assigns(:content) | ||
62 | - assert_equal [[@module_result.metric_result[0].value, @module_result.date.to_s[0..9]]], assigns(:score_history) | ||
63 | - assert_response 200 | ||
64 | - end | ||
65 | - | ||
66 | - should 'test grade history' do | ||
67 | - Kalibro::ModuleResult.expects(:request).with("ModuleResult", :get_result_history, {:project_name => @project.name, :module_name => @project.name}).returns({:module_result => @module_result}) | ||
68 | - get :module_grade_history, :profile => @profile.identifier, :id => @content.id, :module_name => @project.name | ||
69 | - assert_equal @content, assigns(:content) | ||
70 | - assert_equal [[@module_result.grade, @module_result.date.to_s[0..9]]], assigns(:score_history) | ||
71 | - assert_response 200 | ||
72 | - end | ||
73 | - | ||
74 | -end |
plugins/mezuro/test/functional/profile/mezuro_plugin_module_result_controller_test.rb
0 → 100644
@@ -0,0 +1,58 @@ | @@ -0,0 +1,58 @@ | ||
1 | +require 'test_helper' | ||
2 | + | ||
3 | +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/module_result_fixtures" | ||
4 | +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/metric_result_fixtures" | ||
5 | +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/date_metric_result_fixtures" | ||
6 | +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/date_module_result_fixtures" | ||
7 | + | ||
8 | +class MezuroPluginModuleResultControllerTest < ActionController::TestCase | ||
9 | + | ||
10 | + def setup | ||
11 | + @controller = MezuroPluginModuleResultController.new | ||
12 | + @request = ActionController::TestRequest.new | ||
13 | + @response = ActionController::TestResponse.new | ||
14 | + @profile = fast_create(Community) | ||
15 | + | ||
16 | + @module_result_hash = ModuleResultFixtures.module_result_hash | ||
17 | + @metric_result_hash = MetricResultFixtures.native_metric_result_hash | ||
18 | + @date_metric_result_hash = DateMetricResultFixtures.date_metric_result_hash | ||
19 | + @date_module_result_hash = DateModuleResultFixtures.date_module_result_hash | ||
20 | + end | ||
21 | + | ||
22 | + should 'find module result on kalibro' do | ||
23 | + parent_module_result = ModuleResultFixtures.parent_module_result_hash | ||
24 | + Kalibro::ModuleResult.expects(:request).with(:get_module_result, { :module_result_id => @module_result_hash[:id].to_i }). | ||
25 | + returns({:module_result => @module_result_hash}) | ||
26 | + Kalibro::MetricResult.expects(:request).with(:metric_results_of, { :module_result_id => @module_result_hash[:id].to_i }). | ||
27 | + returns({:metric_result => @metric_result_hash}) | ||
28 | + Kalibro::ModuleResult.expects(:request).with(:get_module_result, { :module_result_id => @module_result_hash[:parent_id].to_i }). | ||
29 | + returns({:module_result => parent_module_result}) | ||
30 | + Kalibro::ModuleResult.expects(:request).with(:children_of, {:module_result_id => @module_result_hash[:id].to_i}). | ||
31 | + returns({:module_result => nil}) | ||
32 | + get :module_result, :profile => @profile.identifier, :module_result_id => @module_result_hash[:id] | ||
33 | + assert_equal @module_result_hash[:grade].to_f, assigns(:module_result).grade | ||
34 | + assert_equal @metric_result_hash[:value].to_f, assigns(:metric_results).first.value | ||
35 | + assert_response :success | ||
36 | + #TODO assert_select('h5', 'Metric results for: Qt-Calculator (APPLICATION)') | ||
37 | + end | ||
38 | + | ||
39 | + should 'get metric result history' do | ||
40 | + metric_name = @metric_result_hash[:configuration][:metric][:name] | ||
41 | + Kalibro::MetricResult.expects(:request).with(:history_of_metric, { :metric_name => metric_name, :module_result_id => @module_result_hash[:id].to_i }). | ||
42 | + returns({:date_metric_result => @date_metric_result_hash}) | ||
43 | + get :metric_result_history, :profile => @profile.identifier, :module_result_id => @module_result_hash[:id], :metric_name => metric_name | ||
44 | + assert_equal DateTime.parse(@date_metric_result_hash[:date]), assigns(:history).first.date | ||
45 | + assert_response :success | ||
46 | + #TODO assert_select | ||
47 | + end | ||
48 | + | ||
49 | + should 'get module result history' do | ||
50 | + Kalibro::ModuleResult.expects(:request).with(:history_of_module, { :module_result_id => @module_result_hash[:id].to_i }). | ||
51 | + returns({:date_module_result => @date_module_result_hash}) | ||
52 | + get :module_result_history, :profile => @profile.identifier, :module_result_id => @module_result_hash[:id] | ||
53 | + assert_equal DateTime.parse(@date_module_result_hash[:date]), assigns(:history).first.date | ||
54 | + assert_response :success | ||
55 | + #TODO assert_select | ||
56 | + end | ||
57 | + | ||
58 | +end |
plugins/mezuro/test/functional/profile/mezuro_plugin_processing_controller_test.rb
0 → 100644
@@ -0,0 +1,60 @@ | @@ -0,0 +1,60 @@ | ||
1 | +require 'test_helper' | ||
2 | + | ||
3 | +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/processing_fixtures" | ||
4 | +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/throwable_fixtures" | ||
5 | +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/repository_fixtures" | ||
6 | + | ||
7 | + | ||
8 | +class MezuroPluginProcessingControllerTest < ActionController::TestCase | ||
9 | + def setup | ||
10 | + @controller = MezuroPluginProcessingController.new | ||
11 | + @request = ActionController::TestRequest.new | ||
12 | + @response = ActionController::TestResponse.new | ||
13 | + @profile = fast_create(Community) | ||
14 | + | ||
15 | + @repository_id = RepositoryFixtures.repository.id | ||
16 | + @processing = ProcessingFixtures.processing | ||
17 | + @processing_hash = ProcessingFixtures.processing_hash | ||
18 | + @processing_with_error_hash = ProcessingFixtures.processing_with_error_hash | ||
19 | + end | ||
20 | + | ||
21 | + should 'render last processing state' do | ||
22 | + Kalibro::Processing.expects(:processing_of).with(@repository_id).returns(@processing) | ||
23 | + get :state, :profile => @profile.identifier, :repository_id => @repository_id | ||
24 | + assert_response :success | ||
25 | + assert_equal @processing.state, @response.body | ||
26 | + end | ||
27 | + | ||
28 | + should 'render a processing state in a specific date' do | ||
29 | + Kalibro::Processing.expects(:processing_with_date_of).with(@repository_id, @processing.date).returns(@processing) | ||
30 | + get :state, :profile => @profile.identifier, :repository_id => @repository_id, :date => @processing.date | ||
31 | + assert_response :success | ||
32 | + assert_equal @processing.state, @response.body | ||
33 | + end | ||
34 | + | ||
35 | + should 'render processing with error' do | ||
36 | + Kalibro::Processing.expects(:request).with(:has_ready_processing, {:repository_id => @repository_id}).returns({:exists => false}) | ||
37 | + Kalibro::Processing.expects(:request).with(:last_processing, :repository_id => @repository_id).returns({:processing => @processing_with_error_hash}) | ||
38 | + get :processing, :profile => @profile.identifier, :repository_id => @repository_id | ||
39 | + assert_response :success | ||
40 | + assert_equal @processing_with_error_hash[:state], assigns(:processing).state | ||
41 | + #TODO How to assert from view? assert_select('h3', 'ERROR') | ||
42 | + end | ||
43 | + | ||
44 | + should 'test project result without date' do | ||
45 | + Kalibro::Processing.expects(:request).with(:has_ready_processing, {:repository_id => @repository_id}).returns({:exists => true}) | ||
46 | + Kalibro::Processing.expects(:request).with(:last_ready_processing, {:repository_id => @repository_id}).returns({:processing => @processing_hash}) | ||
47 | + get :processing, :profile => @profile.identifier, :repository_id => @repository_id | ||
48 | + assert_response :success | ||
49 | + assert_select('h4', 'Last Result') | ||
50 | + end | ||
51 | + | ||
52 | + should 'test project results from a specific date' do | ||
53 | + Kalibro::Processing.expects(:request).with(:has_processing_after, {:repository_id => @repository_id, :date => @processing.date}).returns({:exists => true}) | ||
54 | + Kalibro::Processing.expects(:request).with(:first_processing_after, :repository_id => @repository_id, :date => @processing.date).returns({:processing => @processing_hash}) | ||
55 | + get :processing, :profile => @profile.identifier, :repository_id => @repository_id, :date => @processing.date | ||
56 | + assert_response :success | ||
57 | + assert_select('h4', 'Last Result') | ||
58 | + end | ||
59 | + | ||
60 | +end |
plugins/mezuro/test/functional/profile/mezuro_plugin_project_controller_test.rb
@@ -1,92 +0,0 @@ | @@ -1,92 +0,0 @@ | ||
1 | -require 'test_helper' | ||
2 | - | ||
3 | -require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/project_result_fixtures" | ||
4 | -require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/error_fixtures" | ||
5 | -require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/repository_fixtures" | ||
6 | - | ||
7 | -class MezuroPluginProjectControllerTest < ActionController::TestCase | ||
8 | - def setup | ||
9 | - @controller = MezuroPluginProjectController.new | ||
10 | - @request = ActionController::TestRequest.new | ||
11 | - @response = ActionController::TestResponse.new | ||
12 | - @profile = fast_create(Community) | ||
13 | - | ||
14 | - @project_result = ProjectResultFixtures.project_result | ||
15 | - @repository_url = RepositoryFixtures.repository.address | ||
16 | - @project = @project_result.project | ||
17 | - @date = "2012-04-13T20:39:41+04:00" | ||
18 | - | ||
19 | - Kalibro::Project.expects(:all_names).returns([]) | ||
20 | - @content = MezuroPlugin::ProjectContent.new(:profile => @profile, :name => @project.name, :repository_url => @repository_url) | ||
21 | - @content.expects(:send_project_to_service).returns(nil) | ||
22 | - @content.save | ||
23 | - end | ||
24 | - | ||
25 | - should 'test project state without kalibro_error' do | ||
26 | - Kalibro::Project.expects(:request).with("Project", :get_project, :project_name => @project.name).returns({:project => @project.to_hash}) | ||
27 | - get :project_state, :profile => @profile.identifier, :id => @content.id | ||
28 | - assert_response 200 | ||
29 | - assert_equal @content, assigns(:content) | ||
30 | - end | ||
31 | - | ||
32 | - should 'test project state with kalibro_error' do | ||
33 | - Kalibro::Project.expects(:request).with("Project", :get_project, :project_name => @project.name).returns({:project => @project.to_hash.merge({:error => ErrorFixtures.error_hash})}) | ||
34 | - get :project_state, :profile => @profile.identifier, :id => @content.id | ||
35 | - assert_response 200 | ||
36 | - assert_equal "ERROR", @response.body | ||
37 | - assert_equal @content, assigns(:content) | ||
38 | - end | ||
39 | - | ||
40 | - should 'test project error' do | ||
41 | - Kalibro::Project.expects(:request).with("Project", :get_project, :project_name => @project.name).returns({:project => @project.to_hash.merge({:error => ErrorFixtures.error_hash})}) | ||
42 | - get :project_error, :profile => @profile.identifier, :id => @content.id | ||
43 | - assert_response 200 | ||
44 | - assert_select('h3', 'ERROR') | ||
45 | - assert_equal @content, assigns(:content) | ||
46 | - assert_equal @project.name, assigns(:project).name | ||
47 | - end | ||
48 | - | ||
49 | - should 'test project result without date' do | ||
50 | - Kalibro::ProjectResult.expects(:request).with("ProjectResult", :get_last_result_of, {:project_name => @project.name}).returns({:project_result => @project_result.to_hash}) | ||
51 | - get :project_result, :profile => @profile.identifier, :id => @content.id, :date => nil | ||
52 | - assert_equal @content, assigns(:content) | ||
53 | - assert_equal @project_result.project.name, assigns(:project_result).project.name | ||
54 | - assert_response 200 | ||
55 | - assert_select('h4', 'Last Result') | ||
56 | - end | ||
57 | - | ||
58 | - should 'test project results from a specific date' do | ||
59 | - request_body = {:project_name => @project.name, :date => @date} | ||
60 | - Kalibro::ProjectResult.expects(:request).with("ProjectResult", :has_results_before, request_body).returns({:has_results => true}) | ||
61 | - Kalibro::ProjectResult.expects(:request).with("ProjectResult", :get_last_result_before, request_body).returns({:project_result => @project_result.to_hash}) | ||
62 | - get :project_result, :profile => @profile.identifier, :id => @content.id, :date => @date | ||
63 | - assert_equal @content, assigns(:content) | ||
64 | - assert_equal @project_result.project.name, assigns(:project_result).project.name | ||
65 | - assert_response 200 | ||
66 | - assert_select('h4', 'Last Result') | ||
67 | - end | ||
68 | - | ||
69 | - should 'test project tree without date' do | ||
70 | - Kalibro::ProjectResult.expects(:request).with("ProjectResult", :get_last_result_of, {:project_name => @project.name}).returns({:project_result => @project_result.to_hash}) | ||
71 | - Kalibro::Project.expects(:request).with("Project", :get_project, :project_name => @project.name).returns({:project => @project.to_hash}) | ||
72 | - get :project_tree, :profile => @profile.identifier, :id => @content.id, :module_name => @project.name, :date => nil | ||
73 | - assert_equal @content, assigns(:content) | ||
74 | - assert_equal @project.name, assigns(:project_name) | ||
75 | - assert_equal @project_result.source_tree.module.name, assigns(:source_tree).module.name | ||
76 | - assert_response 200 | ||
77 | - assert_select('h2', /Qt-Calculator/) | ||
78 | - end | ||
79 | - | ||
80 | - should 'test project tree with a specific date' do | ||
81 | - request_body = {:project_name => @project.name, :date => @project_result.date} | ||
82 | - Kalibro::Project.expects(:request).with("Project", :get_project, :project_name => @project.name).returns({:project => @project.to_hash}) | ||
83 | - Kalibro::ProjectResult.expects(:request).with("ProjectResult", :has_results_before, request_body).returns({:has_results => true}) | ||
84 | - Kalibro::ProjectResult.expects(:request).with("ProjectResult", :get_last_result_before, request_body).returns({:project_result => @project_result.to_hash}) | ||
85 | - get :project_tree, :profile => @profile.identifier, :id => @content.id, :module_name => @project.name, :date => @project_result.date | ||
86 | - assert_equal @content, assigns(:content) | ||
87 | - assert_equal @project.name, assigns(:project_name) | ||
88 | - assert_equal @project_result.source_tree.module.name, assigns(:source_tree).module.name | ||
89 | - assert_response 200 | ||
90 | - end | ||
91 | - | ||
92 | -end |
plugins/mezuro/test/functional/profile/mezuro_plugin_repository_controller_test.rb
0 → 100644
@@ -0,0 +1,104 @@ | @@ -0,0 +1,104 @@ | ||
1 | +require 'test_helper' | ||
2 | + | ||
3 | +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/processing_fixtures" | ||
4 | +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/throwable_fixtures" | ||
5 | +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/repository_fixtures" | ||
6 | +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/project_content_fixtures" | ||
7 | +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/configuration_fixtures" | ||
8 | + | ||
9 | +class MezuroPluginRepositoryControllerTest < ActionController::TestCase | ||
10 | + | ||
11 | + def setup | ||
12 | + @controller = MezuroPluginRepositoryController.new | ||
13 | + @request = ActionController::TestRequest.new | ||
14 | + @response = ActionController::TestResponse.new | ||
15 | + @profile = fast_create(Community) | ||
16 | + | ||
17 | + @configuration = ConfigurationFixtures.configuration | ||
18 | + @repository_types = RepositoryFixtures.types | ||
19 | + @all_configurations = ConfigurationFixtures.all | ||
20 | + @repository = RepositoryFixtures.repository | ||
21 | + @repository_hash = RepositoryFixtures.hash | ||
22 | + @content = MezuroPlugin::ProjectContent.new(:profile => @profile, :name => name) | ||
23 | + @content.expects(:send_project_to_service).returns(nil) | ||
24 | + @content.stubs(:solr_save) | ||
25 | + @content.save | ||
26 | + end | ||
27 | + | ||
28 | + should 'set variables to create a new repository' do | ||
29 | + Kalibro::Repository.expects(:repository_types).returns(@repository_types) | ||
30 | + Kalibro::Configuration.expects(:all).returns(@all_configurations) | ||
31 | + | ||
32 | + get :new, :profile => @profile.identifier, :id => @content.id | ||
33 | + | ||
34 | + assert_equal @content.id, assigns(:project_content).id | ||
35 | + assert_equal @repository_types, assigns(:repository_types) | ||
36 | + assert_equal @all_configurations.first.name, assigns(:configuration_select).first.first | ||
37 | + assert_equal @all_configurations.first.id, assigns(:configuration_select).first.last | ||
38 | + assert_response :success | ||
39 | + end | ||
40 | + | ||
41 | + should 'save a repository' do | ||
42 | + Kalibro::Repository.expects(:new).returns(@repository) | ||
43 | + @repository.expects(:save).with(@content.project_id).returns(true) | ||
44 | + @repository.expects(:process) | ||
45 | + get :save, :profile => @profile.identifier, :id => @content.id, :repository => @repository_hash | ||
46 | + assert @repository.errors.empty? | ||
47 | + assert_response :redirect | ||
48 | + end | ||
49 | + | ||
50 | + should 'not save a repository' do | ||
51 | + @repository.errors = [Exception.new] | ||
52 | + Kalibro::Repository.expects(:new).returns(@repository) | ||
53 | + @repository.expects(:save).with(@content.project_id).returns(false) | ||
54 | + get :save, :profile => @profile.identifier, :id => @content.id, :repository => @repository_hash | ||
55 | + assert !@repository.errors.empty? | ||
56 | + assert_response :redirect | ||
57 | + end | ||
58 | + | ||
59 | + should 'set variables to edit a repository' do | ||
60 | + Kalibro::Repository.expects(:repository_types).returns(@repository_types) | ||
61 | + Kalibro::Configuration.expects(:all).returns(@all_configurations) | ||
62 | + Kalibro::Repository.expects(:repositories_of).with(@content.project_id).returns([@repository]) | ||
63 | + | ||
64 | + get :edit, :profile => @profile.identifier, :id => @content.id, :repository_id => @repository.id | ||
65 | + | ||
66 | + assert_equal @content.id, assigns(:project_content).id | ||
67 | + assert_equal @repository_types, assigns(:repository_types) | ||
68 | + assert_equal @all_configurations.first.name, assigns(:configuration_select).first.first | ||
69 | + assert_equal @all_configurations.first.id, assigns(:configuration_select).first.last | ||
70 | + assert_equal @repository, assigns(:repository) | ||
71 | + assert_response :success | ||
72 | + end | ||
73 | + | ||
74 | + should 'set variables to show a repository' do | ||
75 | + Kalibro::Repository.expects(:repositories_of).with(@content.project_id).returns([@repository]) | ||
76 | + Kalibro::Configuration.expects(:configuration_of).with(@repository.id).returns(@configuration) | ||
77 | + | ||
78 | + get :show, :profile => @profile.identifier, :id => @content.id, :repository_id => @repository.id | ||
79 | + | ||
80 | + assert_equal @content.id, assigns(:project_content).id | ||
81 | + assert_equal @repository, assigns(:repository) | ||
82 | + assert_equal @configuration.name, assigns(:configuration_name) | ||
83 | + assert_response :success | ||
84 | + end | ||
85 | + | ||
86 | + should 'destroy a repository' do | ||
87 | + Kalibro::Repository.expects(:new).with(:id => @repository.id.to_s).returns(@repository) | ||
88 | + @repository.expects(:destroy) | ||
89 | + get :destroy, :profile => @profile.identifier, :id => @content.id, :repository_id => @repository.id | ||
90 | + | ||
91 | + assert @repository.errors.empty? | ||
92 | + assert_response :redirect | ||
93 | + end | ||
94 | + | ||
95 | + should 'not destroy a repository' do | ||
96 | + @repository.errors = [Exception.new] | ||
97 | + Kalibro::Repository.expects(:new).with(:id => @repository.id.to_s).returns(@repository) | ||
98 | + @repository.expects(:destroy) | ||
99 | + get :destroy, :profile => @profile.identifier, :id => @content.id, :repository_id => @repository.id | ||
100 | + | ||
101 | + #TODO verify if it is redirected to the right page | ||
102 | + assert_response :redirect | ||
103 | + end | ||
104 | +end |
@@ -0,0 +1,42 @@ | @@ -0,0 +1,42 @@ | ||
1 | +#!/bin/bash | ||
2 | + | ||
3 | +TEST_FILE=$1 | ||
4 | +PROFILE=$2 | ||
5 | + | ||
6 | +if [ -z "$PROFILE" ]; then | ||
7 | + PROFILE='default' | ||
8 | +fi | ||
9 | + | ||
10 | +# where are your .kalibro dir? | ||
11 | +KALIBRO_HOME='/usr/share/tomcat6/.kalibro' | ||
12 | + | ||
13 | +# create a kalibro test dir | ||
14 | +echo "--> Creating tests directory" | ||
15 | +sudo mkdir $KALIBRO_HOME/tests | ||
16 | +echo "--> Copying test settings" | ||
17 | +sudo cp $KALIBRO_HOME/kalibro_tests.settings $KALIBRO_HOME/tests/kalibro.settings | ||
18 | +echo "--> Changing owner of tests directory to tomcat6" | ||
19 | +sudo chown -R tomcat6:tomcat6 $KALIBRO_HOME/tests | ||
20 | + | ||
21 | +# you must restart tomcat6 | ||
22 | +#if you are using a tomcat installed from apt-get, for example: | ||
23 | +sudo service tomcat6 restart | ||
24 | + | ||
25 | +#if you are using a tomcat installed a specific dir, for exemple: | ||
26 | +#~/tomcat6/bin/shoutdown.sh | ||
27 | +#~/tomcat6/bin/startup.sh | ||
28 | + | ||
29 | +# run test | ||
30 | +cucumber $TEST_FILE -p $PROFILE | ||
31 | + | ||
32 | +#back to normal mode | ||
33 | +echo "--> Removing tests directory" | ||
34 | +sudo rm -rf $KALIBRO_HOME/tests | ||
35 | + | ||
36 | +# you must restart tomcat6 again | ||
37 | +sudo service tomcat6 restart | ||
38 | + | ||
39 | +#or some thing like that... | ||
40 | +#~/tomcat6/bin/shoutdown.sh | ||
41 | +#~/tomcat6/bin/startup.sh | ||
42 | + |