diff --git a/app/controllers/metric_configurations_controller.rb b/app/controllers/metric_configurations_controller.rb
index fe928ba..d1647b3 100644
--- a/app/controllers/metric_configurations_controller.rb
+++ b/app/controllers/metric_configurations_controller.rb
@@ -2,8 +2,8 @@ include OwnershipAuthentication
class MetricConfigurationsController < ApplicationController
before_action :authenticate_user!, except: [:index]
- before_action :set_metric_configuration, only: [:destroy]
- before_action :metric_configuration_owner?, only: [:destroy]
+ before_action :set_metric_configuration, only: [:edit, :destroy]
+ before_action :metric_configuration_owner?, only: [:edit, :destroy]
before_action :mezuro_configuration_owner?, only: [:new, :create, :choose_metric]
def choose_metric
@@ -28,6 +28,11 @@ class MetricConfigurationsController < ApplicationController
end
end
+ def edit
+ @mezuro_configuration_id = params[:mezuro_configuration_id]
+ @metric_configuration.configuration_id = @mezuro_configuration_id
+ end
+
def destroy
@metric_configuration.destroy
respond_to do |format|
diff --git a/app/models/metric_configuration.rb b/app/models/metric_configuration.rb
index 0652d29..a20f55e 100644
--- a/app/models/metric_configuration.rb
+++ b/app/models/metric_configuration.rb
@@ -9,4 +9,8 @@ class MetricConfiguration < KalibroGem::Entities::MetricConfiguration
validates :weight, presence: true
validates :aggregation_form, presence: true
+ def persisted?
+ self.id != nil #FIXME: create method exists in KalibroGem
+ end
+
end
diff --git a/app/views/metric_configurations/edit.html.erb b/app/views/metric_configurations/edit.html.erb
new file mode 100644
index 0000000..4d7c200
--- /dev/null
+++ b/app/views/metric_configurations/edit.html.erb
@@ -0,0 +1,7 @@
+
+
+<%= form_for(@metric_configuration, :url => mezuro_configuration_metric_configuration_update_url(@mezuro_configuration_id, @metric_configuration.id), method: :put) do |f| %>
+ <%= render partial: 'form', locals: {f: f} %>
+<% end %>
diff --git a/spec/controllers/metric_configurations_controller_spec.rb b/spec/controllers/metric_configurations_controller_spec.rb
index 52bb072..2ec346d 100644
--- a/spec/controllers/metric_configurations_controller_spec.rb
+++ b/spec/controllers/metric_configurations_controller_spec.rb
@@ -85,6 +85,46 @@ describe MetricConfigurationsController do
end
end
+ describe 'edit' do
+ let(:metric_configuration) { FactoryGirl.build(:metric_configuration) }
+
+ context 'with an User logged in' do
+ before do
+ sign_in FactoryGirl.create(:user)
+ end
+
+ context 'when the user owns the metric configuration' do
+ before :each do
+ subject.expects(:metric_configuration_owner?).returns true
+ MetricConfiguration.expects(:find).at_least_once.with(metric_configuration.id).returns(metric_configuration)
+ get :edit, id: metric_configuration.id, mezuro_configuration_id: metric_configuration.configuration_id.to_s
+ end
+
+ it { should render_template(:edit) }
+ end
+
+ context 'when the user does not own the metric configuration' do
+ before do
+ MetricConfiguration.expects(:find).at_least_once.with(metric_configuration.id).returns(metric_configuration)
+ get :edit, id: metric_configuration.id, mezuro_configuration_id: metric_configuration.configuration_id.to_s
+ end
+
+ it { should redirect_to(mezuro_configurations_path) } #FIXME : It should redirect to configuration show page
+ it { should respond_with(:redirect) }
+ it { should set_the_flash[:notice].to("You're not allowed to do this operation") }
+ end
+ end
+
+ context 'with no user logged in' do
+ before :each do
+ get :edit, id: metric_configuration.id, mezuro_configuration_id: metric_configuration.configuration_id.to_s
+ end
+
+ it { should redirect_to new_user_session_path }
+ end
+ end
+
+
describe 'destroy' do
let(:metric_configuration) { FactoryGirl.build(:metric_configuration) }
@@ -110,7 +150,7 @@ describe MetricConfigurationsController do
before :each do
MetricConfiguration.expects(:find).at_least_once.with(metric_configuration.id).returns(metric_configuration)
- delete :destroy, id: metric_configuration.id, mezuro_configuration_id: mezuro_configuration.id.to_s
+ delete :destroy, id: metric_configuration.id, mezuro_configuration_id: metric_configuration.configuration_id.to_s
end
it { should redirect_to(mezuro_configurations_path) } #FIXME : It should redirect to configuration show page
--
libgit2 0.21.2