Commit eea6f6fd9884b5f5a908eb07921ccae4e98793a3
Committed by
Rafael Manzo
1 parent
b51b35d7
Exists in
colab
and in
4 other branches
Destroy action to mezuro ranges
Showing
2 changed files
with
56 additions
and
9 deletions
Show diff stats
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 < ApplicationController | @@ -11,8 +12,6 @@ class MezuroRangesController < 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 < ApplicationController | @@ -20,6 +19,13 @@ class MezuroRangesController < 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 < ApplicationController | @@ -50,10 +56,14 @@ class MezuroRangesController < 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 |