Commit 944cfe81cdc8897f7122152380d31b2f83636b48

Authored by João M. M. da Silva + Alessandro Palmeira
Committed by Paulo Meireles
1 parent feec92ee

[Mezuro] showing message of not existent project in kalibro, not working yet for configuration

plugins/mezuro/controllers/mezuro_plugin_myprofile_controller.rb
@@ -8,6 +8,7 @@ class MezuroPluginMyprofileController < ProfileController @@ -8,6 +8,7 @@ class MezuroPluginMyprofileController < ProfileController
8 end 8 end
9 9
10 def error_page 10 def error_page
  11 + @message = params[:message]
11 end 12 end
12 13
13 def choose_base_tool 14 def choose_base_tool
plugins/mezuro/controllers/mezuro_plugin_profile_controller.rb
@@ -4,15 +4,17 @@ class MezuroPluginProfileController < ProfileController @@ -4,15 +4,17 @@ class MezuroPluginProfileController < ProfileController
4 4
5 rescue_from Exception do |exception| 5 rescue_from Exception do |exception|
6 message = URI.escape(CGI.escape(exception.message),'.') 6 message = URI.escape(CGI.escape(exception.message),'.')
7 - redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/error_page?message=#{message}" 7 + redirect_to_error_page message
8 end 8 end
9 9
10 def error_page 10 def error_page
  11 + @message = params[:message]
11 end 12 end
12 13
13 def project_state 14 def project_state
14 @content = profile.articles.find(params[:id]) 15 @content = profile.articles.find(params[:id])
15 project = @content.project 16 project = @content.project
  17 + redirect_to_error_page(project.errors[0].message) if not project.errors.empty?
16 state = project.kalibro_error.nil? ? project.state : "ERROR" 18 state = project.kalibro_error.nil? ? project.state : "ERROR"
17 render :text => state 19 render :text => state
18 end 20 end
@@ -75,4 +77,10 @@ class MezuroPluginProfileController < ProfileController @@ -75,4 +77,10 @@ class MezuroPluginProfileController < ProfileController
75 metric_result.value 77 metric_result.value
76 end 78 end
77 end 79 end
  80 +
  81 + def redirect_to_error_page(message)
  82 + redirect_to "/profile/#{profile.identifier}/plugin/mezuro/error_page?message=#{message}"
  83 + end
  84 +
78 end 85 end
  86 +
plugins/mezuro/lib/kalibro/model.rb
@@ -55,10 +55,6 @@ class Kalibro::Model @@ -55,10 +55,6 @@ class Kalibro::Model
55 false 55 false
56 end 56 end
57 end 57 end
58 -  
59 - def add_error(exception)  
60 - @errors << exception  
61 - end  
62 58
63 def destroy 59 def destroy
64 begin 60 begin
@@ -133,4 +129,9 @@ class Kalibro::Model @@ -133,4 +129,9 @@ class Kalibro::Model
133 {"#{class_name.underscore}_name".to_sym => self.name} 129 {"#{class_name.underscore}_name".to_sym => self.name}
134 end 130 end
135 131
  132 + def add_error(exception)
  133 + @errors << exception
  134 + end
  135 +
136 end 136 end
  137 +
plugins/mezuro/lib/mezuro_plugin/project_content.rb
@@ -25,6 +25,7 @@ class MezuroPlugin::ProjectContent &lt; Article @@ -25,6 +25,7 @@ class MezuroPlugin::ProjectContent &lt; Article
25 @project ||= Kalibro::Project.find_by_name(name) 25 @project ||= Kalibro::Project.find_by_name(name)
26 rescue Exception => error 26 rescue Exception => error
27 errors.add_to_base(error.message) 27 errors.add_to_base(error.message)
  28 + @project
