Commit 52d84ce721d4cb6122a19de03d5d1691c7a6d985
Committed by
Rafael Manzo
1 parent
e08ecf84
Exists in
colab
and in
4 other branches
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>
Showing
4 changed files
with
59 additions
and
3 deletions
Show diff stats
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 < 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 < 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 | ... | ... |
... | ... | @@ -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 | ... | ... |