Commit 52d84ce721d4cb6122a19de03d5d1691c7a6d985

Authored by Fellipe Souto Sampaio
Committed by Rafael Manzo
1 parent e08ecf84

Edit feature for metric configuration

Pending acceptance test
Still missing update feature
Implemented persisted method for metric configuration model

signed-off-by: Guilherme Rojas V. de Lima <guilhermehrojas@gmail.com>
app/controllers/metric_configurations_controller.rb
... ... @@ -2,8 +2,8 @@ include OwnershipAuthentication
2 2  
3 3 class MetricConfigurationsController < ApplicationController
4 4 before_action :authenticate_user!, except: [:index]
5   - before_action :set_metric_configuration, only: [:destroy]
6   - before_action :metric_configuration_owner?, only: [:destroy]
  5 + before_action :set_metric_configuration, only: [:edit, :destroy]
  6 + before_action :metric_configuration_owner?, only: [:edit, :destroy]
7 7 before_action :mezuro_configuration_owner?, only: [:new, :create, :choose_metric]
8 8  
9 9 def choose_metric
... ... @@ -28,6 +28,11 @@ class MetricConfigurationsController &lt; ApplicationController
28 28 end
29 29 end
30 30  
  31 + def edit
  32 + @mezuro_configuration_id = params[:mezuro_configuration_id]
  33 + @metric_configuration.configuration_id = @mezuro_configuration_id
  34 + end
  35 +
31 36 def destroy
32 37 @metric_configuration.destroy
33 38 respond_to do |format|
... ...
app/models/metric_configuration.rb
... ... @@ -9,4 +9,8 @@ class MetricConfiguration &lt; KalibroGem::Entities::MetricConfiguration
9 9 validates :weight, presence: true
10 10 validates :aggregation_form, presence: true
11 11  
  12 + def persisted?
  13 + self.id != nil #FIXME: create method exists in KalibroGem
  14 + end
  15 +
12 16 end
... ...
app/views/metric_configurations/edit.html.erb 0 → 100644
... ... @@ -0,0 +1,7 @@
  1 +<div class="page-header">
  2 + <h1>Editing Metric Configuration</h1>
  3 +</div>
  4 +
  5 +<%= form_for(@metric_configuration, :url => mezuro_configuration_metric_configuration_update_url(@mezuro_configuration_id, @metric_configuration.id), method: :put) do |f| %>
  6 + <%= render partial: 'form', locals: {f: f} %>
  7 +<% end %>
... ...
spec/controllers/metric_configurations_controller_spec.rb
... ... @@ -85,6 +85,46 @@ describe MetricConfigurationsController do
85 85 end
86 86 end
87 87  
  88 + describe 'edit' do
  89 + let(:metric_configuration) { FactoryGirl.build(:metric_configuration) }
  90 +
  91 + context 'with an User logged in' do
  92 + before do
  93 + sign_in FactoryGirl.create(:user)
  94 + end
  95 +
  96 + context 'when the user owns the metric configuration' do
  97 + before :each do
  98 + subject.expects(:metric_configuration_owner?).returns true
  99 + MetricConfiguration.expects(:find).at_least_once.with(metric_configuration.id).returns(metric_configuration)
  100 + get :edit, id: metric_configuration.id, mezuro_configuration_id: metric_configuration.configuration_id.to_s
  101 + end
  102 +
  103 + it { should render_template(:edit) }
  104 + end
  105 +
  106 + context 'when the user does not own the metric configuration' do
  107 + before do
  108 + MetricConfiguration.expects(:find).at_least_once.with(metric_configuration.id).returns(metric_configuration)
  109 + get :edit, id: metric_configuration.id, mezuro_configuration_id: metric_configuration.configuration_id.to_s
  110 + end
  111 +
  112 + it { should redirect_to(mezuro_configurations_path) } #FIXME : It should redirect to configuration show page
  113 + it { should respond_with(:redirect) }
  114 + it { should set_the_flash[:notice].to("You're not allowed to do this operation") }
  115 + end
  116 + end
  117 +
  118 + context 'with no user logged in' do
  119 + before :each do
  120 + get :edit, id: metric_configuration.id, mezuro_configuration_id: metric_configuration.configuration_id.to_s
  121 + end
  122 +
  123 + it { should redirect_to new_user_session_path }
  124 + end
  125 + end
  126 +
  127 +
88 128 describe 'destroy' do
89 129 let(:metric_configuration) { FactoryGirl.build(:metric_configuration) }
90 130  
... ... @@ -110,7 +150,7 @@ describe MetricConfigurationsController do
110 150 before :each do
111 151 MetricConfiguration.expects(:find).at_least_once.with(metric_configuration.id).returns(metric_configuration)
112 152  
113   - delete :destroy, id: metric_configuration.id, mezuro_configuration_id: mezuro_configuration.id.to_s
  153 + delete :destroy, id: metric_configuration.id, mezuro_configuration_id: metric_configuration.configuration_id.to_s
114 154 end
115 155  
116 156 it { should redirect_to(mezuro_configurations_path) } #FIXME : It should redirect to configuration show page
... ...