28 end 29 end
29 end 30 end
30 31
@@ -105,7 +106,7 @@ Kalibro::ProjectResult.first_result_after(name, date) @@ -105,7 +106,7 @@ Kalibro::ProjectResult.first_result_after(name, date)
105 end 106 end
106 107
107 def destroy_project_from_service 108 def destroy_project_from_service
108 - project.destroy 109 + project.destroy unless project.nil?
109 end 110 end
110 111
111 end 112 end
plugins/mezuro/test/functional/mezuro_plugin_profile_controller_test.rb
@@ -25,14 +25,21 @@ class MezuroPluginProfileControllerTest &lt; ActionController::TestCase @@ -25,14 +25,21 @@ class MezuroPluginProfileControllerTest &lt; ActionController::TestCase
25 @content.save 25 @content.save
26 end 26 end
27 27
28 - should 'test project state without error' do 28 + should 'show an error page if an exception is raised' do
  29 + Kalibro::Project.expects(:request).with("Project", :get_project, :project_name => @project.name).returns(Exception.new(:message => "Error message"))
  30 + get :project_state, :profile => @profile.identifier, :id => @content.id
  31 + assert_response 302
  32 + assert_select('h2', 'An error occured: ')
  33 + end
  34 +
  35 + should 'test project state without kalibro_error' do
29 Kalibro::Project.expects(:request).with("Project", :get_project, :project_name => @project.name).returns({:project => @project.to_hash}) 36 Kalibro::Project.expects(:request).with("Project", :get_project, :project_name => @project.name).returns({:project => @project.to_hash})
30 get :project_state, :profile => @profile.identifier, :id => @content.id 37 get :project_state, :profile => @profile.identifier, :id => @content.id
31 assert_response 200 38 assert_response 200
32 assert_equal @content, assigns(:content) 39 assert_equal @content, assigns(:content)
33 end 40 end
34 41
35 - should 'test project state with error' do 42 + should 'test project state with kalibro_error' do
36 Kalibro::Project.expects(:request).with("Project", :get_project, :project_name => @project.name).returns({:project => @project.to_hash.merge({:error => ErrorFixtures.error_hash})}) 43 Kalibro::Project.expects(:request).with("Project", :get_project, :project_name => @project.name).returns({:project => @project.to_hash.merge({:error => ErrorFixtures.error_hash})})
37 get :project_state, :profile => @profile.identifier, :id => @content.id 44 get :project_state, :profile => @profile.identifier, :id => @content.id
38 assert_response 200 45 assert_response 200
plugins/mezuro/views/content_viewer/show_configuration.rhtml
1 <% @configuration_content = @page 1 <% @configuration_content = @page
2 @configuration = @page.configuration %> 2 @configuration = @page.configuration %>
  3 +<% unless @page.errors[:base].nil? %>
  4 + <% if @page.errors[:base] =~ /There is no project named/ %>
  5 + <h3>Warning:</h3>
  6 + <p>This Configuration doesn't exist on the Web Service. Do you want to <a href="/myprofile/<%= @page.profile.name %>/cms/destroy/<%= @page.id%>">delete</a> or <a href="/myprofile/<%= @page.profile.name %>/cms/edit/<%= @page.id%>">save it again</a>?</p>
  7 + <% else %>
  8 + <%= @page.errors[:base] %>
  9 + <% end %>
  10 +<% else %>
3 11
4 -<table id="project_info">  
5 - <tr>  
6 - <td><%= _('Name') %></td>  
7 - <td><%= @configuration.name %></td>  
8 - </tr>  
9 - <tr>  
10 - <td><%= _('Description') %></td>  
11 - <td><%= @configuration.description %></td>  
12 - </tr>  
13 -</table> 12 + <table id="project_info">
  13 + <tr>
  14 + <td><%= _('Name') %></td>
  15 + <td><%= @configuration.name %></td>
  16 + </tr>
  17 + <tr>
  18 + <td><%= _('Description') %></td>
  19 + <td><%= @configuration.description %></td>
  20 + </tr>
  21 + </table>
14 22
15 -<br/> 23 + <br/>
16 24
17 -<%= link_to "#{image_tag ('/plugins/mezuro/images/plus.png')}Add Metric", :controller => "mezuro_plugin_myprofile",  
18 -:action => "choose_base_tool", :params => { :id => @configuration_content.id } %><br/> 25 + <%= link_to "#{image_tag ('/plugins/mezuro/images/plus.png')}Add Metric", :controller => "mezuro_plugin_myprofile",
  26 + :action => "choose_base_tool", :params => { :id => @configuration_content.id } %><br/>
