Commit 25ebd3b10093fa96800ae2712872cc1467f85138
Committed by
João M. M. da Silva
1 parent
55a9a0db
Exists in
master
and in
29 other branches
[Mezuro] processing action in processing controller
Showing
11 changed files
with
91 additions
and
147 deletions
Show diff stats
plugins/mezuro/controllers/profile/mezuro_plugin_processing_controller.rb
@@ -8,22 +8,13 @@ class MezuroPluginProcessingController < MezuroPluginProfileController | @@ -8,22 +8,13 @@ class MezuroPluginProcessingController < MezuroPluginProfileController | ||
8 | render :text => last_state | 8 | render :text => last_state |
9 | end | 9 | end |
10 | 10 | ||
11 | - def processing_error | ||
12 | - @content = profile.articles.find(params[:id]) | ||
13 | - @processing = @content.processing | ||
14 | - if project_content_has_errors? | ||
15 | - redirect_to_error_page(@content.errors[:base]) | ||
16 | - else | ||
17 | - render :partial => 'processing_error' | ||
18 | - end | ||
19 | - end | ||
20 | - | ||
21 | def processing | 11 | def processing |
22 | - @content = profile.articles.find(params[:id]) | ||
23 | date = params[:date] | 12 | date = params[:date] |
24 | - @processing = date.nil? ? @content.processing : @content.processing_with_date(date) | ||
25 | - if project_content_has_errors? | ||
26 | - redirect_to_error_page(@content.errors[:base]) | 13 | + repository_id = params[:repository_id].to_i |
14 | + processing_class = Kalibro::Processing | ||
15 | + @processing = date.nil? ? processing_class.processing_of(repository_id) : processing_class.processing_with_date_of(repository_id, date) | ||
16 | + if @processing.state == 'ERROR' | ||
17 | + render :partial => 'processing_error' | ||
27 | else | 18 | else |
28 | render :partial => 'processing' | 19 | render :partial => 'processing' |
29 | end | 20 | end |
plugins/mezuro/lib/kalibro/processing.rb
@@ -6,7 +6,7 @@ class Kalibro::Processing < Kalibro::Model | @@ -6,7 +6,7 @@ class Kalibro::Processing < Kalibro::Model | ||
6 | def self.processing_of(repository_id) | 6 | def self.processing_of(repository_id) |
7 | if has_ready_processing(repository_id) | 7 | if has_ready_processing(repository_id) |
8 | last_ready_processing_of(repository_id) | 8 | last_ready_processing_of(repository_id) |
9 | - else | 9 | + else #always exists a processing, we send a requisition to kalibro to process repository |
10 | last_processing_of(repository_id) | 10 | last_processing_of(repository_id) |
11 | end | 11 | end |
12 | end | 12 | end |
@@ -37,6 +37,10 @@ class Kalibro::Processing < Kalibro::Model | @@ -37,6 +37,10 @@ class Kalibro::Processing < Kalibro::Model | ||
37 | process_time | 37 | process_time |
38 | end | 38 | end |
39 | 39 | ||
40 | + def error=(value) | ||
41 | + @error = Kalibro::Throwable.to_object value | ||
42 | + end | ||
43 | + | ||
40 | private | 44 | private |
41 | 45 | ||
42 | def self.has_processing(repository_id) | 46 | def self.has_processing(repository_id) |
plugins/mezuro/test/fixtures/processing_fixtures.rb
1 | require File.dirname(__FILE__) + '/process_time_fixtures' | 1 | require File.dirname(__FILE__) + '/process_time_fixtures' |
2 | +require File.dirname(__FILE__) + '/throwable_fixtures' | ||
2 | 3 | ||
3 | class ProcessingFixtures | 4 | class ProcessingFixtures |
4 | 5 | ||
5 | def self.processing | 6 | def self.processing |
6 | Kalibro::Processing.new processing_hash | 7 | Kalibro::Processing.new processing_hash |
7 | end | 8 | end |
8 | - | 9 | + |
9 | def self.processing_hash | 10 | def self.processing_hash |
10 | { | 11 | { |
11 | :id => 31, | 12 | :id => 31, |
12 | :date => '2011-10-20T18:26:43.151+00:00', | 13 | :date => '2011-10-20T18:26:43.151+00:00', |
13 | :state => 'READY', | 14 | :state => 'READY', |
14 | :process_time => [ProcessTimeFixtures.process_time_hash], | 15 | :process_time => [ProcessTimeFixtures.process_time_hash], |
15 | - :results_root_id => 13 | 16 | + :results_root_id => 13 |
16 | } | 17 | } |
17 | end | 18 | end |
18 | - | 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 | + | ||
19 | end | 30 | end |
plugins/mezuro/test/functional/profile/mezuro_plugin_processing_controller_test.rb
@@ -12,9 +12,10 @@ class MezuroPluginProcessingControllerTest < ActionController::TestCase | @@ -12,9 +12,10 @@ class MezuroPluginProcessingControllerTest < ActionController::TestCase | ||
12 | @response = ActionController::TestResponse.new | 12 | @response = ActionController::TestResponse.new |
13 | @profile = fast_create(Community) | 13 | @profile = fast_create(Community) |
14 | 14 | ||
15 | - @repository = RepositoryFixtures.repository | 15 | + @repository_id = RepositoryFixtures.repository.id |
16 | @processing = ProcessingFixtures.processing | 16 | @processing = ProcessingFixtures.processing |
17 | - | 17 | + @processing_hash = ProcessingFixtures.processing_hash |
18 | + @processing_with_error_hash = ProcessingFixtures.processing_with_error_hash | ||
18 | =begin | 19 | =begin |
19 | @content = MezuroPlugin::ProjectContent.new(:profile => @profile, :name => @project.name, :repository_url => @repository_url) | 20 | @content = MezuroPlugin::ProjectContent.new(:profile => @profile, :name => @project.name, :repository_url => @repository_url) |
20 | @content.expects(:send_project_to_service).returns(nil) | 21 | @content.expects(:send_project_to_service).returns(nil) |
@@ -26,51 +27,40 @@ class MezuroPluginProcessingControllerTest < ActionController::TestCase | @@ -26,51 +27,40 @@ class MezuroPluginProcessingControllerTest < ActionController::TestCase | ||
26 | end | 27 | end |
27 | 28 | ||
28 | should 'render last processing state' do | 29 | should 'render last processing state' do |
29 | - Kalibro::Processing.expects(:request).with(:last_processing_state, :repository_id => @repository.id).returns({:process_state => @processing.state}) | ||
30 | - get :render_last_state, :profile => @profile.identifier, :repository_id => @repository.id | 30 | + Kalibro::Processing.expects(:request).with(:last_processing_state, :repository_id => @repository_id).returns({:process_state => @processing.state}) |
31 | + get :render_last_state, :profile => @profile.identifier, :repository_id => @repository_id | ||
31 | assert_response 200 | 32 | assert_response 200 |
32 | assert_equal @processing.state, @response.body | 33 | assert_equal @processing.state, @response.body |
33 | end | 34 | end |
34 | 35 | ||
35 | -#TODO refatorar todos os testes | ||
36 | -=begin | ||
37 | - should 'test project state with kalibro_error' do | ||
38 | - Kalibro::Project.expects(:request).with("Project", :get_project, :project_name => @project.name).returns({:project => @project.to_hash.merge({:error => ThrowableFixtures.throwable_hash})}) | ||
39 | - get :project_state, :profile => @profile.identifier, :id => @content.id | ||
40 | - assert_response 200 | ||
41 | - assert_equal "ERROR", @response.body | ||
42 | - assert_equal @content, assigns(:content) | ||
43 | - end | ||
44 | 36 | ||
45 | - should 'test project error' do | ||
46 | - Kalibro::Project.expects(:request).with("Project", :get_project, :project_name => @project.name).returns({:project => @project.to_hash.merge({:error => ThrowableFixtures.throwable_hash})}) | ||
47 | - get :project_error, :profile => @profile.identifier, :id => @content.id | 37 | + should 'render processing with error' do |
38 | + Kalibro::Processing.expects(:request).with(:has_ready_processing, {:repository_id => @repository_id}).returns({:exists => false}) | ||
39 | + Kalibro::Processing.expects(:request).with(:last_processing, :repository_id => @repository_id).returns({:processing => @processing_with_error_hash}) | ||
40 | + get :processing, :profile => @profile.identifier, :repository_id => @repository_id | ||
48 | assert_response 200 | 41 | assert_response 200 |
49 | - assert_select('h3', 'ERROR') | ||
50 | - assert_equal @content, assigns(:content) | ||
51 | - assert_equal @project.name, assigns(:project).name | 42 | + assert_equal @processing_with_error_hash[:state], assigns(:processing).state |
43 | + #TODO How to assert from view? assert_select('h3', 'ERROR') | ||
52 | end | 44 | end |
53 | 45 | ||
54 | should 'test project result without date' do | 46 | should 'test project result without date' do |
55 | - Kalibro::Processing.expects(:request).with("Processing", :get_last_result_of, {:project_name => @project.name}).returns({:project_result => @project_result.to_hash}) | ||
56 | - get :project_result, :profile => @profile.identifier, :id => @content.id, :date => nil | ||
57 | - assert_equal @content, assigns(:content) | ||
58 | - assert_equal @project_result.project.name, assigns(:project_result).project.name | 47 | + Kalibro::Processing.expects(:request).with(:has_ready_processing, {:repository_id => @repository_id}).returns({:exists => true}) |
48 | + Kalibro::Processing.expects(:request).with(:last_ready_processing, {:repository_id => @repository_id}).returns({:processing => @processing_hash}) | ||
49 | + get :processing, :profile => @profile.identifier, :repository_id => @repository_id | ||
59 | assert_response 200 | 50 | assert_response 200 |
60 | assert_select('h4', 'Last Result') | 51 | assert_select('h4', 'Last Result') |
61 | end | 52 | end |
62 | 53 | ||
63 | should 'test project results from a specific date' do | 54 | should 'test project results from a specific date' do |
64 | - request_body = {:project_name => @project.name, :date => @date} | ||
65 | - Kalibro::Processing.expects(:request).with("Processing", :has_results_before, request_body).returns({:has_results => true}) | ||
66 | - Kalibro::Processing.expects(:request).with("Processing", :get_last_result_before, request_body).returns({:project_result => @project_result.to_hash}) | ||
67 | - get :project_result, :profile => @profile.identifier, :id => @content.id, :date => @date | ||
68 | - assert_equal @content, assigns(:content) | ||
69 | - assert_equal @project_result.project.name, assigns(:project_result).project.name | 55 | + Kalibro::Processing.expects(:request).with(:has_processing_after, {:repository_id => @repository_id, :date => @processing.date}).returns({:exists => true}) |
56 | + Kalibro::Processing.expects(:request).with(:first_processing_after, :repository_id => @repository_id, :date => @processing.date).returns({:processing => @processing_hash}) | ||
57 | + get :processing, :profile => @profile.identifier, :repository_id => @repository_id, :date => @processing.date | ||
70 | assert_response 200 | 58 | assert_response 200 |
71 | assert_select('h4', 'Last Result') | 59 | assert_select('h4', 'Last Result') |
72 | end | 60 | end |
73 | 61 | ||
62 | +#TODO refatorar todos os testes | ||
63 | +=begin | ||
74 | should 'test project tree without date' do | 64 | should 'test project tree without date' do |
75 | Kalibro::Processing.expects(:request).with("Processing", :get_last_result_of, {:project_name => @project.name}).returns({:project_result => @project_result.to_hash}) | 65 | Kalibro::Processing.expects(:request).with("Processing", :get_last_result_of, {:project_name => @project.name}).returns({:project_result => @project_result.to_hash}) |
76 | Kalibro::Project.expects(:request).with("Project", :get_project, :project_name => @project.name).returns({:project => @project.to_hash}) | 66 | Kalibro::Project.expects(:request).with("Project", :get_project, :project_name => @project.name).returns({:project => @project.to_hash}) |
plugins/mezuro/views/mezuro_plugin_processing/_error_page.html.erb
0 → 100644
plugins/mezuro/views/mezuro_plugin_processing/_processing.rhtml
0 → 100644
@@ -0,0 +1,34 @@ | @@ -0,0 +1,34 @@ | ||
1 | +<div id="current_processing_date" data-date="<%= @processing.date %>"/> | ||
2 | + | ||
3 | +<h4><%= _('Last Result') %></h4> | ||
4 | + | ||
5 | +<table> | ||
6 | + <tr> | ||
7 | + <td><%= _('Date') %></td> | ||
8 | + <td><%= @processing.date %></td> | ||
9 | + </tr> | ||
10 | + <% @processing.process_time.each do |process_time| %> | ||
11 | + <tr> | ||
12 | + <td><%= _(process_time.state + ' time') %></td> | ||
13 | + <td><%= process_time.time %></td> | ||
14 | + </tr> | ||
15 | + <% end %> | ||
16 | + <tr> | ||
17 | + <td>Click to choose specific date:</td> | ||
18 | + <td><%= link_to(image_tag('/images/calendar_date_select/calendar.png', :width => 20, :height => 20, :onClick => "$( 'datepicker' ).toggle();"), "javascript:void(0)") %></td> | ||
19 | + </tr> | ||
20 | +</table> | ||
21 | + | ||
22 | +<div id="datepicker"></div> | ||
23 | + | ||
24 | +<script> | ||
25 | + jQuery(document).ready(function($) { | ||
26 | + $("#datepicker").datepicker({ | ||
27 | + onSelect: function(dateText, inst) { | ||
28 | + reloadProjectWithDate(dateText) } }); | ||
29 | + $("#datepicker").toggle(); | ||
30 | + var date = jQuery("#current_processing_date").attr('data-date').substr(0,10); | ||
31 | + $("#datepicker").datepicker( "setDate" , date ); | ||
32 | + | ||
33 | + }); | ||
34 | +</script> |
plugins/mezuro/views/mezuro_plugin_processing/_processing_error.rhtml
0 → 100644
@@ -0,0 +1,12 @@ | @@ -0,0 +1,12 @@ | ||
1 | +<h3><%= _('ERROR') %></h3> | ||
2 | +<p> | ||
3 | + <%= "State when error ocurred: #{@processing.state}" %> | ||
4 | + <br/> | ||
5 | + <% error = @processing.error %> | ||
6 | + <%= error.message %> | ||
7 | +<ul> | ||
8 | + <% error.stack_trace.each do |trace| %> | ||
9 | + <li><%= "#{trace.declaring_class}.#{trace.method_name}(#{trace.file_name}:#{trace.line_number})" %></li> | ||
10 | + <% end %> | ||
11 | +</ul> | ||
12 | +</p> |
plugins/mezuro/views/mezuro_plugin_project/_error_page.html.erb
plugins/mezuro/views/mezuro_plugin_project/_project_error.rhtml
@@ -1,12 +0,0 @@ | @@ -1,12 +0,0 @@ | ||
1 | -<h3><%= _('ERROR') %></h3> | ||
2 | -<p> | ||
3 | - <%= "State when error ocurred: #{@project.state}" %> | ||
4 | - <br/> | ||
5 | - <% error = @project.kalibro_error %> | ||
6 | - <%= error.message %> | ||
7 | -<ul> | ||
8 | - <% error.stack_trace.each do |trace| %> | ||
9 | - <li><%= "#{trace.declaring_class}.#{trace.method_name}(#{trace.file_name}:#{trace.line_number})" %></li> | ||
10 | - <% end %> | ||
11 | -</ul> | ||
12 | -</p> |
plugins/mezuro/views/mezuro_plugin_project/_project_result.rhtml
@@ -1,41 +0,0 @@ | @@ -1,41 +0,0 @@ | ||
1 | -<% unless @content.errors[:base].nil? %> | ||
2 | - <%= @content.errors[:base] %> | ||
3 | -<% else %> | ||
4 | - <div id="current_project_date" data-date="<%= @project_result.date %>"/> | ||
5 | - | ||
6 | - <h4><%= _('Last Result') %></h4> | ||
7 | - | ||
8 | - <table> | ||
9 | - <tr> | ||
10 | - <td><%= _('Date') %></td> | ||
11 | - <td><%= @project_result.date %></td> | ||
12 | - </tr> | ||
13 | - <tr> | ||
14 | - <td><%= _('Load time') %></td> | ||
15 | - <td><%= @project_result.formatted_load_time %></td> | ||
16 | - </tr> | ||
17 | - <tr> | ||
18 | - <td><%= _('Analysis time') %></td> | ||
19 | - <td><%= @project_result.formatted_analysis_time %></td> | ||
20 | - </tr> | ||
21 | - <tr> | ||
22 | - <td>Click to choose specific date:</td> | ||
23 | - <td><%= link_to(image_tag('/images/calendar_date_select/calendar.png', :width => 20, :height => 20, :onClick => "$( 'datepicker' ).toggle();"), "javascript:void(0)") %></td> | ||
24 | - </tr> | ||
25 | - </table> | ||
26 | - | ||
27 | - <div id="datepicker"></div> | ||
28 | - | ||
29 | - <script> | ||
30 | - jQuery(document).ready(function($) { | ||
31 | - $("#datepicker").datepicker({ | ||
32 | - onSelect: function(dateText, inst) { | ||
33 | - reloadProjectWithDate(dateText) } }); | ||
34 | - $("#datepicker").toggle(); | ||
35 | - var date = jQuery("#current_project_date").attr('data-date').substr(0,10); | ||
36 | - $("#datepicker").datepicker( "setDate" , date ); | ||
37 | - | ||
38 | - }); | ||
39 | - </script> | ||
40 | - | ||
41 | -<% end %> |
plugins/mezuro/views/mezuro_plugin_project/_source_tree.rhtml
@@ -1,45 +0,0 @@ | @@ -1,45 +0,0 @@ | ||
1 | -<% unless @content.errors[:base].nil? %> | ||
2 | - <%= @content.errors[:base] %> | ||
3 | -<% else %> | ||
4 | - <h4><%= _('Source tree') %></h4> | ||
5 | - <% module_name = @source_tree.module.name %> | ||
6 | - <% module_label = "#{module_name} (#{@source_tree.module.granularity})" %> | ||
7 | - | ||
8 | - <p><h2 class="path"> | ||
9 | - <% if module_name != @project_name %> | ||
10 | - <a href="#" class="source-tree-link" data-module-name="<%= @project_name %>"> | ||
11 | - <%= @project_name %> | ||
12 | - </a> | ||
13 | - <% end %> | ||
14 | - | ||
15 | - | ||
16 | - <% split_link = @source_tree.module.ancestor_names %> | ||
17 | - <% split_link.each do |link| %> | ||
18 | - /<a href="#" class="source-tree-link" data-module-name="<%= link %>"> | ||
19 | - <%= link.split(".").last %> | ||
20 | - </a> | ||
21 | - <% end %> | ||
22 | - </h2></p> | ||
23 | - | ||
24 | - <% if @source_tree.children %> | ||
25 | - <table border="0" class="source-tree"> | ||
26 | - <% @source_tree.children.each do |child| %> | ||
27 | - <% if child.module.granularity=='PACKAGE' %> | ||
28 | - <tr> | ||
29 | - <td class="icon"><%= image_tag('/plugins/mezuro/images/folder.png')%></td> | ||
30 | - <td class="source-tree-text"><a href='#' class="source-tree-link" data-module-name="<%= child.module.name %>"><%= child.module.name %></a></td> | ||
31 | - </tr> | ||
32 | - <% else %> | ||
33 | - <tr> | ||
34 | - <td class="icon"><%= image_tag('/plugins/mezuro/images/file.png') %></td> | ||
35 | - <td class="source-tree-text"> | ||
36 | - <a href='#' class="source-tree-link" data-module-name="<%= child.module.name %>"> | ||
37 | - <%= child.module.name %> | ||
38 | - </a> | ||
39 | - </td> | ||
40 | - </tr> | ||
41 | - <% end %> | ||
42 | - <% end %> | ||
43 | - </table> | ||
44 | - <% end %> | ||
45 | -<% end %> |