Commit 2606843e6552a36bb1586acaa59d26f6e3751720

Authored by Rafael Manzo
1 parent c574b327

ModuleResult navigation

Signed-off by: João M. M. da Silva <jaodsilv@linux.ime.usp.br>
app/controllers/repositories_controller.rb
@@ -14,7 +14,11 @@ class RepositoriesController &lt; ApplicationController @@ -14,7 +14,11 @@ class RepositoriesController &lt; ApplicationController
14 @configuration = KalibroEntities::Entities::Configuration.find(@repository.configuration_id) #FIXME: As soon as the Configuration model gets created refactor this! 14 @configuration = KalibroEntities::Entities::Configuration.find(@repository.configuration_id) #FIXME: As soon as the Configuration model gets created refactor this!
15 @processing = @repository.last_processing 15 @processing = @repository.last_processing
16 if @processing.ready? 16 if @processing.ready?
17 - @root_module_result = @processing.root_module_result 17 + if params[:module_result_id].nil?
  18 + @root_module_result = @processing.root_module_result
  19 + else
  20 + @root_module_result = ModuleResult.find(params[:module_result_id].to_i)
  21 + end
18 end 22 end
19 end 23 end
20 24
app/models/processing.rb
@@ -6,6 +6,6 @@ class Processing &lt; KalibroEntities::Entities::Processing @@ -6,6 +6,6 @@ class Processing &lt; KalibroEntities::Entities::Processing
6 end 6 end
7 7
8 def root_module_result 8 def root_module_result
9 - KalibroEntities::Entities::ModuleResult.find(@results_root_id) 9 + ModuleResult.find(@results_root_id)
10 end 10 end
11 end 11 end
app/views/repositories/_module_result.html.erb
@@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
6 icon = "folder.png" 6 icon = "folder.png"
7 end %> 7 end %>
8 <%= image_tag(icon, :size => "20x16") %> 8 <%= image_tag(icon, :size => "20x16") %>
9 - <%= module_result.module.name %> 9 + <%= link_to module_result.module.name, project_repository_module_path(repository.project_id, repository.id, module_result.id) %>
10 </td> 10 </td>
11 <td><%= module_result.module.granularity %></td> 11 <td><%= module_result.module.granularity %></td>
12 <td><%= format_grade(module_result.grade) %></td> 12 <td><%= format_grade(module_result.grade) %></td>
app/views/repositories/show.html.erb
@@ -60,7 +60,7 @@ @@ -60,7 +60,7 @@
60 <th>Grade</th> 60 <th>Grade</th>
61 </thead> 61 </thead>
62 <tbody> 62 <tbody>
63 - <%= render partial: 'module_result', collection: children %> 63 + <%= render partial: 'module_result', collection: children, locals: {repository: @repository} %>
64 </tbody> 64 </tbody>
65 </table> 65 </table>
66 <% end %> 66 <% end %>
config/routes.rb
@@ -8,7 +8,7 @@ Mezuro::Application.routes.draw do @@ -8,7 +8,7 @@ Mezuro::Application.routes.draw do
8 8
9 resources :projects do 9 resources :projects do
10 resources :repositories, except: [:update, :index] 10 resources :repositories, except: [:update, :index]
11 - get '/repositories/:id/modules/:module_id' => 'repositories#show', as: :repository_module 11 + get '/repositories/:id/modules/:module_result_id' => 'repositories#show', as: :repository_module
12 put '/repositories/:id' => 'repositories#update', as: :repository_update 12 put '/repositories/:id' => 'repositories#update', as: :repository_update
13 end 13 end
14 # The priority is based upon order of creation: first created -> highest priority. 14 # The priority is based upon order of creation: first created -> highest priority.
features/repository/show.feature
@@ -3,7 +3,7 @@ Feature: Show Repository @@ -3,7 +3,7 @@ Feature: Show Repository
3 As a regular user 3 As a regular user
4 I should see it's informations 4 I should see it's informations
5 5
6 - @kalibro_restart 6 + @kalibro_restart
7 Scenario: With a ready processing 7 Scenario: With a ready processing
8 Given I am a regular user 8 Given I am a regular user
9 And I am signed in 9 And I am signed in
@@ -26,7 +26,7 @@ Feature: Show Repository @@ -26,7 +26,7 @@ Feature: Show Repository
26 And I should see "Weight" 26 And I should see "Weight"
27 And I should see "Threshold" 27 And I should see "Threshold"
28 28
29 - @kalibro_restart 29 + @kalibro_restart
30 Scenario: Just after start to process 30 Scenario: Just after start to process
31 Given I am a regular user 31 Given I am a regular user
32 And I am signed in 32 And I am signed in
@@ -45,33 +45,48 @@ Feature: Show Repository @@ -45,33 +45,48 @@ Feature: Show Repository
45 And I should not see Weight 45 And I should not see Weight
46 And I should not see Threshold 46 And I should not see Threshold
47 47
48 - @kalibro_restart  
49 - Scenario: Should show modules directories root when the process has been finished  
50 - Given I am a regular user  
51 - And I am signed in  
52 - And I have a sample project  
53 - And I have a sample configuration with native metrics  
54 - And I have a sample repository within the sample project  
55 - And I start to process that repository  
56 - And I wait up for a ready processing  
57 - And I ask for the last ready processing of the given repository  
58 - And I ask for the module result of the given processing  
59 - When I visit the repository show page  
60 - Then I should see the given module result 48 + @kalibro_restart
  49 + Scenario: Should show modules directories root when the process has been finished
  50 + Given I am a regular user
  51 + And I am signed in
  52 + And I have a sample project
  53 + And I have a sample configuration with native metrics
  54 + And I have a sample repository within the sample project
  55 + And I start to process that repository
  56 + And I wait up for a ready processing
  57 + And I ask for the last ready processing of the given repository
  58 + And I ask for the module result of the given processing
  59 + When I visit the repository show page
  60 + Then I should see the given module result