19 27
20 -<table>  
21 - <tr class="titles">  
22 - <td><h5>Metric Name</h5></td>  
23 - <td><h5>Collector Name</h5></td>  
24 - <td><h5>Metric Code</h5></td>  
25 - <td/><td/>  
26 - </tr>  
27 - <% @configuration.metric_configurations.each do |metric_configuration| %>  
28 - <tr class="metric">  
29 - <td><%= metric_configuration.metric.name %></td>  
30 - <% if metric_configuration.metric.instance_of? Kalibro::NativeMetric %>  
31 - <td>  
32 - <%= metric_configuration.metric.origin %>  
33 - </td>  
34 - <td><%= metric_configuration.code %></td>  
35 - <td><%= link_to "Edit", :controller => "mezuro_plugin_myprofile", :action => "edit_metric_configuration", :params =>  
36 - {:metric_name => metric_configuration.metric.name, :id => @configuration_content.id} %></td>  
37 - <% else %>  
38 - <td>  
39 - Compound Metric  
40 - </td>  
41 - <td><%= metric_configuration.code %></td>  
42 - <td><%= link_to "Edit", :controller => "mezuro_plugin_myprofile", :action => "edit_compound_metric_configuration", :params =>  
43 - {:metric_name => metric_configuration.metric.name, :id => @configuration_content.id} %></td>  
44 - <% end %>  
45 -  
46 - <td><%= link_to "Remove", :controller => "mezuro_plugin_myprofile", :action => "remove_metric_configuration", :params =>  
47 - {:metric_name => metric_configuration.metric.name, :id => @configuration_content.id} %></td> 28 + <table>
  29 + <tr class="titles">
  30 + <td><h5>Metric Name</h5></td>
  31 + <td><h5>Collector Name</h5></td>
  32 + <td><h5>Metric Code</h5></td>
  33 + <td/><td/>
48 </tr> 34 </tr>
49 - <% end %>  
50 -</table> 35 + <% @configuration.metric_configurations.each do |metric_configuration| %>
  36 + <tr class="metric">
  37 + <td><%= metric_configuration.metric.name %></td>
  38 + <% if metric_configuration.metric.instance_of? Kalibro::NativeMetric %>
  39 + <td>
  40 + <%= metric_configuration.metric.origin %>
  41 + </td>
  42 + <td><%= metric_configuration.code %></td>
  43 + <td><%= link_to "Edit", :controller => "mezuro_plugin_myprofile", :action => "edit_metric_configuration", :params =>
  44 + {:metric_name => metric_configuration.metric.name, :id => @configuration_content.id} %></td>
  45 + <% else %>
  46 + <td>
  47 + Compound Metric
  48 + </td>
  49 + <td><%= metric_configuration.code %></td>
  50 + <td><%= link_to "Edit", :controller => "mezuro_plugin_myprofile", :action => "edit_compound_metric_configuration", :params =>
  51 + {:metric_name => metric_configuration.metric.name, :id => @configuration_content.id} %></td>
  52 + <% end %>
  53 +
  54 + <td><%= link_to "Remove", :controller => "mezuro_plugin_myprofile", :action => "remove_metric_configuration", :params =>
  55 + {:metric_name => metric_configuration.metric.name, :id => @configuration_content.id} %></td>
  56 + </tr>
  57 + <% end %>
  58 + </table>
  59 +<% end %>
plugins/mezuro/views/content_viewer/show_project.rhtml
@@ -2,60 +2,58 @@ @@ -2,60 +2,58 @@
2 2
3 <% @project = @page.project %> 3 <% @project = @page.project %>
4 <% unless @page.errors[:base].nil? %> 4 <% unless @page.errors[:base].nil? %>
5 - <%= @page.errors[:base] %>  
6 -<% else %>  
7 -  
8 - <% if (@project==nil) %> 5 + <% if @page.errors[:base] =~ /There is no project named/ %>
9 <h3>Warning:</h3> 6 <h3>Warning:</h3>
10 <p>This project doesn't exist on the Web Service. Do you want to <a href="/myprofile/<%= @page.profile.name %>/cms/destroy/<%= @page.id%>">delete</a> or <a href="/myprofile/<%= @page.profile.name %>/cms/edit/<%= @page.id%>">save it again</a>?</p> 7 <p>This project doesn't exist on the Web Service. Do you want to <a href="/myprofile/<%= @page.profile.name %>/cms/destroy/<%= @page.id%>">delete</a> or <a href="/myprofile/<%= @page.profile.name %>/cms/edit/<%= @page.id%>">save it again</a>?</p>
11 <% else %> 8 <% else %>
  9 + <%= @page.errors[:base] %>
  10 + <% end %>
  11 +<% else %>
