diff --git a/app/controllers/base_metric_configurations_controller.rb b/app/controllers/base_metric_configurations_controller.rb index 7f5a24e..e00466b 100644 --- a/app/controllers/base_metric_configurations_controller.rb +++ b/app/controllers/base_metric_configurations_controller.rb @@ -1,5 +1,6 @@ include OwnershipAuthentication include MetricConfigurationsConcern +include ResourceFinder class BaseMetricConfigurationsController < ApplicationController before_action :authenticate_user!, except: [:show, :index] diff --git a/app/controllers/concerns/metric_configurations_concern.rb b/app/controllers/concerns/metric_configurations_concern.rb index 4040db8..0553795 100644 --- a/app/controllers/concerns/metric_configurations_concern.rb +++ b/app/controllers/concerns/metric_configurations_concern.rb @@ -2,6 +2,6 @@ module MetricConfigurationsConcern extend ActiveSupport::Concern def set_metric_configuration - @metric_configuration = MetricConfiguration.find(params[:id].to_i) + @metric_configuration = find_resource(MetricConfiguration, params[:id].to_i) end end diff --git a/app/controllers/concerns/resource_finder.rb b/app/controllers/concerns/resource_finder.rb new file mode 100644 index 0000000..766d44a --- /dev/null +++ b/app/controllers/concerns/resource_finder.rb @@ -0,0 +1,15 @@ +module ResourceFinder + extend ActiveSupport::Concern + + def find_resource(klass, id) + begin + klass.find(id) + rescue KalibroGatekeeperClient::Errors::RecordNotFound + respond_to do |format| + format.html { render file: "#{Rails.root}/public/404", layout: false, status: :not_found } + end + + return + end + end +end \ No newline at end of file diff --git a/app/controllers/mezuro_configurations_controller.rb b/app/controllers/mezuro_configurations_controller.rb index 5f0a827..4350b4d 100644 --- a/app/controllers/mezuro_configurations_controller.rb +++ b/app/controllers/mezuro_configurations_controller.rb @@ -1,4 +1,5 @@ include OwnershipAuthentication +include ResourceFinder class MezuroConfigurationsController < ApplicationController before_action :authenticate_user!, except: [:index, :show] @@ -65,7 +66,7 @@ class MezuroConfigurationsController < ApplicationController private # Use callbacks to share common setup or constraints between actions. def set_mezuro_configuration - @mezuro_configuration = MezuroConfiguration.find(params[:id]) + @mezuro_configuration = find_resource(MezuroConfiguration, params[:id].to_i) end # Never trust parameters from the scary internet, only allow the white list through. diff --git a/app/controllers/mezuro_ranges_controller.rb b/app/controllers/mezuro_ranges_controller.rb index ea0c552..cabdbde 100644 --- a/app/controllers/mezuro_ranges_controller.rb +++ b/app/controllers/mezuro_ranges_controller.rb @@ -1,10 +1,11 @@ include OwnershipAuthentication +include ResourceFinder class MezuroRangesController < ApplicationController before_action :authenticate_user!, except: [:show] before_action :metric_configuration_owner?, only: [:new, :create, :destroy, :edit, :update] before_action :get_url_params, only: [:update, :create, :destroy] - before_action :set_mezuro_range, only: [:edit, :update] + before_action :set_mezuro_range, only: [:edit, :update, :destroy] def new @mezuro_range = MezuroRange.new @@ -20,7 +21,6 @@ class MezuroRangesController < ApplicationController end def destroy - @mezuro_range = MezuroRange.find(params[:id].to_i) @mezuro_range.destroy respond_to do |format| format.html { redirect_to mezuro_configuration_metric_configuration_path( @@ -85,6 +85,6 @@ class MezuroRangesController < ApplicationController end def set_mezuro_range - @mezuro_range = MezuroRange.find(params[:id].to_i) + @mezuro_range = find_resource(MezuroRange, params[:id].to_i) end end diff --git a/app/controllers/modules_controller.rb b/app/controllers/modules_controller.rb index 12fbcb9..fb982f6 100644 --- a/app/controllers/modules_controller.rb +++ b/app/controllers/modules_controller.rb @@ -1,13 +1,15 @@ +include ResourceFinder + class ModulesController < ApplicationController # POST /modules/1/metric_history def metric_history - @module_result = ModuleResult.find(params[:id].to_i) + @module_result = find_resource(ModuleResult, params[:id].to_i) @container = params[:container] @metric_name = params[:metric_name] end # POST /modules/1/tree def load_module_tree - @root_module_result = ModuleResult.find(params[:id].to_i) + @root_module_result = find_resource(ModuleResult, params[:id].to_i) end end \ No newline at end of file diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index e313138..fc0e94f 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -1,4 +1,5 @@ include OwnershipAuthentication +include ResourceFinder class ProjectsController < ApplicationController before_action :authenticate_user!, @@ -32,7 +33,7 @@ class ProjectsController < ApplicationController # GET /project/1.json def show set_project - @project_repositories = @project.repositories + @project_repositories = @project.repositories if @project.is_a?(Project) end # GET /projects/1/edit @@ -66,8 +67,8 @@ class ProjectsController < ApplicationController private # Use callbacks to share common setup or constraints between actions. def set_project - @project = Project.find(params[:id]) - @project_image = ProjectImage.find_by_project_id(@project.id) + @project = find_resource(Project, params[:id].to_i) + @project_image = ProjectImage.find_by_project_id(@project.id) if @project.is_a?(Project) end # Never trust parameters from the scary internet, only allow the white list through. diff --git a/app/controllers/reading_groups_controller.rb b/app/controllers/reading_groups_controller.rb index 95938c8..b5e9c2d 100644 --- a/app/controllers/reading_groups_controller.rb +++ b/app/controllers/reading_groups_controller.rb @@ -1,4 +1,5 @@ include OwnershipAuthentication +include ResourceFinder class ReadingGroupsController < ApplicationController before_action :authenticate_user!, except: [:index, :show] @@ -56,7 +57,7 @@ class ReadingGroupsController < ApplicationController # Use callbacks to share common setup or constraints between actions. def set_reading_group - @reading_group = ReadingGroup.find(params[:id]) + @reading_group = find_resource(ReadingGroup, params[:id].to_i) end # Never trust parameters from the scary internet, only allow the white list through. diff --git a/app/controllers/readings_controller.rb b/app/controllers/readings_controller.rb index 2e0ae96..359ae0a 100644 --- a/app/controllers/readings_controller.rb +++ b/app/controllers/readings_controller.rb @@ -1,4 +1,5 @@ include OwnershipAuthentication +include ResourceFinder class ReadingsController < ApplicationController before_action :authenticate_user!, except: [:index] @@ -73,6 +74,6 @@ class ReadingsController < ApplicationController end def set_reading - @reading = Reading.find(params[:id].to_i) + @reading = find_resource(Reading, params[:id].to_i) end end diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb index d5f7888..a8f0e52 100644 --- a/app/controllers/repositories_controller.rb +++ b/app/controllers/repositories_controller.rb @@ -105,7 +105,7 @@ private # Use callbacks to share common setup or constraints between actions. def set_repository - @repository = Repository.find(params[:id].to_i) + @repository = find_resource(Repository, params[:id].to_i) end def set_mezuro_configuration diff --git a/spec/controllers/base_metric_configurations_controller_spec.rb b/spec/controllers/base_metric_configurations_controller_spec.rb index 9582741..748ac79 100644 --- a/spec/controllers/base_metric_configurations_controller_spec.rb +++ b/spec/controllers/base_metric_configurations_controller_spec.rb @@ -118,7 +118,7 @@ describe InheritsFromBaseMetricConfigurationsController, :type => :controller do context 'with a valid metric_configuration' do before :each do ReadingGroup.expects(:find).with(metric_configuration.reading_group_id).returns(reading_group) - MetricConfiguration.expects(:find).with(metric_configuration.id).returns(metric_configuration) + subject.expects(:find_resource).with(MetricConfiguration, metric_configuration.id).returns(metric_configuration) MezuroRange.expects(:ranges_of).with(metric_configuration.id).returns([mezuro_range]) get :show, mezuro_configuration_id: metric_configuration.configuration_id.to_s, id: metric_configuration.id diff --git a/spec/controllers/compound_metric_configurations_controller_spec.rb b/spec/controllers/compound_metric_configurations_controller_spec.rb index 3a15068..f35af3b 100644 --- a/spec/controllers/compound_metric_configurations_controller_spec.rb +++ b/spec/controllers/compound_metric_configurations_controller_spec.rb @@ -74,7 +74,7 @@ describe CompoundMetricConfigurationsController, :type => :controller do before :each do ReadingGroup.expects(:find).with(compound_metric_configuration.reading_group_id).returns(reading_group) - MetricConfiguration.expects(:find).with(compound_metric_configuration.id).returns(compound_metric_configuration) + subject.expects(:find_resource).with(MetricConfiguration, compound_metric_configuration.id).returns(compound_metric_configuration) MezuroRange.expects(:ranges_of).with(compound_metric_configuration.id).returns([mezuro_range]) get :show, mezuro_configuration_id: compound_metric_configuration.configuration_id.to_s, id: compound_metric_configuration.id @@ -94,7 +94,7 @@ describe CompoundMetricConfigurationsController, :type => :controller do context 'when the user owns the compound metric configuration' do before :each do subject.expects(:metric_configuration_owner?).returns(true) - MetricConfiguration.expects(:find).at_least_once.with(compound_metric_configuration.id).returns(compound_metric_configuration) + subject.expects(:find_resource).with(MetricConfiguration, compound_metric_configuration.id).returns(compound_metric_configuration) MetricConfiguration.expects(:metric_configurations_of).with(mezuro_configuration.id).returns([compound_metric_configuration]) get :edit, id: compound_metric_configuration.id, mezuro_configuration_id: compound_metric_configuration.configuration_id.to_s end @@ -138,7 +138,7 @@ describe CompoundMetricConfigurationsController, :type => :controller do context 'with valid fields' do before :each do - MetricConfiguration.expects(:find).at_least_once.with(compound_metric_configuration.id).returns(compound_metric_configuration) + subject.expects(:find_resource).with(MetricConfiguration, compound_metric_configuration.id).returns(compound_metric_configuration) MetricConfiguration.any_instance.expects(:update).with(metric_configuration_params).returns(true) post :update, mezuro_configuration_id: compound_metric_configuration.configuration_id, id: compound_metric_configuration.id, metric_configuration: metric_configuration_params @@ -150,7 +150,7 @@ describe CompoundMetricConfigurationsController, :type => :controller do context 'with an invalid field' do before :each do - MetricConfiguration.expects(:find).at_least_once.with(compound_metric_configuration.id).returns(compound_metric_configuration) + subject.expects(:find_resource).with(MetricConfiguration, compound_metric_configuration.id).returns(compound_metric_configuration) MetricConfiguration.expects(:metric_configurations_of).with(mezuro_configuration.id).returns([compound_metric_configuration]) MetricConfiguration.any_instance.expects(:update).with(metric_configuration_params).returns(false) @@ -159,7 +159,6 @@ describe CompoundMetricConfigurationsController, :type => :controller do it { should render_template(:edit) } end - end context 'when the user does not own the reading' do diff --git a/spec/controllers/concerns/metric_configurations_concern_spec.rb b/spec/controllers/concerns/metric_configurations_concern_spec.rb index edef7ae..978b524 100644 --- a/spec/controllers/concerns/metric_configurations_concern_spec.rb +++ b/spec/controllers/concerns/metric_configurations_concern_spec.rb @@ -6,7 +6,7 @@ describe MetricConfigurationsConcern, type: :controller do let! (:metric_configurations_controller) { MetricConfigurationsController.new } before :each do - MetricConfiguration.expects(:find).with(metric_configuration.id).returns(metric_configuration) + metric_configurations_controller.expects(:find_resource).with(MetricConfiguration, metric_configuration.id).returns(metric_configuration) metric_configurations_controller.params = {id: metric_configuration.id} end diff --git a/spec/controllers/concerns/resource_finder_spec.rb b/spec/controllers/concerns/resource_finder_spec.rb new file mode 100644 index 0000000..0971dfa --- /dev/null +++ b/spec/controllers/concerns/resource_finder_spec.rb @@ -0,0 +1,39 @@ +require 'rails_helper' + +describe ResourceFinder, type: :controller do + describe 'find_resource' do + let(:klass) { mock('Resource') } + let(:id) { 1 } + let!(:projects_controller) {ProjectsController.new} + + before do + projects_controller.extend(ResourceFinder) + end + + context 'when the resource exists' do + let!(:resource) { mock('resource') } + + before :each do + klass.expects(:find).with(id).returns(resource) + end + + it 'is expect to return the resource' do + expect(projects_controller.find_resource(klass, id)).to eq(resource) + end + end + + context 'when the resource does not exists' do + before :each do + klass.expects(:find).with(id).raises(KalibroGatekeeperClient::Errors::RecordNotFound) + end + + # FIXME: this is not the best test, but it it's the closest we can think of + # full coverage is achieved through projects_controller_spec.rb + it 'is expected to render the 404 page' do + projects_controller.expects(:respond_to) + + projects_controller.find_resource(klass, id) + end + end + end +end \ No newline at end of file diff --git a/spec/controllers/metric_configurations_controller_spec.rb b/spec/controllers/metric_configurations_controller_spec.rb index a317f1f..0adfe3e 100644 --- a/spec/controllers/metric_configurations_controller_spec.rb +++ b/spec/controllers/metric_configurations_controller_spec.rb @@ -95,7 +95,7 @@ describe MetricConfigurationsController, :type => :controller do before :each do ReadingGroup.expects(:find).with(metric_configuration.reading_group_id).returns(reading_group) - MetricConfiguration.expects(:find).with(metric_configuration.id).returns(metric_configuration) + subject.expects(:find_resource).with(MetricConfiguration, metric_configuration.id).returns(metric_configuration) MezuroRange.expects(:ranges_of).with(metric_configuration.id).returns([mezuro_range]) get :show, mezuro_configuration_id: metric_configuration.configuration_id.to_s, id: metric_configuration.id @@ -114,8 +114,8 @@ describe MetricConfigurationsController, :type => :controller do 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) + subject.expects(:metric_configuration_owner?).returns(true) + subject.expects(:find_resource).with(MetricConfiguration, metric_configuration.id).returns(metric_configuration) get :edit, id: metric_configuration.id, mezuro_configuration_id: metric_configuration.configuration_id.to_s end @@ -158,7 +158,7 @@ describe MetricConfigurationsController, :type => :controller do context 'with valid fields' do before :each do - MetricConfiguration.expects(:find).at_least_once.with(metric_configuration.id).returns(metric_configuration) + subject.expects(:find_resource).with(MetricConfiguration, metric_configuration.id).returns(metric_configuration) MetricConfiguration.any_instance.expects(:update).with(metric_configuration_params).returns(true) post :update, mezuro_configuration_id: metric_configuration.configuration_id, id: metric_configuration.id, metric_configuration: metric_configuration_params @@ -170,7 +170,7 @@ describe MetricConfigurationsController, :type => :controller do context 'with an invalid field' do before :each do - MetricConfiguration.expects(:find).at_least_once.with(metric_configuration.id).returns(metric_configuration) + subject.expects(:find_resource).with(MetricConfiguration, metric_configuration.id).returns(metric_configuration) MetricConfiguration.any_instance.expects(:update).with(metric_configuration_params).returns(false) post :update, mezuro_configuration_id: metric_configuration.configuration_id, id: metric_configuration.id, metric_configuration: metric_configuration_params @@ -203,7 +203,7 @@ describe MetricConfigurationsController, :type => :controller do before :each do subject.expects(:metric_configuration_owner?).returns true metric_configuration.expects(:destroy) - MetricConfiguration.expects(:find).at_least_once.with(metric_configuration.id).returns(metric_configuration) + subject.expects(:find_resource).with(MetricConfiguration, metric_configuration.id).returns(metric_configuration) delete :destroy, id: metric_configuration.id, mezuro_configuration_id: metric_configuration.configuration_id.to_s end diff --git a/spec/controllers/mezuro_configurations_controller_spec.rb b/spec/controllers/mezuro_configurations_controller_spec.rb index aa45b66..1746b8b 100644 --- a/spec/controllers/mezuro_configurations_controller_spec.rb +++ b/spec/controllers/mezuro_configurations_controller_spec.rb @@ -62,12 +62,14 @@ describe MezuroConfigurationsController, :type => :controller do end describe 'show' do - subject { FactoryGirl.build(:mezuro_configuration) } + let(:mezuro_configuration) { FactoryGirl.build(:mezuro_configuration) } let(:metric_configuration) { FactoryGirl.build(:metric_configuration) } + before :each do - MezuroConfiguration.expects(:find).with(subject.id.to_s).returns(subject) - subject.expects(:metric_configurations).returns(metric_configuration) - get :show, :id => subject.id + mezuro_configuration.expects(:metric_configurations).returns(metric_configuration) + subject.expects(:find_resource).with(MezuroConfiguration, mezuro_configuration.id).returns(mezuro_configuration) + + get :show, :id => mezuro_configuration.id end it { is_expected.to render_template(:show) } @@ -96,7 +98,7 @@ describe MezuroConfigurationsController, :type => :controller do User.any_instance.expects(:mezuro_configuration_ownerships).at_least_once.returns(@ownerships) - MezuroConfiguration.expects(:find).with(@subject.id.to_s).returns(@subject) + subject.expects(:find_resource).with(MezuroConfiguration, @subject.id).returns(@subject) delete :destroy, :id => @subject.id end @@ -156,7 +158,7 @@ describe MezuroConfigurationsController, :type => :controller do context 'when the user owns the mezuro_configuration' do before :each do - MezuroConfiguration.expects(:find).with(@subject.id.to_s).returns(@subject) + subject.expects(:find_resource).with(MezuroConfiguration, @subject.id).returns(@subject) @ownerships.expects(:find_by_mezuro_configuration_id).with("#{@subject.id}").returns(@ownership) get :edit, :id => @subject.id @@ -213,7 +215,7 @@ describe MezuroConfigurationsController, :type => :controller do context 'with valid fields' do before :each do - MezuroConfiguration.expects(:find).with(@subject.id.to_s).returns(@subject) + subject.expects(:find_resource).with(MezuroConfiguration, @subject.id).returns(@subject) MezuroConfiguration.any_instance.expects(:update).with(@subject_params).returns(true) end @@ -240,7 +242,7 @@ describe MezuroConfigurationsController, :type => :controller do context 'with an invalid field' do before :each do - MezuroConfiguration.expects(:find).with(@subject.id.to_s).returns(@subject) + subject.expects(:find_resource).with(MezuroConfiguration, @subject.id).returns(@subject) MezuroConfiguration.any_instance.expects(:update).with(@subject_params).returns(false) post :update, :id => @subject.id, :mezuro_configuration => @subject_params diff --git a/spec/controllers/mezuro_ranges_controller_spec.rb b/spec/controllers/mezuro_ranges_controller_spec.rb index 550ed8b..f732f01 100644 --- a/spec/controllers/mezuro_ranges_controller_spec.rb +++ b/spec/controllers/mezuro_ranges_controller_spec.rb @@ -80,7 +80,7 @@ describe MezuroRangesController, :type => :controller do before :each do subject.expects(:metric_configuration_owner?).returns true mezuro_range.expects(:destroy) - MezuroRange.expects(:find).at_least_once.with(mezuro_range.id).returns(mezuro_range) + subject.expects(:find_resource).with(MezuroRange, mezuro_range.id).returns(mezuro_range) 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 end @@ -121,7 +121,7 @@ describe MezuroRangesController, :type => :controller do context 'when the user owns the mezuro range' do before :each do subject.expects(:metric_configuration_owner?).returns true - MezuroRange.expects(:find).with(mezuro_range.id).returns(mezuro_range) + subject.expects(:find_resource).with(MezuroRange, mezuro_range.id).returns(mezuro_range) MetricConfiguration.expects(:find).with(metric_configuration.id).returns(metric_configuration) Reading.expects(:readings_of).with(metric_configuration.reading_group_id).returns([reading]) get :edit, id: mezuro_range.id, mezuro_configuration_id: metric_configuration.configuration_id, metric_configuration_id: metric_configuration.id @@ -170,7 +170,7 @@ describe MezuroRangesController, :type => :controller do context 'with valid fields' do before :each do - MezuroRange.expects(:find).with(mezuro_range.id).returns(mezuro_range) + subject.expects(:find_resource).with(MezuroRange, mezuro_range.id).returns(mezuro_range) MezuroRange.any_instance.expects(:update).with(mezuro_range_params).returns(true) post :update, mezuro_configuration_id: metric_configuration.configuration_id, id: mezuro_range.id, metric_configuration_id: metric_configuration.id, mezuro_range: mezuro_range_params @@ -182,7 +182,7 @@ describe MezuroRangesController, :type => :controller do context 'with an invalid field' do before :each do - MezuroRange.expects(:find).with(mezuro_range.id).returns(mezuro_range) + subject.expects(:find_resource).with(MezuroRange, mezuro_range.id).returns(mezuro_range) MezuroRange.any_instance.expects(:update).with(mezuro_range_params).returns(false) MetricConfiguration.expects(:find).with(metric_configuration.id).returns(metric_configuration) Reading.expects(:readings_of).with(metric_configuration.reading_group_id).returns([reading]) diff --git a/spec/controllers/modules_controller_spec.rb b/spec/controllers/modules_controller_spec.rb index 5ea7286..c1d72dd 100644 --- a/spec/controllers/modules_controller_spec.rb +++ b/spec/controllers/modules_controller_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' describe ModulesController, :type => :controller do describe "load_module_tree" do before :each do - ModuleResult.expects(:find).with(42).returns(FactoryGirl.build(:module_result)) + subject.expects(:find_resource).with(ModuleResult, 42).returns(FactoryGirl.build(:module_result)) post :load_module_tree, id: 42, format: :js end @@ -20,7 +20,7 @@ describe ModulesController, :type => :controller do let! (:module_result){ FactoryGirl.build(:module_result) } before :each do - ModuleResult.expects(:find).at_least_once.with(module_result.id).returns(module_result) + subject.expects(:find_resource).with(ModuleResult, module_result.id).returns(module_result) subject.expire_fragment("#{module_result.id}_#{metric_name}") xhr :get, :metric_history, {id: module_result.id, metric_name: metric_name, module_id: module_id} diff --git a/spec/controllers/projects_controller_spec.rb b/spec/controllers/projects_controller_spec.rb index 10d3153..7e5748c 100644 --- a/spec/controllers/projects_controller_spec.rb +++ b/spec/controllers/projects_controller_spec.rb @@ -62,15 +62,27 @@ describe ProjectsController, :type => :controller do end describe 'show' do - subject { FactoryGirl.build(:project) } - let(:repository) { FactoryGirl.build(:repository) } - before :each do - Project.expects(:find).with(subject.id.to_s).returns(subject) - subject.expects(:repositories).returns(repository) - get :show, :id => subject.id + let(:project) { FactoryGirl.build(:project) } + + context 'when the project exists' do + let(:repository) { FactoryGirl.build(:repository) } + before :each do + subject.expects(:find_resource).with(Project, project.id).returns(project) + project.expects(:repositories).returns(repository) + get :show, :id => project.id + end + + it { is_expected.to render_template(:show) } end - it { is_expected.to render_template(:show) } + context 'when the project does not exists' do + before :each do + Project.expects(:find).with(project.id).raises(KalibroGatekeeperClient::Errors::RecordNotFound) + get :show, :id => project.id + end + + it { is_expected.to respond_with(:not_found) } + end end describe 'destroy' do @@ -97,7 +109,7 @@ describe ProjectsController, :type => :controller do User.any_instance.expects(:project_ownerships).at_least_once.returns(@ownerships) - Project.expects(:find).with(@subject.id.to_s).returns(@subject) + subject.expects(:find_resource).with(Project, @subject.id).returns(@subject) delete :destroy, :id => @subject.id end @@ -157,7 +169,7 @@ describe ProjectsController, :type => :controller do context 'when the user owns the project' do before :each do - Project.expects(:find).with(@subject.id.to_s).returns(@subject) + subject.expects(:find_resource).with(Project, @subject.id).returns(@subject) @ownerships.expects(:find_by_project_id).with("#{@subject.id}").returns(@ownership) ProjectImage.expects(:find_by_project_id).with(@subject.id).returns(@project_image) @@ -216,7 +228,7 @@ describe ProjectsController, :type => :controller do context 'with valid fields' do before :each do - Project.expects(:find).with(@subject.id.to_s).returns(@subject) + subject.expects(:find_resource).with(Project, @subject.id).returns(@subject) Project.any_instance.expects(:update).with(@subject_params).returns(true) end @@ -242,7 +254,7 @@ describe ProjectsController, :type => :controller do context 'with an invalid field' do before :each do - Project.expects(:find).with(@subject.id.to_s).returns(@subject) + subject.expects(:find_resource).with(Project, @subject.id).returns(@subject) Project.any_instance.expects(:update).with(@subject_params).returns(false) post :update, :id => @subject.id, :project => @subject_params diff --git a/spec/controllers/reading_groups_controller_spec.rb b/spec/controllers/reading_groups_controller_spec.rb index 9cc7779..136166e 100644 --- a/spec/controllers/reading_groups_controller_spec.rb +++ b/spec/controllers/reading_groups_controller_spec.rb @@ -61,11 +61,11 @@ describe ReadingGroupsController, :type => :controller do end describe 'show' do - subject { FactoryGirl.build(:reading_group) } + let!(:reading_group) { FactoryGirl.build(:reading_group) } let(:reading) { FactoryGirl.build(:reading) } before :each do - ReadingGroup.expects(:find).with(subject.id.to_s).returns(subject) - get :show, :id => subject.id + subject.expects(:find_resource).with(ReadingGroup, reading_group.id).returns(reading_group) + get :show, :id => reading_group.id end it { is_expected.to render_template(:show) } @@ -95,7 +95,7 @@ describe ReadingGroupsController, :type => :controller do User.any_instance.expects(:reading_group_ownerships).at_least_once.returns(@ownerships) - ReadingGroup.expects(:find).with(@subject.id.to_s).returns(@subject) + subject.expects(:find_resource).with(ReadingGroup, @subject.id).returns(@subject) delete :destroy, :id => @subject.id end @@ -155,7 +155,7 @@ describe ReadingGroupsController, :type => :controller do context 'when the user owns the reading group' do before :each do - ReadingGroup.expects(:find).with(@subject.id.to_s).returns(@subject) + subject.expects(:find_resource).with(ReadingGroup, @subject.id).returns(@subject) @ownerships.expects(:find_by_reading_group_id).with("#{@subject.id}").returns(@ownership) get :edit, :id => @subject.id @@ -212,7 +212,7 @@ describe ReadingGroupsController, :type => :controller do context 'with valid fields' do before :each do - ReadingGroup.expects(:find).with(@subject.id.to_s).returns(@subject) + subject.expects(:find_resource).with(ReadingGroup, @subject.id).returns(@subject) ReadingGroup.any_instance.expects(:update).with(@subject_params).returns(true) end @@ -239,7 +239,7 @@ describe ReadingGroupsController, :type => :controller do context 'with an invalid field' do before :each do - ReadingGroup.expects(:find).with(@subject.id.to_s).returns(@subject) + subject.expects(:find_resource).with(ReadingGroup, @subject.id).returns(@subject) ReadingGroup.any_instance.expects(:update).with(@subject_params).returns(false) post :update, :id => @subject.id, :reading_group => @subject_params diff --git a/spec/controllers/readings_controller_spec.rb b/spec/controllers/readings_controller_spec.rb index 0e94269..8e2591d 100644 --- a/spec/controllers/readings_controller_spec.rb +++ b/spec/controllers/readings_controller_spec.rb @@ -74,7 +74,7 @@ describe ReadingsController, :type => :controller do context 'when the user owns the reading' do before :each do subject.expects(:reading_owner?).returns true - Reading.expects(:find).at_least_once.with(reading.id).returns(reading) + subject.expects(:find_resource).with(Reading, reading.id).returns(reading) get :edit, id: reading.id, reading_group_id: reading_group.id.to_s end @@ -117,7 +117,7 @@ describe ReadingsController, :type => :controller do context 'with valid fields' do before :each do - Reading.expects(:find).at_least_once.with(reading.id).returns(reading) + subject.expects(:find_resource).with(Reading, reading.id).returns(reading) Reading.any_instance.expects(:update).with(reading_params).returns(true) post :update, reading_group_id: reading_group.id, id: reading.id, reading: reading_params @@ -129,7 +129,7 @@ describe ReadingsController, :type => :controller do context 'with an invalid field' do before :each do - Reading.expects(:find).at_least_once.with(reading.id).returns(reading) + subject.expects(:find_resource).with(Reading, reading.id).returns(reading) Reading.any_instance.expects(:update).with(reading_params).returns(false) post :update, reading_group_id: reading_group.id, id: reading.id, reading: reading_params @@ -169,7 +169,7 @@ describe ReadingsController, :type => :controller do before :each do subject.expects(:reading_owner?).returns true reading.expects(:destroy) - Reading.expects(:find).at_least_once.with(reading.id).returns(reading) + subject.expects(:find_resource).with(Reading, reading.id).returns(reading) delete :destroy, id: reading.id, reading_group_id: reading.group_id.to_s end diff --git a/spec/controllers/repositories_controller_spec.rb b/spec/controllers/repositories_controller_spec.rb index e052f43..98bd35d 100644 --- a/spec/controllers/repositories_controller_spec.rb +++ b/spec/controllers/repositories_controller_spec.rb @@ -94,7 +94,7 @@ describe RepositoriesController, :type => :controller do processing = FactoryGirl.build(:processing) MezuroConfiguration.expects(:find).with(repository.id).returns(FactoryGirl.build(:mezuro_configuration)) - Repository.expects(:find).with(repository.id).returns(repository) + subject.expects(:find_resource).with(Repository, repository.id).returns(repository) get :show, id: repository.id.to_s, project_id: project.id.to_s end @@ -108,7 +108,7 @@ describe RepositoriesController, :type => :controller do processing = FactoryGirl.build(:processing) MezuroConfiguration.expects(:find).with(repository.id).returns(FactoryGirl.build(:mezuro_configuration)) - Repository.expects(:find).with(repository.id).returns(repository) + subject.expects(:find_resource).with(Repository, repository.id).returns(repository) get :show, id: repository.id.to_s, project_id: project.id.to_s end -- libgit2 0.21.2