Commit eea6f6fd9884b5f5a908eb07921ccae4e98793a3

Authored by Guilherme Rojas V. de Lima
Committed by Rafael Manzo
1 parent b51b35d7

Destroy action to mezuro ranges

app/controllers/mezuro_ranges_controller.rb
@@ -2,7 +2,8 @@ include OwnershipAuthentication @@ -2,7 +2,8 @@ include OwnershipAuthentication
2 2
3 class MezuroRangesController < ApplicationController 3 class MezuroRangesController < ApplicationController
4 before_action :authenticate_user!, except: [:show] 4 before_action :authenticate_user!, except: [:show]
5 - before_action :metric_configuration_owner?, only: [:new, :create] 5 + before_action :metric_configuration_owner?, only: [:new, :create, :destroy]
  6 + before_action :get_url_params, only: [:create, :destroy]
6 7
7 def new 8 def new
8 @mezuro_range = MezuroRange.new 9 @mezuro_range = MezuroRange.new
@@ -11,8 +12,6 @@ class MezuroRangesController &lt; ApplicationController @@ -11,8 +12,6 @@ class MezuroRangesController &lt; ApplicationController
11 12
12 def create 13 def create
13 @mezuro_range = MezuroRange.new(mezuro_range_params) 14 @mezuro_range = MezuroRange.new(mezuro_range_params)
14 - @mezuro_configuration_id = params[:mezuro_configuration_id].to_i  
15 - @metric_configuration_id = params[:metric_configuration_id].to_i  
16 @mezuro_range.metric_configuration_id = params[:metric_configuration_id].to_i 15 @mezuro_range.metric_configuration_id = params[:metric_configuration_id].to_i
17 respond_to do |format| 16 respond_to do |format|
18 create_and_redir(format) 17 create_and_redir(format)
@@ -20,6 +19,13 @@ class MezuroRangesController &lt; ApplicationController @@ -20,6 +19,13 @@ class MezuroRangesController &lt; ApplicationController
20 end 19 end
21 20
22 def destroy 21 def destroy
  22 + @mezuro_range = MezuroRange.find(params[:id].to_i)
  23 + @mezuro_range.destroy
  24 + respond_to do |format|
  25 + format.html { redirect_to mezuro_configuration_metric_configuration_path(
  26 + @mezuro_configuration_id, @metric_configuration_id) }
  27 + format.json { head :no_content }
  28 + end
23 end 29 end
24 30
25 def update 31 def update
@@ -50,10 +56,14 @@ class MezuroRangesController &lt; ApplicationController @@ -50,10 +56,14 @@ class MezuroRangesController &lt; ApplicationController
50 end 56 end
51 57
52 def before_form 58 def before_form
53 - @mezuro_configuration_id = params[:mezuro_configuration_id].to_i  
54 - @metric_configuration_id = params[:metric_configuration_id].to_i 59 + get_url_params
55 @reading_group_id = MetricConfiguration.find(@metric_configuration_id).reading_group_id 60 @reading_group_id = MetricConfiguration.find(@metric_configuration_id).reading_group_id
56 @readings = Reading.readings_of(@reading_group_id) 61 @readings = Reading.readings_of(@reading_group_id)
57 end 62 end
58 63
  64 + def get_url_params
  65 + @mezuro_configuration_id = params[:mezuro_configuration_id].to_i
  66 + @metric_configuration_id = params[:metric_configuration_id].to_i
  67 + end
  68 +
59 end 69 end
spec/controllers/mezuro_ranges_spec.rb
1 require 'spec_helper' 1 require 'spec_helper'
2 2
3 describe MezuroRangesController do 3 describe MezuroRangesController do
  4 + let(:mezuro_range) { FactoryGirl.build(:mezuro_range, id: 1) }
  5 + let(:metric_configuration) { FactoryGirl.build(:metric_configuration) }
  6 +
4 describe 'new' do 7 describe 'new' do
5 - let(:mezuro_range) { FactoryGirl.build(:mezuro_range) }  
6 let(:mezuro_configuration) { FactoryGirl.build(:mezuro_configuration) } 8 let(:mezuro_configuration) { FactoryGirl.build(:mezuro_configuration) }
7 - let(:metric_configuration) { FactoryGirl.build(:metric_configuration) }  
8 9
9 before :each do 10 before :each do
10 sign_in FactoryGirl.create(:user) 11 sign_in FactoryGirl.create(:user)
@@ -35,8 +36,6 @@ describe MezuroRangesController do @@ -35,8 +36,6 @@ describe MezuroRangesController do
35 describe 'create' do 36 describe 'create' do
36 let(:mezuro_range_params) { Hash[FactoryGirl.attributes_for(:mezuro_range).map { |k,v| [k.to_s, v.to_s] }] } #FIXME: Mocha is creating the expectations with strings, but FactoryGirl returns everything with symbols and integers 37 let(:mezuro_range_params) { Hash[FactoryGirl.attributes_for(:mezuro_range).map { |k,v| [k.to_s, v.to_s] }] } #FIXME: Mocha is creating the expectations with strings, but FactoryGirl returns everything with symbols and integers
37 let(:mezuro_configuration) { FactoryGirl.build(:mezuro_configuration) } 38 let(:mezuro_configuration) { FactoryGirl.build(:mezuro_configuration) }
38 - let(:metric_configuration) { FactoryGirl.build(:metric_configuration) }  
39 - let(:mezuro_range) { FactoryGirl.build(:mezuro_range) }  
40 39
41 before do 40 before do
42 sign_in FactoryGirl.create(:user) 41 sign_in FactoryGirl.create(:user)
@@ -70,4 +69,42 @@ describe MezuroRangesController do @@ -70,4 +69,42 @@ describe MezuroRangesController do
70 end 69 end
71 end 70 end
72 end 71 end
  72 +
  73 + describe 'destroy' do
  74 + context 'with an User logged in' do
  75 + before do
  76 + sign_in FactoryGirl.create(:user)
  77 + end
  78 +
  79 + context 'when the user owns the metric configuration' do
  80 + before :each do
  81 + subject.expects(:metric_configuration_owner?).returns true
  82 + mezuro_range.expects(:destroy)
  83 + MezuroRange.expects(:find).at_least_once.with(mezuro_range.id).returns(mezuro_range)
  84 +
  85 + delete :destroy, id: mezuro_range.id.to_s, metric_configuration_id: metric_configuration.id.to_s, mezuro_configuration_id: metric_configuration.configuration_id.to_s
  86 + end
  87 +
  88 + it { should redirect_to(mezuro_configuration_metric_configuration_path(metric_configuration.configuration_id, metric_configuration.id)) }
  89 + it { should respond_with(:redirect) }
  90 + end
  91 +
  92 + context "when the user doesn't own the metric configuration" do
  93 + before :each do
  94 + delete :destroy, id: mezuro_range.id.to_s, metric_configuration_id: metric_configuration.id.to_s, mezuro_configuration_id: metric_configuration.configuration_id.to_s
  95 + end
  96 +
  97 + it { should redirect_to(mezuro_configurations_path) } #FIXME : It should redirect to configuration show page
  98 + it { should respond_with(:redirect) }
  99 + end
  100 + end
  101 +
  102 + context 'with no User logged in' do
  103 + before :each do
  104 + delete :destroy, id: mezuro_range.id.to_s, metric_configuration_id: metric_configuration.id.to_s, mezuro_configuration_id: metric_configuration.configuration_id.to_s
  105 + end
  106 +
  107 + it { should redirect_to new_user_session_path }
  108 + end
  109 + end
73 end 110 end