Commit 25ebd3b10093fa96800ae2712872cc1467f85138

Authored by João M. M. da Silva + Alessandro Palmeira
Committed by João M. M. da Silva
1 parent 55a9a0db

[Mezuro] processing action in processing controller

plugins/mezuro/controllers/profile/mezuro_plugin_processing_controller.rb
... ... @@ -8,22 +8,13 @@ class MezuroPluginProcessingController < MezuroPluginProfileController
8 8 render :text => last_state
9 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 11 def processing
22   - @content = profile.articles.find(params[:id])
23 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 18 else
28 19 render :partial => 'processing'
29 20 end
... ...
plugins/mezuro/lib/kalibro/processing.rb
... ... @@ -6,7 +6,7 @@ class Kalibro::Processing < Kalibro::Model
6 6 def self.processing_of(repository_id)
7 7 if has_ready_processing(repository_id)
8 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 10 last_processing_of(repository_id)
11 11 end
12 12 end
... ... @@ -37,6 +37,10 @@ class Kalibro::Processing < Kalibro::Model
37 37 process_time
38 38 end
39 39  
  40 + def error=(value)
  41 + @error = Kalibro::Throwable.to_object value
  42 + end
  43 +
40 44 private
41 45  
42 46 def self.has_processing(repository_id)
... ...
plugins/mezuro/test/fixtures/processing_fixtures.rb
1 1 require File.dirname(__FILE__) + '/process_time_fixtures'
  2 +require File.dirname(__FILE__) + '/throwable_fixtures'
2 3  
3 4 class ProcessingFixtures
4 5  
5 6 def self.processing
6 7 Kalibro::Processing.new processing_hash
7 8 end
8   -
  9 +
9 10 def self.processing_hash
10 11 {
11 12 :id => 31,
12 13 :date => '2011-10-20T18:26:43.151+00:00',
13 14 :state => 'READY',
14 15 :process_time => [ProcessTimeFixtures.process_time_hash],
15   - :results_root_id => 13
  16 + :results_root_id => 13
16 17 }
17 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 30 end
... ...
plugins/mezuro/test/functional/profile/mezuro_plugin_processing_controller_test.rb
... ... @@ -12,9 +12,10 @@ class MezuroPluginProcessingControllerTest < ActionController::TestCase
12 12 @response = ActionController::TestResponse.new
13 13 @profile = fast_create(Community)
14 14  
15   - @repository = RepositoryFixtures.repository
  15 + @repository_id = RepositoryFixtures.repository.id
16 16 @processing = ProcessingFixtures.processing
17   -
  17 + @processing_hash = ProcessingFixtures.processing_hash
  18 + @processing_with_error_hash = ProcessingFixtures.processing_with_error_hash
18 19 =begin
19 20 @content = MezuroPlugin::ProjectContent.new(:profile => @profile, :name => @project.name, :repository_url => @repository_url)
20 21 @content.expects(:send_project_to_service).returns(nil)
... ... @@ -26,51 +27,40 @@ class MezuroPluginProcessingControllerTest < ActionController::TestCase
26 27 end
27 28  
28 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 32 assert_response 200
32 33 assert_equal @processing.state, @response.body
33 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 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 44 end
53 45  
54 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 50 assert_response 200
60 51 assert_select('h4', 'Last Result')
61 52 end
62 53  
63 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 58 assert_response 200
71 59 assert_select('h4', 'Last Result')
72 60 end
73 61  
  62 +#TODO refatorar todos os testes
  63 +=begin
74 64 should 'test project tree without date' do
75 65 Kalibro::Processing.expects(:request).with("Processing", :get_last_result_of, {:project_name => @project.name}).returns({:project_result => @project_result.to_hash})
76 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
... ... @@ -0,0 +1,2 @@
  1 +<h2> An error occured: </h2>
  2 +<%= @processing.error.message %>
... ...
plugins/mezuro/views/mezuro_plugin_processing/_processing.rhtml 0 → 100644
... ... @@ -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 @@
  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
... ... @@ -1,2 +0,0 @@
1   -<h2> An error occured: </h2>
2   -<%= @message %>
plugins/mezuro/views/mezuro_plugin_project/_project_error.rhtml
... ... @@ -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   -<% 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   -<% 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 %>