61 61
62 - @kalibro_restart 62 + @kalibro_restart
63 Scenario: Should show children of root when the process has been finished 63 Scenario: Should show children of root when the process has been finished
64 - Given I am a regular user  
65 - And I am signed in  
66 - And I have a sample project  
67 - And I have a sample configuration with native metrics  
68 - And I have a sample repository within the sample project  
69 - And I start to process that repository  
70 - And I wait up for a ready processing  
71 - And I ask for the last ready processing of the given repository  
72 - And I ask for the module result of the given processing  
73 - When I visit the repository show page  
74 - Then I should see a sample child's name  
75 - And I should see "Name"  
76 - And I should see "Granularity"  
77 - And I should see "Grade"  
78 \ No newline at end of file 64 \ No newline at end of file
  65 + Given I am a regular user
  66 + And I am signed in
  67 + And I have a sample project
  68 + And I have a sample configuration with native metrics
  69 + And I have a sample repository within the sample project
  70 + And I start to process that repository
  71 + And I wait up for a ready processing
  72 + And I ask for the last ready processing of the given repository
  73 + And I ask for the module result of the given processing
  74 + When I visit the repository show page
  75 + Then I should see a sample child's name
  76 + And I should see "Name"
  77 + And I should see "Granularity"
  78 + And I should see "Grade"
  79 +
  80 + @kalibro_restart
  81 + Scenario: Module navigation
  82 + Given I am a regular user
  83 + And I am signed in
  84 + And I have a sample project
  85 + And I have a sample configuration with native metrics
  86 + And I have a sample repository within the sample project
  87 + And I start to process that repository
  88 + And I wait up for a ready processing
  89 + And I ask for the last ready processing of the given repository
  90 + And I ask for the module result of the given processing
  91 + When I visit the repository show page
  92 + And I click on the sample child's name
  93 + Then I should see a sample child's name
