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 2  
3 3 class MezuroRangesController < ApplicationController
4 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 8 def new
8 9 @mezuro_range = MezuroRange.new
... ... @@ -11,8 +12,6 @@ class MezuroRangesController &lt; ApplicationController
11 12  
12 13 def create
13 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 15 @mezuro_range.metric_configuration_id = params[:metric_configuration_id].to_i
17 16 respond_to do |format|
18 17 create_and_redir(format)
... ... @@ -20,6 +19,13 @@ class MezuroRangesController &lt; ApplicationController
20 19 end
21 20  
22 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 29 end
24 30  
25 31 def update
... ... @@ -50,10 +56,14 @@ class MezuroRangesController &lt; ApplicationController
50 56 end
51 57  
52 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 60 @reading_group_id = MetricConfiguration.find(@metric_configuration_id).reading_group_id
56 61 @readings = Reading.readings_of(@reading_group_id)
57 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 69 end
... ...
spec/controllers/mezuro_ranges_spec.rb
1 1 require 'spec_helper'
2 2  
3 3 describe MezuroRangesController do
  4 + let(:mezuro_range) { FactoryGirl.build(:mezuro_range, id: 1) }
  5 + let(:metric_configuration) { FactoryGirl.build(:metric_configuration) }
  6 +
4 7 describe 'new' do
5   - let(:mezuro_range) { FactoryGirl.build(:mezuro_range) }
6 8 let(:mezuro_configuration) { FactoryGirl.build(:mezuro_configuration) }
7   - let(:metric_configuration) { FactoryGirl.build(:metric_configuration) }
8 9  
9 10 before :each do
10 11 sign_in FactoryGirl.create(:user)
... ... @@ -35,8 +36,6 @@ describe MezuroRangesController do
35 36 describe 'create' do
36 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 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 40 before do
42 41 sign_in FactoryGirl.create(:user)
... ... @@ -70,4 +69,42 @@ describe MezuroRangesController do
70 69 end
71 70 end
72 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 110 end
... ...