12 12
  13 + <table>
  14 + <tr>
  15 + <td><%= _('Name') %></td>
  16 + <td><%= @project.name %></td>
  17 + </tr>
  18 + <tr>
  19 + <td><%= _('License') %></td>
  20 + <td><%= @project.license %></td>
  21 + </tr>
  22 + <tr>
  23 + <td><%= _('Description') %></td>
  24 + <td><%= @project.description %></td>
  25 + </tr>
  26 + <tr>
  27 + <td><%= _('Repository type') %></td>
  28 + <td><%= @project.repository.type %></td>
  29 + </tr>
  30 + <tr>
  31 + <td><%= _('Repository address') %></td>
  32 + <td><%= @project.repository.address %></td>
  33 + </tr>
  34 + <tr>
  35 + <td><%= _('Configuration') %></td>
  36 + <td><%= @project.configuration_name %></td>
  37 + </tr>
  38 + <tr>
  39 + <td><%= _('Periodicity') %></td>
  40 + <td><%= MezuroPlugin::Helpers::ContentViewerHelper.get_periodicity_option(@page.periodicity_in_days) %></td>
  41 + </tr>
  42 + <tr>
  43 + <td><%= _('Status')%></td>
  44 + <td>
  45 + <div id="project-state"><%= @project.state %></div>
  46 + <div id="msg-time"></div>
  47 + </td>
  48 + </tr>
  49 + </table>
13 50
14 - <table>  
15 - <tr>  
16 - <td><%= _('Name') %></td>  
17 - <td><%= @project.name %></td>  
18 - </tr>  
19 - <tr>  
20 - <td><%= _('License') %></td>  
21 - <td><%= @project.license %></td>  
22 - </tr>  
23 - <tr>  
24 - <td><%= _('Description') %></td>  
25 - <td><%= @project.description %></td>  
26 - </tr>  
27 - <tr>  
28 - <td><%= _('Repository type') %></td>  
29 - <td><%= @project.repository.type %></td>  
30 - </tr>  
31 - <tr>  
32 - <td><%= _('Repository address') %></td>  
33 - <td><%= @project.repository.address %></td>  
34 - </tr>  
35 - <tr>  
36 - <td><%= _('Configuration') %></td>  
37 - <td><%= @project.configuration_name %></td>  
38 - </tr>  
39 - <tr>  
40 - <td><%= _('Periodicity') %></td>  
41 - <td><%= MezuroPlugin::Helpers::ContentViewerHelper.get_periodicity_option(@page.periodicity_in_days) %></td>  
42 - </tr>  
43 - <tr>  
44 - <td><%= _('Status')%></td>  
45 - <td>  
46 - <div id="project-state"><%= @project.state %></div>  
47 - <div id="msg-time"></div>  
48 - </td>  
49 - </tr>  
50 - </table>  
51 -  
52 - <br /> 51 + <br />
53 52
54 - <div id="project-result" data-profile="<%= @page.profile.identifier %>" data-content="<%= @page.id %>"  
55 - data-project-name="<%= @project.name %>">  
56 - </div>  
57 - <div id="project-tree"></div>  
58 - <div id="module-result">  
59 - </div>  
60 - <% end %> 53 + <div id="project-result" data-profile="<%= @page.profile.identifier %>" data-content="<%= @page.id %>"
  54 + data-project-name="<%= @project.name %>">
  55 + </div>
  56 + <div id="project-tree"></div>
  57 + <div id="module-result">
  58 + </div>
61 <% end %> 59 <% end %>
plugins/mezuro/views/mezuro_plugin_myprofile/error_page.html.erb
1 -<h2> <%= "An error occured: " %> </h2>  
2 -<%=h params[:message] %> 1 +<h2> An error occured: </h2>
  2 +<%= @message %>
3 <!-- The <%=h is for escaping the URL properly --!> 3 <!-- The <%=h is for escaping the URL properly --!>
plugins/mezuro/views/mezuro_plugin_profile/error_page.html.erb 0 → 100644
@@ -0,0 +1,3 @@ @@ -0,0 +1,3 @@
  1 +<h2> An error occured: </h2>
  2 +<%= @message %>
  3 +<!-- The <%=h is for escaping the URL properly --!>