79 \ No newline at end of file 94 \ No newline at end of file
features/step_definitions/repository_steps.rb
@@ -55,6 +55,10 @@ When(/^I visit the repository show page$/) do @@ -55,6 +55,10 @@ When(/^I visit the repository show page$/) do
55 visit project_repository_path(@project.id, @repository.id) 55 visit project_repository_path(@project.id, @repository.id)
56 end 56 end
57 57
  58 +When(/^I click on the sample child's name$/) do
  59 + click_link @module_result.children.first.module.name
  60 +end
  61 +
58 Then(/^I should see the sample repository name$/) do 62 Then(/^I should see the sample repository name$/) do
59 page.should have_content(@repository.name) 63 page.should have_content(@repository.name)
60 end 64 end
spec/controllers/repositories_controller_spec.rb
@@ -82,18 +82,37 @@ describe RepositoriesController do @@ -82,18 +82,37 @@ describe RepositoriesController do
82 describe 'show' do 82 describe 'show' do
83 let(:repository) { FactoryGirl.build(:repository) } 83 let(:repository) { FactoryGirl.build(:repository) }
84 84
85 - before :each do  
86 - processing = FactoryGirl.build(:processing) 85 + context 'without a specific module_result' do
  86 + before :each do
  87 + processing = FactoryGirl.build(:processing)
  88 +
  89 + processing.expects(:root_module_result).returns(FactoryGirl.build(:module_result))
  90 + repository.expects(:last_processing).returns(processing)
  91 + KalibroEntities::Entities::Configuration.expects(:find).with(repository.id).returns(FactoryGirl.build(:configuration))
  92 + Repository.expects(:find).with(repository.id).returns(repository)
87 93
88 - processing.expects(:root_module_result).returns(FactoryGirl.build(:module_result))  
89 - repository.expects(:last_processing).returns(processing)  
90 - KalibroEntities::Entities::Configuration.expects(:find).with(repository.id).returns(FactoryGirl.build(:configuration))  
91 - Repository.expects(:find).with(repository.id).returns(repository) 94 + get :show, id: repository.id.to_s, project_id: project.id.to_s
  95 + end
92 96
93 - get :show, id: repository.id.to_s, project_id: project.id.to_s 97 + it { should render_template(:show) }
94 end 98 end
95 99
96 - it { should render_template(:show) } 100 + context 'for an specific module_result' do
  101 +
  102 + before :each do
  103 + processing = FactoryGirl.build(:processing)
  104 + module_result = FactoryGirl.build(:module_result)
  105 +
  106 + ModuleResult.expects(:find).with(module_result.id)
  107 + repository.expects(:last_processing).returns(processing)
  108 + KalibroEntities::Entities::Configuration.expects(:find).with(repository.id).returns(FactoryGirl.build(:configuration))
  109 + Repository.expects(:find).with(repository.id).returns(repository)
  110 +
  111 + get :show, id: repository.id.to_s, project_id: project.id.to_s, module_result_id: module_result.id
  112 + end
  113 +
  114 + it { should render_template(:show) }
  115 + end
97 end 116 end
98 117
99 describe 'destroy' do 118 describe 'destroy' do
spec/models/processing_spec.rb
@@ -22,7 +22,7 @@ describe Processing do @@ -22,7 +22,7 @@ describe Processing do
22 22
23 describe 'root_module_result' do 23 describe 'root_module_result' do
24 it 'should call the root_module_result method' do 24 it 'should call the root_module_result method' do
25 - KalibroEntities::Entities::ModuleResult.expects(:find).with(subject.results_root_id).returns(FactoryGirl.build(:module_result)) 25 + ModuleResult.expects(:find).with(subject.results_root_id).returns(FactoryGirl.build(:module_result))
26 26
27 subject.root_module_result 27 subject.root_module_result
28 end 28 end
spec/routing/repositories_routing_spec.rb
@@ -11,7 +11,7 @@ describe RepositoriesController do @@ -11,7 +11,7 @@ describe RepositoriesController do
11 it { should route(:get, '/projects/1/repositories/1'). 11 it { should route(:get, '/projects/1/repositories/1').
12 to(controller: :repositories, action: :show, project_id: 1, id: 1) } 12 to(controller: :repositories, action: :show, project_id: 1, id: 1) }
13 it { should route(:get, '/projects/1/repositories/1/modules/1'). 13 it { should route(:get, '/projects/1/repositories/1/modules/1').
14 - to(controller: :repositories, action: :show, project_id: 1, module_id: 1, id: 1) } 14 + to(controller: :repositories, action: :show, project_id: 1, module_result_id: 1, id: 1) }
15 it { should route(:delete, '/projects/1/repositories/1'). 15 it { should route(:delete, '/projects/1/repositories/1').
16 to(controller: :repositories, action: :destroy, project_id: 1, id: 1) } 16 to(controller: :repositories, action: :destroy, project_id: 1, id: 1) }
17 it { should route(:put, '/projects/1/repositories/1'). 17 it { should route(:put, '/projects/1/repositories/1').