Commit 97887b40760bc3da1f584f0f56562d9ab589b6fd

Authored by Rafael Manzo
Committed by Diego Camarinha
1 parent 16bb89f4

RepositoriesController create and update, when called with invalid fields, loadi…

…ng the kalibro configurations list

Before they were not loaded leading to a exception when redering the edit view again.
app/controllers/repositories_controller.rb
@@ -99,6 +99,9 @@ private @@ -99,6 +99,9 @@ private
99 def failed_action(format, destiny_action) 99 def failed_action(format, destiny_action)
100 @project_id = params[:project_id] 100 @project_id = params[:project_id]
101 @repository_types = Repository.repository_types 101 @repository_types = Repository.repository_types
  102 + @configurations = KalibroConfiguration.public_or_owned_by_user(current_user).map { |conf|
  103 + [conf.name, conf.id]
  104 + }
102 105
103 format.html { render action: destiny_action } 106 format.html { render action: destiny_action }
104 format.json { render json: @repository.errors, status: :unprocessable_entity } 107 format.json { render json: @repository.errors, status: :unprocessable_entity }
features/step_definitions/repository_steps.rb
@@ -13,6 +13,8 @@ Given(/^I have a sample configuration with native metrics$/) do @@ -13,6 +13,8 @@ Given(/^I have a sample configuration with native metrics$/) do
13 reading = FactoryGirl.create(:reading, {reading_group_id: reading_group.id}) 13 reading = FactoryGirl.create(:reading, {reading_group_id: reading_group.id})
14 14
15 @kalibro_configuration = FactoryGirl.create(:kalibro_configuration) 15 @kalibro_configuration = FactoryGirl.create(:kalibro_configuration)
  16 + FactoryGirl.create(:kalibro_configuration_attributes, {id: nil, user_id: nil, kalibro_configuration_id: @kalibro_configuration.id})
  17 +
16 metric_configuration = FactoryGirl.create(:metric_configuration, 18 metric_configuration = FactoryGirl.create(:metric_configuration,
17 {metric: FactoryGirl.build(:loc), 19 {metric: FactoryGirl.build(:loc),
18 reading_group_id: reading_group.id, 20 reading_group_id: reading_group.id,
spec/controllers/repositories_controller_spec.rb
@@ -44,11 +44,13 @@ describe RepositoriesController, :type => :controller do @@ -44,11 +44,13 @@ describe RepositoriesController, :type => :controller do
44 end 44 end
45 45
46 describe 'create' do 46 describe 'create' do
  47 + let!(:kalibro_configurations) { [FactoryGirl.build(:kalibro_configuration)] }
  48 + let!(:user) { FactoryGirl.create(:user) }
47 let (:repository) { FactoryGirl.build(:repository, project_id: project.id) } 49 let (:repository) { FactoryGirl.build(:repository, project_id: project.id) }
48 let(:repository_params) { FactoryGirl.build(:repository).to_hash } 50 let(:repository_params) { FactoryGirl.build(:repository).to_hash }
49 51
50 before do 52 before do
51 - sign_in FactoryGirl.create(:user) 53 + sign_in user
52 end 54 end
53 55
54 context 'when the current user owns the project' do 56 context 'when the current user owns the project' do
@@ -69,6 +71,7 @@ describe RepositoriesController, :type => :controller do @@ -69,6 +71,7 @@ describe RepositoriesController, :type => :controller do
69 71
70 context 'with an invalid field' do 72 context 'with an invalid field' do
71 before :each do 73 before :each do
  74 + KalibroConfiguration.expects(:public_or_owned_by_user).with(user).returns(kalibro_configurations)
72 Repository.any_instance.expects(:save).returns(false) 75 Repository.any_instance.expects(:save).returns(false)
73 Repository.expects(:repository_types).returns([]) 76 Repository.expects(:repository_types).returns([])
74 77
@@ -199,12 +202,15 @@ describe RepositoriesController, :type => :controller do @@ -199,12 +202,15 @@ describe RepositoriesController, :type => :controller do
199 end 202 end
200 203
201 describe 'update' do 204 describe 'update' do
  205 + let(:kalibro_configurations) { [FactoryGirl.build(:kalibro_configuration)] }
202 let(:repository) { FactoryGirl.build(:repository) } 206 let(:repository) { FactoryGirl.build(:repository) }
203 let(:repository_params) { Hash[FactoryGirl.attributes_for(:repository).map { |k,v| [k.to_s, v.to_s] }] } #FIXME: Mocha is creating the expectations with strings, but FactoryGirl returns everything with sybols and integers 207 let(:repository_params) { Hash[FactoryGirl.attributes_for(:repository).map { |k,v| [k.to_s, v.to_s] }] } #FIXME: Mocha is creating the expectations with strings, but FactoryGirl returns everything with sybols and integers
204 208
205 context 'when the user is logged in' do 209 context 'when the user is logged in' do
  210 + let!(:user) { FactoryGirl.create(:user) }
  211 +
206 before do 212 before do
207 - sign_in FactoryGirl.create(:user) 213 + sign_in user
208 end 214 end
209 215
210 context 'when user owns the repository' do 216 context 'when user owns the repository' do
@@ -226,6 +232,7 @@ describe RepositoriesController, :type => :controller do @@ -226,6 +232,7 @@ describe RepositoriesController, :type => :controller do
226 232
227 context 'with an invalid field' do 233 context 'with an invalid field' do
228 before :each do 234 before :each do
  235 + KalibroConfiguration.expects(:public_or_owned_by_user).with(user).returns(kalibro_configurations)
229 Repository.expects(:find).at_least_once.with(repository.id).returns(repository) 236 Repository.expects(:find).at_least_once.with(repository.id).returns(repository)
230 Repository.any_instance.expects(:update).with(repository_params).returns(false) 237 Repository.any_instance.expects(:update).with(repository_params).returns(false)
231 Repository.expects(:repository_types).returns([]) 238 Repository.expects(:repository_types).returns([])